From 50f82452d4d2025fab2cdbb2df75f745bcbcd3b7 Mon Sep 17 00:00:00 2001 From: koichi uchinishi Date: Wed, 16 Apr 2025 14:28:44 +0900 Subject: [PATCH 001/415] add zod package (#22) --- package-lock.json | 3 ++- package.json | 10 ++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index d337b18b..37ecfe99 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,8 @@ "license": "Apache-2.0", "dependencies": { "@line/bot-sdk": "^9.8.0", - "@modelcontextprotocol/sdk": "^1.8.0" + "@modelcontextprotocol/sdk": "^1.8.0", + "zod": "^3.24.2" }, "devDependencies": { "@types/node": "^22", diff --git a/package.json b/package.json index 7340bbea..ada30c69 100644 --- a/package.json +++ b/package.json @@ -32,14 +32,16 @@ "bugs": "https://github.com/line/line-bot-mcp-server/issues", "dependencies": { "@line/bot-sdk": "^9.8.0", - "@modelcontextprotocol/sdk": "^1.8.0" + "@modelcontextprotocol/sdk": "^1.8.0", + "zod": "^3.24.2" }, "devDependencies": { "@types/node": "^22", + "prettier": "3.5.3", "shx": "^0.4.0", "tsx": "^4.19.3", - "typescript": "^5.6.2", - "prettier": "3.5.3" + "typescript": "^5.6.2" }, - "license": "Apache-2.0" + "license": "Apache-2.0", + "packageManager": "pnpm@10.7.1+sha512.2d92c86b7928dc8284f53494fb4201f983da65f0fb4f0d40baafa5cf628fa31dae3e5968f12466f17df7e97310e30f343a648baea1b9b350685dafafffdf5808" } From a76626d7050dded5a3ef2788bb1e227114ce3528 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 16 Apr 2025 05:30:58 +0000 Subject: [PATCH 002/415] Update pnpm to v10.8.1 (#23) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ada30c69..59001348 100644 --- a/package.json +++ b/package.json @@ -43,5 +43,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.7.1+sha512.2d92c86b7928dc8284f53494fb4201f983da65f0fb4f0d40baafa5cf628fa31dae3e5968f12466f17df7e97310e30f343a648baea1b9b350685dafafffdf5808" + "packageManager": "pnpm@10.8.1+sha512.c50088ba998c67b8ca8c99df8a5e02fd2ae2e2b29aaf238feaa9e124248d3f48f9fb6db2424949ff901cffbb5e0f0cc1ad6aedb602cd29450751d11c35023677" } From 92a81e7512573e68aadc7cb9f18b0380b2b7acf6 Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Wed, 16 Apr 2025 16:35:40 +0900 Subject: [PATCH 003/415] Update links in README (#24) --- README.ja.md | 6 +++--- README.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.ja.md b/README.ja.md index a3648d00..4c69b342 100644 --- a/README.ja.md +++ b/README.ja.md @@ -47,11 +47,11 @@ cd line-bot-mcp-server && npm install && npm run build ### Step 2: チャンネルアクセストークンを取得 -このMCP ServerはLINE公式アカウントを利用しています。公式アカウントをお持ちでない場合は、[こちらの手順](https://www.linebiz.com/jp-en/manual/OfficialAccountManager/new_account/)に従って作成してください。 +このMCP ServerはLINE公式アカウントを利用しています。公式アカウントをお持ちでない場合は、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-started)に従って作成してください。 -Messaging APIに接続するには、チャンネルアクセストークンが必要です。これを確認するには、[こちらの手順](https://developers.line.biz/en/docs/basics/channel-access-token/#long-lived-channel-access-token)に従ってください。 +Messaging APIに接続するには、チャンネルアクセストークンが必要です。これを確認するには、[こちらの手順](https://developers.line.biz/ja/docs/basics/channel-access-token/#long-lived-channel-access-token)に従ってください。 -加えて、メッセージの受信者のユーザーIDも必要です。これを確認するには、[こちらの手順](https://developers.line.biz/en/docs/messaging-api/getting-user-ids/#get-own-user-id)に従ってください。 +加えて、メッセージの受信者のユーザーIDも必要です。これを確認するには、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-user-ids/#get-own-user-id)に従ってください。 ### Step 3: AI Agentを設定 diff --git a/README.md b/README.md index e4e5a613..1b43510c 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ cd line-bot-mcp-server && npm install && npm run build ### Step 2: Get a channel access token -This MCP server utilizes a LINE Official Account. If you do not have one, please create it by following [this instructions](https://www.linebiz.com/jp-en/manual/OfficialAccountManager/new_account/). +This MCP server utilizes a LINE Official Account. If you do not have one, please create it by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-started/). To connect to the Messaging API, you need to have a channel access token. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/basics/channel-access-token/#long-lived-channel-access-token). From 6065abe933960dbc1bfe046e5f1013836e96e169 Mon Sep 17 00:00:00 2001 From: mochiko Date: Wed, 16 Apr 2025 17:50:33 +0900 Subject: [PATCH 004/415] The instructions for creating a Messaging API channel have been revised (#26) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * チャンネルアクセストークン -> チャネルアクセストークン 公式の表記を正として修正。 https://developers.line.biz/ja/docs/basics/channel-access-token/ * More detailed and easier to understand step 2 of the Japanese README * Translate to EN --- README.ja.md | 10 ++++++---- README.md | 4 +++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/README.ja.md b/README.ja.md index 4c69b342..6b420660 100644 --- a/README.ja.md +++ b/README.ja.md @@ -45,11 +45,13 @@ Node.jsを利用する場合は、必要な依存関係をインストールし cd line-bot-mcp-server && npm install && npm run build ``` -### Step 2: チャンネルアクセストークンを取得 +### Step 2: チャネルアクセストークンを取得 -このMCP ServerはLINE公式アカウントを利用しています。公式アカウントをお持ちでない場合は、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-started)に従って作成してください。 +このMCP ServerはLINE公式アカウントを利用しています。公式アカウントをお持ちでない場合は、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-started/#create-oa)に従って作成してください。 -Messaging APIに接続するには、チャンネルアクセストークンが必要です。これを確認するには、[こちらの手順](https://developers.line.biz/ja/docs/basics/channel-access-token/#long-lived-channel-access-token)に従ってください。 +LINE公式アカウントをお持ちであれば、[こちらの手順](/docs/messaging-api/getting-started/#using-oa-manager)に従ってMessaging APIを有効にしてください。 + +Messaging APIに接続するには、チャネルアクセストークンが必要です。チャネルアクセストークンを取得するには、[こちらの手順](https://developers.line.biz/ja/docs/basics/channel-access-token/#long-lived-channel-access-token)に従ってください。 加えて、メッセージの受信者のユーザーIDも必要です。これを確認するには、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-user-ids/#get-own-user-id)に従ってください。 @@ -57,7 +59,7 @@ Messaging APIに接続するには、チャンネルアクセストークンが ### Step 3: AI Agentを設定 Claude DesktopやClaudeなどのAI Agentに次の設定を追加してください。 -`CHANNEL_ACCESS_TOKEN`と`DESTINATION_USER_ID`には、先ほど取得したチャンネルアクセストークンとユーザーIDをそれぞれ挿入してください。 +`CHANNEL_ACCESS_TOKEN`と`DESTINATION_USER_ID`には、先ほど取得したチャネルアクセストークンとユーザーIDをそれぞれ挿入してください。 加えて、`mcpServers.args`にある`line-bot-mcp-server`へのパスを更新してください。 #### Option 1: Node.jsを利用する場合 diff --git a/README.md b/README.md index 1b43510c..1e79066b 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,9 @@ cd line-bot-mcp-server && npm install && npm run build ### Step 2: Get a channel access token -This MCP server utilizes a LINE Official Account. If you do not have one, please create it by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-started/). +This MCP server utilizes a LINE Official Account. If you do not have one, please create it by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-started/#create-oa). + +If you have a LINE Official Account, enable the Messaging API for your LINE Official Account by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-started/#using-oa-manager). To connect to the Messaging API, you need to have a channel access token. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/basics/channel-access-token/#long-lived-channel-access-token). From e11080912ede3ce4b0b8f20c5826977bf5983ab2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 17 Apr 2025 02:47:46 +0000 Subject: [PATCH 005/415] Update dependency zod to v3.24.3 (#27) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 37ecfe99..6378ef52 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2264,9 +2264,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.24.2", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", - "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", + "version": "3.24.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.3.tgz", + "integrity": "sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From c15a6e7dd7d138cae6560105216d9a647c5119dd Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Thu, 17 Apr 2025 12:34:18 +0900 Subject: [PATCH 006/415] Add broadcast Tools (#25) * Make DESTINATION_USER_ID nullable * Add broadcast * Update README to clarify user_id parameter and add broadcast message details * Fix conflict * Fix typo * Remove optional --- README.ja.md | 34 ++++++-- README.md | 35 +++++--- src/index.ts | 239 ++++++++++++++++++++++++++++++++------------------- 3 files changed, 197 insertions(+), 111 deletions(-) diff --git a/README.ja.md b/README.ja.md index 6b420660..2fdd6987 100644 --- a/README.ja.md +++ b/README.ja.md @@ -10,21 +10,31 @@ LINE公式アカウントとAI Agentを接続するために、LINE Messaging AP ## Tools 1. **push_text_message** - - LINEでユーザーにシンプルなテキストメッセージを送信する + - LINEでユーザーにシンプルなテキストメッセージを送信する。 - **入力:** - - `user_id` (string): メッセージ受信者のユーザーID。デフォルトはDESTINATION_USER_ID。 + - `user_id` (string?): メッセージ受信者のユーザーID。デフォルトはDESTINATION_USER_ID。 - `message.text` (string): ユーザーに送信するテキスト。 2. **push_flex_message** - - LINEでユーザーに高度にカスタマイズ可能なフレックスメッセージを送信する。バブル(単一コンテナ)とカルーセル(スワイプ可能な複数のバブル)レイアウトの両方をサポート。 + - LINEでユーザーに高度にカスタマイズ可能なフレックスメッセージを送信する。 - **入力:** - - `user_id` (string): メッセージ受信者のユーザーID。デフォルトはDESTINATION_USER_ID。 + - `user_id` (string?): メッセージ受信者のユーザーID。デフォルトはDESTINATION_USER_ID。 - `message.altText` (string): フレックスメッセージが表示できない場合に表示される代替テキスト。 - `message.content` (any): フレックスメッセージの内容。メッセージのレイアウトとコンポーネントを定義するJSONオブジェクト。 - `message.contents.type` (enum): コンテナのタイプ。'bubble'は単一コンテナ、'carousel'は複数のスワイプ可能なバブルを示す。 -3. **get_profile** +3. **broadcast_text_message** + - LINE公式アカウントと友だちになっているすべてのユーザーに、LINEでシンプルなテキストメッセージを送信する。 + - **入力:** + - `message.text` (string): ユーザーに送信するテキスト。 +4. **broadcast_flex_message** + - LINE公式アカウントと友だちになっているすべてのユーザーに、LINEで高度にカスタマイズ可能なフレックスメッセージを送信する。 + - **入力:** + - `message.altText` (string): フレックスメッセージが表示できない場合に表示される代替テキスト。 + - `message.content` (any): フレックスメッセージの内容。メッセージのレイアウトとコンポーネントを定義するJSONオブジェクト。 + - `message.contents.type` (enum): コンテナのタイプ。'bubble'は単一コンテナ、'carousel'は複数のスワイプ可能なバブルを示す。 +5. **get_profile** - LINEユーザーの詳細なプロフィール情報を取得する。表示名、プロフィール画像URL、ステータスメッセージ、言語を取得できる。 - **Inputs:** - - `user_id` (string): プロフィールを取得したいユーザーのユーザーID。デフォルトはDESTINATION_USER_ID。 + - `user_id` (string?): プロフィールを取得したいユーザーのユーザーID。デフォルトはDESTINATION_USER_ID。 ## インストール @@ -45,16 +55,22 @@ Node.jsを利用する場合は、必要な依存関係をインストールし cd line-bot-mcp-server && npm install && npm run build ``` -### Step 2: チャネルアクセストークンを取得 + +### Step 2: LINE公式アカウントを作成 このMCP ServerはLINE公式アカウントを利用しています。公式アカウントをお持ちでない場合は、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-started/#create-oa)に従って作成してください。 LINE公式アカウントをお持ちであれば、[こちらの手順](/docs/messaging-api/getting-started/#using-oa-manager)に従ってMessaging APIを有効にしてください。 -Messaging APIに接続するには、チャネルアクセストークンが必要です。チャネルアクセストークンを取得するには、[こちらの手順](https://developers.line.biz/ja/docs/basics/channel-access-token/#long-lived-channel-access-token)に従ってください。 +### Step 3: AI Agentを設定 + +Claude DesktopやClaudeなどのAI Agentに次の設定を追加してください。 -加えて、メッセージの受信者のユーザーIDも必要です。これを確認するには、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-user-ids/#get-own-user-id)に従ってください。 +環境変数や引数は次のように設定してください: +- `mcpServers.args`: (必須) `line-bot-mcp-server`へのパス。 +- `CHANNEL_ACCESS_TOKEN`: (必須) チャネルアクセストークン。これを取得するには、[こちらの手順](https://developers.line.biz/ja/docs/basics/channel-access-token/#long-lived-channel-access-token)に従ってください。 +- `DESTINATION_USER_ID`: (オプション) デフォルトのメッセージ受信者のユーザーID。これを確認するには、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-user-ids/#get-own-user-id)に従ってください。 ### Step 3: AI Agentを設定 diff --git a/README.md b/README.md index 1e79066b..9093fa6b 100644 --- a/README.md +++ b/README.md @@ -12,21 +12,31 @@ ## Tools 1. **push_text_message** - - Push a simple text message to user via LINE. + - Push a simple text message to a user via LINE. - **Inputs:** - - `user_id` (string): The user ID to receive a message. Defaults to DESTINATION_USER_ID. + - `user_id` (string?): The user ID to receive a message. Defaults to DESTINATION_USER_ID. - `message.text` (string): The plain text content to send to the user. 2. **push_flex_message** - - Push a highly customizable flex message to user via LINE. Supports both bubble (single container) and carousel (multiple swipeable bubbles) layouts. + - Push a highly customizable flex message to a user via LINE. - **Inputs:** - - `user_id` (string): The user ID to receive a message. Defaults to DESTINATION_USER_ID. + - `user_id` (string?): The user ID to receive a message. Defaults to DESTINATION_USER_ID. - `message.altText` (string): Alternative text shown when flex message cannot be displayed. - `message.content` (any): The content of the flex message. This is a JSON object that defines the layout and components of the message. - `message.contents.type` (enum): Type of the container. 'bubble' for single container, 'carousel' for multiple swipeable bubbles. -3. **get_profile** +3. **broadcast_text_message** + - Broadcast a simple text message via LINE to all users who have followed your LINE Official Account. + - **Inputs:** + - `message.text` (string): The plain text content to send to the users. +4. **broadcast_flex_message** + - Broadcast a highly customizable flex message via LINE to all users who have added your LINE Official Account. + - **Inputs:** + - `message.altText` (string): Alternative text shown when flex message cannot be displayed. + - `message.content` (any): The content of the flex message. This is a JSON object that defines the layout and components of the message. + - `message.contents.type` (enum): Type of the container. 'bubble' for single container, 'carousel' for multiple swipeable bubbles. +5. **get_profile** - Get detailed profile information of a LINE user including display name, profile picture URL, status message and language. - **Inputs:** - - `user_id` (string): The ID of the user whose profile you want to retrieve. Defaults to DESTINATION_USER_ID. + - `user_id` (string?): The ID of the user whose profile you want to retrieve. Defaults to DESTINATION_USER_ID. ## Installation @@ -48,21 +58,20 @@ Install the necessary dependencies and build line-bot-mcp-server when using Node cd line-bot-mcp-server && npm install && npm run build ``` -### Step 2: Get a channel access token +### Step 2: Create LINE Official Account This MCP server utilizes a LINE Official Account. If you do not have one, please create it by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-started/#create-oa). If you have a LINE Official Account, enable the Messaging API for your LINE Official Account by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-started/#using-oa-manager). -To connect to the Messaging API, you need to have a channel access token. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/basics/channel-access-token/#long-lived-channel-access-token). - -Additionally, you will need the user ID of the recipient user for messages. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-user-ids/#get-own-user-id). - ### Step 3: Configure AI Agent Please add the following configuration for an AI Agent like Claude Desktop or Cline. -Insert the channel access token and user ID you obtained earlier into `CHANNEL_ACCESS_TOKEN` and `DESTINATION_USER_ID`, respectively. -Additionally, update the path to `line-bot-mcp-server` in `mcpServers.args`. + +Set the environment variables or arguments as follows: +- `mcpServers.args`: (required) The path to `line-bot-mcp-server`. +- `CHANNEL_ACCESS_TOKEN`: (required) Channel Access Token. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/basics/channel-access-token/#long-lived-channel-access-token). +- `DESTINATION_USER_ID`: (optional) The default user ID of the recipient. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-user-ids/#get-own-user-id). #### Option 1: Use Node diff --git a/src/index.ts b/src/index.ts index 042f5725..bbd8f674 100644 --- a/src/index.ts +++ b/src/index.ts @@ -20,6 +20,9 @@ import * as line from "@line/bot-sdk"; import { z } from "zod"; import pkg from "../package.json" with { type: "json" }; +const NO_USER_ID_ERROR = + "Error: Specify the userId or set the DESTINATION_USER_ID in the environment variables of this MCP Server."; + const server = new McpServer({ name: "line-bot", version: pkg.version, @@ -35,87 +38,156 @@ const messagingApiClient = new line.messagingApi.MessagingApiClient({ }, }); +function createErrorResponse(message: string) { + return { + isError: true, + content: [ + { + type: "text" as const, + text: message, + }, + ], + }; +} + +function createSuccessResponse(response: object) { + return { + content: [ + { + type: "text" as const, + text: JSON.stringify(response), + }, + ], + }; +} + +const userIdSchema = z + .string() + .default(destinationId) + .describe( + "The user ID to receive a message. Defaults to DESTINATION_USER_ID.", + ); + +const textMessageSchema = z.object({ + type: z.literal("text").default("text"), + text: z + .string() + .max(5000) + .describe("The plain text content to send to the user."), +}); + +const flexMessageSchema = z.object({ + type: z.literal("flex").default("flex"), + altText: z + .string() + .describe("Alternative text shown when flex message cannot be displayed."), + contents: z + .object({ + type: z + .enum(["bubble", "carousel"]) + .describe( + "Type of the container. 'bubble' for single container, 'carousel' for multiple swipeable bubbles.", + ), + }) + .passthrough() + .describe( + "Flexible container structure following LINE Flex Message format. For 'bubble' type, can include header, " + + "hero, body, footer, and styles sections. For 'carousel' type, includes an array of bubble containers in " + + "the 'contents' property.", + ), +}); + server.tool( "push_text_message", - "Push a simple text message to user via LINE. Use this for sending plain text messages without formatting.", + "Push a simple text message to a user via LINE. Use this for sending plain text messages without formatting.", { - userId: z - .string() - .optional() - .describe( - "The user ID to receive a message. Defaults to DESTINATION_USER_ID.", - ), - message: z.object({ - type: z.literal("text").default("text"), - text: z - .string() - .max(5000) - .describe("The plain text content to send to the user."), - }), + userId: userIdSchema, + message: textMessageSchema, }, async ({ userId, message }) => { - const response = await messagingApiClient.pushMessage({ - to: userId ?? destinationId, - messages: [message as unknown as line.messagingApi.FlexMessage], - }); - return { - content: [ - { - type: "text", - text: JSON.stringify(response), - }, - ], - }; + if (!userId) { + return createErrorResponse(NO_USER_ID_ERROR); + } + + try { + const response = await messagingApiClient.pushMessage({ + to: userId, + messages: [message as unknown as line.messagingApi.Message], + }); + return createSuccessResponse(response); + } catch (error) { + return createErrorResponse(`Failed to push message: ${error.message}`); + } }, ); server.tool( "push_flex_message", - "Push a highly customizable flex message to user via LINE. Supports both bubble (single container) and carousel " + + "Push a highly customizable flex message to a user via LINE. Supports both bubble (single container) and carousel " + "(multiple swipeable bubbles) layouts.", { - userId: z - .string() - .optional() - .describe( - "The user ID to receive a message. Defaults to DESTINATION_USER_ID.", - ), - message: z.object({ - type: z.literal("flex").default("flex"), - altText: z - .string() - .describe( - "Alternative text shown when flex message cannot be displayed.", - ), - contents: z - .object({ - type: z - .enum(["bubble", "carousel"]) - .describe( - "Type of the container. 'bubble' for single container, 'carousel' for multiple swipeable bubbles.", - ), - }) - .passthrough() - .describe( - "Flexible container structure following LINE Flex Message format. For 'bubble' type, can include header, " + - "hero, body, footer, and styles sections. For 'carousel' type, includes an array of bubble containers in " + - "the 'contents' property.", - ), - }), + userId: userIdSchema, + message: flexMessageSchema, }, async ({ userId, message }) => { - const response = await messagingApiClient.pushMessage({ - to: userId ?? destinationId, - messages: [message as unknown as line.messagingApi.FlexMessage], - }); - return { - content: [ - { - type: "text", - text: JSON.stringify(response), - }, - ], - }; + if (!userId) { + return createErrorResponse(NO_USER_ID_ERROR); + } + + try { + const response = await messagingApiClient.pushMessage({ + to: userId, + messages: [message as unknown as line.messagingApi.Message], + }); + return createSuccessResponse(response); + } catch (error) { + return createErrorResponse( + `Failed to push flex message: ${error.message}`, + ); + } + }, +); + +server.tool( + "broadcast_text_message", + "Broadcast a simple text message via LINE to all users who have followed your LINE Official Account. Use this for sending " + + "plain text messages without formatting. Please be aware that this message will be sent to all users.", + { + message: textMessageSchema, + }, + async ({ message }) => { + try { + const response = await messagingApiClient.broadcast({ + messages: [message as unknown as line.messagingApi.Message], + }); + return createSuccessResponse(response); + } catch (error) { + return createErrorResponse( + `Failed to broadcast message: ${error.message}`, + ); + } + }, +); + +server.tool( + "broadcast_flex_message", + "Broadcast a highly customizable flex message via LINE to all users who have added your LINE Official Account. " + + "Supports both bubble (single container) and carousel (multiple swipeable bubbles) layouts. Please be aware that " + + "this message will be sent to all users.", + { + message: flexMessageSchema, + }, + async ({ message }) => { + try { + const response = await messagingApiClient.broadcast({ + messages: [message as unknown as line.messagingApi.Message], + }); + return createSuccessResponse(response); + } catch (error) { + return createErrorResponse( + `Failed to broadcast message: ${error.message}`, + ); + } }, ); @@ -123,25 +195,19 @@ server.tool( "get_profile", "Get detailed profile information of a LINE user including display name, profile picture URL, status message and language.", { - userId: z - .string() - .optional() - .describe( - "The ID of the user whose profile you want to retrieve. Defaults to DESTINATION_USER_ID.", - ), + userId: userIdSchema, }, async ({ userId }) => { - const response = await messagingApiClient.getProfile( - userId ?? destinationId, - ); - return { - content: [ - { - type: "text", - text: JSON.stringify(response), - }, - ], - }; + if (!userId) { + return createErrorResponse(NO_USER_ID_ERROR); + } + + try { + const response = await messagingApiClient.getProfile(userId); + return createSuccessResponse(response); + } catch (error) { + return createErrorResponse(`Failed to get profile: ${error.message}`); + } }, ); @@ -151,11 +217,6 @@ async function main() { process.exit(1); } - if (!process.env.DESTINATION_USER_ID) { - console.error("Please set DESTINATION_USER_ID"); - process.exit(1); - } - const transport = new StdioServerTransport(); await server.connect(transport); } From cdc2bf3c3629de504298b32a5ac9b59416c0339c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 17 Apr 2025 19:53:46 +0000 Subject: [PATCH 007/415] Update dependency @modelcontextprotocol/sdk to v1.10.0 (#28) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6378ef52..539149e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -465,9 +465,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.9.0.tgz", - "integrity": "sha512-Jq2EUCQpe0iyO5FGpzVYDNFR6oR53AIrwph9yWl7uSc7IWUMsrmpmSaTGra5hQNunXpM+9oit85p924jWuHzUA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.10.0.tgz", + "integrity": "sha512-wijOavYZfSOADbVM0LA7mrQ17N4IKNdFcfezknCCsZ1Y1KstVWlkDZ5ebcxuQJmqTTxsNjBHLc7it1SV0TBiPg==", "license": "MIT", "dependencies": { "content-type": "^1.0.5", From 3c11a767b2d2afffddcf73b661ff21ef4d6d944f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 18 Apr 2025 15:48:49 +0000 Subject: [PATCH 008/415] Update dependency @modelcontextprotocol/sdk to v1.10.1 (#29) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 539149e4..f0c4f0cd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -465,9 +465,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.10.0.tgz", - "integrity": "sha512-wijOavYZfSOADbVM0LA7mrQ17N4IKNdFcfezknCCsZ1Y1KstVWlkDZ5ebcxuQJmqTTxsNjBHLc7it1SV0TBiPg==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.10.1.tgz", + "integrity": "sha512-xNYdFdkJqEfIaTVP1gPKoEvluACHZsHZegIoICX8DM1o6Qf3G5u2BQJHmgd0n4YgRPqqK/u1ujQvrgAxxSJT9w==", "license": "MIT", "dependencies": { "content-type": "^1.0.5", From 5c636ccd8f5f14fd9896c6513f4ad440873bc024 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 21 Apr 2025 10:41:49 +0000 Subject: [PATCH 009/415] Update pnpm to v10.9.0 (#30) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 59001348..4e51e5b3 100644 --- a/package.json +++ b/package.json @@ -43,5 +43,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.8.1+sha512.c50088ba998c67b8ca8c99df8a5e02fd2ae2e2b29aaf238feaa9e124248d3f48f9fb6db2424949ff901cffbb5e0f0cc1ad6aedb602cd29450751d11c35023677" + "packageManager": "pnpm@10.9.0+sha512.0486e394640d3c1fb3c9d43d49cf92879ff74f8516959c235308f5a8f62e2e19528a65cdc2a3058f587cde71eba3d5b56327c8c33a97e4c4051ca48a10ca2d5f" } From cd80428634bfe126399f5b8c58d39c2213df6466 Mon Sep 17 00:00:00 2001 From: mochiko Date: Tue, 22 Apr 2025 17:32:31 +0900 Subject: [PATCH 010/415] Fixed broken links that should start with domain name but only path (#31) Update README.ja.md --- README.ja.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.ja.md b/README.ja.md index 2fdd6987..8072469f 100644 --- a/README.ja.md +++ b/README.ja.md @@ -60,7 +60,7 @@ cd line-bot-mcp-server && npm install && npm run build このMCP ServerはLINE公式アカウントを利用しています。公式アカウントをお持ちでない場合は、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-started/#create-oa)に従って作成してください。 -LINE公式アカウントをお持ちであれば、[こちらの手順](/docs/messaging-api/getting-started/#using-oa-manager)に従ってMessaging APIを有効にしてください。 +LINE公式アカウントをお持ちであれば、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-started/#using-oa-manager)に従ってMessaging APIを有効にしてください。 ### Step 3: AI Agentを設定 From add708a0267fb036c1d5ab12fcdb9df114368e00 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 22 Apr 2025 19:15:20 +0900 Subject: [PATCH 011/415] Update dependency @line/bot-sdk to v9.9.0 (#32) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f0c4f0cd..2552042a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -450,9 +450,9 @@ } }, "node_modules/@line/bot-sdk": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-9.8.0.tgz", - "integrity": "sha512-vw4TTtkw5zwKu/FhATnm5n2sCcoKjcHEgN16Oq5NyXwGEzIcyh6RwGrYnX4SisiPO1lklAIba1DuDf9hEYZ4mg==", + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-9.9.0.tgz", + "integrity": "sha512-/jVjH7k2uMWY1O0F/zkwYD3dqDH/pWbawvDtR6DV/scruH86w9zZrMwknZLt1unUWdK+V9eX4UVP/gLAzqUocg==", "license": "Apache-2.0", "dependencies": { "@types/node": "^22.0.0" From ba53426a4866a1ec35e254f24124ce6b3fc4c487 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 22 Apr 2025 15:57:03 +0000 Subject: [PATCH 012/415] Update dependency @modelcontextprotocol/sdk to v1.10.2 (#33) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2552042a..a267b8b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -465,9 +465,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.10.1.tgz", - "integrity": "sha512-xNYdFdkJqEfIaTVP1gPKoEvluACHZsHZegIoICX8DM1o6Qf3G5u2BQJHmgd0n4YgRPqqK/u1ujQvrgAxxSJT9w==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.10.2.tgz", + "integrity": "sha512-rb6AMp2DR4SN+kc6L1ta2NCpApyA9WYNx3CrTSZvGxq9wH71bRur+zRqPfg0vQ9mjywR7qZdX2RGHOPq3ss+tA==", "license": "MIT", "dependencies": { "content-type": "^1.0.5", From 8de20e27c735a40cd1df469597758beb1a6cc1e6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 23 Apr 2025 19:48:14 +0000 Subject: [PATCH 013/415] Update Node.js to v22.15.0 (#34) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 10ae7f86..28882ae3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.14-alpine AS builder +FROM node:22.15-alpine AS builder COPY . /app From cc8dae0fd8ba6002915d2fefce679f70f12236f1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 24 Apr 2025 22:31:22 +0000 Subject: [PATCH 014/415] Update dependency @types/node to v22.15.0 (#36) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a267b8b4..f760161e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -524,9 +524,9 @@ } }, "node_modules/@types/node": { - "version": "22.14.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", - "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", + "version": "22.15.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.0.tgz", + "integrity": "sha512-99S8dWD2DkeE6PBaEDw+In3aar7hdoBvjyJMR6vaKBTzpvR0P00ClzJMOoVrj9D2+Sy/YCwACYHnBTpMhg1UCA==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From eca7c9f8448576bc0890b381c613b087af158dba Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Fri, 25 Apr 2025 06:04:37 +0000 Subject: [PATCH 015/415] Add release workflow (#35) * Add release workflow * Update .github/workflows/release.yml Co-authored-by: Yuta Kasai * Add workflow to create draft release with auto-generated notes * Add changelog configuration for automated release notes * Add versioning and contributing guidelines to README * Update package version to 0.0.1-local in package.json and package-lock.json * Add publint step to CI workflow in test.yml * Add bin field to package.json for command line interface * Remove main entry from package.json * Add shebang to index.ts for CLI execution * Install pnpm globally for publint step in CI workflow --------- Co-authored-by: Yuta Kasai --- .github/release.yml | 24 ++++ .github/scripts/update-version.mjs | 83 +++++++++++++ .github/workflows/create-draft-release.yml | 133 +++++++++++++++++++++ .github/workflows/release.yml | 57 +++++++++ .github/workflows/test.yml | 4 + README.md | 10 ++ package-lock.json | 7 +- package.json | 9 +- src/index.ts | 2 + 9 files changed, 324 insertions(+), 5 deletions(-) create mode 100644 .github/release.yml create mode 100644 .github/scripts/update-version.mjs create mode 100644 .github/workflows/create-draft-release.yml create mode 100644 .github/workflows/release.yml diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 00000000..fe1b7dc8 --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,24 @@ +# https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes +changelog: + categories: + - title: Breaking Changes + labels: + - breaking-change + - title: line-openapi updates + labels: + - line-openapi-update + - title: New Features + labels: + - new-features + - title: Bug fix + labels: + - bug-fix + - title: Dependency updates + labels: + - dependency upgrade + exclude: + labels: + - line-openapi-update + - title: Other Changes + labels: + - "*" diff --git a/.github/scripts/update-version.mjs b/.github/scripts/update-version.mjs new file mode 100644 index 00000000..81c65dba --- /dev/null +++ b/.github/scripts/update-version.mjs @@ -0,0 +1,83 @@ +import fs from 'fs/promises'; +import { exec } from 'child_process'; +import { promisify } from 'util'; + +const execAsync = promisify(exec); + +async function updateVersion(newVersion) { + // Files having version number + const files = { + packageJson: './package.json', + packageLockJson: './package-lock.json', + }; + + // package.json + const packageJsonData = JSON.parse(await fs.readFile(files.packageJson, 'utf8')); + packageJsonData.version = newVersion; + await fs.writeFile(files.packageJson, JSON.stringify(packageJsonData, null, 2) + '\n'); + + // package-lock.json + const packageLockJsonData = JSON.parse(await fs.readFile(files.packageLockJson, 'utf8')); + packageLockJsonData.version = newVersion; + if (packageLockJsonData.packages && packageLockJsonData.packages[""]) { + packageLockJsonData.packages[""].version = newVersion; + } + await fs.writeFile(files.packageLockJson, JSON.stringify(packageLockJsonData, null, 2) + '\n'); +} + +async function verifyVersion(expectedVersion) { + // package.json + const packageJsonData = JSON.parse(await fs.readFile('./package.json', 'utf8')); + if (packageJsonData.version !== expectedVersion) { + throw new Error(`package.json version mismatch: expected ${expectedVersion}, found ${packageJsonData.version}`); + } + + // package-lock.json + const packageLockJsonData = JSON.parse(await fs.readFile('./package-lock.json', 'utf8')); + if (packageLockJsonData.version !== expectedVersion) { + throw new Error(`package-lock.json version mismatch: expected ${expectedVersion}, found ${packageLockJsonData.version}`); + } + if (packageLockJsonData.packages && packageLockJsonData.packages[""] && packageLockJsonData.packages[""].version !== expectedVersion) { + throw new Error(`package-lock.json root package version mismatch: expected ${expectedVersion}, found ${packageLockJsonData.packages[""].version}`); + } + + console.log(`All files have the correct version: ${expectedVersion}`); +} + +async function verifyGitDiff() { + try { + const { stdout: numstatOutput } = await execAsync('git diff --numstat'); + const { addedLines, deletedLines } = numstatOutput.trim().split('\n').reduce((acc, line) => { + const [added, deleted] = line.split('\t').map(Number); + acc.addedLines += added; + acc.deletedLines += deleted; + return acc; + }, { addedLines: 0, deletedLines: 0 }); + + if (addedLines !== 3 || deletedLines !== 3) { + throw new Error(`Unexpected number of changed lines: expected 4 added and 4 deleted, found ${addedLines} added and ${deletedLines} deleted`); + } + + console.log('Git diff verification passed: 4 lines added and 4 lines deleted.'); + + // Display the diff with context and color + const { stdout: diffOutput } = await execAsync('git diff -U5 --color=always'); + console.log('Git diff with context and color:\n', diffOutput); + + } catch (error) { + console.error('Error during git diff verification:', error.message); + process.exit(1); + } +} + +// Main process +const args = process.argv.slice(2); +if (args.length !== 1) { + console.error('Usage: node update-version.mjs '); + process.exit(1); +} + +const newVersion = args[0]; +await updateVersion(newVersion); +await verifyVersion(newVersion); +await verifyGitDiff(); diff --git a/.github/workflows/create-draft-release.yml b/.github/workflows/create-draft-release.yml new file mode 100644 index 00000000..5d4aebf4 --- /dev/null +++ b/.github/workflows/create-draft-release.yml @@ -0,0 +1,133 @@ +name: Create Draft Release with Auto-Generated Notes + +on: + workflow_dispatch: + inputs: + version_type: + description: "Select the version type to increment (major, minor, patch)" + required: true + type: choice + options: + - patch + - minor + - major + release_title: + description: "Enter the title of the release" + required: true + type: string + acknowledge_draft: + description: "I understand that I must re-edit and finalize the draft release (Y/N)" + required: true + type: choice + options: + - "No" + - "Yes" + +jobs: + validate-input: + runs-on: ubuntu-latest + permissions: {} + steps: + - name: Validate Acknowledgement + if: ${{ github.event.inputs.acknowledge_draft != 'Yes' }} + run: | + echo "You must select 'Yes' to acknowledge your responsibility for finalizing the draft release." + exit 1 + - name: Validate title (no empty) + if: ${{ github.event.inputs.release_title == '' }} + run: | + echo "You must enter a title for the release." + exit 1 + + create-draft-release: + runs-on: ubuntu-latest + needs: validate-input + permissions: + contents: write + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - name: Fetch Latest Release + id: get-latest-release + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + const latestRelease = await github.rest.repos.getLatestRelease({ + owner: context.repo.owner, + repo: context.repo.repo, + }).catch(() => null); + + if (latestRelease) { + core.setOutput('latest_tag', latestRelease.data.tag_name); + } else { + core.setOutput('latest_tag', 'v0.0.0'); // Default for first release + } + + - name: Calculate New Version + id: calculate-version + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + const latestTag = '${{ steps.get-latest-release.outputs.latest_tag }}'; + const versionType = '${{ github.event.inputs.version_type }}'; + + const [major, minor, patch] = latestTag.replace('v', '').split('.').map(Number); + + let newVersion; + if (versionType === 'major') { + newVersion = `v${major + 1}.0.0`; + } else if (versionType === 'minor') { + newVersion = `v${major}.${minor + 1}.0`; + } else { + newVersion = `v${major}.${minor}.${patch + 1}`; + } + + core.setOutput('new_version', newVersion); + + - name: Generate Release Notes + id: generate-release-notes + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + const { data: releaseNotes } = await github.rest.repos.generateReleaseNotes({ + owner: context.repo.owner, + repo: context.repo.repo, + tag_name: "${{ steps.calculate-version.outputs.new_version }}" + }); + + const actor = context.actor; + const noteToAdd = `**@${actor} 👈 TODO: Write detailed release note for this version before release**\n`; + + const footer = `---\nThis release is prepared by @${actor}`; + + const modifiedBody = releaseNotes.body.replace( + '## What\'s Changed', + `## What's Changed\n\n${noteToAdd}` + ) + .concat(`\n\n${footer}`); + + console.log(`releaseNotes (modified): ${JSON.stringify(modifiedBody, null, 2)}`); + core.setOutput("release_body", modifiedBody); + + - name: Prepare Release Title + id: title + env: + # "vX.Y.Z Release Title" + RAW_TITLE: ${{ steps.calculate-version.outputs.new_version }} ${{ github.event.inputs.release_title }} + run: | + # Print RAW_TITLE safely, then escape double quotes + SANITIZED_TITLE="$(printf '%s' "$RAW_TITLE" | sed 's/"/\\"/g')" + echo "sanitized_title=$SANITIZED_TITLE" >> "$GITHUB_OUTPUT" + + - name: Write Release Notes to File + run: | + echo "${{ steps.generate-release-notes.outputs.release_body }}" > release-notes.txt + + - name: Create Draft Release + run: | + gh release create "${{ steps.calculate-version.outputs.new_version }}" \ + --title "${{ steps.title.outputs.sanitized_title }}" \ + --notes-file release-notes.txt \ + --draft \ + --repo "${{ github.repository }}" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..6d590bb4 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,57 @@ +name: Release Node.js Package +on: + release: + types: [published] + workflow_dispatch: + inputs: + version: + description: 'The version to release' + required: true + +jobs: + release-package: + runs-on: ubuntu-latest + permissions: + contents: read + id-token: write + issues: write + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + # Setup .npmrc file to publish to GitHub Packages + - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + with: + node-version: 22 + registry-url: 'https://registry.npmjs.org' + - run: npm install + - name: Update version in package.json, package-lock.json + run: | + if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then + VERSION=${{ github.event.inputs.version }} + else + VERSION=${{ github.event.release.tag_name }} + fi + VERSION=${VERSION#v} + echo "VERSION=$VERSION" >> $GITHUB_ENV + node .github/scripts/update-version.mjs $VERSION + - run: npm run release + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + + - name: Create GitHub Issue on Failure + if: failure() + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + const { owner, repo } = context.repo; + const version = process.env.VERSION; + const issueTitle = `Release job for ${version} failed`; + const issueBody = `The release job failed. Please check the [workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) for more details.`; + const assignees = [context.actor]; + + await github.rest.issues.create({ + owner, + repo, + title: issueTitle, + body: issueBody, + assignees + }); diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index fbafe357..ebb382a4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,6 +31,10 @@ jobs: run: npm ci - name: Build run: npm run build + - name: Install pnpm # For publint + run: npm install -g pnpm + - name: publint + run: npx publint pinact: runs-on: ubuntu-latest diff --git a/README.md b/README.md index 9093fa6b..3c30a23f 100644 --- a/README.md +++ b/README.md @@ -122,3 +122,13 @@ docker build -t line/line-bot-mcp-server . } } ``` + +## Versioning + +This project respects semantic versioning + +See http://semver.org/ + +## Contributing + +Please check [CONTRIBUTING](./CONTRIBUTING.md) before making a contribution. diff --git a/package-lock.json b/package-lock.json index f760161e..eccff0a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,21 @@ { "name": "@line/line-bot-mcp-server", - "version": "0.0.1", + "version": "0.0.1-local", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@line/line-bot-mcp-server", - "version": "0.0.1", + "version": "0.0.1-local", "license": "Apache-2.0", "dependencies": { "@line/bot-sdk": "^9.8.0", "@modelcontextprotocol/sdk": "^1.8.0", "zod": "^3.24.2" }, + "bin": { + "line-bot-mcp-server": "dist/index.js" + }, "devDependencies": { "@types/node": "^22", "prettier": "3.5.3", diff --git a/package.json b/package.json index 4e51e5b3..c58f1cbe 100644 --- a/package.json +++ b/package.json @@ -1,23 +1,26 @@ { "name": "@line/line-bot-mcp-server", - "version": "0.0.1", + "version": "0.0.1-local", "description": "MCP server for interacting with your LINE Official Account", "type": "module", "engines": { "node": ">=20" }, "module": "./dist/index.js", + "bin": { + "line-bot-mcp-server": "./dist/index.js" + }, "files": [ "dist" ], - "main": "src/index.ts", "scripts": { "build": "tsc && shx chmod +x dist/*.js", "prettier": "prettier \"src/**/*.ts\"", "format": "npm run prettier -- --write", "format:check": "npm run prettier -- -l", "clean": "rm -rf dist/*", - "prebuild": "npm run format:check && npm run clean" + "prebuild": "npm run format:check && npm run clean", + "release": "npm run build && npm publish --provenance --access public" }, "repository": { "type": "git", diff --git a/src/index.ts b/src/index.ts index bbd8f674..ba4ff817 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,5 @@ +#!/usr/bin/env node + /** * Copyright 2025 LY Corporation * From cf7fd01541fb2552b3fd057f0e31bdd0f13cf6c9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 25 Apr 2025 06:06:10 +0000 Subject: [PATCH 016/415] Update dependency @types/node to v22.15.1 (#37) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index eccff0a7..da671302 100644 --- a/package-lock.json +++ b/package-lock.json @@ -527,9 +527,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.0.tgz", - "integrity": "sha512-99S8dWD2DkeE6PBaEDw+In3aar7hdoBvjyJMR6vaKBTzpvR0P00ClzJMOoVrj9D2+Sy/YCwACYHnBTpMhg1UCA==", + "version": "22.15.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.1.tgz", + "integrity": "sha512-gSZyd0Qmv7qvbd2fJ9HGdYmv1yhNdelIA4YOtN6vkcmSwFhthxSEsBgU/JYZcXjWT6DFzoATcHrc52Ckh8SeRA==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 5af4a7f031f6bcb0c03148e60cb89db04daaf5de Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 25 Apr 2025 13:53:03 +0000 Subject: [PATCH 017/415] Update dependency @types/node to v22.15.2 (#39) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index da671302..3ed1ec94 100644 --- a/package-lock.json +++ b/package-lock.json @@ -527,9 +527,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.1.tgz", - "integrity": "sha512-gSZyd0Qmv7qvbd2fJ9HGdYmv1yhNdelIA4YOtN6vkcmSwFhthxSEsBgU/JYZcXjWT6DFzoATcHrc52Ckh8SeRA==", + "version": "22.15.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.2.tgz", + "integrity": "sha512-uKXqKN9beGoMdBfcaTY1ecwz6ctxuJAcUlwE55938g0ZJ8lRxwAZqRz2AJ4pzpt5dHdTPMB863UZ0ESiFUcP7A==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 6d50cd3d7adf276b2425f9395eb94355e29d3dd6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 02:14:59 +0000 Subject: [PATCH 018/415] Update pnpm to v10.10.0 (#41) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c58f1cbe..334c415d 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.9.0+sha512.0486e394640d3c1fb3c9d43d49cf92879ff74f8516959c235308f5a8f62e2e19528a65cdc2a3058f587cde71eba3d5b56327c8c33a97e4c4051ca48a10ca2d5f" + "packageManager": "pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39" } From 49618f41fd1515f1f70b1620adebc6c11ddd457d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 11:39:06 +0900 Subject: [PATCH 019/415] Update actions/setup-node action to v4.4.0 (#38) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6d590bb4..51923d46 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Setup .npmrc file to publish to GitHub Packages - - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: 22 registry-url: 'https://registry.npmjs.org' From e1cd1f2a5014d9a7e78e0213b546578f8ce18bb5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 29 Apr 2025 17:09:18 +0900 Subject: [PATCH 020/415] Update dependency tsx to v4.19.4 (#45) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3ed1ec94..dd27458b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2174,9 +2174,9 @@ } }, "node_modules/tsx": { - "version": "4.19.3", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.3.tgz", - "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==", + "version": "4.19.4", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.4.tgz", + "integrity": "sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==", "dev": true, "license": "MIT", "dependencies": { From 7143ab38b0a05b3820396ecc0700e57780094fac Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 29 Apr 2025 16:52:59 +0000 Subject: [PATCH 021/415] Update dependency @types/node to v22.15.3 (#42) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index dd27458b..60f16104 100644 --- a/package-lock.json +++ b/package-lock.json @@ -527,9 +527,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.2.tgz", - "integrity": "sha512-uKXqKN9beGoMdBfcaTY1ecwz6ctxuJAcUlwE55938g0ZJ8lRxwAZqRz2AJ4pzpt5dHdTPMB863UZ0ESiFUcP7A==", + "version": "22.15.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.3.tgz", + "integrity": "sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 358f25279177519e809e9aa9d299379b95072ccf Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Thu, 1 May 2025 12:23:04 +0900 Subject: [PATCH 022/415] Update installation instructions in README (#46) * Update installation instructions in README files for npx and Docker usage (cherry picked from commit 57791c5ca85a4f4d2029588b576ba3174f880d3d) * Add npm package badge to README files --- README.ja.md | 64 ++++++++++++++++++++++++++-------------------------- README.md | 61 +++++++++++++++++++++++++++++-------------------- 2 files changed, 69 insertions(+), 56 deletions(-) diff --git a/README.ja.md b/README.ja.md index 8072469f..f0b89000 100644 --- a/README.ja.md +++ b/README.ja.md @@ -1,5 +1,7 @@ # LINE Bot MCP Server +[![npmjs](https://badge.fury.io/js/%40line%2Fline-bot-mcp-server.svg)](https://www.npmjs.com/package/@line/line-bot-mcp-server) + LINE公式アカウントとAI Agentを接続するために、LINE Messaging APIを統合する[Model Context Protocol (MCP)](https://github.com/modelcontextprotocol) Server ![](/assets/demo.ja.png) @@ -36,57 +38,33 @@ LINE公式アカウントとAI Agentを接続するために、LINE Messaging AP - **Inputs:** - `user_id` (string?): プロフィールを取得したいユーザーのユーザーID。デフォルトはDESTINATION_USER_ID。 -## インストール - -### Step 1: line-bot-mcp-serverをインストール +## インストール (npxを使用) 要件: - Node.js v20 以上 -このリポジトリをクローンします: - -``` -git clone git@github.com:line/line-bot-mcp-server.git -``` - -Node.jsを利用する場合は、必要な依存関係をインストールし、line-bot-mcp-serverをビルドします。Dockerを利用する場合は不要です。: - -``` -cd line-bot-mcp-server && npm install && npm run build -``` - - -### Step 2: LINE公式アカウントを作成 +### Step 1: LINE公式アカウントを作成 このMCP ServerはLINE公式アカウントを利用しています。公式アカウントをお持ちでない場合は、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-started/#create-oa)に従って作成してください。 LINE公式アカウントをお持ちであれば、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-started/#using-oa-manager)に従ってMessaging APIを有効にしてください。 -### Step 3: AI Agentを設定 +### Step 2: AI Agentを設定 Claude DesktopやClaudeなどのAI Agentに次の設定を追加してください。 環境変数や引数は次のように設定してください: -- `mcpServers.args`: (必須) `line-bot-mcp-server`へのパス。 - `CHANNEL_ACCESS_TOKEN`: (必須) チャネルアクセストークン。これを取得するには、[こちらの手順](https://developers.line.biz/ja/docs/basics/channel-access-token/#long-lived-channel-access-token)に従ってください。 - `DESTINATION_USER_ID`: (オプション) デフォルトのメッセージ受信者のユーザーID。これを確認するには、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-user-ids/#get-own-user-id)に従ってください。 -### Step 3: AI Agentを設定 - -Claude DesktopやClaudeなどのAI Agentに次の設定を追加してください。 -`CHANNEL_ACCESS_TOKEN`と`DESTINATION_USER_ID`には、先ほど取得したチャネルアクセストークンとユーザーIDをそれぞれ挿入してください。 -加えて、`mcpServers.args`にある`line-bot-mcp-server`へのパスを更新してください。 - -#### Option 1: Node.jsを利用する場合 - ```json { "mcpServers": { "line-bot": { - "command": "node", + "command": "npx", "args": [ - "PATH/TO/line-bot-mcp-server/dist/index.js" + "@line/line-bot-mcp-server" ], "env": { "CHANNEL_ACCESS_TOKEN" : "FILL_HERE", @@ -97,14 +75,36 @@ Claude DesktopやClaudeなどのAI Agentに次の設定を追加してくださ } ``` -#### Option 2: Dockerを利用する場合 +## インストール (Dockerを使用) + +### Step 1: LINE公式アカウントを作成 -まずDockerイメージをビルドします: +このMCP ServerはLINE公式アカウントを利用しています。公式アカウントをお持ちでない場合は、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-started/#create-oa)に従って作成してください。 + +LINE公式アカウントをお持ちであれば、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-started/#using-oa-manager)に従ってMessaging APIを有効にしてください。 + +### Step 2: line-bot-mcp-serverをインストール + +このリポジトリをクローンします: + +``` +git clone git@github.com:line/line-bot-mcp-server.git +``` + +Dockerイメージをビルドします: ``` docker build -t line/line-bot-mcp-server . ``` -次のように設定します: +### Step 3: AI Agentを設定 + +Claude DesktopやClaudeなどのAI Agentに次の設定を追加してください。 + +環境変数や引数は次のように設定してください: + +- `mcpServers.args`: (必須) `line-bot-mcp-server`へのパス。 +- `CHANNEL_ACCESS_TOKEN`: (必須) チャネルアクセストークン。これを取得するには、[こちらの手順](https://developers.line.biz/ja/docs/basics/channel-access-token/#long-lived-channel-access-token)に従ってください。 +- `DESTINATION_USER_ID`: (オプション) デフォルトのメッセージ受信者のユーザーID。これを確認するには、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-user-ids/#get-own-user-id)に従ってください。 ```json { diff --git a/README.md b/README.md index 3c30a23f..ceb27a37 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ # LINE Bot MCP Server +[![npmjs](https://badge.fury.io/js/%40line%2Fline-bot-mcp-server.svg)](https://www.npmjs.com/package/@line/line-bot-mcp-server) + [Model Context Protocol (MCP)](https://github.com/modelcontextprotocol) server implementation that integrates the LINE Messaging API to connect an AI Agent to the LINE Official Account. ![](/assets/demo.png) @@ -39,49 +41,33 @@ - `user_id` (string?): The ID of the user whose profile you want to retrieve. Defaults to DESTINATION_USER_ID. -## Installation - -### Step 1: Install line-bot-mcp-server +## Installation (Using npx) requirements: - Node.js v20 or later -Clone this repository: - -``` -git clone git@github.com:line/line-bot-mcp-server.git -``` - -Install the necessary dependencies and build line-bot-mcp-server when using Node.js. This step is not required when using Docker: - -``` -cd line-bot-mcp-server && npm install && npm run build -``` - -### Step 2: Create LINE Official Account +### Step 1: Create LINE Official Account This MCP server utilizes a LINE Official Account. If you do not have one, please create it by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-started/#create-oa). If you have a LINE Official Account, enable the Messaging API for your LINE Official Account by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-started/#using-oa-manager). -### Step 3: Configure AI Agent +### Step 2: Configure AI Agent Please add the following configuration for an AI Agent like Claude Desktop or Cline. Set the environment variables or arguments as follows: -- `mcpServers.args`: (required) The path to `line-bot-mcp-server`. + - `CHANNEL_ACCESS_TOKEN`: (required) Channel Access Token. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/basics/channel-access-token/#long-lived-channel-access-token). - `DESTINATION_USER_ID`: (optional) The default user ID of the recipient. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-user-ids/#get-own-user-id). -#### Option 1: Use Node - ```json { "mcpServers": { "line-bot": { - "command": "node", + "command": "npx", "args": [ - "PATH/TO/line-bot-mcp-server/dist/index.js" + "@line/line-bot-mcp-server" ], "env": { "CHANNEL_ACCESS_TOKEN" : "FILL_HERE", @@ -92,13 +78,40 @@ Set the environment variables or arguments as follows: } ``` -#### Option 2: Use Docker +## Installation (Using Docker) + +### Step 1: Create LINE Official Account + +This MCP server utilizes a LINE Official Account. If you do not have one, please create it by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-started/#create-oa). + +If you have a LINE Official Account, enable the Messaging API for your LINE Official Account by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-started/#using-oa-manager). + + +### Step 2: Build line-bot-mcp-server image + +Clone this repository: + +``` +git clone git@github.com:line/line-bot-mcp-server.git +``` + +Build the Docker image: -Build the Docker image first: ``` docker build -t line/line-bot-mcp-server . ``` +### Step 3: Configure AI Agent + +Please add the following configuration for an AI Agent like Claude Desktop or Cline. + +Set the environment variables or arguments as follows: + +- `mcpServers.args`: (required) The path to `line-bot-mcp-server`. +- `CHANNEL_ACCESS_TOKEN`: (required) Channel Access Token. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/basics/channel-access-token/#long-lived-channel-access-token). +- `DESTINATION_USER_ID`: (optional) The default user ID of the recipient. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-user-ids/#get-own-user-id). + + ```json { "mcpServers": { From a68a5bddcf6d58bb39b63fcffeda137d5a62ca9d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 1 May 2025 18:18:51 +0000 Subject: [PATCH 023/415] Update dependency @modelcontextprotocol/sdk to v1.11.0 (#50) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 60f16104..1945a7be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.10.2.tgz", - "integrity": "sha512-rb6AMp2DR4SN+kc6L1ta2NCpApyA9WYNx3CrTSZvGxq9wH71bRur+zRqPfg0vQ9mjywR7qZdX2RGHOPq3ss+tA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.0.tgz", + "integrity": "sha512-k/1pb70eD638anoi0e8wUGAlbMJXyvdV4p62Ko+EZ7eBe1xMx8Uhak1R5DgfoofsK5IBBnRwsYGTaLZl+6/+RQ==", "license": "MIT", "dependencies": { "content-type": "^1.0.5", From 954cfc49c21378b3ca868db068714ee757a6e447 Mon Sep 17 00:00:00 2001 From: koichi uchinishi Date: Sat, 3 May 2025 18:32:56 +0900 Subject: [PATCH 024/415] Show number of messages sent this month (#44) * add Push API limit MCP * update README.md * merge the one tool for limit and quota * update the README.md --- README.ja.md | 7 ++++++- README.md | 5 ++++- src/index.ts | 16 ++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/README.ja.md b/README.ja.md index f0b89000..46fd37c1 100644 --- a/README.ja.md +++ b/README.ja.md @@ -35,8 +35,13 @@ LINE公式アカウントとAI Agentを接続するために、LINE Messaging AP - `message.contents.type` (enum): コンテナのタイプ。'bubble'は単一コンテナ、'carousel'は複数のスワイプ可能なバブルを示す。 5. **get_profile** - LINEユーザーの詳細なプロフィール情報を取得する。表示名、プロフィール画像URL、ステータスメッセージ、言語を取得できる。 - - **Inputs:** + - **入力:** - `user_id` (string?): プロフィールを取得したいユーザーのユーザーID。デフォルトはDESTINATION_USER_ID。 +6. **get_message_quota** + - LINE公式アカウントのメッセージ容量と消費量を取得します。月間メッセージ制限と現在の使用量が表示されます。 + - **入力:** + - なし + ## インストール (npxを使用) diff --git a/README.md b/README.md index ceb27a37..7433c7dc 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,10 @@ - Get detailed profile information of a LINE user including display name, profile picture URL, status message and language. - **Inputs:** - `user_id` (string?): The ID of the user whose profile you want to retrieve. Defaults to DESTINATION_USER_ID. - +6. **get_message_quota** + - Get the message quota and consumption of the LINE Official Account. This shows the monthly message limit and current usage. + - **Inputs:** + - None ## Installation (Using npx) diff --git a/src/index.ts b/src/index.ts index ba4ff817..3c7e59be 100644 --- a/src/index.ts +++ b/src/index.ts @@ -213,6 +213,22 @@ server.tool( }, ); +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 () => { + const messageQuotaResponse = await messagingApiClient.getMessageQuota(); + const messageQuotaConsumptionResponse = + await messagingApiClient.getMessageQuotaConsumption(); + const response = { + limited: messageQuotaResponse.value, + totalUsage: messageQuotaConsumptionResponse.totalUsage, + }; + return createSuccessResponse(response); + }, +); + async function main() { if (!process.env.CHANNEL_ACCESS_TOKEN) { console.error("Please set CHANNEL_ACCESS_TOKEN"); From 805c77c0f9f9d2ff89ed52827d3030ffc95f181f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 5 May 2025 03:46:21 +0000 Subject: [PATCH 025/415] Update dependency zod to v3.24.4 (#52) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1945a7be..25934064 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2267,9 +2267,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.24.3", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.3.tgz", - "integrity": "sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==", + "version": "3.24.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.4.tgz", + "integrity": "sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 75f52064b995a0030518d8feae83a978fc130f6d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 5 May 2025 22:11:07 +0000 Subject: [PATCH 026/415] Update dependency @types/node to v22.15.8 (#53) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 25934064..90428f20 100644 --- a/package-lock.json +++ b/package-lock.json @@ -527,9 +527,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.3.tgz", - "integrity": "sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==", + "version": "22.15.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.8.tgz", + "integrity": "sha512-VINDWfc4C3DGAa1J+riYRHjzt+IFj5eRaEl768ze7ZqXcjyN/4WHxPLAWMLTwmODpPvFyzuMTAT6A4RMOHlg5g==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From dd0de2a236f6d04e8b724ac30137150e1757b3ee Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 6 May 2025 02:13:42 +0000 Subject: [PATCH 027/415] Update dependency @types/node to v22.15.10 (#54) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 90428f20..52e02169 100644 --- a/package-lock.json +++ b/package-lock.json @@ -527,9 +527,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.8.tgz", - "integrity": "sha512-VINDWfc4C3DGAa1J+riYRHjzt+IFj5eRaEl768ze7ZqXcjyN/4WHxPLAWMLTwmODpPvFyzuMTAT6A4RMOHlg5g==", + "version": "22.15.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.10.tgz", + "integrity": "sha512-j2U4KRlgZ9Q8tVO/KDAvXu68vutX4kxoRysL6Q22oEU4ZFT2A16aIyqiIWAwFBZkvKep2UOcSGNoLe/6BI0nrg==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 6c6a2699685f8254dd261e1d03f5812018aca77b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 6 May 2025 07:13:56 +0000 Subject: [PATCH 028/415] Update dependency @types/node to v22.15.12 (#55) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 52e02169..a706bbe5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -527,9 +527,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.10.tgz", - "integrity": "sha512-j2U4KRlgZ9Q8tVO/KDAvXu68vutX4kxoRysL6Q22oEU4ZFT2A16aIyqiIWAwFBZkvKep2UOcSGNoLe/6BI0nrg==", + "version": "22.15.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.12.tgz", + "integrity": "sha512-K0fpC/ZVeb8G9rm7bH7vI0KAec4XHEhBam616nVJCV51bKzJ6oA3luG4WdKoaztxe70QaNjS/xBmcDLmr4PiGw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 11aaa813442a100d05a5ef01cb50c532c7bd31e2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 6 May 2025 20:23:49 +0000 Subject: [PATCH 029/415] Update dependency @types/node to v22.15.14 (#56) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a706bbe5..2b994670 100644 --- a/package-lock.json +++ b/package-lock.json @@ -527,9 +527,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.12.tgz", - "integrity": "sha512-K0fpC/ZVeb8G9rm7bH7vI0KAec4XHEhBam616nVJCV51bKzJ6oA3luG4WdKoaztxe70QaNjS/xBmcDLmr4PiGw==", + "version": "22.15.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.14.tgz", + "integrity": "sha512-BL1eyu/XWsFGTtDWOYULQEs4KR0qdtYfCxYAUYRoB7JP7h9ETYLgQTww6kH8Sj2C0pFGgrpM0XKv6/kbIzYJ1g==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From b5c4570dba898dc24c0fd678e413d367e0ec6bb0 Mon Sep 17 00:00:00 2001 From: Shigeki Kusaka <105064385+Maimikuru@users.noreply.github.com> Date: Wed, 7 May 2025 14:12:31 +0900 Subject: [PATCH 030/415] =?UTF-8?q?feat:=20clarifying=20the=20descriptions?= =?UTF-8?q?=20of=20user=5Fid=20and=20DESTINATION=5FUSER=5FID=20=E2=80=A6?= =?UTF-8?q?=20(#47)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: clarifying the descriptions of user_id and DESTINATION_USER_ID in the README files. * fix: update * Update README.ja.md Co-authored-by: Yuta Euchi <63095160+eucyt@users.noreply.github.com> * Update README.md Co-authored-by: Yuta Euchi <63095160+eucyt@users.noreply.github.com> * feat: update --------- Co-authored-by: Yuta Euchi <63095160+eucyt@users.noreply.github.com> --- README.ja.md | 11 +++++------ README.md | 9 +++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.ja.md b/README.ja.md index 46fd37c1..278eec40 100644 --- a/README.ja.md +++ b/README.ja.md @@ -14,12 +14,12 @@ LINE公式アカウントとAI Agentを接続するために、LINE Messaging AP 1. **push_text_message** - LINEでユーザーにシンプルなテキストメッセージを送信する。 - **入力:** - - `user_id` (string?): メッセージ受信者のユーザーID。デフォルトはDESTINATION_USER_ID。 + - `user_id` (string?): メッセージ受信者のユーザーID。デフォルトはDESTINATION_USER_ID。`user_id`または`DESTINATION_USER_ID`のどちらか一方は必ず設定する必要があります。 - `message.text` (string): ユーザーに送信するテキスト。 2. **push_flex_message** - LINEでユーザーに高度にカスタマイズ可能なフレックスメッセージを送信する。 - **入力:** - - `user_id` (string?): メッセージ受信者のユーザーID。デフォルトはDESTINATION_USER_ID。 + - `user_id` (string?): メッセージ受信者のユーザーID。デフォルトはDESTINATION_USER_ID。`user_id`または`DESTINATION_USER_ID`のどちらか一方は必ず設定する必要があります。 - `message.altText` (string): フレックスメッセージが表示できない場合に表示される代替テキスト。 - `message.content` (any): フレックスメッセージの内容。メッセージのレイアウトとコンポーネントを定義するJSONオブジェクト。 - `message.contents.type` (enum): コンテナのタイプ。'bubble'は単一コンテナ、'carousel'は複数のスワイプ可能なバブルを示す。 @@ -36,13 +36,12 @@ LINE公式アカウントとAI Agentを接続するために、LINE Messaging AP 5. **get_profile** - LINEユーザーの詳細なプロフィール情報を取得する。表示名、プロフィール画像URL、ステータスメッセージ、言語を取得できる。 - **入力:** - - `user_id` (string?): プロフィールを取得したいユーザーのユーザーID。デフォルトはDESTINATION_USER_ID。 + - `user_id` (string?): プロフィールを取得したいユーザーのユーザーID。デフォルトはDESTINATION_USER_ID。`user_id`または`DESTINATION_USER_ID`のどちらか一方は必ず設定する必要があります。======= 6. **get_message_quota** - LINE公式アカウントのメッセージ容量と消費量を取得します。月間メッセージ制限と現在の使用量が表示されます。 - **入力:** - なし - ## インストール (npxを使用) 要件: @@ -61,7 +60,7 @@ Claude DesktopやClaudeなどのAI Agentに次の設定を追加してくださ 環境変数や引数は次のように設定してください: - `CHANNEL_ACCESS_TOKEN`: (必須) チャネルアクセストークン。これを取得するには、[こちらの手順](https://developers.line.biz/ja/docs/basics/channel-access-token/#long-lived-channel-access-token)に従ってください。 -- `DESTINATION_USER_ID`: (オプション) デフォルトのメッセージ受信者のユーザーID。これを確認するには、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-user-ids/#get-own-user-id)に従ってください。 +- `DESTINATION_USER_ID`: (オプション) デフォルトのメッセージ受信者のユーザーID。Toolの入力に`user_id`が含まれていない場合、`DESTINATION_USER_ID`は必ず設定する必要があります。これを確認するには、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-user-ids/#get-own-user-id)に従ってください。 ```json { @@ -109,7 +108,7 @@ Claude DesktopやClaudeなどのAI Agentに次の設定を追加してくださ - `mcpServers.args`: (必須) `line-bot-mcp-server`へのパス。 - `CHANNEL_ACCESS_TOKEN`: (必須) チャネルアクセストークン。これを取得するには、[こちらの手順](https://developers.line.biz/ja/docs/basics/channel-access-token/#long-lived-channel-access-token)に従ってください。 -- `DESTINATION_USER_ID`: (オプション) デフォルトのメッセージ受信者のユーザーID。これを確認するには、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-user-ids/#get-own-user-id)に従ってください。 +- `DESTINATION_USER_ID`: (オプション) デフォルトのメッセージ受信者のユーザーID。Toolの入力に`user_id`が含まれていない場合、`DESTINATION_USER_ID`は必ず設定する必要があります。これを確認するには、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-user-ids/#get-own-user-id)に従ってください。 ```json { diff --git a/README.md b/README.md index 7433c7dc..ccf431c6 100644 --- a/README.md +++ b/README.md @@ -16,12 +16,12 @@ 1. **push_text_message** - Push a simple text message to a user via LINE. - **Inputs:** - - `user_id` (string?): The user ID to receive a message. Defaults to DESTINATION_USER_ID. + - `user_id` (string?): The user ID to receive a message. Defaults to DESTINATION_USER_ID. Either `user_id` or `DESTINATION_USER_ID` must be set. - `message.text` (string): The plain text content to send to the user. 2. **push_flex_message** - Push a highly customizable flex message to a user via LINE. - **Inputs:** - - `user_id` (string?): The user ID to receive a message. Defaults to DESTINATION_USER_ID. + - `user_id` (string?): The user ID to receive a message. Defaults to DESTINATION_USER_ID. Either `user_id` or `DESTINATION_USER_ID` must be set. - `message.altText` (string): Alternative text shown when flex message cannot be displayed. - `message.content` (any): The content of the flex message. This is a JSON object that defines the layout and components of the message. - `message.contents.type` (enum): Type of the container. 'bubble' for single container, 'carousel' for multiple swipeable bubbles. @@ -62,7 +62,7 @@ Please add the following configuration for an AI Agent like Claude Desktop or Cl Set the environment variables or arguments as follows: - `CHANNEL_ACCESS_TOKEN`: (required) Channel Access Token. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/basics/channel-access-token/#long-lived-channel-access-token). -- `DESTINATION_USER_ID`: (optional) The default user ID of the recipient. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-user-ids/#get-own-user-id). +- `DESTINATION_USER_ID`: (optional) The default user ID of the recipient. If the Tool's input does not include `user_id`, `DESTINATION_USER_ID` is required. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-user-ids/#get-own-user-id). ```json { @@ -112,7 +112,8 @@ Set the environment variables or arguments as follows: - `mcpServers.args`: (required) The path to `line-bot-mcp-server`. - `CHANNEL_ACCESS_TOKEN`: (required) Channel Access Token. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/basics/channel-access-token/#long-lived-channel-access-token). -- `DESTINATION_USER_ID`: (optional) The default user ID of the recipient. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-user-ids/#get-own-user-id). +- `DESTINATION_USER_ID`: (optional) The default user ID of the recipient. If the Tool's input does not include `user_id`, `DESTINATION_USER_ID` is required. +You can confirm this by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-user-ids/#get-own-user-id). ```json From dc532f416c24b439f27250dfe5536c89d9ae790b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 7 May 2025 19:25:58 +0000 Subject: [PATCH 031/415] chore(deps): update dependency @types/node to v22.15.15 (#60) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2b994670..12d2a79f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -527,9 +527,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.14.tgz", - "integrity": "sha512-BL1eyu/XWsFGTtDWOYULQEs4KR0qdtYfCxYAUYRoB7JP7h9ETYLgQTww6kH8Sj2C0pFGgrpM0XKv6/kbIzYJ1g==", + "version": "22.15.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.15.tgz", + "integrity": "sha512-R5muMcZob3/Jjchn5LcO8jdKwSCbzqmPB6ruBxMcf9kbxtniZHP327s6C37iOfuw8mbKK3cAQa7sEl7afLrQ8A==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From de7723a617a1f3466a562aeb115e57314f1ee5b8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 8 May 2025 06:24:34 +0000 Subject: [PATCH 032/415] chore(deps): update dependency @types/node to v22.15.16 (#63) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 12d2a79f..35e96547 100644 --- a/package-lock.json +++ b/package-lock.json @@ -527,9 +527,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.15.tgz", - "integrity": "sha512-R5muMcZob3/Jjchn5LcO8jdKwSCbzqmPB6ruBxMcf9kbxtniZHP327s6C37iOfuw8mbKK3cAQa7sEl7afLrQ8A==", + "version": "22.15.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.16.tgz", + "integrity": "sha512-3pr+KjwpVujqWqOKT8mNR+rd09FqhBLwg+5L/4t0cNYBzm/yEiYGCxWttjaPBsLtAo+WFNoXzGJfolM1JuRXoA==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From ee2e592471816d5f650ad6c65f47893502f6dad6 Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Thu, 8 May 2025 17:31:21 +0900 Subject: [PATCH 033/415] Fix wrong markdown syntax (#62) * Update README.md * Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ccf431c6..c32da856 100644 --- a/README.md +++ b/README.md @@ -40,9 +40,9 @@ - **Inputs:** - `user_id` (string?): The ID of the user whose profile you want to retrieve. Defaults to DESTINATION_USER_ID. 6. **get_message_quota** - - Get the message quota and consumption of the LINE Official Account. This shows the monthly message limit and current usage. - - **Inputs:** - - None + - Get the message quota and consumption of the LINE Official Account. This shows the monthly message limit and current usage. + - **Inputs:** + - None ## Installation (Using npx) From 015ebea262b8e189cfaeb4d48967bcd28b475ca2 Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Thu, 8 May 2025 17:32:07 +0900 Subject: [PATCH 034/415] Add version.ts instead of importing package.json in source code (#61) Add version.ts --- .github/scripts/update-version.mjs | 19 ++++++++++++++++++- src/index.ts | 6 +++--- src/version.ts | 2 ++ 3 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 src/version.ts diff --git a/.github/scripts/update-version.mjs b/.github/scripts/update-version.mjs index 81c65dba..341dd699 100644 --- a/.github/scripts/update-version.mjs +++ b/.github/scripts/update-version.mjs @@ -9,6 +9,7 @@ async function updateVersion(newVersion) { const files = { packageJson: './package.json', packageLockJson: './package-lock.json', + versionTs: './src/version.ts', }; // package.json @@ -23,6 +24,16 @@ async function updateVersion(newVersion) { packageLockJsonData.packages[""].version = newVersion; } await fs.writeFile(files.packageLockJson, JSON.stringify(packageLockJsonData, null, 2) + '\n'); + + // src/version.ts + const versionTsData = await fs.readFile(files.versionTs, 'utf8'); + const updatedVersionTsData = versionTsData.replace( + /const LINE_BOT_MCP_SERVER_VERSION = ".*?";/, + `const LINE_BOT_MCP_SERVER_VERSION = "${newVersion}";` + ); + await fs.writeFile(files.versionTs, updatedVersionTsData); + + console.log(`Version updated to ${newVersion} in all files.`); } async function verifyVersion(expectedVersion) { @@ -41,6 +52,12 @@ async function verifyVersion(expectedVersion) { throw new Error(`package-lock.json root package version mismatch: expected ${expectedVersion}, found ${packageLockJsonData.packages[""].version}`); } + // src/version.ts + const versionTsData = await fs.readFile('./src/version.ts', 'utf8'); + if (!versionTsData.includes(`const LINE_BOT_MCP_SERVER_VERSION = "${expectedVersion}";`)) { + throw new Error(`src/version.ts version mismatch: expected ${expectedVersion}`); + } + console.log(`All files have the correct version: ${expectedVersion}`); } @@ -54,7 +71,7 @@ async function verifyGitDiff() { return acc; }, { addedLines: 0, deletedLines: 0 }); - if (addedLines !== 3 || deletedLines !== 3) { + if (addedLines !== 4 || deletedLines !== 4) { throw new Error(`Unexpected number of changed lines: expected 4 added and 4 deleted, found ${addedLines} added and ${deletedLines} deleted`); } diff --git a/src/index.ts b/src/index.ts index 3c7e59be..be097b71 100644 --- a/src/index.ts +++ b/src/index.ts @@ -20,14 +20,14 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import * as line from "@line/bot-sdk"; import { z } from "zod"; -import pkg from "../package.json" with { type: "json" }; +import { LINE_BOT_MCP_SERVER_VERSION, USER_AGENT } from "./version.js"; const NO_USER_ID_ERROR = "Error: Specify the userId or set the DESTINATION_USER_ID in the environment variables of this MCP Server."; const server = new McpServer({ name: "line-bot", - version: pkg.version, + version: LINE_BOT_MCP_SERVER_VERSION, }); const channelAccessToken = process.env.CHANNEL_ACCESS_TOKEN || ""; @@ -36,7 +36,7 @@ const destinationId = process.env.DESTINATION_USER_ID || ""; const messagingApiClient = new line.messagingApi.MessagingApiClient({ channelAccessToken: channelAccessToken, defaultHeaders: { - "User-Agent": `${pkg.name}/${pkg.version}`, + "User-Agent": USER_AGENT, }, }); diff --git a/src/version.ts b/src/version.ts new file mode 100644 index 00000000..86987733 --- /dev/null +++ b/src/version.ts @@ -0,0 +1,2 @@ +export const LINE_BOT_MCP_SERVER_VERSION = "0.1.0-local"; +export const USER_AGENT = `@line/line-bot-mcp-server/${LINE_BOT_MCP_SERVER_VERSION}`; From 7244a182e142324895ccffa916985e845190b785 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 8 May 2025 16:46:40 +0000 Subject: [PATCH 035/415] chore(deps): update dependency @types/node to v22.15.17 (#64) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 35e96547..bb1ea38a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -527,9 +527,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.16.tgz", - "integrity": "sha512-3pr+KjwpVujqWqOKT8mNR+rd09FqhBLwg+5L/4t0cNYBzm/yEiYGCxWttjaPBsLtAo+WFNoXzGJfolM1JuRXoA==", + "version": "22.15.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.17.tgz", + "integrity": "sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From cf0554a86655ddc4c66f2a46c0aeb8e6516d2f89 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 8 May 2025 22:15:34 +0000 Subject: [PATCH 036/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.11.1 (#65) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index bb1ea38a..09cafc63 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.0.tgz", - "integrity": "sha512-k/1pb70eD638anoi0e8wUGAlbMJXyvdV4p62Ko+EZ7eBe1xMx8Uhak1R5DgfoofsK5IBBnRwsYGTaLZl+6/+RQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.1.tgz", + "integrity": "sha512-9LfmxKTb1v+vUS1/emSk1f5ePmTLkb9Le9AxOB5T0XM59EUumwcS45z05h7aiZx3GI0Bl7mjb3FMEglYj+acuQ==", "license": "MIT", "dependencies": { "content-type": "^1.0.5", From df51fe47499b588ae237a14b63302a12db974ec2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 11:51:48 +0000 Subject: [PATCH 037/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.11.2 (#66) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 09cafc63..144dcb39 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.1.tgz", - "integrity": "sha512-9LfmxKTb1v+vUS1/emSk1f5ePmTLkb9Le9AxOB5T0XM59EUumwcS45z05h7aiZx3GI0Bl7mjb3FMEglYj+acuQ==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.2.tgz", + "integrity": "sha512-H9vwztj5OAqHg9GockCQC06k1natgcxWQSRpQcPJf6i5+MWBzfKkRtxGbjQf0X2ihii0ffLZCRGbYV2f2bjNCQ==", "license": "MIT", "dependencies": { "content-type": "^1.0.5", From 708690ddaab9f12d467958c0fe200c02c1b98741 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 13 May 2025 20:21:04 +0000 Subject: [PATCH 038/415] chore(deps): update pnpm to v10.11.0 (#67) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 334c415d..bb320541 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39" + "packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977" } From 3ccf16a8a8823f0ff130a9c340064758393ab319 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 14 May 2025 15:55:57 +0900 Subject: [PATCH 039/415] chore(deps): update dependency @types/node to v22.15.18 (#69) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 144dcb39..36f14f9a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -527,9 +527,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.17.tgz", - "integrity": "sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw==", + "version": "22.15.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.18.tgz", + "integrity": "sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 1275e36bcdef20f4cd1ec48a4a27f7341ba5229b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 15 May 2025 11:00:46 +0000 Subject: [PATCH 040/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.11.3 (#70) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 36f14f9a..e4a1f06e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,14 +468,14 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.2.tgz", - "integrity": "sha512-H9vwztj5OAqHg9GockCQC06k1natgcxWQSRpQcPJf6i5+MWBzfKkRtxGbjQf0X2ihii0ffLZCRGbYV2f2bjNCQ==", + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.3.tgz", + "integrity": "sha512-rmOWVRUbUJD7iSvJugjUbFZshTAuJ48MXoZ80Osx1GM0K/H1w7rSEvmw8m6vdWxNASgtaHIhAgre4H/E9GJiYQ==", "license": "MIT", "dependencies": { "content-type": "^1.0.5", "cors": "^2.8.5", - "cross-spawn": "^7.0.3", + "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "express": "^5.0.1", "express-rate-limit": "^7.5.0", From 2e4f814db3e9a92dd49bf086e30492b621656dce Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 16 May 2025 23:36:32 +0000 Subject: [PATCH 041/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.11.4 (#71) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 60 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 57 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index e4a1f06e..b7cefc28 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,11 +468,12 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.3.tgz", - "integrity": "sha512-rmOWVRUbUJD7iSvJugjUbFZshTAuJ48MXoZ80Osx1GM0K/H1w7rSEvmw8m6vdWxNASgtaHIhAgre4H/E9GJiYQ==", + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.4.tgz", + "integrity": "sha512-OTbhe5slIjiOtLxXhKalkKGhIQrwvhgCDs/C2r8kcBTy5HR/g43aDQU0l7r8O0VGbJPTNJvDc7ZdQMdQDJXmbw==", "license": "MIT", "dependencies": { + "ajv": "^8.17.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", @@ -548,6 +549,22 @@ "node": ">= 0.6" } }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -1054,6 +1071,12 @@ "express": "^4.11 || 5 || ^5.0.0-beta.1" } }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", @@ -1071,6 +1094,22 @@ "node": ">=8.6.0" } }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/fastq": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", @@ -1465,6 +1504,12 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -1822,6 +1867,15 @@ "node": ">= 0.10" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", From b6869615fa6d6ae46d263cc9b0b4eb87caab973c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 19 May 2025 01:24:38 +0000 Subject: [PATCH 042/415] chore(deps): update dependency @types/node to v22.15.19 (#72) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b7cefc28..0e427c91 100644 --- a/package-lock.json +++ b/package-lock.json @@ -528,9 +528,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.18.tgz", - "integrity": "sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==", + "version": "22.15.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.19.tgz", + "integrity": "sha512-3vMNr4TzNQyjHcRZadojpRaD9Ofr6LsonZAoQ+HMUa/9ORTPoxVIw0e0mpqWpdjj8xybyCM+oKOUH2vwFu/oEw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From e76b340c472691942ccc828fc90b2643037e70d2 Mon Sep 17 00:00:00 2001 From: Jason Shigemura <176732890+JasonShigemura@users.noreply.github.com> Date: Mon, 19 May 2025 17:25:37 +0900 Subject: [PATCH 043/415] feat: Add non-root user to Dockerfile for security (#59) Configure Docker image to run as 'appuser' instead of root. Co-authored-by: Yuta Euchi <63095160+eucyt@users.noreply.github.com> --- Dockerfile | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Dockerfile b/Dockerfile index 28882ae3..b1f5af07 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,8 +8,14 @@ RUN --mount=type=cache,target=/root/.npm-production npm ci --ignore-scripts --om RUN --mount=type=cache,target=/root/.npm npm run build +# --- Release Stage --- FROM node:22-alpine AS release +# Set up a non-root user ('appuser'/'appgroup') to avoid running as root - good security practice! +# (-S is the Alpine option for a system user/group, suitable here) +RUN addgroup -S appgroup && adduser -S appuser -G appgroup + +# Copy the built code and necessary package files from our builder stage COPY --from=builder /app/dist /app/dist COPY --from=builder /app/package.json /app/package.json COPY --from=builder /app/package-lock.json /app/package-lock.json @@ -18,6 +24,15 @@ ENV NODE_ENV=production WORKDIR /app +# Give our new 'appuser' ownership of the application files inside /app +# Needs to happen after copying the files over +RUN chown -R appuser:appgroup /app + +# Install *only* the production dependencies RUN npm ci --ignore-scripts --omit-dev +# Now, switch to running as our non-root user for the actual app process +USER appuser + +# Define how to start the application ENTRYPOINT ["node", "dist/index.js"] From fa50c90650bf2b780bf8e9015f4d4705a9213701 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 19 May 2025 19:54:50 +0000 Subject: [PATCH 044/415] fix(deps): update dependency zod to v3.25.4 (#73) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0e427c91..a034ceaf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2321,9 +2321,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.24.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.4.tgz", - "integrity": "sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==", + "version": "3.25.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.4.tgz", + "integrity": "sha512-7zz8qNtVv37yCd8OeUW37PMXrR0K/zg+6vw+Z2FJ2+oozVdRbFKldkCoqxd9nJflDrx2ZkjUJrPF2DMj+L4pBQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 61634564e61c7bae7b1f1d9f1a550ab08b680a6d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 19 May 2025 23:47:23 +0000 Subject: [PATCH 045/415] fix(deps): update dependency zod to v3.25.7 (#74) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a034ceaf..10579f8c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2321,9 +2321,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.4.tgz", - "integrity": "sha512-7zz8qNtVv37yCd8OeUW37PMXrR0K/zg+6vw+Z2FJ2+oozVdRbFKldkCoqxd9nJflDrx2ZkjUJrPF2DMj+L4pBQ==", + "version": "3.25.7", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.7.tgz", + "integrity": "sha512-YGdT1cVRmKkOg6Sq7vY7IkxdphySKnXhaUmFI4r4FcuFVNgpCb9tZfNwXbT6BPjD5oz0nubFsoo9pIqKrDcCvg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From fa89f845be2941645457b7fc65c6aebf6fd4635e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 May 2025 19:49:58 +0000 Subject: [PATCH 046/415] chore(deps): update dependency @types/node to v22.15.20 (#75) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 10579f8c..4c6809b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -528,9 +528,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.19.tgz", - "integrity": "sha512-3vMNr4TzNQyjHcRZadojpRaD9Ofr6LsonZAoQ+HMUa/9ORTPoxVIw0e0mpqWpdjj8xybyCM+oKOUH2vwFu/oEw==", + "version": "22.15.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.20.tgz", + "integrity": "sha512-A6BohGFRGHAscJsTslDCA9JG7qSJr/DWUvrvY8yi9IgnGtMxCyat7vvQ//MFa0DnLsyuS3wYTpLdw4Hf+Q5JXw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From fc0d17b2c3c0356a27b9d3852236b5bf8b32cdff Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 May 2025 23:11:57 +0000 Subject: [PATCH 047/415] chore(deps): update dependency @types/node to v22.15.21 (#76) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4c6809b0..65532817 100644 --- a/package-lock.json +++ b/package-lock.json @@ -528,9 +528,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.20", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.20.tgz", - "integrity": "sha512-A6BohGFRGHAscJsTslDCA9JG7qSJr/DWUvrvY8yi9IgnGtMxCyat7vvQ//MFa0DnLsyuS3wYTpLdw4Hf+Q5JXw==", + "version": "22.15.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.21.tgz", + "integrity": "sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 8f00e7ac15690abd687cda15f4a3a385228040f4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 May 2025 23:12:03 +0000 Subject: [PATCH 048/415] fix(deps): update dependency zod to v3.25.8 (#77) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 65532817..d672d0e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2321,9 +2321,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.7", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.7.tgz", - "integrity": "sha512-YGdT1cVRmKkOg6Sq7vY7IkxdphySKnXhaUmFI4r4FcuFVNgpCb9tZfNwXbT6BPjD5oz0nubFsoo9pIqKrDcCvg==", + "version": "3.25.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.8.tgz", + "integrity": "sha512-iJPWX8HoZ2VE21VrhHGU9jVo/kVDUQyqM9vF0MxDhW/fp2sAl1eVwGJgiYZdHGiMwQJImXIW80lKk0MnfDxqiQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From c8439283cd0822387331a253f748f09632916aca Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 May 2025 03:48:37 +0000 Subject: [PATCH 049/415] fix(deps): update dependency zod to v3.25.13 (#79) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index d672d0e5..671b493c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2321,9 +2321,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.8", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.8.tgz", - "integrity": "sha512-iJPWX8HoZ2VE21VrhHGU9jVo/kVDUQyqM9vF0MxDhW/fp2sAl1eVwGJgiYZdHGiMwQJImXIW80lKk0MnfDxqiQ==", + "version": "3.25.13", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.13.tgz", + "integrity": "sha512-Q8mvk2iWi7rTDfpQBsu4ziE7A6AxgzJ5hzRyRYQkoV3A3niYsXVwDaP1Kbz3nWav6S+VZ6k2OznFn8ZyDHvIrg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From a4b93940948125468396bebf4df386ea86dc887a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 May 2025 11:42:22 +0000 Subject: [PATCH 050/415] fix(deps): update dependency zod to v3.25.17 (#81) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 671b493c..9445ecea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2321,9 +2321,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.13", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.13.tgz", - "integrity": "sha512-Q8mvk2iWi7rTDfpQBsu4ziE7A6AxgzJ5hzRyRYQkoV3A3niYsXVwDaP1Kbz3nWav6S+VZ6k2OznFn8ZyDHvIrg==", + "version": "3.25.17", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.17.tgz", + "integrity": "sha512-8hQzQ/kMOIFbwOgPrm9Sf9rtFHpFUMy4HvN0yEB0spw14aYi0uT5xG5CE2DB9cd51GWNsz+DNO7se1kztHMKnw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 08d22df976e2626ae1bf00f289da228c496c8f3f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 May 2025 23:51:12 +0000 Subject: [PATCH 051/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.11.5 (#82) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9445ecea..ecdfad9b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.11.4", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.4.tgz", - "integrity": "sha512-OTbhe5slIjiOtLxXhKalkKGhIQrwvhgCDs/C2r8kcBTy5HR/g43aDQU0l7r8O0VGbJPTNJvDc7ZdQMdQDJXmbw==", + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.5.tgz", + "integrity": "sha512-gS7Q7IHpKxjVaNLMUZyTtatZ63ca3h418zPPntAhu/MvG5yfz/8HMcDAOpvpQfx3V3dsw9QQxk8RuFNrQhLlgA==", "license": "MIT", "dependencies": { "ajv": "^8.17.1", From a4e93ba85d37ad43a594b8ce239f799f68a98dea Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 May 2025 23:51:18 +0000 Subject: [PATCH 052/415] fix(deps): update dependency zod to v3.25.20 (#83) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index ecdfad9b..25511ae8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2321,9 +2321,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.17", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.17.tgz", - "integrity": "sha512-8hQzQ/kMOIFbwOgPrm9Sf9rtFHpFUMy4HvN0yEB0spw14aYi0uT5xG5CE2DB9cd51GWNsz+DNO7se1kztHMKnw==", + "version": "3.25.20", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.20.tgz", + "integrity": "sha512-z03fqpTMDF1G02VLKUMt6vyACE7rNWkh3gpXVHgPTw28NPtDFRGvcpTtPwn2kMKtQ0idtYJUTxchytmnqYswcw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 9d131114465c5f19f3c00ad7d424044b3ae6ae07 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 22 May 2025 02:43:50 +0000 Subject: [PATCH 053/415] chore(deps): update node.js to v22.16.0 (#84) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b1f5af07..872939ba 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.15-alpine AS builder +FROM node:22.16-alpine AS builder COPY . /app From 5af8acccd9ebbe2563278760c5dc73ca5e352542 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 22 May 2025 19:47:46 +0000 Subject: [PATCH 054/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.12.0 (#85) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 99 +++++++++++++++++++++++------------------------ 1 file changed, 49 insertions(+), 50 deletions(-) diff --git a/package-lock.json b/package-lock.json index 25511ae8..68172228 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,12 +468,12 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.5.tgz", - "integrity": "sha512-gS7Q7IHpKxjVaNLMUZyTtatZ63ca3h418zPPntAhu/MvG5yfz/8HMcDAOpvpQfx3V3dsw9QQxk8RuFNrQhLlgA==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.12.0.tgz", + "integrity": "sha512-m//7RlINx1F3sz3KqwY1WWzVgTcYX52HYk4bJ1hkBXV3zccAEth+jRvG8DBRrdaQuRsPAJOx2MH3zaHNCKL7Zg==", "license": "MIT", "dependencies": { - "ajv": "^8.17.1", + "ajv": "^6.12.6", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", @@ -489,6 +489,28 @@ "node": ">=18" } }, + "node_modules/@modelcontextprotocol/sdk/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@modelcontextprotocol/sdk/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -549,22 +571,6 @@ "node": ">= 0.6" } }, - "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -1094,21 +1100,11 @@ "node": ">=8.6.0" } }, - "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" }, "node_modules/fastq": { "version": "1.19.1", @@ -1504,12 +1500,6 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -1795,6 +1785,15 @@ "once": "^1.3.1" } }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/qs": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", @@ -1867,15 +1866,6 @@ "node": ">= 0.10" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/resolve": { "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", @@ -2290,6 +2280,15 @@ "node": ">= 0.8" } }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", From 3176e343936f4ba9235f2ecde53b439f5be4286c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 22 May 2025 23:26:55 +0000 Subject: [PATCH 055/415] fix(deps): update dependency zod to v3.25.23 (#86) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 68172228..46cd80aa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.20", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.20.tgz", - "integrity": "sha512-z03fqpTMDF1G02VLKUMt6vyACE7rNWkh3gpXVHgPTw28NPtDFRGvcpTtPwn2kMKtQ0idtYJUTxchytmnqYswcw==", + "version": "3.25.23", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.23.tgz", + "integrity": "sha512-Od2bdMosahjSrSgJtakrwjMDb1zM1A3VIHCPGveZt/3/wlrTWBya2lmEh2OYe4OIu8mPTmmr0gnLHIWQXdtWBg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From d7e4759476cee4f6b2cacb56577a3813d795f874 Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Fri, 23 May 2025 16:06:12 +0900 Subject: [PATCH 056/415] Improve issue triage and issue templates (#87) * Improve issue triage and issue templates * Update bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 59 ++++++++++++----------- .github/ISSUE_TEMPLATE/feature_request.md | 5 +- .github/ISSUE_TEMPLATE/question.md | 42 ++++++++++++++++ .github/workflows/close-issue.yml | 2 +- .github/workflows/label-issue.yml | 32 ++++++++++++ 5 files changed, 107 insertions(+), 33 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/question.md create mode 100644 .github/workflows/label-issue.yml diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index bfbd9fad..3fd9ae2f 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,37 +1,40 @@ --- -name: Bug report -about: Create a report to help us improve -title: '[BUG]' -labels: 'bug' -assignees: '' - +name: Bug Report Template +about: Use this template to report bugs in the line-bot-mcp-server +title: 'Bug Report' --- ## Bug Report - - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** - -Steps to reproduce the behavior: -1. use '...' function, pass the '...' parameter. -2. ... -3. ??? -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Environment (please complete the following information):** + + +## System Information - OS: [e.g. Ubuntu] - Node.js Version [e.g. Node 22] - line-bot-mcp-server version(s) [e.g. 0.0.1] - AI Agent you use [e.g. Claude for Desktop] -**Additional context** -Add any other context about the problem here. +## Expected Behavior + + +## Current Behavior + + +## Steps to Reproduce + +1. +2. +3. + +## Logs + + +## Additional Context (Optional) + diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 6832110f..a2eba9a3 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,10 +1,7 @@ --- name: Feature request about: Suggest an idea for this project -title: "[Feature Request]" -labels: enhancement -assignees: '' - +title: "Feature Request" --- ## Feature Request diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md new file mode 100644 index 00000000..96c0d54d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.md @@ -0,0 +1,42 @@ +--- +name: "Question Template" +about: "Use this template to ask questions about usage or implementation of the line-bot-mcp-server." +title: "Question" +--- + + + +## Have You Checked the Following? +- [ ] [Developer Documentation - LINE Developers](https://developers.line.biz/en/docs/) +- [ ] [FAQ - LINE Developers](https://developers.line.biz/en/faq/tags/messaging-api/) + +## Summary of Your Question + + +## Details + + +## What You've Tried + + +## Your Environment + + +## Additional Context (Optional) + diff --git a/.github/workflows/close-issue.yml b/.github/workflows/close-issue.yml index fb57be49..456cd255 100644 --- a/.github/workflows/close-issue.yml +++ b/.github/workflows/close-issue.yml @@ -20,7 +20,7 @@ jobs: days-before-issue-close: 0 stale-issue-label: "no-activity" close-issue-message: "This issue was closed because it has been inactive for 28 days." - exempt-issue-labels: "bug,enhancement,keep" + exempt-issue-labels: "bug,enhancement,keep,untriaged" days-before-pr-stale: -1 days-before-pr-close: 28 stale-pr-label: "no-activity" diff --git a/.github/workflows/label-issue.yml b/.github/workflows/label-issue.yml new file mode 100644 index 00000000..a440f781 --- /dev/null +++ b/.github/workflows/label-issue.yml @@ -0,0 +1,32 @@ +name: Label issue + +on: + issues: + types: + - opened + - reopened + - closed + +jobs: + label-issues: + runs-on: ubuntu-latest + permissions: + issues: write + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Add label on issue open + if: github.event.action == 'opened' || github.event.action == 'reopened' + run: | + gh issue edit ${{ github.event.issue.number }} \ + --add-label "untriaged" \ + env: + GH_TOKEN: ${{ github.token }} + + - name: Remove label on issue close + if: github.event.action == 'closed' + run: | + gh issue edit ${{ github.event.issue.number }} \ + --remove-label "untriaged" + env: + GH_TOKEN: ${{ github.token }} From 5e08a802cf6fb26e7727644654d4539948994de3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 23 May 2025 19:58:06 +0000 Subject: [PATCH 057/415] fix(deps): update dependency zod to v3.25.25 (#88) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 46cd80aa..08d2cb7c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.23", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.23.tgz", - "integrity": "sha512-Od2bdMosahjSrSgJtakrwjMDb1zM1A3VIHCPGveZt/3/wlrTWBya2lmEh2OYe4OIu8mPTmmr0gnLHIWQXdtWBg==", + "version": "3.25.25", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.25.tgz", + "integrity": "sha512-ZIe8jLjydG09F/5joIm10fSKa3pQ64YS1OfhQzNVwbHEd0MeAF3A9CbcKl5/1Pr6Wr37TMJtEWki8X2Y/2MvGQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 07284a488deeb6256e4b268362a3716a8bda78ec Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 23 May 2025 21:41:14 +0000 Subject: [PATCH 058/415] fix(deps): update dependency zod to v3.25.27 (#89) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 08d2cb7c..cbc2605e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.25", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.25.tgz", - "integrity": "sha512-ZIe8jLjydG09F/5joIm10fSKa3pQ64YS1OfhQzNVwbHEd0MeAF3A9CbcKl5/1Pr6Wr37TMJtEWki8X2Y/2MvGQ==", + "version": "3.25.27", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.27.tgz", + "integrity": "sha512-xkYsE+ztNLzBeoAG8Ipd2ICr86gyMpovQlB+Vid1LT7V16/Dj0z+Up1u1qxNX58cmJ/AtG2mvGw/7+jK48xEYw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 634749fea788a8dd216a9fd922d8d4d5e49d2eb9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 24 May 2025 02:35:46 +0000 Subject: [PATCH 059/415] fix(deps): update dependency zod to v3.25.28 (#90) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index cbc2605e..2edb47b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.27", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.27.tgz", - "integrity": "sha512-xkYsE+ztNLzBeoAG8Ipd2ICr86gyMpovQlB+Vid1LT7V16/Dj0z+Up1u1qxNX58cmJ/AtG2mvGw/7+jK48xEYw==", + "version": "3.25.28", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.28.tgz", + "integrity": "sha512-/nt/67WYKnr5by3YS7LroZJbtcCBurDKKPBPWWzaxvVCGuG/NOsiKkrjoOhI8mJ+SQUXEbUzeB3S+6XDUEEj7Q==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From daa1d7d750044543c4f186c8b7c257c8a5b451bb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 May 2025 23:18:59 +0000 Subject: [PATCH 060/415] fix(deps): update dependency zod to v3.25.29 (#91) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2edb47b1..59858983 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.28", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.28.tgz", - "integrity": "sha512-/nt/67WYKnr5by3YS7LroZJbtcCBurDKKPBPWWzaxvVCGuG/NOsiKkrjoOhI8mJ+SQUXEbUzeB3S+6XDUEEj7Q==", + "version": "3.25.29", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.29.tgz", + "integrity": "sha512-xetH/muIYuAyN7YJGKh99jkBQq/XbGEyTkv7JC4YYsWppHmfoU1MDoQa441WD1QMDaeCaEBO0e0hl1iSmluNQQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From fe09d42dc0a521c20135db1083923b90bb7be3da Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 27 May 2025 03:59:15 +0000 Subject: [PATCH 061/415] fix(deps): update dependency zod to v3.25.30 (#92) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 59858983..804e61bd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.29", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.29.tgz", - "integrity": "sha512-xetH/muIYuAyN7YJGKh99jkBQq/XbGEyTkv7JC4YYsWppHmfoU1MDoQa441WD1QMDaeCaEBO0e0hl1iSmluNQQ==", + "version": "3.25.30", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.30.tgz", + "integrity": "sha512-VolhdEtu6TJr/fzGuHA/SZ5ixvXqA6ADOG9VRcQ3rdOKmF5hkmcJbyaQjUH5BgmpA9gej++zYRX7zjSmdReIwA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From a2ce2eea419945575dfd7369fe8390ab8ce4634a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 27 May 2025 23:25:51 +0000 Subject: [PATCH 062/415] chore(deps): update dependency @types/node to v22.15.23 (#93) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 804e61bd..9b1a8d2d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -550,9 +550,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.21.tgz", - "integrity": "sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==", + "version": "22.15.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.23.tgz", + "integrity": "sha512-7Ec1zaFPF4RJ0eXu1YT/xgiebqwqoJz8rYPDi/O2BcZ++Wpt0Kq9cl0eg6NN6bYbPnR67ZLo7St5Q3UK0SnARw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From bdce74ccd3ec871a3e858e9d221bae2645aa4000 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 27 May 2025 23:25:58 +0000 Subject: [PATCH 063/415] fix(deps): update dependency zod to v3.25.31 (#94) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9b1a8d2d..2041dd17 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.30", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.30.tgz", - "integrity": "sha512-VolhdEtu6TJr/fzGuHA/SZ5ixvXqA6ADOG9VRcQ3rdOKmF5hkmcJbyaQjUH5BgmpA9gej++zYRX7zjSmdReIwA==", + "version": "3.25.31", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.31.tgz", + "integrity": "sha512-SVCtUpZ1D9TFcRnCY7wlCpGEzV4+2HlXnJiwrgq1T93m98BIT6M5lbxRrEm7v6pYZXV4QNQo1t2KVv93JXk6XA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 4e6f9d2ba23914225ee70af8f716ea6740814b84 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 May 2025 20:38:35 +0000 Subject: [PATCH 064/415] chore(deps): update dependency @types/node to v22.15.24 (#96) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2041dd17..090490a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -550,9 +550,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.23.tgz", - "integrity": "sha512-7Ec1zaFPF4RJ0eXu1YT/xgiebqwqoJz8rYPDi/O2BcZ++Wpt0Kq9cl0eg6NN6bYbPnR67ZLo7St5Q3UK0SnARw==", + "version": "22.15.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.24.tgz", + "integrity": "sha512-w9CZGm9RDjzTh/D+hFwlBJ3ziUaVw7oufKA3vOFSOZlzmW9AkZnfjPb+DLnrV6qtgL/LNmP0/2zBNCFHL3F0ng==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From f87217924e7fadf29f2897947cbb9c403b402158 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 May 2025 00:39:12 +0000 Subject: [PATCH 065/415] fix(deps): update dependency zod to v3.25.34 (#95) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 090490a3..ecc23de1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.31", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.31.tgz", - "integrity": "sha512-SVCtUpZ1D9TFcRnCY7wlCpGEzV4+2HlXnJiwrgq1T93m98BIT6M5lbxRrEm7v6pYZXV4QNQo1t2KVv93JXk6XA==", + "version": "3.25.34", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.34.tgz", + "integrity": "sha512-lZHvSc2PpWdcfpHlyB33HA9nqP16GpC9IpiG4lYq9jZCJVLZNnWd6Y1cj79bcLSBKTkxepfpjckPv5Y5VOPlwA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 727b9b4a2c56d72913e92cfb3d7d7da14534de47 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 May 2025 10:43:39 +0000 Subject: [PATCH 066/415] fix(deps): update dependency zod to v3.25.36 (#99) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index ecc23de1..bfcfc141 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.34", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.34.tgz", - "integrity": "sha512-lZHvSc2PpWdcfpHlyB33HA9nqP16GpC9IpiG4lYq9jZCJVLZNnWd6Y1cj79bcLSBKTkxepfpjckPv5Y5VOPlwA==", + "version": "3.25.36", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.36.tgz", + "integrity": "sha512-eRFS3i8T0IrpGdL8HQyqFAugGOn7jOjyGgGdtv5NY4Wkhi7lJDk732bNZ609YMIGFbLoaj6J69O1Mura23gfIw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 8f13b1df475409bbecb68794708ed1efd2a91b1b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 May 2025 19:42:18 +0000 Subject: [PATCH 067/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.12.1 (#100) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 50 +++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index bfcfc141..eef482db 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.12.0.tgz", - "integrity": "sha512-m//7RlINx1F3sz3KqwY1WWzVgTcYX52HYk4bJ1hkBXV3zccAEth+jRvG8DBRrdaQuRsPAJOx2MH3zaHNCKL7Zg==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.12.1.tgz", + "integrity": "sha512-KG1CZhZfWg+u8pxeM/mByJDScJSrjjxLc8fwQqbsS8xCjBmQfMNEBTotYdNanKekepnfRI85GtgQlctLFpcYPw==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", @@ -489,28 +489,6 @@ "node": ">=18" } }, - "node_modules/@modelcontextprotocol/sdk/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -571,6 +549,22 @@ "node": ">= 0.6" } }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -1500,6 +1494,12 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", From c2d89bfa0925acabc529a5dfd8957f666e4e303f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 May 2025 22:33:50 +0000 Subject: [PATCH 068/415] fix(deps): update dependency zod to v3.25.39 (#101) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index eef482db..8efaea89 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.36", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.36.tgz", - "integrity": "sha512-eRFS3i8T0IrpGdL8HQyqFAugGOn7jOjyGgGdtv5NY4Wkhi7lJDk732bNZ609YMIGFbLoaj6J69O1Mura23gfIw==", + "version": "3.25.39", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.39.tgz", + "integrity": "sha512-yrva2T2x4R+FMFTPBVD/YPS7ct8njqjnV93zNx/MlwqLAxcnxwRGbXWyWF63/nErl3rdRd8KARObon7BiWzabQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From f04dea93658e22cc98956da71add2c8eee34f21e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 May 2025 01:38:51 +0000 Subject: [PATCH 069/415] chore(deps): update dependency @types/node to v22.15.26 (#102) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8efaea89..463451be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -528,9 +528,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.24.tgz", - "integrity": "sha512-w9CZGm9RDjzTh/D+hFwlBJ3ziUaVw7oufKA3vOFSOZlzmW9AkZnfjPb+DLnrV6qtgL/LNmP0/2zBNCFHL3F0ng==", + "version": "22.15.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.26.tgz", + "integrity": "sha512-lgISkNrqdQ5DAzjBhnDNGKDuXDNo7/1V4FhNzsKREhWLZTOELQAptuAnJMzHtUl1qyEBBy9lNBKQ9WjyiSloTw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 5a361290e4c2cb60d113adb2050e018d16675eb0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 May 2025 07:28:25 +0000 Subject: [PATCH 070/415] chore(deps): update dependency @types/node to v22.15.27 (#103) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 463451be..9d9ac824 100644 --- a/package-lock.json +++ b/package-lock.json @@ -528,9 +528,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.26", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.26.tgz", - "integrity": "sha512-lgISkNrqdQ5DAzjBhnDNGKDuXDNo7/1V4FhNzsKREhWLZTOELQAptuAnJMzHtUl1qyEBBy9lNBKQ9WjyiSloTw==", + "version": "22.15.27", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.27.tgz", + "integrity": "sha512-5fF+eu5mwihV2BeVtX5vijhdaZOfkQTATrePEaXTcKqI16LhJ7gi2/Vhd9OZM0UojcdmiOCVg5rrax+i1MdoQQ==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From fd3fad4daf6b76c4f4d4874e61a48f84907dbcc2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 May 2025 07:28:35 +0000 Subject: [PATCH 071/415] fix(deps): update dependency zod to v3.25.41 (#104) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9d9ac824..b3c7ac67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.39", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.39.tgz", - "integrity": "sha512-yrva2T2x4R+FMFTPBVD/YPS7ct8njqjnV93zNx/MlwqLAxcnxwRGbXWyWF63/nErl3rdRd8KARObon7BiWzabQ==", + "version": "3.25.41", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.41.tgz", + "integrity": "sha512-8+sDJTGtCYIDBhdqDygp0ffj8kzziRKqAJPhpYObbElJ+3TRe/mnlnwH+/OMa3kKhueS4Drm5UMW00/u1p07zA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 1e27f97f6cdbc0b94b1078d9abca4b9d3cbbcc78 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 May 2025 09:09:00 +0000 Subject: [PATCH 072/415] fix(deps): update dependency zod to v3.25.42 (#105) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b3c7ac67..aed3013f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.41", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.41.tgz", - "integrity": "sha512-8+sDJTGtCYIDBhdqDygp0ffj8kzziRKqAJPhpYObbElJ+3TRe/mnlnwH+/OMa3kKhueS4Drm5UMW00/u1p07zA==", + "version": "3.25.42", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.42.tgz", + "integrity": "sha512-PcALTLskaucbeHc41tU/xfjfhcz8z0GdhhDcSgrCTmSazUuqnYqiXO63M0QUBVwpBlsLsNVn5qHSC5Dw3KZvaQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 8e44ee7bf5faa8ce773a849ad86e68509ebd7c38 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 May 2025 15:05:17 +0000 Subject: [PATCH 073/415] chore(deps): update dependency @types/node to v22.15.28 (#106) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index aed3013f..ddcbf56e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -528,9 +528,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.27.tgz", - "integrity": "sha512-5fF+eu5mwihV2BeVtX5vijhdaZOfkQTATrePEaXTcKqI16LhJ7gi2/Vhd9OZM0UojcdmiOCVg5rrax+i1MdoQQ==", + "version": "22.15.28", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.28.tgz", + "integrity": "sha512-I0okKVDmyKR281I0UIFV7EWAWRnR0gkuSKob5wVcByyyhr7Px/slhkQapcYX4u00ekzNWaS1gznKZnuzxwo4pw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From a721a5af11ec56295033424ab8f19f2506819105 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 1 Jun 2025 00:55:53 +0000 Subject: [PATCH 074/415] fix(deps): update dependency zod to v3.25.44 (#108) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index ddcbf56e..6671a4f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.42", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.42.tgz", - "integrity": "sha512-PcALTLskaucbeHc41tU/xfjfhcz8z0GdhhDcSgrCTmSazUuqnYqiXO63M0QUBVwpBlsLsNVn5qHSC5Dw3KZvaQ==", + "version": "3.25.44", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.44.tgz", + "integrity": "sha512-BVwH2PnqCwxUN+SNjzRL6kcGvvz1JuojtB+uZB1Hg8DA56Zqn0pjpIwMrb1IhUsF75DjpEe4fhxPKO6+AErqzw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 82351f83720990db3b9878065aadc1c4d0fcc637 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 1 Jun 2025 05:37:24 +0000 Subject: [PATCH 075/415] chore(deps): update dependency @types/node to v22.15.29 (#107) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6671a4f3..66d55970 100644 --- a/package-lock.json +++ b/package-lock.json @@ -528,9 +528,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.28.tgz", - "integrity": "sha512-I0okKVDmyKR281I0UIFV7EWAWRnR0gkuSKob5wVcByyyhr7Px/slhkQapcYX4u00ekzNWaS1gznKZnuzxwo4pw==", + "version": "22.15.29", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.29.tgz", + "integrity": "sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From fc4417581273030aa409f74c4191c6bbd21367f3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 1 Jun 2025 05:37:30 +0000 Subject: [PATCH 076/415] fix(deps): update dependency zod to v3.25.45 (#109) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 66d55970..f3378b30 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.44", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.44.tgz", - "integrity": "sha512-BVwH2PnqCwxUN+SNjzRL6kcGvvz1JuojtB+uZB1Hg8DA56Zqn0pjpIwMrb1IhUsF75DjpEe4fhxPKO6+AErqzw==", + "version": "3.25.45", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.45.tgz", + "integrity": "sha512-kv1swJBZqv98NQibL0oVvkQE8rXT+6qGNM1FpZkFcJG2jnz4vbtu48bgaitp85CaBPLSKXibrEsU7MzJoVoZAA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 1d94c398ab054bcfef6090dbea52e3824abc9cb4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 1 Jun 2025 08:42:49 +0000 Subject: [PATCH 077/415] fix(deps): update dependency zod to v3.25.46 (#110) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f3378b30..df168d26 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.45", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.45.tgz", - "integrity": "sha512-kv1swJBZqv98NQibL0oVvkQE8rXT+6qGNM1FpZkFcJG2jnz4vbtu48bgaitp85CaBPLSKXibrEsU7MzJoVoZAA==", + "version": "3.25.46", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.46.tgz", + "integrity": "sha512-IqRxcHEIjqLd4LNS/zKffB3Jzg3NwqJxQQ0Ns7pdrvgGkwQsEBdEQcOHaBVqvvZArShRzI39+aMST3FBGmTrLQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 1bf36aa75706f610529311ea0250f89ab6f4b633 Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Mon, 2 Jun 2025 12:52:45 +0900 Subject: [PATCH 078/415] Support Node.js 24 (#111) * Add Node.js version 24 to the test matrix * Refactor --- .github/workflows/test.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ebb382a4..abd58dec 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,11 @@ jobs: strategy: matrix: # https://nodejs.org/en/about/releases/ - node: [ '20', '20.12.2', '22' ] + node: + - '20' + - '20.12.2' + - '22' + - '24' fail-fast: false name: Node.js ${{ matrix.node }} From c4ab291f5bb6853468598cedc8519c35992c8a17 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 08:50:00 +0000 Subject: [PATCH 079/415] fix(deps): update dependency zod to v3.25.47 (#112) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index df168d26..c3b26cc7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.46", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.46.tgz", - "integrity": "sha512-IqRxcHEIjqLd4LNS/zKffB3Jzg3NwqJxQQ0Ns7pdrvgGkwQsEBdEQcOHaBVqvvZArShRzI39+aMST3FBGmTrLQ==", + "version": "3.25.47", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.47.tgz", + "integrity": "sha512-+f8+agSYoT9niC0VUL60IuXnr81FJeJ27Lf5YPrmcxTWmygcpGBeEuAAovDDEjkyQ36KyqNswwbhISZ1Z7yY+A==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From daba71345bc7f7915799aa863fd2a865c8bbd525 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 08:50:09 +0000 Subject: [PATCH 080/415] fix(deps): update dependency @line/bot-sdk to v10 (#113) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 10 +++++----- package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index c3b26cc7..8f83c21f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.1-local", "license": "Apache-2.0", "dependencies": { - "@line/bot-sdk": "^9.8.0", + "@line/bot-sdk": "^10.0.0", "@modelcontextprotocol/sdk": "^1.8.0", "zod": "^3.24.2" }, @@ -453,15 +453,15 @@ } }, "node_modules/@line/bot-sdk": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-9.9.0.tgz", - "integrity": "sha512-/jVjH7k2uMWY1O0F/zkwYD3dqDH/pWbawvDtR6DV/scruH86w9zZrMwknZLt1unUWdK+V9eX4UVP/gLAzqUocg==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.0.0.tgz", + "integrity": "sha512-Uj6ZVivMDzZUV4Jm/RSsJinryyj3HS+fnyYob+mNl4/uUDWQ2OAEZDVopl0v0tcjXlCRC6GUB+nfEZLgBFI+dg==", "license": "Apache-2.0", "dependencies": { "@types/node": "^22.0.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "optionalDependencies": { "axios": "^1.7.4" diff --git a/package.json b/package.json index bb320541..1a2b7d4a 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "homepage": "https://github.com/line/line-bot-mcp-server", "bugs": "https://github.com/line/line-bot-mcp-server/issues", "dependencies": { - "@line/bot-sdk": "^9.8.0", + "@line/bot-sdk": "^10.0.0", "@modelcontextprotocol/sdk": "^1.8.0", "zod": "^3.24.2" }, From df6dc1ffe7b0ff44009dbb2c90f9e54f652e0f8e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 16:02:05 +0000 Subject: [PATCH 081/415] chore(deps): update pnpm to v10.11.1 (#114) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1a2b7d4a..81d4313f 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977" + "packageManager": "pnpm@10.11.1+sha512.e519b9f7639869dc8d5c3c5dfef73b3f091094b0a006d7317353c72b124e80e1afd429732e28705ad6bfa1ee879c1fce46c128ccebd3192101f43dd67c667912" } From 3b3acc9f3de5533890688886943eb366d6ef2380 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 3 Jun 2025 01:02:19 +0900 Subject: [PATCH 082/415] fix(deps): update dependency zod to v3.25.48 (#115) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8f83c21f..3d56a76d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.47", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.47.tgz", - "integrity": "sha512-+f8+agSYoT9niC0VUL60IuXnr81FJeJ27Lf5YPrmcxTWmygcpGBeEuAAovDDEjkyQ36KyqNswwbhISZ1Z7yY+A==", + "version": "3.25.48", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.48.tgz", + "integrity": "sha512-0X1mz8FtgEIvaxGjdIImYpZEaZMrund9pGXm3M6vM7Reba0e2eI71KPjSCGXBfwKDPwPoywf6waUKc3/tFvX2Q==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 22a3550a01ad3401e5b4cab6f5ac2abef8b4ff75 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 3 Jun 2025 01:12:08 +0000 Subject: [PATCH 083/415] fix(deps): update dependency zod to v3.25.49 (#116) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3d56a76d..d419975f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.48", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.48.tgz", - "integrity": "sha512-0X1mz8FtgEIvaxGjdIImYpZEaZMrund9pGXm3M6vM7Reba0e2eI71KPjSCGXBfwKDPwPoywf6waUKc3/tFvX2Q==", + "version": "3.25.49", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.49.tgz", + "integrity": "sha512-JMMPMy9ZBk3XFEdbM3iL1brx4NUSejd6xr3ELrrGEfGb355gjhiAWtG3K5o+AViV/3ZfkIrCzXsZn6SbLwTR8Q==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 1549e0275c50172c7c286eec5b0a31732c967658 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 3 Jun 2025 22:23:21 +0000 Subject: [PATCH 084/415] fix(deps): update dependency zod to v3.25.50 (#117) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index d419975f..c605bc5b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.49", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.49.tgz", - "integrity": "sha512-JMMPMy9ZBk3XFEdbM3iL1brx4NUSejd6xr3ELrrGEfGb355gjhiAWtG3K5o+AViV/3ZfkIrCzXsZn6SbLwTR8Q==", + "version": "3.25.50", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.50.tgz", + "integrity": "sha512-VstOnRxf4tlSq0raIwbn0n+LA34SxVoZ8r3pkwSUM0jqNiA/HCMQEVjTuS5FZmHsge+9MDGTiAuHyml5T0um6A==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 9a3d6950ee02a5c1716f269af5f6cdde3a29c6d5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 4 Jun 2025 20:19:39 +0900 Subject: [PATCH 085/415] fix(deps): update dependency zod to v3.25.51 (#118) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c605bc5b..fecd3237 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.50", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.50.tgz", - "integrity": "sha512-VstOnRxf4tlSq0raIwbn0n+LA34SxVoZ8r3pkwSUM0jqNiA/HCMQEVjTuS5FZmHsge+9MDGTiAuHyml5T0um6A==", + "version": "3.25.51", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.51.tgz", + "integrity": "sha512-TQSnBldh+XSGL+opiSIq0575wvDPqu09AqWe1F7JhUMKY+M91/aGlK4MhpVNO7MgYfHcVCB1ffwAUTJzllKJqg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 9db95d2d6bfb663f941b04dca9175d74da7ddb18 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 6 Jun 2025 19:43:05 +0000 Subject: [PATCH 086/415] chore(deps): update dependency @types/node to v22.15.30 (#119) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index fecd3237..29196287 100644 --- a/package-lock.json +++ b/package-lock.json @@ -528,9 +528,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.29.tgz", - "integrity": "sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==", + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 44651c4d32bec6923c50f71af55ef87d635e3833 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 6 Jun 2025 19:43:11 +0000 Subject: [PATCH 087/415] fix(deps): update dependency zod to v3.25.56 (#120) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 29196287..9b47023a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.51", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.51.tgz", - "integrity": "sha512-TQSnBldh+XSGL+opiSIq0575wvDPqu09AqWe1F7JhUMKY+M91/aGlK4MhpVNO7MgYfHcVCB1ffwAUTJzllKJqg==", + "version": "3.25.56", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.56.tgz", + "integrity": "sha512-rd6eEF3BTNvQnR2e2wwolfTmUTnp70aUTqr0oaGbHifzC3BKJsoV+Gat8vxUMR1hwOKBs6El+qWehrHbCpW6SQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From bb9b8ecacc48b2ff60d2539b87093f5a53b7687d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 8 Jun 2025 18:36:35 +0000 Subject: [PATCH 088/415] chore(deps): update pnpm to v10.12.1 (#122) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 81d4313f..169db769 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.11.1+sha512.e519b9f7639869dc8d5c3c5dfef73b3f091094b0a006d7317353c72b124e80e1afd429732e28705ad6bfa1ee879c1fce46c128ccebd3192101f43dd67c667912" + "packageManager": "pnpm@10.12.1+sha512.f0dda8580f0ee9481c5c79a1d927b9164f2c478e90992ad268bbb2465a736984391d6333d2c327913578b2804af33474ca554ba29c04a8b13060a717675ae3ac" } From ba332240ddc4d2b1a283abc3a6ddce0082d165fa Mon Sep 17 00:00:00 2001 From: koichi uchinishi Date: Mon, 9 Jun 2025 14:51:43 +0900 Subject: [PATCH 089/415] Add rich menu apis (#97) * add rich menu apis * add delete and cancel apis * merge project path and image path * update the README.md * remove set_rich_menu_image --- README.ja.md | 20 ++++++++++++++++-- README.md | 16 +++++++++++++++ src/index.ts | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 92 insertions(+), 2 deletions(-) diff --git a/README.ja.md b/README.ja.md index 278eec40..3e464356 100644 --- a/README.ja.md +++ b/README.ja.md @@ -36,11 +36,27 @@ LINE公式アカウントとAI Agentを接続するために、LINE Messaging AP 5. **get_profile** - LINEユーザーの詳細なプロフィール情報を取得する。表示名、プロフィール画像URL、ステータスメッセージ、言語を取得できる。 - **入力:** - - `user_id` (string?): プロフィールを取得したいユーザーのユーザーID。デフォルトはDESTINATION_USER_ID。`user_id`または`DESTINATION_USER_ID`のどちらか一方は必ず設定する必要があります。======= + - `user_id` (string?): プロフィールを取得したいユーザーのユーザーID。デフォルトはDESTINATION_USER_ID。`user_id`または`DESTINATION_USER_ID`のどちらか一方は必ず設定する必要があります。 6. **get_message_quota** - LINE公式アカウントのメッセージ容量と消費量を取得します。月間メッセージ制限と現在の使用量が表示されます。 - **入力:** - なし +7. **get_rich_menu_list** + - LINE公式アカウントに登録されているリッチメニューの一覧を取得する。 + - **入力:** + - なし +8. **delete_rich_menu** + - LINE公式アカウントからリッチメニューを削除する。 + - **入力:** + - `richMenuId` (string): 削除するリッチメニューのID。 +9. **set_rich_menu_default** + - リッチメニューをデフォルトとして設定する。 + - **入力:** + - `richMenuId` (string): デフォルトとして設定するリッチメニューのID。 +10. **cancel_rich_menu_default** + - デフォルトのリッチメニューを解除する。 + - **入力:** + - なし ## インストール (npxを使用) @@ -132,4 +148,4 @@ Claude DesktopやClaudeなどのAI Agentに次の設定を追加してくださ } } } -``` +``` \ No newline at end of file diff --git a/README.md b/README.md index c32da856..96410da9 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,22 @@ - Get the message quota and consumption of the LINE Official Account. This shows the monthly message limit and current usage. - **Inputs:** - None +7. **get_rich_menu_list** + - Get the list of rich menus associated with your LINE Official Account. + - **Inputs:** + - None +8. **delete_rich_menu** + - Delete a rich menu from your LINE Official Account. + - **Inputs:** + - `richMenuId` (string): The ID of the rich menu to delete. +9. **set_rich_menu_default** + - Set a rich menu as the default rich menu. + - **Inputs:** + - `richMenuId` (string): The ID of the rich menu to set as default. +10. **cancel_rich_menu_default** + - Cancel the default rich menu. + - **Inputs:** + - None ## Installation (Using npx) diff --git a/src/index.ts b/src/index.ts index be097b71..691ba99f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -229,6 +229,64 @@ server.tool( }, ); +server.tool( + "get_rich_menu_list", + "Get the list of rich menus associated with your LINE Official Account.", + {}, + async () => { + try { + const response = await messagingApiClient.getRichMenuList(); + return createSuccessResponse(response); + } catch (error) { + return createErrorResponse( + `Failed to broadcast message: ${error.message}`, + ); + } + }, +); + +server.tool( + "delete_rich_menu", + "Delete a rich menu from your LINE Official Account.", + { + richMenuId: z.string().describe("The ID of the rich menu to delete."), + }, + async ({ richMenuId }) => { + try { + const response = await messagingApiClient.deleteRichMenu(richMenuId); + return createSuccessResponse(response); + } catch (error) { + return createErrorResponse( + `Failed to delete rich menu: ${error.message}`, + ); + } + }, +); + +server.tool( + "set_rich_menu_default", + "Set a rich menu as the default rich menu.", + { + richMenuId: z + .string() + .describe("The ID of the rich menu to set as default."), + }, + async ({ richMenuId }) => { + const response = await messagingApiClient.setDefaultRichMenu(richMenuId); + return createSuccessResponse(response); + }, +); + +server.tool( + "cancel_rich_menu_default", + "Cancel the default rich menu.", + {}, + async () => { + const response = await messagingApiClient.cancelDefaultRichMenu(); + return createSuccessResponse(response); + }, +); + async function main() { if (!process.env.CHANNEL_ACCESS_TOKEN) { console.error("Please set CHANNEL_ACCESS_TOKEN"); From ee1196bc33c1d9ca40c75e67fa044734a8d8602b Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Mon, 9 Jun 2025 19:13:34 +0900 Subject: [PATCH 090/415] Refactor and separate files of tools (#123) * Separate files of tools * Fix CONTRIBUTING.md --- CONTRIBUTING.md | 26 ++- src/common/response.ts | 22 +++ src/common/schema/constants.ts | 2 + src/common/schema/flexMessage.ts | 22 +++ src/common/schema/textMessage.ts | 9 + src/index.ts | 270 +++-------------------------- src/tools/AbstractTool.ts | 9 + src/tools/broadcastFlexMessage.ts | 41 +++++ src/tools/broadcastTextMessage.ts | 40 +++++ src/tools/cancelRichMenuDefault.ts | 25 +++ src/tools/deleteRichMenu.ts | 43 +++++ src/tools/getMessageQuota.ts | 31 ++++ src/tools/getProfile.ts | 49 ++++++ src/tools/getRichMenuList.ts | 34 ++++ src/tools/pushFlexMessage.ts | 57 ++++++ src/tools/pushTextMessage.ts | 56 ++++++ src/tools/setRichMenuDefault.ts | 34 ++++ 17 files changed, 516 insertions(+), 254 deletions(-) create mode 100644 src/common/response.ts create mode 100644 src/common/schema/constants.ts create mode 100644 src/common/schema/flexMessage.ts create mode 100644 src/common/schema/textMessage.ts create mode 100644 src/tools/AbstractTool.ts create mode 100644 src/tools/broadcastFlexMessage.ts create mode 100644 src/tools/broadcastTextMessage.ts create mode 100644 src/tools/cancelRichMenuDefault.ts create mode 100644 src/tools/deleteRichMenu.ts create mode 100644 src/tools/getMessageQuota.ts create mode 100644 src/tools/getProfile.ts create mode 100644 src/tools/getRichMenuList.ts create mode 100644 src/tools/pushFlexMessage.ts create mode 100644 src/tools/pushTextMessage.ts create mode 100644 src/tools/setRichMenuDefault.ts diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index de1fec99..d1de4fde 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,11 +13,29 @@ be fantastic if you help us by doing any of the following: You can freely fork the project, clone the forked repository, and start editing. -You may use the following npm scripts for development: +### Install dependencies -* `npm run format`: Format source code with [Prettier](https://github.com/prettier/prettier) -* `npm run format:check`: Silently run `format` and report formatting errors -* `npm run build`: Build TypeScript code into JavaScript. The built files will +Run `npm install` to install all dependencies for development. + +### Understand the project structure + +The project structure is as follows: + +- src: The main code. +- tools: The tools that can be used in the MCP server. +- common: The common code like utilities and types. + +### Add a new Tool + +To add a new Tool, you can create a new directory under `src/tools/` and +implement the Tool in that directory. The Tool should extend `AbstractTool` +and should be registered in `src/index.ts`. + +### Run all CI tasks in your local + +-`npm run format`: Format source code with [Prettier](https://github.com/prettier/prettier) +-`npm run format:check`: Silently run `format` and report formatting errors +-`npm run build`: Build TypeScript code into JavaScript. The built files will be placed in `dist/`. We lint and build on CI, but it is always nice to check them before diff --git a/src/common/response.ts b/src/common/response.ts new file mode 100644 index 00000000..b743957f --- /dev/null +++ b/src/common/response.ts @@ -0,0 +1,22 @@ +export const createErrorResponse = (message: string) => { + return { + isError: true, + content: [ + { + type: "text" as const, + text: message, + }, + ], + }; +}; + +export const createSuccessResponse = (response: object) => { + return { + content: [ + { + type: "text" as const, + text: JSON.stringify(response), + }, + ], + }; +}; diff --git a/src/common/schema/constants.ts b/src/common/schema/constants.ts new file mode 100644 index 00000000..93f70668 --- /dev/null +++ b/src/common/schema/constants.ts @@ -0,0 +1,2 @@ +export const NO_USER_ID_ERROR = + "Error: Specify the userId or set the DESTINATION_USER_ID in the environment variables of this MCP Server."; diff --git a/src/common/schema/flexMessage.ts b/src/common/schema/flexMessage.ts new file mode 100644 index 00000000..fb34185f --- /dev/null +++ b/src/common/schema/flexMessage.ts @@ -0,0 +1,22 @@ +import { z } from "zod"; + +export const flexMessageSchema = z.object({ + type: z.literal("flex").default("flex"), + altText: z + .string() + .describe("Alternative text shown when flex message cannot be displayed."), + contents: z + .object({ + type: z + .enum(["bubble", "carousel"]) + .describe( + "Type of the container. 'bubble' for single container, 'carousel' for multiple swipeable bubbles.", + ), + }) + .passthrough() + .describe( + "Flexible container structure following LINE Flex Message format. For 'bubble' type, can include header, " + + "hero, body, footer, and styles sections. For 'carousel' type, includes an array of bubble containers in " + + "the 'contents' property.", + ), +}); diff --git a/src/common/schema/textMessage.ts b/src/common/schema/textMessage.ts new file mode 100644 index 00000000..c138826f --- /dev/null +++ b/src/common/schema/textMessage.ts @@ -0,0 +1,9 @@ +import { z } from "zod"; + +export const textMessageSchema = z.object({ + type: z.literal("text").default("text"), + text: z + .string() + .max(5000) + .describe("The plain text content to send to the user."), +}); diff --git a/src/index.ts b/src/index.ts index 691ba99f..edc2b615 100644 --- a/src/index.ts +++ b/src/index.ts @@ -19,11 +19,17 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import * as line from "@line/bot-sdk"; -import { z } from "zod"; import { LINE_BOT_MCP_SERVER_VERSION, USER_AGENT } from "./version.js"; - -const NO_USER_ID_ERROR = - "Error: Specify the userId or set the DESTINATION_USER_ID in the environment variables of this MCP Server."; +import CancelRichMenuDefault from "./tools/cancelRichMenuDefault.js"; +import PushTextMessage from "./tools/pushTextMessage.js"; +import PushFlexMessage from "./tools/pushFlexMessage.js"; +import BroadcastTextMessage from "./tools/broadcastTextMessage.js"; +import BroadcastFlexMessage from "./tools/broadcastFlexMessage.js"; +import GetProfile from "./tools/getProfile.js"; +import GetMessageQuota from "./tools/getMessageQuota.js"; +import GetRichMenuList from "./tools/getRichMenuList.js"; +import DeleteRichMenu from "./tools/deleteRichMenu.js"; +import SetRichMenuDefault from "./tools/setRichMenuDefault.js"; const server = new McpServer({ name: "line-bot", @@ -40,252 +46,16 @@ const messagingApiClient = new line.messagingApi.MessagingApiClient({ }, }); -function createErrorResponse(message: string) { - return { - isError: true, - content: [ - { - type: "text" as const, - text: message, - }, - ], - }; -} - -function createSuccessResponse(response: object) { - return { - content: [ - { - type: "text" as const, - text: JSON.stringify(response), - }, - ], - }; -} - -const userIdSchema = z - .string() - .default(destinationId) - .describe( - "The user ID to receive a message. Defaults to DESTINATION_USER_ID.", - ); - -const textMessageSchema = z.object({ - type: z.literal("text").default("text"), - text: z - .string() - .max(5000) - .describe("The plain text content to send to the user."), -}); - -const flexMessageSchema = z.object({ - type: z.literal("flex").default("flex"), - altText: z - .string() - .describe("Alternative text shown when flex message cannot be displayed."), - contents: z - .object({ - type: z - .enum(["bubble", "carousel"]) - .describe( - "Type of the container. 'bubble' for single container, 'carousel' for multiple swipeable bubbles.", - ), - }) - .passthrough() - .describe( - "Flexible container structure following LINE Flex Message format. For 'bubble' type, can include header, " + - "hero, body, footer, and styles sections. For 'carousel' type, includes an array of bubble containers in " + - "the 'contents' property.", - ), -}); - -server.tool( - "push_text_message", - "Push a simple text message to a user via LINE. Use this for sending plain text messages without formatting.", - { - userId: userIdSchema, - message: textMessageSchema, - }, - async ({ userId, message }) => { - if (!userId) { - return createErrorResponse(NO_USER_ID_ERROR); - } - - try { - const response = await messagingApiClient.pushMessage({ - to: userId, - messages: [message as unknown as line.messagingApi.Message], - }); - return createSuccessResponse(response); - } catch (error) { - return createErrorResponse(`Failed to push message: ${error.message}`); - } - }, -); - -server.tool( - "push_flex_message", - "Push a highly customizable flex message to a user via LINE. Supports both bubble (single container) and carousel " + - "(multiple swipeable bubbles) layouts.", - { - userId: userIdSchema, - message: flexMessageSchema, - }, - async ({ userId, message }) => { - if (!userId) { - return createErrorResponse(NO_USER_ID_ERROR); - } - - try { - const response = await messagingApiClient.pushMessage({ - to: userId, - messages: [message as unknown as line.messagingApi.Message], - }); - return createSuccessResponse(response); - } catch (error) { - return createErrorResponse( - `Failed to push flex message: ${error.message}`, - ); - } - }, -); - -server.tool( - "broadcast_text_message", - "Broadcast a simple text message via LINE to all users who have followed your LINE Official Account. Use this for sending " + - "plain text messages without formatting. Please be aware that this message will be sent to all users.", - { - message: textMessageSchema, - }, - async ({ message }) => { - try { - const response = await messagingApiClient.broadcast({ - messages: [message as unknown as line.messagingApi.Message], - }); - return createSuccessResponse(response); - } catch (error) { - return createErrorResponse( - `Failed to broadcast message: ${error.message}`, - ); - } - }, -); - -server.tool( - "broadcast_flex_message", - "Broadcast a highly customizable flex message via LINE to all users who have added your LINE Official Account. " + - "Supports both bubble (single container) and carousel (multiple swipeable bubbles) layouts. Please be aware that " + - "this message will be sent to all users.", - { - message: flexMessageSchema, - }, - async ({ message }) => { - try { - const response = await messagingApiClient.broadcast({ - messages: [message as unknown as line.messagingApi.Message], - }); - return createSuccessResponse(response); - } catch (error) { - return createErrorResponse( - `Failed to broadcast message: ${error.message}`, - ); - } - }, -); - -server.tool( - "get_profile", - "Get detailed profile information of a LINE user including display name, profile picture URL, status message and language.", - { - userId: userIdSchema, - }, - async ({ userId }) => { - if (!userId) { - return createErrorResponse(NO_USER_ID_ERROR); - } - - try { - const response = await messagingApiClient.getProfile(userId); - return createSuccessResponse(response); - } catch (error) { - return createErrorResponse(`Failed to get profile: ${error.message}`); - } - }, -); - -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 () => { - const messageQuotaResponse = await messagingApiClient.getMessageQuota(); - const messageQuotaConsumptionResponse = - await messagingApiClient.getMessageQuotaConsumption(); - const response = { - limited: messageQuotaResponse.value, - totalUsage: messageQuotaConsumptionResponse.totalUsage, - }; - return createSuccessResponse(response); - }, -); - -server.tool( - "get_rich_menu_list", - "Get the list of rich menus associated with your LINE Official Account.", - {}, - async () => { - try { - const response = await messagingApiClient.getRichMenuList(); - return createSuccessResponse(response); - } catch (error) { - return createErrorResponse( - `Failed to broadcast message: ${error.message}`, - ); - } - }, -); - -server.tool( - "delete_rich_menu", - "Delete a rich menu from your LINE Official Account.", - { - richMenuId: z.string().describe("The ID of the rich menu to delete."), - }, - async ({ richMenuId }) => { - try { - const response = await messagingApiClient.deleteRichMenu(richMenuId); - return createSuccessResponse(response); - } catch (error) { - return createErrorResponse( - `Failed to delete rich menu: ${error.message}`, - ); - } - }, -); - -server.tool( - "set_rich_menu_default", - "Set a rich menu as the default rich menu.", - { - richMenuId: z - .string() - .describe("The ID of the rich menu to set as default."), - }, - async ({ richMenuId }) => { - const response = await messagingApiClient.setDefaultRichMenu(richMenuId); - return createSuccessResponse(response); - }, -); - -server.tool( - "cancel_rich_menu_default", - "Cancel the default rich menu.", - {}, - async () => { - const response = await messagingApiClient.cancelDefaultRichMenu(); - return createSuccessResponse(response); - }, -); +new PushTextMessage(messagingApiClient, destinationId).register(server); +new PushFlexMessage(messagingApiClient, destinationId).register(server); +new BroadcastTextMessage(messagingApiClient).register(server); +new BroadcastFlexMessage(messagingApiClient).register(server); +new GetProfile(messagingApiClient, destinationId).register(server); +new GetMessageQuota(messagingApiClient).register(server); +new GetRichMenuList(messagingApiClient).register(server); +new DeleteRichMenu(messagingApiClient).register(server); +new SetRichMenuDefault(messagingApiClient).register(server); +new CancelRichMenuDefault(messagingApiClient).register(server); async function main() { if (!process.env.CHANNEL_ACCESS_TOKEN) { diff --git a/src/tools/AbstractTool.ts b/src/tools/AbstractTool.ts new file mode 100644 index 00000000..86da04f7 --- /dev/null +++ b/src/tools/AbstractTool.ts @@ -0,0 +1,9 @@ +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; + +export abstract class AbstractTool { + /** + * Registers the tool with the given MCP server. + * @param server The MCP server to register the tool with. + */ + abstract register(server: McpServer): void; +} diff --git a/src/tools/broadcastFlexMessage.ts b/src/tools/broadcastFlexMessage.ts new file mode 100644 index 00000000..08322330 --- /dev/null +++ b/src/tools/broadcastFlexMessage.ts @@ -0,0 +1,41 @@ +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { messagingApi } from "@line/bot-sdk"; +import { + createErrorResponse, + createSuccessResponse, +} from "../common/response.js"; +import { AbstractTool } from "./AbstractTool.js"; +import { flexMessageSchema } from "../common/schema/flexMessage.js"; + +export default class BroadcastFlexMessage extends AbstractTool { + private client: messagingApi.MessagingApiClient; + + constructor(client: messagingApi.MessagingApiClient) { + super(); + this.client = client; + } + + register(server: McpServer) { + server.tool( + "broadcast_flex_message", + "Broadcast a highly customizable flex message via LINE to all users who have added your LINE Official Account. " + + "Supports both bubble (single container) and carousel (multiple swipeable bubbles) layouts. Please be aware that " + + "this message will be sent to all users.", + { + message: flexMessageSchema, + }, + async ({ message }) => { + try { + const response = await this.client.broadcast({ + messages: [message as unknown as messagingApi.Message], + }); + return createSuccessResponse(response); + } catch (error) { + return createErrorResponse( + `Failed to broadcast message: ${error.message}`, + ); + } + }, + ); + } +} diff --git a/src/tools/broadcastTextMessage.ts b/src/tools/broadcastTextMessage.ts new file mode 100644 index 00000000..d61338ea --- /dev/null +++ b/src/tools/broadcastTextMessage.ts @@ -0,0 +1,40 @@ +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { messagingApi } from "@line/bot-sdk"; +import { + createErrorResponse, + createSuccessResponse, +} from "../common/response.js"; +import { AbstractTool } from "./AbstractTool.js"; +import { textMessageSchema } from "../common/schema/textMessage.js"; + +export default class BroadcastTextMessage extends AbstractTool { + private client: messagingApi.MessagingApiClient; + + constructor(client: messagingApi.MessagingApiClient) { + super(); + this.client = client; + } + + register(server: McpServer) { + server.tool( + "broadcast_text_message", + "Broadcast a simple text message via LINE to all users who have followed your LINE Official Account. Use this for sending " + + "plain text messages without formatting. Please be aware that this message will be sent to all users.", + { + message: textMessageSchema, + }, + async ({ message }) => { + try { + const response = await this.client.broadcast({ + messages: [message as unknown as messagingApi.Message], + }); + return createSuccessResponse(response); + } catch (error) { + return createErrorResponse( + `Failed to broadcast message: ${error.message}`, + ); + } + }, + ); + } +} diff --git a/src/tools/cancelRichMenuDefault.ts b/src/tools/cancelRichMenuDefault.ts new file mode 100644 index 00000000..c72cce2c --- /dev/null +++ b/src/tools/cancelRichMenuDefault.ts @@ -0,0 +1,25 @@ +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { messagingApi } from "@line/bot-sdk"; +import { createSuccessResponse } from "../common/response.js"; +import { AbstractTool } from "./AbstractTool.js"; + +export default class CancelRichMenuDefault extends AbstractTool { + private client: messagingApi.MessagingApiClient; + + constructor(client: messagingApi.MessagingApiClient) { + super(); + this.client = client; + } + + register(server: McpServer) { + server.tool( + "cancel_rich_menu_default", + "Cancel the default rich menu.", + {}, + async () => { + const response = await this.client.cancelDefaultRichMenu(); + return createSuccessResponse(response); + }, + ); + } +} diff --git a/src/tools/deleteRichMenu.ts b/src/tools/deleteRichMenu.ts new file mode 100644 index 00000000..cb51b868 --- /dev/null +++ b/src/tools/deleteRichMenu.ts @@ -0,0 +1,43 @@ +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { messagingApi } from "@line/bot-sdk"; +import { + createErrorResponse, + createSuccessResponse, +} from "../common/response.js"; +import { AbstractTool } from "./AbstractTool.js"; +import { z } from "zod"; + +export default class DeleteRichMenu extends AbstractTool { + private client: messagingApi.MessagingApiClient; + + constructor(client: messagingApi.MessagingApiClient) { + super(); + this.client = client; + } + + register(server: McpServer) { + const richMenuIdSchema = z + .string() + .describe("The ID of the rich menu to delete."); + + server.tool( + "delete_rich_menu", + "Delete a rich menu from your LINE Official Account.", + { + richMenuId: richMenuIdSchema.describe( + "The ID of the rich menu to delete.", + ), + }, + async ({ richMenuId }) => { + try { + const response = await this.client.deleteRichMenu(richMenuId); + return createSuccessResponse(response); + } catch (error) { + return createErrorResponse( + `Failed to delete rich menu: ${error.message}`, + ); + } + }, + ); + } +} diff --git a/src/tools/getMessageQuota.ts b/src/tools/getMessageQuota.ts new file mode 100644 index 00000000..8f413020 --- /dev/null +++ b/src/tools/getMessageQuota.ts @@ -0,0 +1,31 @@ +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { messagingApi } from "@line/bot-sdk"; +import { createSuccessResponse } from "../common/response.js"; +import { AbstractTool } from "./AbstractTool.js"; + +export default class GetMessageQuota extends AbstractTool { + private client: messagingApi.MessagingApiClient; + + constructor(client: messagingApi.MessagingApiClient) { + super(); + this.client = client; + } + + register(server: McpServer) { + 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 () => { + const messageQuotaResponse = await this.client.getMessageQuota(); + const messageQuotaConsumptionResponse = + await this.client.getMessageQuotaConsumption(); + const response = { + limited: messageQuotaResponse.value, + totalUsage: messageQuotaConsumptionResponse.totalUsage, + }; + return createSuccessResponse(response); + }, + ); + } +} diff --git a/src/tools/getProfile.ts b/src/tools/getProfile.ts new file mode 100644 index 00000000..79a84ec5 --- /dev/null +++ b/src/tools/getProfile.ts @@ -0,0 +1,49 @@ +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { messagingApi } from "@line/bot-sdk"; +import { z } from "zod"; +import { + createErrorResponse, + createSuccessResponse, +} from "../common/response.js"; +import { AbstractTool } from "./AbstractTool.js"; +import { NO_USER_ID_ERROR } from "../common/schema/constants.js"; + +export default class GetProfile extends AbstractTool { + private client: messagingApi.MessagingApiClient; + private destinationId: string; + + constructor(client: messagingApi.MessagingApiClient, destinationId: string) { + super(); + this.client = client; + this.destinationId = destinationId; + } + + register(server: McpServer) { + const userIdSchema = z + .string() + .default(this.destinationId) + .describe( + "The user ID to get a profile. Defaults to DESTINATION_USER_ID.", + ); + + server.tool( + "get_profile", + "Get detailed profile information of a LINE user including display name, profile picture URL, status message and language.", + { + userId: userIdSchema, + }, + async ({ userId }) => { + if (!userId) { + return createErrorResponse(NO_USER_ID_ERROR); + } + + try { + const response = await this.client.getProfile(userId); + return createSuccessResponse(response); + } catch (error) { + return createErrorResponse(`Failed to get profile: ${error.message}`); + } + }, + ); + } +} diff --git a/src/tools/getRichMenuList.ts b/src/tools/getRichMenuList.ts new file mode 100644 index 00000000..dc8e0668 --- /dev/null +++ b/src/tools/getRichMenuList.ts @@ -0,0 +1,34 @@ +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { messagingApi } from "@line/bot-sdk"; +import { + createErrorResponse, + createSuccessResponse, +} from "../common/response.js"; +import { AbstractTool } from "./AbstractTool.js"; + +export default class GetRichMenuList extends AbstractTool { + private client: messagingApi.MessagingApiClient; + + constructor(client: messagingApi.MessagingApiClient) { + super(); + this.client = client; + } + + register(server: McpServer) { + server.tool( + "get_rich_menu_list", + "Get the list of rich menus associated with your LINE Official Account.", + {}, + async () => { + try { + const response = await this.client.getRichMenuList(); + return createSuccessResponse(response); + } catch (error) { + return createErrorResponse( + `Failed to broadcast message: ${error.message}`, + ); + } + }, + ); + } +} diff --git a/src/tools/pushFlexMessage.ts b/src/tools/pushFlexMessage.ts new file mode 100644 index 00000000..94351aff --- /dev/null +++ b/src/tools/pushFlexMessage.ts @@ -0,0 +1,57 @@ +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { messagingApi } from "@line/bot-sdk"; +import { z } from "zod"; +import { + createErrorResponse, + createSuccessResponse, +} from "../common/response.js"; +import { AbstractTool } from "./AbstractTool.js"; +import { NO_USER_ID_ERROR } from "../common/schema/constants.js"; +import { flexMessageSchema } from "../common/schema/flexMessage.js"; + +export default class PushFlexMessage extends AbstractTool { + private client: messagingApi.MessagingApiClient; + private destinationId: string; + + constructor(client: messagingApi.MessagingApiClient, destinationId: string) { + super(); + this.client = client; + this.destinationId = destinationId; + } + + register(server: McpServer) { + const userIdSchema = z + .string() + .default(this.destinationId) + .describe( + "The user ID to receive a message. Defaults to DESTINATION_USER_ID.", + ); + + server.tool( + "push_flex_message", + "Push a highly customizable flex message to a user via LINE. Supports both bubble (single container) and carousel " + + "(multiple swipeable bubbles) layouts.", + { + userId: userIdSchema, + message: flexMessageSchema, + }, + async ({ userId, message }) => { + if (!userId) { + return createErrorResponse(NO_USER_ID_ERROR); + } + + try { + const response = await this.client.pushMessage({ + to: userId, + messages: [message as unknown as messagingApi.Message], + }); + return createSuccessResponse(response); + } catch (error) { + return createErrorResponse( + `Failed to push flex message: ${error.message}`, + ); + } + }, + ); + } +} diff --git a/src/tools/pushTextMessage.ts b/src/tools/pushTextMessage.ts new file mode 100644 index 00000000..52530341 --- /dev/null +++ b/src/tools/pushTextMessage.ts @@ -0,0 +1,56 @@ +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { messagingApi } from "@line/bot-sdk"; +import { z } from "zod"; +import { + createErrorResponse, + createSuccessResponse, +} from "../common/response.js"; +import { AbstractTool } from "./AbstractTool.js"; +import { NO_USER_ID_ERROR } from "../common/schema/constants.js"; +import { textMessageSchema } from "../common/schema/textMessage.js"; + +export default class PushTextMessage extends AbstractTool { + private client: messagingApi.MessagingApiClient; + private destinationId: string; + + constructor(client: messagingApi.MessagingApiClient, destinationId: string) { + super(); + this.client = client; + this.destinationId = destinationId; + } + + register(server: McpServer) { + const userIdSchema = z + .string() + .default(this.destinationId) + .describe( + "The user ID to receive a message. Defaults to DESTINATION_USER_ID.", + ); + + server.tool( + "push_text_message", + "Push a simple text message to a user via LINE. Use this for sending plain text messages without formatting.", + { + userId: userIdSchema, + message: textMessageSchema, + }, + async ({ userId, message }) => { + if (!userId) { + return createErrorResponse(NO_USER_ID_ERROR); + } + + try { + const response = await this.client.pushMessage({ + to: userId, + messages: [message as unknown as messagingApi.Message], + }); + return createSuccessResponse(response); + } catch (error) { + return createErrorResponse( + `Failed to push message: ${error.message}`, + ); + } + }, + ); + } +} diff --git a/src/tools/setRichMenuDefault.ts b/src/tools/setRichMenuDefault.ts new file mode 100644 index 00000000..8a40e5e8 --- /dev/null +++ b/src/tools/setRichMenuDefault.ts @@ -0,0 +1,34 @@ +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { messagingApi } from "@line/bot-sdk"; +import { createSuccessResponse } from "../common/response.js"; +import { AbstractTool } from "./AbstractTool.js"; +import { z } from "zod"; + +export default class SetRichMenuDefault extends AbstractTool { + private client: messagingApi.MessagingApiClient; + + constructor(client: messagingApi.MessagingApiClient) { + super(); + this.client = client; + } + + register(server: McpServer) { + const richMenuIdSchema = z + .string() + .describe("The ID of the rich menu to set as default."); + + server.tool( + "set_rich_menu_default", + "Set a rich menu as the default rich menu.", + { + richMenuId: richMenuIdSchema.describe( + "The ID of the rich menu to set as default.", + ), + }, + async ({ richMenuId }) => { + const response = await this.client.setDefaultRichMenu(richMenuId); + return createSuccessResponse(response); + }, + ); + } +} From 0a7b4dd8c2d1b5d0635a003bf04c82e741059886 Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Tue, 10 Jun 2025 11:04:46 +0900 Subject: [PATCH 091/415] Fix CONTRIBUTING.md (#124) --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d1de4fde..1c5d9fc5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -27,8 +27,8 @@ The project structure is as follows: ### Add a new Tool -To add a new Tool, you can create a new directory under `src/tools/` and -implement the Tool in that directory. The Tool should extend `AbstractTool` +To add a new Tool, you can create a new file under `src/tools/` and +implement the Tool in that file. The Tool should extend `AbstractTool` and should be registered in `src/index.ts`. ### Run all CI tasks in your local From 70f65b17678c42fce4785170862807758a9caa46 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 10 Jun 2025 08:14:35 +0000 Subject: [PATCH 092/415] chore(deps): update dependency @types/node to v22.15.31 (#125) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9b47023a..9bbfe6e1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -528,9 +528,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "version": "22.15.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.31.tgz", + "integrity": "sha512-jnVe5ULKl6tijxUhvQeNbQG/84fHfg+yMak02cT8QVhBx/F05rAVxCGBYYTh2EKz22D6JF5ktXuNwdx7b9iEGw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From d7af44a01217ee89705221d53e0e62b0d770a297 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 10 Jun 2025 08:14:48 +0000 Subject: [PATCH 093/415] fix(deps): update dependency zod to v3.25.57 (#126) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9bbfe6e1..74247513 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.56", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.56.tgz", - "integrity": "sha512-rd6eEF3BTNvQnR2e2wwolfTmUTnp70aUTqr0oaGbHifzC3BKJsoV+Gat8vxUMR1hwOKBs6El+qWehrHbCpW6SQ==", + "version": "3.25.57", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.57.tgz", + "integrity": "sha512-6tgzLuwVST5oLUxXTmBqoinKMd3JeesgbgseXeFasKKj8Q1FCZrHnbqJOyiEvr4cVAlbug+CgIsmJ8cl/pU5FA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 01adee707997c9bf0b401ec2ca3317fd4016894d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 11 Jun 2025 13:02:45 +0900 Subject: [PATCH 094/415] fix(deps): update dependency zod to v3.25.58 (#127) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 74247513..138c1e18 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.57", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.57.tgz", - "integrity": "sha512-6tgzLuwVST5oLUxXTmBqoinKMd3JeesgbgseXeFasKKj8Q1FCZrHnbqJOyiEvr4cVAlbug+CgIsmJ8cl/pU5FA==", + "version": "3.25.58", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.58.tgz", + "integrity": "sha512-DVLmMQzSZwNYzQoMaM3MQWnxr2eq+AtM9Hx3w1/Yl0pH8sLTSjN4jGP7w6f7uand6Hw44tsnSu1hz1AOA6qI2Q==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 9b10b800b4a7063b09cdb65adba74ed65ccacbf2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 11 Jun 2025 13:03:19 +0900 Subject: [PATCH 095/415] chore(deps): update dependency tsx to v4.20.0 (#128) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 138c1e18..e10a6d35 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2218,9 +2218,9 @@ } }, "node_modules/tsx": { - "version": "4.19.4", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.4.tgz", - "integrity": "sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.0.tgz", + "integrity": "sha512-TsmdeXxcZYiJ2MKV7fdq38na0CKyLRtCeMqTeHMmrVXQ/gf5yTeJohh+sgr7MnMGsjeKXzHzy+TwOOTR1arl+Q==", "dev": true, "license": "MIT", "dependencies": { From dc8aa8e79469cf0458709d66c7ee9e27fbfb8375 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 11 Jun 2025 21:15:01 +0900 Subject: [PATCH 096/415] chore(deps): update dependency tsx to v4.20.1 (#129) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index e10a6d35..ad5a8aa6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2218,9 +2218,9 @@ } }, "node_modules/tsx": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.0.tgz", - "integrity": "sha512-TsmdeXxcZYiJ2MKV7fdq38na0CKyLRtCeMqTeHMmrVXQ/gf5yTeJohh+sgr7MnMGsjeKXzHzy+TwOOTR1arl+Q==", + "version": "4.20.1", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.1.tgz", + "integrity": "sha512-JsFUnMHIE+g8KllOvWTrSOwCKM10xLcsesvUQR61znsbrcwZ4U/QaqdymmvTqG5GMD7k2VFv9UG35C4dRy34Ag==", "dev": true, "license": "MIT", "dependencies": { From 03fdbaca6f6713c56cda6e2e8abdeb464ec0659c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 11 Jun 2025 22:06:31 +0900 Subject: [PATCH 097/415] fix(deps): update dependency zod to v3.25.61 (#130) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index ad5a8aa6..31820a64 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.58", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.58.tgz", - "integrity": "sha512-DVLmMQzSZwNYzQoMaM3MQWnxr2eq+AtM9Hx3w1/Yl0pH8sLTSjN4jGP7w6f7uand6Hw44tsnSu1hz1AOA6qI2Q==", + "version": "3.25.61", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.61.tgz", + "integrity": "sha512-fzfJgUw78LTNnHujj9re1Ov/JJQkRZZGDMcYqSx7Hp4rPOkKywaFHq0S6GoHeXs0wGNE/sIOutkXgnwzrVOGCQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From c7e82c31e7c9490c1f6ee85bd90a988cb830d102 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 11 Jun 2025 21:58:39 +0000 Subject: [PATCH 098/415] fix(deps): update dependency zod to v3.25.62 (#131) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 31820a64..f2bd0bdc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.61", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.61.tgz", - "integrity": "sha512-fzfJgUw78LTNnHujj9re1Ov/JJQkRZZGDMcYqSx7Hp4rPOkKywaFHq0S6GoHeXs0wGNE/sIOutkXgnwzrVOGCQ==", + "version": "3.25.62", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.62.tgz", + "integrity": "sha512-YCxsr4DmhPcrKPC9R1oBHQNlQzlJEyPAId//qTau/vBee9uO8K6prmRq4eMkOyxvBfH4wDPIPdLx9HVMWIY3xA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From b168388970a81d6be1df2c8715a4f6f7b0e09ee7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 12 Jun 2025 08:15:49 +0000 Subject: [PATCH 099/415] chore(deps): update dependency tsx to v4.20.2 (#132) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f2bd0bdc..71ad3764 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2218,9 +2218,9 @@ } }, "node_modules/tsx": { - "version": "4.20.1", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.1.tgz", - "integrity": "sha512-JsFUnMHIE+g8KllOvWTrSOwCKM10xLcsesvUQR61znsbrcwZ4U/QaqdymmvTqG5GMD7k2VFv9UG35C4dRy34Ag==", + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.2.tgz", + "integrity": "sha512-He0ZWr41gLa4vD30Au3yuwpe0HXaCZbclvl8RBieUiJ9aFnPMWUPIyvw3RU8+1Crjfcrauvitae2a4tUzRAGsw==", "dev": true, "license": "MIT", "dependencies": { From 1d2b68c0eb41c30a565c28849f60b18f80b9fdd6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 12 Jun 2025 17:15:54 +0900 Subject: [PATCH 100/415] fix(deps): update dependency zod to v3.25.63 (#133) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 71ad3764..1acc348c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.62", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.62.tgz", - "integrity": "sha512-YCxsr4DmhPcrKPC9R1oBHQNlQzlJEyPAId//qTau/vBee9uO8K6prmRq4eMkOyxvBfH4wDPIPdLx9HVMWIY3xA==", + "version": "3.25.63", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.63.tgz", + "integrity": "sha512-3ttCkqhtpncYXfP0f6dsyabbYV/nEUW+Xlu89jiXbTBifUfjaSqXOG6JnQPLtqt87n7KAmnMqcjay6c0Wq0Vbw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From a0c0f37671abd1792b9621611f012a09be1f88a8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 13 Jun 2025 11:52:34 +0000 Subject: [PATCH 101/415] chore(deps): update dependency tsx to v4.20.3 (#134) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1acc348c..1a1bf1d5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2218,9 +2218,9 @@ } }, "node_modules/tsx": { - "version": "4.20.2", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.2.tgz", - "integrity": "sha512-He0ZWr41gLa4vD30Au3yuwpe0HXaCZbclvl8RBieUiJ9aFnPMWUPIyvw3RU8+1Crjfcrauvitae2a4tUzRAGsw==", + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.3.tgz", + "integrity": "sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==", "dev": true, "license": "MIT", "dependencies": { From 9563ef655aba267469b8515ad7a4562a8a8184e3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 13 Jun 2025 11:52:44 +0000 Subject: [PATCH 102/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.12.2 (#135) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1a1bf1d5..7038bcba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.12.1.tgz", - "integrity": "sha512-KG1CZhZfWg+u8pxeM/mByJDScJSrjjxLc8fwQqbsS8xCjBmQfMNEBTotYdNanKekepnfRI85GtgQlctLFpcYPw==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.12.2.tgz", + "integrity": "sha512-ShQesHTyTZfcpjnMCUOH1gbhK9CZXL30GLFw4hN8qOiIaRKbkOl91uw79WP4v3Mh4QUffjkUO60ZtBUEzaRaOg==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", From 4152bbac67d8081ef667ee78f2440bea14e9b45c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 13 Jun 2025 16:57:49 +0000 Subject: [PATCH 103/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.12.3 (#136) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7038bcba..94fdb333 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.12.2.tgz", - "integrity": "sha512-ShQesHTyTZfcpjnMCUOH1gbhK9CZXL30GLFw4hN8qOiIaRKbkOl91uw79WP4v3Mh4QUffjkUO60ZtBUEzaRaOg==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.12.3.tgz", + "integrity": "sha512-DyVYSOafBvk3/j1Oka4z5BWT8o4AFmoNyZY9pALOm7Lh3GZglR71Co4r4dEUoqDWdDazIZQHBe7J2Nwkg6gHgQ==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", From 38117027e208606e102d304748d53ef7a83816ac Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 13 Jun 2025 16:57:57 +0000 Subject: [PATCH 104/415] fix(deps): update dependency zod to v3.25.64 (#137) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 94fdb333..de25792a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.63", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.63.tgz", - "integrity": "sha512-3ttCkqhtpncYXfP0f6dsyabbYV/nEUW+Xlu89jiXbTBifUfjaSqXOG6JnQPLtqt87n7KAmnMqcjay6c0Wq0Vbw==", + "version": "3.25.64", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.64.tgz", + "integrity": "sha512-hbP9FpSZf7pkS7hRVUrOjhwKJNyampPgtXKc3AN6DsWtoHsg2Sb4SQaS4Tcay380zSwd2VPo9G9180emBACp5g==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 5db1d63c7ce587a40d40fe26d1b41f539b6abd65 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 16 Jun 2025 12:28:55 +0000 Subject: [PATCH 105/415] chore(deps): update dependency @types/node to v22.15.32 (#138) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index de25792a..f8c39afc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -528,9 +528,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.31.tgz", - "integrity": "sha512-jnVe5ULKl6tijxUhvQeNbQG/84fHfg+yMak02cT8QVhBx/F05rAVxCGBYYTh2EKz22D6JF5ktXuNwdx7b9iEGw==", + "version": "22.15.32", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.32.tgz", + "integrity": "sha512-3jigKqgSjsH6gYZv2nEsqdXfZqIFGAV36XYYjf9KGZ3PSG+IhLecqPnI310RvjutyMwifE2hhhNEklOUrvx/wA==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From a3bb5d4f148ce772933a6f9f742c2dfd07b6c931 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 16 Jun 2025 21:05:12 +0000 Subject: [PATCH 106/415] fix(deps): update dependency zod to v3.25.65 (#139) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f8c39afc..009d7d76 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.64", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.64.tgz", - "integrity": "sha512-hbP9FpSZf7pkS7hRVUrOjhwKJNyampPgtXKc3AN6DsWtoHsg2Sb4SQaS4Tcay380zSwd2VPo9G9180emBACp5g==", + "version": "3.25.65", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.65.tgz", + "integrity": "sha512-kMyE2qsXK1p+TAvO7zsf5wMFiCejU3obrUDs9bR1q5CBKykfvp7QhhXrycUylMoOow0iEUSyjLlZZdCsHwSldQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 375cb5609ceba752a4a0ea13755c2d77041067b8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 02:09:35 +0000 Subject: [PATCH 107/415] fix(deps): update dependency zod to v3.25.67 (#140) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 009d7d76..7b6b019b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2320,9 +2320,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.65", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.65.tgz", - "integrity": "sha512-kMyE2qsXK1p+TAvO7zsf5wMFiCejU3obrUDs9bR1q5CBKykfvp7QhhXrycUylMoOow0iEUSyjLlZZdCsHwSldQ==", + "version": "3.25.67", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", + "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 623a5716973e1ef74b98b95d387b8b723b128edb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 18 Jun 2025 23:00:00 +0000 Subject: [PATCH 108/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.13.0 (#141) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7b6b019b..a22b18c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.12.3.tgz", - "integrity": "sha512-DyVYSOafBvk3/j1Oka4z5BWT8o4AFmoNyZY9pALOm7Lh3GZglR71Co4r4dEUoqDWdDazIZQHBe7J2Nwkg6gHgQ==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.13.0.tgz", + "integrity": "sha512-P5FZsXU0kY881F6Hbk9GhsYx02/KgWK1DYf7/tyE/1lcFKhDYPQR9iYjhQXJn+Sg6hQleMo3DB7h7+p4wgp2Lw==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", From fe513f7bf4974b5260bc6b538363766048027d11 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 23 Jun 2025 01:32:38 +0000 Subject: [PATCH 109/415] chore(deps): update pnpm to v10.12.2 (#142) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 169db769..8ecb830b 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.12.1+sha512.f0dda8580f0ee9481c5c79a1d927b9164f2c478e90992ad268bbb2465a736984391d6333d2c327913578b2804af33474ca554ba29c04a8b13060a717675ae3ac" + "packageManager": "pnpm@10.12.2+sha512.a32540185b964ee30bb4e979e405adc6af59226b438ee4cc19f9e8773667a66d302f5bfee60a39d3cac69e35e4b96e708a71dd002b7e9359c4112a1722ac323f" } From bb1646110830a4d4e3d6d59625ebc29d10c7163f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 23 Jun 2025 06:30:08 +0000 Subject: [PATCH 110/415] chore(deps): update dependency prettier to v3.6.0 (#143) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index a22b18c1..0360e8c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ }, "devDependencies": { "@types/node": "^22", - "prettier": "3.5.3", + "prettier": "3.6.0", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" @@ -1739,9 +1739,9 @@ } }, "node_modules/prettier": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", - "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.0.tgz", + "integrity": "sha512-ujSB9uXHJKzM/2GBuE0hBOUgC77CN3Bnpqa+g80bkv3T3A93wL/xlzDATHhnhkzifz/UE2SNOvmbTz5hSkDlHw==", "dev": true, "license": "MIT", "bin": { diff --git a/package.json b/package.json index 8ecb830b..86ddc5f8 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ }, "devDependencies": { "@types/node": "^22", - "prettier": "3.5.3", + "prettier": "3.6.0", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" From 671d99d2d36eae469485e842bf2684143151faa5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 23 Jun 2025 17:27:35 +0000 Subject: [PATCH 111/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.13.1 (#144) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0360e8c2..6ce82fb1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.13.0.tgz", - "integrity": "sha512-P5FZsXU0kY881F6Hbk9GhsYx02/KgWK1DYf7/tyE/1lcFKhDYPQR9iYjhQXJn+Sg6hQleMo3DB7h7+p4wgp2Lw==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.13.1.tgz", + "integrity": "sha512-8q6+9aF0yA39/qWT/uaIj6zTpC+Qu07DnN/lb9mjoquCJsAh6l3HyYqc9O3t2j7GilseOQOQimLg7W3By6jqvg==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", From 85615303ab33aba08d35a9446f9668b9ec693ae1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 24 Jun 2025 12:41:42 +0000 Subject: [PATCH 112/415] chore(deps): update pnpm to v10.12.3 (#146) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 86ddc5f8..a05436e0 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.12.2+sha512.a32540185b964ee30bb4e979e405adc6af59226b438ee4cc19f9e8773667a66d302f5bfee60a39d3cac69e35e4b96e708a71dd002b7e9359c4112a1722ac323f" + "packageManager": "pnpm@10.12.3+sha512.467df2c586056165580ad6dfb54ceaad94c5a30f80893ebdec5a44c5aa73c205ae4a5bb9d5ed6bb84ea7c249ece786642bbb49d06a307df218d03da41c317417" } From e6846be5844fe14272d885f8b88b0e2ffd353305 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 24 Jun 2025 19:57:13 +0000 Subject: [PATCH 113/415] chore(deps): update dependency @types/node to v22.15.33 (#147) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6ce82fb1..13dfda61 100644 --- a/package-lock.json +++ b/package-lock.json @@ -528,9 +528,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.32", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.32.tgz", - "integrity": "sha512-3jigKqgSjsH6gYZv2nEsqdXfZqIFGAV36XYYjf9KGZ3PSG+IhLecqPnI310RvjutyMwifE2hhhNEklOUrvx/wA==", + "version": "22.15.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.33.tgz", + "integrity": "sha512-wzoocdnnpSxZ+6CjW4ADCK1jVmd1S/J3ArNWfn8FDDQtRm8dkDg7TA+mvek2wNrfCgwuZxqEOiB9B1XCJ6+dbw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 9d6b6b7bc3e9581f57c7bb9614f92cf744fb5ae0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Jun 2025 06:51:20 +0000 Subject: [PATCH 114/415] chore(deps): update dependency prettier to v3.6.1 (#148) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 13dfda61..4fcaf451 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ }, "devDependencies": { "@types/node": "^22", - "prettier": "3.6.0", + "prettier": "3.6.1", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" @@ -1739,9 +1739,9 @@ } }, "node_modules/prettier": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.0.tgz", - "integrity": "sha512-ujSB9uXHJKzM/2GBuE0hBOUgC77CN3Bnpqa+g80bkv3T3A93wL/xlzDATHhnhkzifz/UE2SNOvmbTz5hSkDlHw==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.1.tgz", + "integrity": "sha512-5xGWRa90Sp2+x1dQtNpIpeOQpTDBs9cZDmA/qs2vDNN2i18PdapqY7CmBeyLlMuGqXJRIOPaCaVZTLNQRWUH/A==", "dev": true, "license": "MIT", "bin": { diff --git a/package.json b/package.json index a05436e0..8f8d70ff 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ }, "devDependencies": { "@types/node": "^22", - "prettier": "3.6.0", + "prettier": "3.6.1", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" From 314860f01b04043fd2fab05e917cf9bd2db2f675 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Jun 2025 20:15:32 +0000 Subject: [PATCH 115/415] chore(deps): update node.js to v22.17.0 (#149) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 872939ba..337fdd22 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.16-alpine AS builder +FROM node:22.17-alpine AS builder COPY . /app From 59bd8acccedf96a6d974556125c8abd1a32cad9c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 26 Jun 2025 19:32:38 +0000 Subject: [PATCH 116/415] chore(deps): update pnpm to v10.12.4 (#150) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8f8d70ff..ff60ce06 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.12.3+sha512.467df2c586056165580ad6dfb54ceaad94c5a30f80893ebdec5a44c5aa73c205ae4a5bb9d5ed6bb84ea7c249ece786642bbb49d06a307df218d03da41c317417" + "packageManager": "pnpm@10.12.4+sha512.5ea8b0deed94ed68691c9bad4c955492705c5eeb8a87ef86bc62c74a26b037b08ff9570f108b2e4dbd1dd1a9186fea925e527f141c648e85af45631074680184" } From 710c1d22da5567e5407c9c4594f95b50467713a2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 26 Jun 2025 19:32:39 +0000 Subject: [PATCH 117/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.13.2 (#151) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4fcaf451..4d2a1b4b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.13.1.tgz", - "integrity": "sha512-8q6+9aF0yA39/qWT/uaIj6zTpC+Qu07DnN/lb9mjoquCJsAh6l3HyYqc9O3t2j7GilseOQOQimLg7W3By6jqvg==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.13.2.tgz", + "integrity": "sha512-Vx7qOcmoKkR3qhaQ9qf3GxiVKCEu+zfJddHv6x3dY/9P6+uIwJnmuAur5aB+4FDXf41rRrDnOEGkviX5oYZ67w==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", From a7ef82917023e9c06e2ecadae7b66399101644b0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 27 Jun 2025 06:32:48 +0000 Subject: [PATCH 118/415] chore(deps): update dependency prettier to v3.6.2 (#152) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4d2a1b4b..1b46647a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ }, "devDependencies": { "@types/node": "^22", - "prettier": "3.6.1", + "prettier": "3.6.2", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" @@ -1739,9 +1739,9 @@ } }, "node_modules/prettier": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.1.tgz", - "integrity": "sha512-5xGWRa90Sp2+x1dQtNpIpeOQpTDBs9cZDmA/qs2vDNN2i18PdapqY7CmBeyLlMuGqXJRIOPaCaVZTLNQRWUH/A==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, "license": "MIT", "bin": { diff --git a/package.json b/package.json index ff60ce06..20249837 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ }, "devDependencies": { "@types/node": "^22", - "prettier": "3.6.1", + "prettier": "3.6.2", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" From 157871c9826116bd06f00a91654af098a0794018 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 28 Jun 2025 08:28:31 +0000 Subject: [PATCH 119/415] chore(deps): update dependency @types/node to v22.15.34 (#153) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1b46647a..b66c7135 100644 --- a/package-lock.json +++ b/package-lock.json @@ -528,9 +528,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.33.tgz", - "integrity": "sha512-wzoocdnnpSxZ+6CjW4ADCK1jVmd1S/J3ArNWfn8FDDQtRm8dkDg7TA+mvek2wNrfCgwuZxqEOiB9B1XCJ6+dbw==", + "version": "22.15.34", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.34.tgz", + "integrity": "sha512-8Y6E5WUupYy1Dd0II32BsWAx5MWdcnRd8L84Oys3veg1YrYtNtzgO4CFhiBg6MDSjk7Ay36HYOnU7/tuOzIzcw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From a038bdd1a583b094de764a16302fcf8dd4f26d19 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 1 Jul 2025 17:39:36 +0000 Subject: [PATCH 120/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.13.3 (#154) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b66c7135..f1ab574a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.13.2.tgz", - "integrity": "sha512-Vx7qOcmoKkR3qhaQ9qf3GxiVKCEu+zfJddHv6x3dY/9P6+uIwJnmuAur5aB+4FDXf41rRrDnOEGkviX5oYZ67w==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.13.3.tgz", + "integrity": "sha512-bGwA78F/U5G2jrnsdRkPY3IwIwZeWUEfb5o764b79lb0rJmMT76TLwKhdNZOWakOQtedYefwIR4emisEMvInKA==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", @@ -478,6 +478,7 @@ "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", "express": "^5.0.1", "express-rate-limit": "^7.5.0", "pkce-challenge": "^5.0.0", From 861f99b2cac2d8f13ecc991826383430dab2c022 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 2 Jul 2025 00:08:07 +0000 Subject: [PATCH 121/415] chore(deps): update dependency @types/node to v22.16.0 (#155) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f1ab574a..9f623c28 100644 --- a/package-lock.json +++ b/package-lock.json @@ -529,9 +529,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.34", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.34.tgz", - "integrity": "sha512-8Y6E5WUupYy1Dd0II32BsWAx5MWdcnRd8L84Oys3veg1YrYtNtzgO4CFhiBg6MDSjk7Ay36HYOnU7/tuOzIzcw==", + "version": "22.16.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.0.tgz", + "integrity": "sha512-B2egV9wALML1JCpv3VQoQ+yesQKAmNMBIAY7OteVrikcOcAkWm+dGL6qpeCktPjAv6N1JLnhbNiqS35UpFyBsQ==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 63bf1680d2cb38f5d2378bbec5b3d878522c6694 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 2 Jul 2025 21:04:08 +0000 Subject: [PATCH 122/415] fix(deps): update dependency zod to v3.25.69 (#156) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9f623c28..17aa3b69 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2321,9 +2321,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.67", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", - "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==", + "version": "3.25.69", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.69.tgz", + "integrity": "sha512-cjUx+boz8dfYGssYKLGNTF5VUF6NETpcZCDTN3knhUUXQTAAvErzRhV3pgeCZm2YsL4HOwtEHPonlsshPu2I0A==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From c43d5f1e4ff7c66b37ba195705631886194d2001 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 3 Jul 2025 02:56:23 +0000 Subject: [PATCH 123/415] fix(deps): update dependency zod to v3.25.70 (#157) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 17aa3b69..8f5b64b7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2321,9 +2321,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.69", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.69.tgz", - "integrity": "sha512-cjUx+boz8dfYGssYKLGNTF5VUF6NETpcZCDTN3knhUUXQTAAvErzRhV3pgeCZm2YsL4HOwtEHPonlsshPu2I0A==", + "version": "3.25.70", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.70.tgz", + "integrity": "sha512-2WWzL2X2GpPU6as2xK1HFb6U5BZdJMdpB5Qtlan4a1KLYcZ6Gvox+mqZpxOd66sfe5AP3pEWpd2BC3f0yLH/nQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From e098e955dc1859a9af00f4067f4d1d08da09c8f4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 3 Jul 2025 08:50:11 +0000 Subject: [PATCH 124/415] fix(deps): update dependency zod to v3.25.71 (#158) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8f5b64b7..374d4882 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2321,9 +2321,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.70", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.70.tgz", - "integrity": "sha512-2WWzL2X2GpPU6as2xK1HFb6U5BZdJMdpB5Qtlan4a1KLYcZ6Gvox+mqZpxOd66sfe5AP3pEWpd2BC3f0yLH/nQ==", + "version": "3.25.71", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.71.tgz", + "integrity": "sha512-BsBc/NPk7h8WsUWYWYL+BajcJPY8YhjelaWu2NMLuzgraKAz4Lb4/6K11g9jpuDetjMiqhZ6YaexFLOC0Ogi3Q==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 5e621c7c989f7aea2fefc301f81f88c406d247e8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 3 Jul 2025 17:28:20 +0000 Subject: [PATCH 125/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.14.0 (#160) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 374d4882..36232013 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.13.3.tgz", - "integrity": "sha512-bGwA78F/U5G2jrnsdRkPY3IwIwZeWUEfb5o764b79lb0rJmMT76TLwKhdNZOWakOQtedYefwIR4emisEMvInKA==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.14.0.tgz", + "integrity": "sha512-f43SYQVRPGQcYDQMiL7T2qND4v9xCkBpunIVPhNT/K2vUe+R3kYw2FyOIlbPxZJIYnhBNjeaHFeKv/cOZZErNg==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", From 0f750b15174dd0e15c7dfeae267116666ec385ef Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Fri, 4 Jul 2025 10:50:57 +0900 Subject: [PATCH 126/415] Improve CONTRIBUTING.md (#159) --- CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1c5d9fc5..7e0a2b13 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -30,6 +30,7 @@ The project structure is as follows: To add a new Tool, you can create a new file under `src/tools/` and implement the Tool in that file. The Tool should extend `AbstractTool` and should be registered in `src/index.ts`. +Please remember to add the description of the tool to both README.md and README.ja.md. ### Run all CI tasks in your local From 3d6b3c5b4c16ae2abec193618c90b72e54b7287c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 4 Jul 2025 01:53:02 +0000 Subject: [PATCH 127/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.15.0 (#161) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 36232013..f92203e9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.14.0.tgz", - "integrity": "sha512-f43SYQVRPGQcYDQMiL7T2qND4v9xCkBpunIVPhNT/K2vUe+R3kYw2FyOIlbPxZJIYnhBNjeaHFeKv/cOZZErNg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.15.0.tgz", + "integrity": "sha512-67hnl/ROKdb03Vuu0YOr+baKTvf1/5YBHBm9KnZdjdAh8hjt4FRCPD5ucwxGB237sBpzlqQsLy1PFu7z/ekZ9Q==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", From 95047fb6bbb27e9579bd0f7b091c8a109f714116 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 4 Jul 2025 05:34:20 +0000 Subject: [PATCH 128/415] fix(deps): update dependency zod to v3.25.72 (#162) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f92203e9..7e71ec97 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2321,9 +2321,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.71", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.71.tgz", - "integrity": "sha512-BsBc/NPk7h8WsUWYWYL+BajcJPY8YhjelaWu2NMLuzgraKAz4Lb4/6K11g9jpuDetjMiqhZ6YaexFLOC0Ogi3Q==", + "version": "3.25.72", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.72.tgz", + "integrity": "sha512-Cl+fe4dNL4XumOBNBsr0lHfA80PQiZXHI4xEMTEr8gt6aGz92t3lBA32e71j9+JeF/VAYvdfBnuwJs+BMx/BrA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From c5b28ea86966fb76881f2116a4bffc4230cb9c85 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 4 Jul 2025 11:55:53 +0000 Subject: [PATCH 129/415] fix(deps): update dependency zod to v3.25.73 (#163) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7e71ec97..f3ff25eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2321,9 +2321,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.72", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.72.tgz", - "integrity": "sha512-Cl+fe4dNL4XumOBNBsr0lHfA80PQiZXHI4xEMTEr8gt6aGz92t3lBA32e71j9+JeF/VAYvdfBnuwJs+BMx/BrA==", + "version": "3.25.73", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.73.tgz", + "integrity": "sha512-fuIKbQAWQl22Ba5d1quwEETQYjqnpKVyZIWAhbnnHgnDd3a+z4YgEfkI5SZ2xMELnLAXo/Flk2uXgysZNf0uaA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 5d4ccfb9b5b9d7781da423ba6c6357f8b905a860 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 4 Jul 2025 22:40:44 +0000 Subject: [PATCH 130/415] fix(deps): update dependency zod to v3.25.74 (#164) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f3ff25eb..dd121c91 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2321,9 +2321,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.73", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.73.tgz", - "integrity": "sha512-fuIKbQAWQl22Ba5d1quwEETQYjqnpKVyZIWAhbnnHgnDd3a+z4YgEfkI5SZ2xMELnLAXo/Flk2uXgysZNf0uaA==", + "version": "3.25.74", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.74.tgz", + "integrity": "sha512-J8poo92VuhKjNknViHRAIuuN6li/EwFbAC8OedzI8uxpEPGiXHGQu9wemIAioIpqgfB4SySaJhdk0mH5Y4ICBg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 8155e00abe88fca10e7dbfe58290c8e8c147b3ee Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 7 Jul 2025 13:39:25 +0000 Subject: [PATCH 131/415] fix(deps): update dependency zod to v3.25.75 (#165) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index dd121c91..3ae9f8c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2321,9 +2321,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.74", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.74.tgz", - "integrity": "sha512-J8poo92VuhKjNknViHRAIuuN6li/EwFbAC8OedzI8uxpEPGiXHGQu9wemIAioIpqgfB4SySaJhdk0mH5Y4ICBg==", + "version": "3.25.75", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.75.tgz", + "integrity": "sha512-OhpzAmVzabPOL6C3A3gpAifqr9MqihV/Msx3gor2b2kviCgcb+HM9SEOpMWwwNp9MRunWnhtAKUoo0AHhjyPPg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 312cf742cceb39584903f20fd5bbb9c9a23f798a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 8 Jul 2025 21:00:18 +0900 Subject: [PATCH 132/415] fix(deps): update dependency zod to v3.25.76 (#166) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3ae9f8c1..3346598f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2321,9 +2321,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.75", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.75.tgz", - "integrity": "sha512-OhpzAmVzabPOL6C3A3gpAifqr9MqihV/Msx3gor2b2kviCgcb+HM9SEOpMWwwNp9MRunWnhtAKUoo0AHhjyPPg==", + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 6503cedd1aae0c5705e437a0cdd28772d4dc0de0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 8 Jul 2025 17:16:06 +0000 Subject: [PATCH 133/415] chore(deps): update dependency @types/node to v22.16.1 (#167) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3346598f..796fae9e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -529,9 +529,9 @@ } }, "node_modules/@types/node": { - "version": "22.16.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.0.tgz", - "integrity": "sha512-B2egV9wALML1JCpv3VQoQ+yesQKAmNMBIAY7OteVrikcOcAkWm+dGL6qpeCktPjAv6N1JLnhbNiqS35UpFyBsQ==", + "version": "22.16.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.1.tgz", + "integrity": "sha512-oaNE4MzsA6uO7HcsjUvqzz19lYIRsV6I1Dc6iOvgwYYDiOeF7/9b2E/PE0UW2ccwpgWPVUedjltYXQXVKFd4EA==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 8a60d0e0a0df36a576902ebbaeefb85fc6552ddc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 9 Jul 2025 04:09:51 +0000 Subject: [PATCH 134/415] chore(deps): update dependency @types/node to v22.16.2 (#168) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 796fae9e..0c363a62 100644 --- a/package-lock.json +++ b/package-lock.json @@ -529,9 +529,9 @@ } }, "node_modules/@types/node": { - "version": "22.16.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.1.tgz", - "integrity": "sha512-oaNE4MzsA6uO7HcsjUvqzz19lYIRsV6I1Dc6iOvgwYYDiOeF7/9b2E/PE0UW2ccwpgWPVUedjltYXQXVKFd4EA==", + "version": "22.16.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.2.tgz", + "integrity": "sha512-Cdqa/eJTvt4fC4wmq1Mcc0CPUjp/Qy2FGqLza3z3pKymsI969TcZ54diNJv8UYUgeWxyb8FSbCkhdR6WqmUFhA==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 369e724708f9386742367a7f1d10c64d5e98490f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 9 Jul 2025 12:32:34 +0000 Subject: [PATCH 135/415] chore(deps): update pnpm to v10.13.1 (#169) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 20249837..f27671b2 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.12.4+sha512.5ea8b0deed94ed68691c9bad4c955492705c5eeb8a87ef86bc62c74a26b037b08ff9570f108b2e4dbd1dd1a9186fea925e527f141c648e85af45631074680184" + "packageManager": "pnpm@10.13.1+sha512.37ebf1a5c7a30d5fabe0c5df44ee8da4c965ca0c5af3dbab28c3a1681b70a256218d05c81c9c0dcf767ef6b8551eb5b960042b9ed4300c59242336377e01cfad" } From 39c36d747a63454ec7da0fe4baca40af6c83377d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 9 Jul 2025 19:56:48 +0000 Subject: [PATCH 136/415] fix(deps): update dependency zod to v4 (#170) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 17 +++++++++++++---- package.json | 2 +- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0c363a62..8e063505 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@line/bot-sdk": "^10.0.0", "@modelcontextprotocol/sdk": "^1.8.0", - "zod": "^3.24.2" + "zod": "^4.0.0" }, "bin": { "line-bot-mcp-server": "dist/index.js" @@ -490,6 +490,15 @@ "node": ">=18" } }, + "node_modules/@modelcontextprotocol/sdk/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2321,9 +2330,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.0.tgz", + "integrity": "sha512-9diLdTPc/L7w/5jI4C3gHYNiGHDV9IZYxo1e5LSD8cabi65WVTWWb+g2BGPEpUUCOxR4D+6O5B0AzyMdUAXwrw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/package.json b/package.json index f27671b2..8582f9a5 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "dependencies": { "@line/bot-sdk": "^10.0.0", "@modelcontextprotocol/sdk": "^1.8.0", - "zod": "^3.24.2" + "zod": "^4.0.0" }, "devDependencies": { "@types/node": "^22", From e6fe8b6d77672caabd8e25e9c2fc714e608d8aff Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 10 Jul 2025 02:13:38 +0000 Subject: [PATCH 137/415] fix(deps): update dependency zod to v4.0.2 (#171) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8e063505..76e08067 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2330,9 +2330,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.0.tgz", - "integrity": "sha512-9diLdTPc/L7w/5jI4C3gHYNiGHDV9IZYxo1e5LSD8cabi65WVTWWb+g2BGPEpUUCOxR4D+6O5B0AzyMdUAXwrw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.2.tgz", + "integrity": "sha512-X2niJNY54MGam4L6Kj0AxeedeDIi/E5QFW0On2faSX5J4/pfLk1tW+cRMIMoojnCavn/u5W/kX17e1CSGnKMxA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From d65e58c763f9565a41de931aa039485178253834 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 10 Jul 2025 20:13:34 +0000 Subject: [PATCH 138/415] chore(deps): update dependency @types/node to v22.16.3 (#172) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 76e08067..9243a4ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -538,9 +538,9 @@ } }, "node_modules/@types/node": { - "version": "22.16.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.2.tgz", - "integrity": "sha512-Cdqa/eJTvt4fC4wmq1Mcc0CPUjp/Qy2FGqLza3z3pKymsI969TcZ54diNJv8UYUgeWxyb8FSbCkhdR6WqmUFhA==", + "version": "22.16.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.3.tgz", + "integrity": "sha512-sr4Xz74KOUeYadexo1r8imhRtlVXcs+j3XK3TcoiYk7B1t3YRVJgtaD3cwX73NYb71pmVuMLNRhJ9XKdoDB74g==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 377bcbfbcf7a127637c5036be50747a967112b5e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 10 Jul 2025 20:13:39 +0000 Subject: [PATCH 139/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.15.1 (#173) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9243a4ef..e16ed815 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.15.0.tgz", - "integrity": "sha512-67hnl/ROKdb03Vuu0YOr+baKTvf1/5YBHBm9KnZdjdAh8hjt4FRCPD5ucwxGB237sBpzlqQsLy1PFu7z/ekZ9Q==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.15.1.tgz", + "integrity": "sha512-W/XlN9c528yYn+9MQkVjxiTPgPxoxt+oczfjHBDsJx0+59+O7B75Zhsp0B16Xbwbz8ANISDajh6+V7nIcPMc5w==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", From 0312b98e22be0d0cfe66eb391682594eaffe84f8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 10 Jul 2025 22:53:41 +0000 Subject: [PATCH 140/415] fix(deps): update dependency zod to v4.0.5 (#174) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index e16ed815..a55cc4e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2330,9 +2330,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.2.tgz", - "integrity": "sha512-X2niJNY54MGam4L6Kj0AxeedeDIi/E5QFW0On2faSX5J4/pfLk1tW+cRMIMoojnCavn/u5W/kX17e1CSGnKMxA==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.5.tgz", + "integrity": "sha512-/5UuuRPStvHXu7RS+gmvRf4NXrNxpSllGwDnCBcJZtQsKrviYXm54yDGV2KYNLT5kq0lHGcl7lqWJLgSaG+tgA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 3301e4ab7b50885f98ab9849ba15903b4089d9d2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 15 Jul 2025 07:59:40 +0000 Subject: [PATCH 141/415] chore(deps): update dependency @types/node to v22.16.4 (#176) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a55cc4e7..fa5a5f4a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -538,9 +538,9 @@ } }, "node_modules/@types/node": { - "version": "22.16.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.3.tgz", - "integrity": "sha512-sr4Xz74KOUeYadexo1r8imhRtlVXcs+j3XK3TcoiYk7B1t3YRVJgtaD3cwX73NYb71pmVuMLNRhJ9XKdoDB74g==", + "version": "22.16.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.4.tgz", + "integrity": "sha512-PYRhNtZdm2wH/NT2k/oAJ6/f2VD2N2Dag0lGlx2vWgMSJXGNmlce5MiTQzoWAiIJtso30mjnfQCOKVH+kAQC/g==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 21dc48506a8b8731a40b61b594d3fbd499025c5b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 17 Jul 2025 22:05:53 +0000 Subject: [PATCH 142/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.16.0 (#180) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index fa5a5f4a..28766133 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.15.1.tgz", - "integrity": "sha512-W/XlN9c528yYn+9MQkVjxiTPgPxoxt+oczfjHBDsJx0+59+O7B75Zhsp0B16Xbwbz8ANISDajh6+V7nIcPMc5w==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.16.0.tgz", + "integrity": "sha512-8ofX7gkZcLj9H9rSd50mCgm3SSF8C7XoclxJuLoV0Cz3rEQ1tv9MZRYYvJtm9n1BiEQQMzSmE/w2AEkNacLYfg==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", From 17d1269128df6ed1e9a341e230f21e7caefefc80 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 19 Jul 2025 05:52:31 +0000 Subject: [PATCH 143/415] chore(deps): update dependency @types/node to v22.16.5 (#181) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 28766133..7dcaafae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -538,9 +538,9 @@ } }, "node_modules/@types/node": { - "version": "22.16.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.4.tgz", - "integrity": "sha512-PYRhNtZdm2wH/NT2k/oAJ6/f2VD2N2Dag0lGlx2vWgMSJXGNmlce5MiTQzoWAiIJtso30mjnfQCOKVH+kAQC/g==", + "version": "22.16.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.5.tgz", + "integrity": "sha512-bJFoMATwIGaxxx8VJPeM8TonI8t579oRvgAuT8zFugJsJZgzqv0Fu8Mhp68iecjzG7cnN3mO2dJQ5uUM2EFrgQ==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 1148b4288a29500a3087b5ea2d506b908b221f7c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 23 Jul 2025 23:10:36 +0000 Subject: [PATCH 144/415] fix(deps): update dependency zod to v4.0.7 (#182) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7dcaafae..81eeea90 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2330,9 +2330,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.5.tgz", - "integrity": "sha512-/5UuuRPStvHXu7RS+gmvRf4NXrNxpSllGwDnCBcJZtQsKrviYXm54yDGV2KYNLT5kq0lHGcl7lqWJLgSaG+tgA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.7.tgz", + "integrity": "sha512-AKvYUuvqmyRf21eNxjuO++WPrQHhWg8i/4POzBLL//qVhcxA6gOptSDxXKM2S+uh8FtPV3MU/QZKOxqwsRV5kg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From dc688b5ff8b613f5166d188163d542b5d831880e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 24 Jul 2025 03:56:32 +0000 Subject: [PATCH 145/415] fix(deps): update dependency zod to v4.0.8 (#183) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 81eeea90..57131ebf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2330,9 +2330,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.7.tgz", - "integrity": "sha512-AKvYUuvqmyRf21eNxjuO++WPrQHhWg8i/4POzBLL//qVhcxA6gOptSDxXKM2S+uh8FtPV3MU/QZKOxqwsRV5kg==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.8.tgz", + "integrity": "sha512-+MSh9cZU9r3QKlHqrgHMTSr3QwMGv4PLfR0M4N/sYWV5/x67HgXEhIGObdBkpnX8G78pTgWnIrBL2lZcNJOtfg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From f088922628a85caf036eb95274c7cc35145ed12a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 24 Jul 2025 19:56:43 +0000 Subject: [PATCH 146/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.17.0 (#184) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 57131ebf..812b14f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.16.0.tgz", - "integrity": "sha512-8ofX7gkZcLj9H9rSd50mCgm3SSF8C7XoclxJuLoV0Cz3rEQ1tv9MZRYYvJtm9n1BiEQQMzSmE/w2AEkNacLYfg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.0.tgz", + "integrity": "sha512-qFfbWFA7r1Sd8D697L7GkTd36yqDuTkvz0KfOGkgXR8EUhQn3/EDNIR/qUdQNMT8IjmasBvHWuXeisxtXTQT2g==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", From d4776a3db4a8ade126b2b4bcedaf2e681ff62443 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 24 Jul 2025 22:59:30 +0000 Subject: [PATCH 147/415] fix(deps): update dependency zod to v4.0.9 (#185) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 812b14f5..d8c2bf7a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2330,9 +2330,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.8.tgz", - "integrity": "sha512-+MSh9cZU9r3QKlHqrgHMTSr3QwMGv4PLfR0M4N/sYWV5/x67HgXEhIGObdBkpnX8G78pTgWnIrBL2lZcNJOtfg==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.9.tgz", + "integrity": "sha512-PAqUh1FW4Irxcs6/sWfnhJGV/8F0eLNd1FryydBfbA9Qvz1LaJk0TDrSC+hIKlArS/xVISuX/yjlS1bzg2D3Zw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From dd3fafb2db2a71dd4714a17a08a7eedf396cb96b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 25 Jul 2025 04:24:26 +0000 Subject: [PATCH 148/415] fix(deps): update dependency zod to v4.0.10 (#186) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index d8c2bf7a..82625f52 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2330,9 +2330,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.9.tgz", - "integrity": "sha512-PAqUh1FW4Irxcs6/sWfnhJGV/8F0eLNd1FryydBfbA9Qvz1LaJk0TDrSC+hIKlArS/xVISuX/yjlS1bzg2D3Zw==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.10.tgz", + "integrity": "sha512-3vB+UU3/VmLL2lvwcY/4RV2i9z/YU0DTV/tDuYjrwmx5WeJ7hwy+rGEEx8glHp6Yxw7ibRbKSaIFBgReRPe5KA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From d2cee04c72ce1636d84e7526c88e328035957d19 Mon Sep 17 00:00:00 2001 From: Felix Rieseberg Date: Mon, 28 Jul 2025 19:20:40 -0700 Subject: [PATCH 149/415] feat: Add DXT manifest.json (Hi from Anthropic!) (#175) * feat: Add DXT manifest.json * Update manifest.json Co-authored-by: Yuta Euchi <63095160+eucyt@users.noreply.github.com> * Update manifest.json Co-authored-by: Yuta Euchi <63095160+eucyt@users.noreply.github.com> * Update manifest.json Co-authored-by: Yuta Euchi <63095160+eucyt@users.noreply.github.com> * Update manifest.json Co-authored-by: Yuta Euchi <63095160+eucyt@users.noreply.github.com> * Update manifest.json Co-authored-by: Yuta Euchi <63095160+eucyt@users.noreply.github.com> * chore: Re-upload icon --------- Co-authored-by: Yuta Euchi <63095160+eucyt@users.noreply.github.com> --- assets/icon.png | Bin 0 -> 22239 bytes manifest.json | 99 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 assets/icon.png create mode 100644 manifest.json diff --git a/assets/icon.png b/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a076ba98947ac34c1d17c8c1d7775136e976afb5 GIT binary patch literal 22239 zcmYhjc|4Tw_dkA(DMJ`#iON_iAr(r=Iul_cOUV*KTC~{L5Jr?rMV2<(D5WgfDY6u$ zls#nMvWzu*mf?5qUhmK2`}?CuuI*gsI@h_*b*|?*_uMhm*XG)=bpt|(>lpRuNrdnW z_&3bP3N_EqmbSrv?9SBFZU}MkVE=Fpo&GBbiK1gikDR&|JJxA%&$uN{W+{#$a9QWm zO^c*zKdSM=CM}jcG5q$#N3vUX;>}-m1~ne2Jen;r@h3t$+V}kT2lk!PpT%EhPYVtHlsVjtwOuW4}S+Jjo>NeOFrcMs6_tFtdihSw#%||9m z9Je$3Y>{Aq|}wpHE|6Zc$B{%uS1C1nzhD6eV@H;naPI=|6NLjqZp*q`5 z4c)I(Mv{tuZ3zz7w=NtQ>u#|F2D}to&zvdXR^GNNDaTRTq`K7UyF5bgG9*LRWK3FG z*~H?ON9Lael(suLHVGkgXrD>TT41?>T)xyygt> znq|BCoP8W2+5I}br=!F5)7za^gC?rpM|dJ67&gFv)~{Ypo9d+43nU{piT@$&NjMtS5m<}XW+4QW3vU7>co!q&K6HAxE*fwj$d_1CZB1B5M?lU zZu76zJ{ zWT$>v8KJslY^>CuEgKsS$Y#}fKUWsi|5qP2Fv0h?)N8h3SCT|pk&kfi%AJ2~*htp6 z6TTPsJHKLlcOauT&&-C8o?doZ?~ahoZQJ~&c3uvW#sJR+aaFl_6#_zEe#bdx6dKP3 zn;kQtdd;mk;7B0xAf`!E<2i9voKG!m)~(aV2Eoy@w>%^YMpa?VGrrW3(g~A=22p7S z7vpXG+PjpLbLlEzW+*APEGyRSro~&-eekfYQ&A&B#>UmT6V-Tx6wM|cm9Bki-6}IM zaW3EXa4ZeBDrxubfB?0uy2Y#m@>V7dl@-p1!7>?5x_|E$h%2k-ZK$MpgB-#Y2PV%w z@9?XLDga9B4Oi86nKWou%!175h9_26^%}diHK-zij^4|)g}z)Ypw$=OZ~NKpaxp~r z{c^b89(P;Wjtoo+bej{3EAtiV+5>;W*%=!0Ak;U?qK+v~6xJh@nV$e%{RjVYhPf_? z)dc{9xv^?jh+Cdok7Go31Zw>sA`VuO{_xY!P0D;l-JGe&dgdVI8ADe8v zi*sRtBV4BE@iHsWmC4(%T*oZivJnKAStuyEaIW%Ve^il^;X=@SP?{B-9m)ayuEU4d z&Q$s{gJ-#h9rx1hVU0G-c+HrEqUE?9#2;yGvVx zXO-E8p>R&@b%y%;yu$9?;g(lf?Q$5~`x@wE25 zL$3=QIr1GTYkB`@q;<{PFSmQ%HP4GE*-kH*I0}T$OPc&F^@PLWYN2n{Zt@?&>$4_5 zEe`0W9TfAkO`JJ^u_mg#+|KvYVpBsAj%mgs1G1sr52df>91<$%(^#rdA0l82qRht+ z?y#R5-NXTU#c=UVOQS>3a6#PxKDdr%+N zM{N0sYwN99u;9F`pK%B|hY0R`>|pXETcWt=EVKPzUFNNfpL zWIKU|BER9~|9DNhx~p<^Hch<{V+kD+En1zm_h~4)u%Xm=5O%$c^+IDpe51~P%}Wof zR~e^+XC1w7FzaB>VeKCWedR)SJih*ZxkBA8z^mvW5D~1f#-tY-6=p+}X0+<{!%s(#xkt^uFnR3OtmERx_Ri`dpl$QyQEJLk z+x?)K?{7#=pyvUinA*v1|MsX@q9Ee!4^Ro3+_AS~s-L6X8#`cxV94)R#S;7tdTt+$Ht>-tu>_EmSlyZtDF{ zVa5+MI+QwE_76;S?qYU(`a(ZMm&)>5vW?Ux-;ACW_$N@Fx@)bzFQggsM`21)x%(4w zU9&nqCtplpWQ(=juAKX)zrkl+VEE2g^FyJGy8chvPs)obcKg>e0D@mL5&UN z-1nSw>*UWxqPkn|D()vf6wHDo&O_i zv!h+X@09fay0%hXC+o1&Z1-h1w$huSO|yv$uflA_JO7m({xHv$R?2YA2#mgczUKL) zbQg5mITnLm!dsfZZ=2UyqHe|1NA!dN*USYjl6P!*j*2RM%SrLxy|IWatD@(HKg@M?<8yXw9r&cc?GNeut z?`>=IcZRy~EVf|-&gp5wnPUpFAU;$gYnbQV9n@c_`?qvl4YMN1@t^jGGKE5qm^38( zQ;nW|ei^U0c^aY%;V6`KE=}l8N@H4JYu0gA0V^K8J$P3t z0eAYgw!-TgVrSmKt&Hry-r8KKP#E#{C+G-jcG3`^+{VSw=>$30Ftu|2SAWP6rkJ3Y zJdB<#uK`Pq?0*&Nb}8^Q%)P)E|H9>kF~NIbVmXctT7PA}0XtTh(%4e;KLSeyZzC4w zZq0JtzlSm9cupLfjwh?MUB};Gfs4^uxF}`E4^^zL-Ru9%r6oywV5|GssbHNU@qY!b z{0PjfXU}bgj+~nIpFL~u`IY`pMP*eCIz~+kt*HS&?m#mw@x5J5egw7^{cg3f#TTh9 zVOXKOrE}!E@q+oWe_9Sj)BkHIxY+f-{&^R#E*Ae!VuB?H7j&%;CUvLY!8jKDwWLva z(hK|Rjq!3r%Lc}BEVzzH@F`b%(x^7ZbNy*+OzVyt8z1aH3Qc9hX@|HS^Zt)bAFqMQ z>eQ7-x4z)Y!u1^D(}X*Hd=uMdACa1VJR+s8YE4bPD!A@(KKU%8F(CDkTJeXGQsn@@ zEc4Z|C5N@K&ZUGi+ge9)v`2+kg*&c@b=Dn5??U_{4>aLpc8#v}WI6acGDE`jYfc$; z2CSA1rZ<(OOL>KjpRNqZ$!D8Ra1UCU9%@PP%GlerVICMJEAsISSp_}a*ns<5SrzSa zHa0IUk3}R<^@eZoyx=7}9aY5cV?Ur6`k5Im#LR=IOuNe$;rf;nNI7} zmSy1!Gn@Kqy);yie1(n@s!lEc`@34!|3DOXzPMnTX~u%zfStZGfqtZ5;7|LjqL?va zndI?*+o|N1dS3O@Lw?tj0v}aUgr6 zn%zbclHQB?w|OHE!dLSnylC@x`OBH^4j;iNWdRj zpi}s3vkPkjl|v~;rZr6;&&ViKq_59_IX+PQ(FLye4SB9SMf*L!YN${w6lwcD`9yu* zrbaN#^|6?(u92g7`!EMwf}Do8{gx5VoDz(SYY6BvIXhxg=>X0@c##v!yIy!tMgM?-^n@*EmY5?Kw;f z9*>D-=wI{y;dz;2?PJt;&Z0m;ru2e{C(XUd!e@5=SU~#~CCb+4v8w8eQz5I_6N&`E z{I0V1Y~xkExCR%H)?*(rW_O$b?V^+&;Tc^>Sd^r$L@Bp@xuV>8@>J>|CDN9ofNgB; z+Ty+O4)knBPmDyznN$ZxeXjCxTJu0(Mq;e7C#1|$`vc{&OPU!l%>%Q8gzQbyBNA#$ zPChNTFUdrP+>wbEqEgujrJ4toBhJL|RI}6Msrt*2y*MphDnT%sZJ^Ri_|3dS zoXfpH+t^~C#0iVAI$~KJQ(KH=bK6IJyu01IqGXU#?-Mj=>v2X(rL1nn5C+~DmJ2v* zs(nnkPG?iIb&0&wZk4hg|99_GQkcY@lz`{mDxVe;9ejn3(DUNQ9L2X7^@89Fm3-$^ zMObNSn$!f>Kj@HFsbX2Dt;M&$^##Pb(&`7KvL(&KVbN|DuW@O6Q$qVBN@QMeTA2~d zO7&vmyS8yfJ(I*WZ!GVLU*C)a_AyFA2FhwnYA^5XhoL zdG@Mc?6pKF-C9Bb*n7BSn?I3b43;5HA7{0^SW^6s?M{Zv6WSsX{ZF_FS&IfyXmoHUD#(jA!PEtd~nOU8% z_IkoNEPn2#fsAqv#Rb@tEWR^d??$9N?Zb`ra|_F|3rj}CyVC_-8a<~*$(!nM=5z&i zHIrszJ)HQahQKk+Zf{QhyS?hW^6|O4PVYL%GUsSU)S@h`|2851~otd4hx+;t&B;E?>^aOUWF(}i|&z}H%g?SQsRH!j1+4Fie zr^tSPPiyodL9>i?tHbk7r*d>9QfFE=lTL{qGieC?ee_sg$B!(ZNedi_cJ{8+9~Zwn zxFn#*2Yj6zQLSBD(QcXwiQ35`t0YI0f2+Xy9rp%SyR+iTt&h&=o{>|g-UwHdIEjuVbCBimQrAAtol|P>G3uMewj6?9TM@bi627pDP1Eo4~IrZBaA)h$JCYT z*iwg3lH^<6xw&sCN_88>NP^N>&Azt=E^!U1MEN6B!k1mUhRsz8q5{QM9=tt)E<6o^ z4@bv+g?Zi6di+!(k(%TgxQb8D(ETWTqMs+?V6= zhBy2yin!yweEx9Wdk{|K?5u7mdz>=l}rTD-pqTnH5*et4`a^!ulGv+kBj@`1SOqPvN zM)4UKmpe{CZ7IUL7cg$Nmx+Q_IROsS!{MTOZ}j=Jm(9i)lB&&%=dn)y3vMR0I2-;G ztHLc`YnC%iz9*bE#XZF458D`md=rM1gZay9{9*5lKj%P=BLXi^C#{7koeQ#`GAWbRF6l~UQ2 zVE3Lw^)do}ZuMjWx~FA%wV%+Vudd{*yKdInyO0~5+tku78K7WDG&@EmT#*yqH}BR2 zKvX|(OQ+B3_oPu7=g4qk$JUL>YeMKthQLp*DEw|Q((RMV_&!8G&02+1jUlmL$`CZ` zzlc!7rk25{dzDij%Ty~%*PS$JNWAI8+X1gtYAvjBSE)wm>0=>}7<$eMqD0id&)tw* za6ND2!`hX+mDYoH8_dCZ$^8o6B|J3G_toXADiDg=o^zRNQbQiyPCsKSV**&r^rn{a z?v=$b`+C;B+mkdnDsFaezKX(=Eux)oDCL4G+{_^;q2DrZ`=J;VPF#-_qjtO0f0gD z$1Fom_4qLuo9R5zdvy4|A2?y2KzY~fJJgOrT{GtZxO6PaYAMvVRk0vTL z{Jw(Rx7^_v2f^uYL7Dq*DE-!^h8!1Mhexv-h9Mu=7~weJLNJ(4T-?|ohJk>xoG#=n zC)Y1o!4>R`@XUANHPtEud^n^rm8vSUVI=&p7>S2ppzd9`zQZ&3yYTF|y}aQF2{2ua z8(_5Ikw<%YdpUGbJ3jT*p`uzESd{Q5?`&!&{q-pXq&3)lgGMKQ+teT?=8~AETbIB4 z2p(xkPbk=GlBl8KME0jK{yNa{%OLEW=fl7X;E-+kF$>bWy&MK7K**OG483lLz5qB* zeqiwoX<>Ufh-#}R_<&VE0Py?Fyq(@k_f}Vum)sXj<_CU`{?Z^llStCg7)fsy&T86< z!XLboxwC$qMa~hoVE0Q@l{XJmb#UmU?bSn<9)%ORUi+5V=dq%lyYnx`#3&BVQt-j< zf(Ifya5Nzy*c;!?muTU{bMBYgt*|=#AJr-s!iDZVg*qPQ&`gmX$q|WelcT;BcE1Ys z_o04&Y5PtuBubuB4?5y1dq`dBUf>ZIM5*D72%6f|aJGW;E*|M@4Ep^*?ONIU;7z;@ zXM=6)bT}<>Nb;k>3#B?yML{VslGaYvw2GU@MU;@?T{!iVPB8o-3_t3h!c9Vwh8^8M z^iuhPPe9eW2a_r%Nu6))IFMxIQ)O8tbtTTzvzJv%Q~NVnkY?z6aCsgT=$t8IMlXtB7o@7J{nsd&c={k zSG?Z~(GET9R=sL*NRS8m*{nVsnoY!`^rm()Nia5?h`&4D3PiH=HT!Y)BtQXDz9FmZjLaigGf*X``R7$P_NVvKZ1AIgUL>rtkE zRoB`6V0W`*$(Fm>d*R(LGm(HvdsC1HPs3T#t3w960dyNS;_SS?EY-6LJwuj0Wq-T5 z9??ZyL@s>9Hv{SA!|*Kha4+K7i)cqc6{vpJ>pQ>}EKC)u0{nE#)^SjZz%!vi4e`D9 zF<%TJjU1=Zd&P~tYCumTcxLkbZFt5T&%WBWop2R4nak}!C1)ref@<$dpT(HW6R*P7 z@!tY4^j=M*G7;;w5vzCx@M1GZ{`nwdb_SrN7kM=F-~k?|(LVoEdZcU|h>P8NqB8kr zA1X8ZU~^lj18g1t1G0NX=3zh>?{vENt#bSYqjtvSVJ1LbvQ}9G=}qqcYHmFS+6jAG zdpy;ZP8sLHx$ohD=t+g2*{Opp>PkNcUxg`dgdpw7CN>3jMs62)t)qJ>fDP)Wy{h!v zk{cJUKk9vj1BJ6LTo6rabj4t}hD{3>Od2mMi^ZAv!lR+x9}toV+kwYMsMemi5_@YJV|_#PluX(7;BBH zMT$D&Nk*}ffGN?hhgm#HqyTX_>N-RxJ($e3QySRRAXQcJZ4161A#>YqlLh}MZECV4 zHaPeDR9uRrRA{*ViFo+|UPL$MXs0*BbQw-8OC&7)xXZVC7E!@ zDV^}7KK7D#>=_jXr{OxWxb2c22DQ?U2UB@P;@&RA>Cn2&0=4_tY>T8YsE^lWnCkQiD`qiD*kUUqBxyf(Q;TAcJqb}4O%m0#R)uiGtlNZdc8a&3`(`iQ|-z@IWQ$S(R1 zQYNleBnSNUV=_6PTKtUE-xO7t+#k(qk~zVrK&`$0$2`08_0g>73+^nHDpuvME%x{% zWVo2#>5%G5jj5NZ@OEmnbM|E1f4C|0`zeqk`?tkb3FK}yWD$!SlXB3hlngpS<}}(G1^}G+!ZWqSu_da1=ihtD`8T#0 z@5s>|x60GadS-Jf!2{j;`9$OJCHy_ z7%{WZXKgmr?E$gQ9D5c_e|r?J|0wM_z9VMUonCDlYGsl2P+BZ*kJMR~ccsGy+~y5xjP%q8Q~XP$fpXAk;HGZ3>L#@_!-a)mNK za~Lrj|6e&;d%Zg?@MyqN%;Va_w<%YFl!Cg_>3Y+3vhP}7D$D{Y@bKEc?UIJtshxZ_ z&hYL?{oVz0IP|POgh%ChP3ui%&atKWX4U&jdM~kjc3Y!5f|#?MPLh?%WHp@%VfpSx zF}qS3dzEADvLUI2OQRp%G6+zrW8Lig^-j3{q3iEiIIT0tB>MUMKjIRwls^L-WVd<* zEHxa{7La_@>+<_3RbtyMf4J=Ka2uE=zm0VZ4&1JKW!s_s+mj;KznnlX1TIYKCRlkU z1@;LFYwN@OHkX9ThBX6x;Ovnu3$hF}F|vj=_CbSe|2K&;vtfgfkDu?RA1a=G;&c?N z?zt>q_7|)DQ7z=Qj(7HTwEKSGb$z)S`Xas5_?TQe__~~x)a{+51lV5rBT-exZ#X~R zMllkjXGPFGgU$qhmzqr>9(VnR7CUQ=-5O2mjb3)dS=xKPqQ)h_>I6zOQz&i|&mJU1|)x-rD?Fh>fvR?-&oo9Kdx; z)tQf1Yc_=Moq0fo%ex^h37<6d6VOL6yq*`4%{mx;arq!kzItCgDDHWN-11W7VX?TR z)5i$Z$E)s0Pz?$UD45PB*Mf3z;!f8`>W>728|j3ho@)?t01@YE_}oGf3PrQGR^3In zwMiX|3nwDZ^NTrG=ko1=FW@N&(uYo$P;k>O0MB5Q;ozU&vXu}nz+_PNafa=eitbFh-&)qT>e)vbOV{xl@VG`hKtlyeS9!~yZE%O{ zY0jWs(+rTmWK0e6MK;(_U~8N4F$GGB=;rI?MwuGLI6moHJJpyUug-B}$UsCMc!-ez z^qV>Oz5INkKDQjs>?sK~rEz<_AI4VJzpL+%&yz$OVXc=kZM>q!m{d&a6G~PV4-(>R zHGM-uPFx24f(HoNqFgdV^;C#iYP^gupQZV;Gayj+A`?#l*PJj}^`X@>H z)@G6YJg4rjvtmc`+CZ8`&#CnUbGFwm$M@WS+Cu@C4;j9OK*%WoU%yRMSMMuMB$H^( zu&Z<%x5mosQ3LDMG4tZRV1iK_6^MKq_?6)QpAMO0{C)yn-ksr02|fj+>R9R%Rv|3V zT3kPD;B|nDGiH+imkF9vnw36!7xU zrL2B#(i?c5h!){DUYPuzV66+RDNZwwRACx(>F~xfv!kucfN`8AjTMraeU>a4>%P`6 zUe&GH23mgX5qk;h-^6492>gBGQso#ASd1tD57GWf1BFXbvnrY14X2O&k^tp=60V>9 zNR6o=L9n^!I&KiqdPRvH)A`1T%wJM0Co#qcCQv_|NFx(;R#dKEEX4>d0qTbeeli(h zzgrTBQs1&XlJxehd#D74p_L$Dv-14-!p$=zZQ-RqOXamD+66-`hcIUwQVDUiB9+oq zBT`#_OJJbKU9!wt?$FDTZ=?`Xc17!sxStN5x2Ua)qoJ%BNdCP4f_>id_+*oBM7jC) zDF5VvkF)jP7=^~cDj%+161oE_-zMS6iQ5WNU2DGiICfpLe9nas!U)nx>WE9)JFrdN$QbyIG#R*}PDt*UMtItAPM5OjKP+ItA*AlmrcJzmy z2wcSHb*04>H-gD85u@b}8xUMyMn_;qxb~1ex_oDK7L+KKUsO5YdIv#W>Dx>Nuc)fQ z#9_-d^!qn&Q2$pN%+z)8Fj4fF+W`YmqiomJXUjSb5=oIC25R57?!${7!4&kLB~#2i zxAFbPhHp2<_oIefFeYGbIVR0DC3xX(|MQzy^bBTfpSb%MB(e}6?LQSU5MUE%uXG61_yhw}Zz|L%D^zxOQXH3F2vc{KX} zxd)tK_^-ON$s(W%r}10)o1WbI@{kuiKQleT*Y7J6tyiwhB;~Nme_`%;-#T{hVPuYJ zcPa)Y#AZ2WSUz)_`{-jcbDn9pOD8Om9nR2>TI24*KN0=buM1lW2D*+GDRM}6NE*uQpe zP1oyc-|oA5Wk0uMU*c7e>@NAE!CiRi_&PWTQG0yi`;Yu=6!|cyB5|J4_#1KNaYEpiRzBX#IS6;w1JV1SCH=}_hjDy+g>PS}*A0qx$2>ifb-t{ik>lky zKzXlpCyCvPs%GlU%)W>OA9SqZae9e6?Sp1((W<*ml!~O7DX73nb=L3#aMDr|)K=1R z*zVn%--o%I;s#o{X)pI>921~&v!DOEPQT*&!n z#3_n{7vmceh@3x8dAWiTA2jO1RmtUD&hC1o7oa4|wh;0gJb|n6Q7lmxx|_Ga<=_2? zTxt@x^ouFx4X*h!nX|NMU}9-bci|Qv1)eu1jkqdaCPQwHWV53~;3W3cIITyJGysoe z(!b{E`ewa1$}izibjhg7t(QFcPm#Z^Z`S-@?X+D>)FB+-$X^ZZlo#B>&OU+5u4Jkd zyszoG>~u>o;;ZgGR#AmUJlMn3n;;2(PmllquWSJ}JTtX_4?a~1!i9uewtxp{+~K9P z#&P z3Sv*uHrFLUAeZBSIY|ms&E@)O1-mOV&G{uB=C(fHiOEW0a1AzwBsetr`j;)(9}@n9 zF8|*1!*I7)Twldzp`ncSTQAsk3}&1GVbJi43)9z^SSZovf7Rcj=P)ooC6-XzA=K$l zR|5aSHN)prz&_j3YfX6X+pX;Pn(uJ0#q2o#5W^?>${Y3V@qHJc&c`L2RbK};C~@^! z(CrY-7nW0MtAWQ2QH@;q!g9 zO;o|(#mKhLwQak~z3qmT-UeqqWUR_Nei-dws+JVYQ1?qe#Q;P04|nA&^6ecKIlp8$ z9aME#wSN#F=n{1tfRQY_B^h!)$$}TC=%l7x7c<#D6VlTNa=%f3?8ya4-B zyL~=G1C0S|esimnt1lnc_Dqmh$zP^@=V46kgPGcGS7+?puKQ2dGeAE!K;&Mi69P+M#-u-C4{*pEG0Y1*frMSosNZ(jCG^spFO+mA?1ibd}T|`eGOE^2g3? zWpy^-dcoUg!Rm3XV?R!23yLoIe9s>`_AtBDQ%C&6J&pgsn?#ipgZt=4N~#RL^wsSO z6e6OtNvLH9aS!k|NOc+5SF)n;;!6q20S@(dlCA-2lmn@ElvQ~4OzvsefR**2+|}nl zfq6!n=0~W>{Hs&b7W(pt@+$3l;8=h!{W210ZeGj?y&q9z~gW4Bki zvmS|Zo77+40SM#N&dq@Tu_!t0OlsT>b^%Rit}Nz_RA?v1?KKBX%R}YidPMCu0EcaF zfM@m7=NsFM;xRv%o5gmhBY3C6OD}*$QXIS(kGjK zt8tcyCTX-_w~ZknwI?|L_-ShH=+L5uyd4g@>n{n}@H<$1IH%V`xAF}TSj5K2{IqyAbbe?Z62zz9%2W~~O>B(pdO_X*SzCua24eTN*l?*Ub%^O?_&=ZB zfNXZ!%ANN-5h|7j2(od-mBMs@dT+^W*66VN*ak3jkeDmH?mSkPY>Ne1Aj%(dFm~y0 z?A})BbjfpyD}?ty?0YFF!1)@~iF($_?IBJW03LqZ|BY$Xc^u+Q65d>Jo}bhVAo=p) zsfWFg{up#^FsKC%iMl6NHvF9`Ltq=FU`8S4z{EHHa(h>tjKg zn@$Wme&M#i7fu{K_4u;i+v6O_rr0(=EdR(aK`~OZR8<$(Lp(A|kaQzY^V0xqn5F$kH~K1b>*-{w7wg^zsaFG6A87uRiEH(@GoxC^Rv5j{Iu5mWIiej}5v@TpCc%U( z$OTcDu>swg{0n$=*LWdOrnq-q`E3Z+uwXShKSwnRI=5nB@EwK=$=0!MmvFS_!x|y* z(ZboIwxx#fP@qW7CYHl1NLIZ*!GEMmF+>o3eWvCvC;|bfJxlojS)t!LB1-o_Q+Hfk zb4Q|fo9gBg%m2a%R+qEBOF=C{SCFW*oHd{d<_k8l5aHo1H-T(iEPp0G1CI?n$Ct{G zy9THDf}DYNk+3|hPHuVrrpVTv1hi9{^|K~LL6Z0kbm7Sy>$lJAHzLu4te=nMK(LNt z`S+s0_`wY*=`;QCrFe+e-4S!m5d6Y|c5a{0PkDyD!dS#UG8i1PA@DLdFM9A zd6jRhke1#0GV)?Ss^;nA?^I(LioBUlehm8rKfX*ZNmUC8SnymewC5Z|R363|kj2XT5wlE$ue9>`{g zZL%PagcY^0qU!e8N_{zsf3W-4p02dN5d&KDp>=c!ASgc2{g~q_3plj8e4+hB`Gqm zW0r_$dc0%n0H^B6XK1Vu@JdvcfWy^~nBuUVc^`Z2))?BDcl&+x+JIDg; z{??;}%x`Q+6z}^q(MLp!o9YtJfL3f0@J3(1zmXoYEK0lp<)>^T@E9n+0&u>*D%!cn z^Rl-VC8QbRh&OAj{4(NK_5r)kw$oc$Mrtin6CGg48_14H?Q{yLwHiU;Ak8+gZktEP zUkWoF5oKnbJ47WPg~rf8nhy1>h>N!_P=`wJf&2kfy{Rrx81gVa|Mo(HWE=^DOdK0y zRvhU<@FB&Io6sB$2^9O}7CR}5NHG1iP3U`B7NyLHaAI1Dg5d;!hs2GD^Yl9R92;5_ zP9;a)jU<#EdhfXIj&1ZiLNMDPljIEu^Gdn%IZGPE-dXD zD2(AlZDMb|S(Ics)sdU2Z--RLu^oi)u@;cqdcl}P`}uiJYS+6; z(NnY&kixWc)}$%j5QRtlvfaDuT|1s62zx=*N=wnsNbqaIQI9xrySMDbjGU-qv0sz* zd-=)VsE*B-j@QG|r9SJ`1FVy(-L=|2GS=K;q=~ zBz)@~2j?g#bIN^G-JNHj#hRoJIbu!HfePz|Y5uW=u5Yc5D13xhIgEE0;QRZom4!BU zdy7O|XvT(NiYsI$vB|AhbIi9LHi+8CQf7YKnE==rUh_^Ox%=9}|($~OnB427thT}USO3~;1xJ`9>&IAAo@SiOdE%op0 zpcGXs_}jN%rU->|KpNov;S*t29%o5(QlB!}9|2B)PjBQH?N0IKmH7+bFn*yO7KOM= zow=Nfq>kuK51OmsM#68$oC9pRoz_bk9X>Xdr7pZCufvS2Q08eU1@xkyr32NQcIV{wbUu%Z;b^I<0XZT_+6Pf z-&sm5`=dG6@Gr=?xW?=zouQu(Wv#?<9*MI0Qd{!vDfTMme2N!*K1`mpylyRz0}a>breAswZR#OHJb=~YQF&$j=&N%4`@7>!@rylqBM{+; z)u0&z8&BWo1gM&{By_l#*$^TG+EYFDm85(i^$3^z`>rx2MS!%E_JMtjQq}jdZ>(Y4 zJelyW0E;pNuJaV-KhdRD^!L_y6M}pYg5;Tukj^?qn-2R7*37eZvq^Y9M@WW-#MVj? z6+=D9k6H?Rh&hU?qWa#-Sj++K<>ieYeN!cJstLB*BJj*<71=#lZYHltyr&9o364&# zSrq+?!I*J}bZCHmyKw3l80)nUZZ2=J^kBk9I%IgEy!NWTqSP@E@0$mXYg$ZGny;eo zoO)-#+YclgS?G{DlAgVwWAfrL6T;vgHl|y-(`Kt)E*5Sl&^`j{oc2B4YJQ^PFWacP za&FADC#@Ht*xW!9%HxnOLV_@cf2j7vcq@%@P|qO1?Fa4u_>F|d?ux?N;@F1gU-)oN-F z@v;##3Pa<4hF*BU%(Os8PfgD%WD1=0zVrmxfMh5fwd%@8RhDX~sfnaz z;Jv)o-Ng+0>KE^g0!T4(M|;w^g8k_aGWYvr!j3x; zUc*I<_VYBv&&&i&f#0-xS!xt zBE{Q{-5Fy}O6D6jX)JP+{mY#X(^#=tBwEx!0J>b>&uY|fmkP4bS1~FNt9E(capU$` z^UE|YgRX;ESM99AEd=i)k8DGAQAtSLdXl|!U97z zrTZZEiB6dXX;Cltt~=km5vI4*lZ&}^)$+v`WHj%E6MWAW(4Ehsk%R<{1H zp?I9p?bN1y6Qro?fG--+cf^UQjWt-g41Gt_M-*8)}MP%_1a)zfhd_p-@SpKqjbUq&Mya&pn zc3D2clL;}?+-1i=TC~{L@%T(htbs7u)lM{>cfu;*eSkzYUX*qw9Cs{TY$a80DEox< zzSps`QnQnu3SBT_Hkv6z=sdV;$SiO~5uL{3eWJB$i}zkQZUlCw|8XBYJ7@?w;WBU{ z%B0>v9=HOG+(5r;6##?zz)PgDs4V|hAi3#5qv1|y>|y(VtQca8*zhMPIo|8X!R)mb z-`<94nZF53_5?KMr9HLk@$f)ggynx{Dr-uIoV#l2?1MrY3d-BM|J z7N$G(Uwer%BRUrj*#7r^3#*yq+Bk|P82a!7$_=SfCh%cJQuq8hM7PDX=_!fPG!4^* zfOWtKz!Lx|=J=;?)e0ygzlpbAo;7I?W1(#TYb&`UcqM3sg71cKH3>C0wlYwJC88CICT}=sb zVG?|hTPSdKzu?5gUXbY(_#%QP^mNSXUZ+e*WYJJ_3eFHxf6#Agk#9+wF`j<;-x=^+ zSb?q5f49FQ7szYQL!;cQ+?CUQZ$AY#rO!&*Ek0WRK z@d*@;AD;+oXd@yCR|yDW+hi}7=jP+fzS$-(%O_QyVT{&rB9r7MCJqKUEZ8S=IuBe@yM&g6Cl1XHGajU=-FRw z{ui#DJ9&hFO!Bu4wsqoY{Bc*0r4~hBLE+p%{czH{udN(^5!P7jhQ3xOU3&{gWs8#6 zV5^pJvhNTIFCus~RCcbuJ}|84ip=WG%Xc%fY=z6;|7$z@O#)2zo35&iNaqR(5s zmcxSGdAo2nn%w~-30DGwT|_N~IPD~b5Z}eaOs$#dSuQ}s+P)b=Orkmw*zY2sTmzvE zUKaumjCG0lEF;4QJ0M-DY{NW!+#?n|bk!voK9!+d7&8#5h=YAHB$Po}tCS9+*J&EB?K~ zMW$eIx=EwmY zOz)v9;PHSHZNeAi zK50-I-(j#eP~h9!Dv@w{m}A0UF_tqh)a!@w4;=lW=OFp#SusC_VCSx70?odndG_y6 z$J3nNWdl|6<-maXZ%%5{dFKSfM%z6nCquYPg;E~jDKl}qlPazLwyek^N`4=4?k@p} zw#JcfXOLX?hwb!+Z+AuA!hTO`vsSJzhs;nU>NTU$|7lb7Ed3ewDe-$Hc`p(E1`$Rm z_DS>p97AfiT3_k^SHqPDLcM+QDKCxf@sc*7$&XN4N5mU6^VFD^CCgX}r6jVJ$Y4wv z)GHE3t9@!1`#QEkgc7B(mBC99V?ytl%!}xEzN-J`d%ow~d+s@(d+wckzvm#o$sr5H zMFD4tY9R~Y4EQG2Gm}IK*o7nzpWg!@l8Ft1gK$XDAHHSw&wKoQ<|2~2-$;t@K=vb$ zVVD_=~IJKYIj?1<}p`)7w#!Ju)s{1c13zPJ^uPZ!E&~9 z%NxUKBNb%?)KBY|J9%Yxd_#`~S9Z__T;AS0?$?RyZ z2?HEMbS0PWo1Tl^7IC>dCP)`>jVi9QRcf&3L2me#NR|%OBzT~0LYAUNSLowH%@>p- z@i=!*&{asH}Xjze$i3} zz?|7;#`AlBbn(C^lPoTt2oh_l`)uN6V!FFF_;wLALIGYKdqAhQG4 z<|{}@3+7heM;PQk!Z1ck$4f{WxU->1B6w_mxt#CA1mo#B&im*~Ga!U&YF8Q0BlDtC z5ijp9VHC#f(!HKgFK~g!#!0h}3<70d_c9ziqD=3%Tn;qKqb}{x5j;jA2Wb8_25jDLKB7TCJ$6^ckJ|B`ipl*%fP`Bqd+;E+wpI}ndO-AC~y`CU7B}0y`GmQ zs@lPcKh#3$4CI(}OsadT@GKBLGc5M1Fw?wlc>tQ)!YvS zRA}sHU)w{@Y=3brl z{>ecYbvBbXqko@1o3@B`C|Wr`y3VP79_sLlkQT-pe}j0$)MBi1eT3`LpQ08@DV{QU z%-AUJ`58QV{QB24(5d)J6MG`_Er}9T{dNYKx_MQOqXMN($n@DwFLoLgBcs>wWyN_! zYlA&(^l;*9aG8TD&T6WCEF&-QI=#p@i*y5uW8((^srGzhdk!?{V={{1?q*Qao*VVHt41wI?HNf|mR?yf$UFpCOYuQaXi8dF!b1^uV zrUvH^`#{cgjYFX?BXom@1CLO1!(T%gXdbnWa}vp_yl#bRo;;L`ppnC}^G^nrkyJM8 zKUY9NL$aAHu5z+J8pXzAaPLOq?f)%(S{Y%;Hc3ocKHB~?~i+3#nr?nY+kQ?dttkfo!- zQ~dsjUw%~M+4934&h-IOWL~rx>6oZx_J*59;kN z&4$6J`gbz7O|#%J;DOA=>R98v6lC)B|Es?hnqHel7I%5}RwPbS5e&!X4&g*j6>@@+ z$BRJ=NMC3#s#8I2;W-svl8o0DU_njkvAc~$**(Tg*7_3(P%X@~)+JvEVio`l(bk;~ zZ;t|(*08ddpVJhskExah>n9mK@vR3>RPAxVaK1%xqr9W zM?Lq%g_D~$@|vTr&BWE*hjvV>exIJxzfX~kgYj(1@ptY7z;%lo-;GWhTixs$Xhym-jBhPkj!j+V>$7&bsJiCs`V4n1e z%X%*%RzGt@f+Cd8_dOSqPHebVo#2X;ChL7QKvNxXHcy|Fr379b48zbXynp`<6v(SE z%!sXw6>V8=(_D6f?@LuL@Ciw0PzkeHeSlw@jf+p1sl1LrJ_q4R)|3=kwC!S=`~i1I zD6Jl?RU+LsswpvD9eKMp>oeiquj))SJo5G_gGQzI$;TUYbnHH0vK#bxv!?52W+L^* ziwsVR&ZLkLK|~;_&}EeYM2M|6M-j0n@igjQhRBwv^!e`?g%=J>C&4*v&rMy2hdckF zi&h0mayRt2<#r+!qLQsl-DnB*89#8~jKjjH4(x{*Wab%3!OyQTj2hmay9jF^t=UB- zWZ`ydr#oGw0kL>iJBR-eF!HJR`g^~~?z=lIiEanMm{!{d;KB+;i&8qbzIAA+vdl3) zp?+&E65lmrv@?#CRIUu;Ibh5FblDEdc9HkoiF7b^OC?caperGU-oI(~G7Q!7%$2Yh zy6DD6E#NA@x*~9+BJVgBCu&WZnyR(P?0sTojZfhCDwa_WX434E3LLeG2L z=h=e)8o>azADN5e1b=KKp7OZ70nDVA#pRyBQ>2z3lvrHu{~p!e-ePg^YoP#kC#I_` zSR9!N4QumVPM%#x>C^0@iuo;IgVL7CFUo*vw*FC740ok01DYaLCJpeXjCb8laK(7# z44z{{DwFAD_s?H1u6C8fQ(C|~Wx4G7S96efg*yL`;(8EIG0SCx5M_MruGqxBH5u*0Lnq398I z?o{ViroLTGk?IWl+i^!=Jyd;C>5AtjL0SL|~;x8MX8==6OQ;HPywN=l%6E9QAi z#uADD5?thc$iV+M4A+AWPS24Wsf(tIQr19x&M2kNu2bY4dqIP>CP#K;GbUA{33^R- zuOa!`8f-%gHfv5f-7NUzsiFY8V0Qz>7X>!&Am%`7m+3hsXUqt6f}V1icxgqy(>n0+z{OOyh3p zq8gY4@;;AJ=6pSyvgkqNy|ylq2ViZ*u7C~E>sBhE_W`5}p4J?4iPTsX3?(g4XKP-+ zsAsT0Oy5hA!lWK&2LE^4mf>;&QpB_mY2W!qh5uZkd8aLi+d{k;{O8j}5-4liD+i(> zRV-N=7C=4B9b0KkDv#Ny+C1OjD3AmIR-LjG(1Ua^a;bdc*Qg^GJ|K3! zCp9%*-UbywZ`f!xq+a3RO^?ivQv#JsQJ38iqHF(^DK| zjV$I@_@hu2*dvjCtVromETriOndC2CCroZTkJ-c0+s;XH?(={7%LQFwIUI4BL&*5k zUMw(a*i+Wvauv>;hOqRuPh1nlC$W9$k5^z+)+IPkuykjI`y_;CBq9t(XW%29Gt`JT o*h{f@SNJ7;%hyw})TV#><|87sYn4nOTO^dZndKja_!C$D57`aEga7~l literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json new file mode 100644 index 00000000..b85c3fa9 --- /dev/null +++ b/manifest.json @@ -0,0 +1,99 @@ +{ + "dxt_version": "0.1", + "name": "line-bot-mcp-server", + "display_name": "LINE Official Account", + "icon": "assets/icon.png", + "version": "0.3.0", + "description": "MCP server that bridges AI agents with LINE Messaging API for automated interactions", + "long_description": "This extension enables Claude Desktop to interact with LINE Messaging API, providing tools for sending messages, managing rich menus, and retrieving user profiles through LINE Official Accounts.", + "author": { + "name": "LY Corporation", + "url": "https://line.me" + }, + "server": { + "type": "node", + "entry_point": "dist/index.js", + "mcp_config": { + "command": "node", + "args": ["${__dirname}/dist/index.js"], + "env": { + "CHANNEL_ACCESS_TOKEN": "${user_config.channel_access_token}", + "DESTINATION_USER_ID": "${user_config.destination_user_id}" + } + } + }, + "repository": { + "type": "git", + "url": "https://github.com/line/line-bot-mcp-server.git" + }, + "homepage": "https://github.com/line/line-bot-mcp-server", + "documentation": "https://github.com/line/line-bot-mcp-server#readme", + "support": "https://github.com/line/line-bot-mcp-server/issues", + "tools": [ + { + "name": "push_text_message", + "description": "Send a plain text message to a specific LINE user" + }, + { + "name": "push_flex_message", + "description": "Send a rich, customizable flex message to a specific LINE user" + }, + { + "name": "broadcast_text_message", + "description": "Send a plain text message to all followers" + }, + { + "name": "broadcast_flex_message", + "description": "Send a flex message to all followers" + }, + { + "name": "get_profile", + "description": "Retrieve LINE user profile information" + }, + { + "name": "get_message_quota", + "description": "Check monthly message limits and usage" + }, + { + "name": "get_rich_menu_list", + "description": "List all rich menus for the LINE Official Account" + }, + { + "name": "delete_rich_menu", + "description": "Remove a specific rich menu" + }, + { + "name": "set_rich_menu_default", + "description": "Set a default rich menu for all users" + }, + { + "name": "cancel_rich_menu_default", + "description": "Remove the default rich menu" + } + ], + "keywords": [ + "line", + "messaging", + "bot", + "mcp", + "ai", + "automation", + "chat" + ], + "license": "Apache-2.0", + "user_config": { + "channel_access_token": { + "type": "string", + "title": "Channel Access Token", + "description": "LINE channel access token for authentication. See https://developers.line.biz/en/docs/basics/channel-access-token/#long-lived-channel-access-token", + "required": true, + "sensitive": true + }, + "destination_user_id": { + "type": "string", + "title": "Destination User ID", + "description": "Default recipient user ID for LINE messages. See https://developers.line.biz/en/docs/messaging-api/getting-user-ids/#get-own-user-id", + "required": false + } + } +} From 5bcc53ad2776be2022ddbe7fb5a4907114a98712 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 29 Jul 2025 02:23:27 +0000 Subject: [PATCH 150/415] fix(deps): update dependency zod to v4.0.11 (#187) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 82625f52..410c9645 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2330,9 +2330,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.10.tgz", - "integrity": "sha512-3vB+UU3/VmLL2lvwcY/4RV2i9z/YU0DTV/tDuYjrwmx5WeJ7hwy+rGEEx8glHp6Yxw7ibRbKSaIFBgReRPe5KA==", + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.11.tgz", + "integrity": "sha512-LVrgstTaQJek72n6ZGxhAhH/Q24PhGx4lIAcgBmjtvjRq0qYjiH9U0o3hfuC2vfExsnpoHElc4XOJjMKQjUQxg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 981ba867804f56cb03d609d41e2c8a6f95de812d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 29 Jul 2025 12:02:06 +0000 Subject: [PATCH 151/415] fix(deps): update dependency zod to v4.0.13 (#188) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 410c9645..c578f64d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2330,9 +2330,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.11.tgz", - "integrity": "sha512-LVrgstTaQJek72n6ZGxhAhH/Q24PhGx4lIAcgBmjtvjRq0qYjiH9U0o3hfuC2vfExsnpoHElc4XOJjMKQjUQxg==", + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.13.tgz", + "integrity": "sha512-jv+zRxuZQxTrFHzxZ46ezL2FtnE+M4HIJHJEwLsZ7UjrXHltdG6HrxvqM0twoVCWxJiYf8WqKjAcjztegpkB+Q==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 11b5b215000063f81d31ac7dde224c328a82d089 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 30 Jul 2025 13:02:36 +0000 Subject: [PATCH 152/415] fix(deps): update dependency zod to v4.0.14 (#190) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c578f64d..af28b8eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2330,9 +2330,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.13.tgz", - "integrity": "sha512-jv+zRxuZQxTrFHzxZ46ezL2FtnE+M4HIJHJEwLsZ7UjrXHltdG6HrxvqM0twoVCWxJiYf8WqKjAcjztegpkB+Q==", + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.14.tgz", + "integrity": "sha512-nGFJTnJN6cM2v9kXL+SOBq3AtjQby3Mv5ySGFof5UGRHrRioSJ5iG680cYNjE/yWk671nROcpPj4hAS8nyLhSw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 5dc7840645ae94cf9eb20941a76ac3a007f29a92 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 30 Jul 2025 20:24:41 +0000 Subject: [PATCH 153/415] chore(deps): update dependency @types/node to v22.17.0 (#189) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index af28b8eb..5a0f058b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -538,9 +538,9 @@ } }, "node_modules/@types/node": { - "version": "22.16.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.5.tgz", - "integrity": "sha512-bJFoMATwIGaxxx8VJPeM8TonI8t579oRvgAuT8zFugJsJZgzqv0Fu8Mhp68iecjzG7cnN3mO2dJQ5uUM2EFrgQ==", + "version": "22.17.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.17.0.tgz", + "integrity": "sha512-bbAKTCqX5aNVryi7qXVMi+OkB3w/OyblodicMbvE38blyAz7GxXf6XYhklokijuPwwVg9sDLKRxt0ZHXQwZVfQ==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From a7865600eba24efd726937372586ed009a7757eb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 31 Jul 2025 18:35:16 +0000 Subject: [PATCH 154/415] chore(deps): update dependency typescript to v5.9.2 (#191) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5a0f058b..c6ac543a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2262,9 +2262,9 @@ } }, "node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", + "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", "dev": true, "license": "Apache-2.0", "bin": { From 79540b689ec11f40dbaeb56077b98a0c1da650de Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 31 Jul 2025 18:35:31 +0000 Subject: [PATCH 155/415] chore(deps): update pnpm to v10.14.0 (#192) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8582f9a5..5522da2f 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.13.1+sha512.37ebf1a5c7a30d5fabe0c5df44ee8da4c965ca0c5af3dbab28c3a1681b70a256218d05c81c9c0dcf767ef6b8551eb5b960042b9ed4300c59242336377e01cfad" + "packageManager": "pnpm@10.14.0+sha512.ad27a79641b49c3e481a16a805baa71817a04bbe06a38d17e60e2eaee83f6a146c6a688125f5792e48dd5ba30e7da52a5cda4c3992b9ccf333f9ce223af84748" } From 498ca71d5131b5cd305183c7f6f09cf5a7e03f0e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 1 Aug 2025 01:20:46 +0000 Subject: [PATCH 156/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.17.1 (#193) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c6ac543a..5246ec7d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.0.tgz", - "integrity": "sha512-qFfbWFA7r1Sd8D697L7GkTd36yqDuTkvz0KfOGkgXR8EUhQn3/EDNIR/qUdQNMT8IjmasBvHWuXeisxtXTQT2g==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.1.tgz", + "integrity": "sha512-CPle1OQehbWqd25La9Ack5B07StKIxh4+Bf19qnpZKJC1oI22Y0czZHbifjw1UoczIfKBwBDAp/dFxvHG13B5A==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", From 3273d29794eaad774de13393e99935640f2b243f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 4 Aug 2025 23:57:40 +0900 Subject: [PATCH 157/415] chore(deps): update node.js to v22.18.0 (#194) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 337fdd22..4e5919a7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.17-alpine AS builder +FROM node:22.18-alpine AS builder COPY . /app From 987167af210527549a62a67c9d8d9d59641d89b3 Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Tue, 5 Aug 2025 14:55:44 +0900 Subject: [PATCH 158/415] Update version of form-data (npm audit fix) (#201) NO-ISSUE npm audit fix --- package-lock.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5246ec7d..74283b4c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1172,15 +1172,16 @@ } }, "node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", "license": "MIT", "optional": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { From 5d36a87794146def1b31aebf1bcf1d353711658f Mon Sep 17 00:00:00 2001 From: Motoi Okuzono Date: Tue, 5 Aug 2025 16:12:21 +0900 Subject: [PATCH 159/415] Don't use PAT on publish by using trusted publishing (#195) * Don't use PAT on publish by using trusted publishing * [Debug] Set tag * Update node version to update npm * Revert "[Debug] Set tag" This reverts commit edd49fdd86a850a54bfdda21ac046a083363aa07. --- .github/workflows/release.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 51923d46..5bf05157 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,7 +20,7 @@ jobs: # Setup .npmrc file to publish to GitHub Packages - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: - node-version: 22 + node-version: 24 registry-url: 'https://registry.npmjs.org' - run: npm install - name: Update version in package.json, package-lock.json @@ -34,8 +34,6 @@ jobs: echo "VERSION=$VERSION" >> $GITHUB_ENV node .github/scripts/update-version.mjs $VERSION - run: npm run release - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Create GitHub Issue on Failure if: failure() From 603f8dd7441bd5a1ed0f67c03a6c989ed0802efd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 5 Aug 2025 12:57:02 +0000 Subject: [PATCH 160/415] fix(deps): update dependency @line/bot-sdk to v10.0.1 (#203) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 74283b4c..fc038365 100644 --- a/package-lock.json +++ b/package-lock.json @@ -453,9 +453,9 @@ } }, "node_modules/@line/bot-sdk": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.0.0.tgz", - "integrity": "sha512-Uj6ZVivMDzZUV4Jm/RSsJinryyj3HS+fnyYob+mNl4/uUDWQ2OAEZDVopl0v0tcjXlCRC6GUB+nfEZLgBFI+dg==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.0.1.tgz", + "integrity": "sha512-bpIJO0OLDXSdCir/wtYMbBwKLQmmsQbtczJLGVNstKtbD3CdeuPhWjR/efDjXUCtAhpIOALi3aY0q8EboqggSw==", "license": "Apache-2.0", "dependencies": { "@types/node": "^22.0.0" From 8dd337e3667668541a65b742d6431d75d3f90050 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Aug 2025 01:38:32 +0000 Subject: [PATCH 161/415] fix(deps): update dependency zod to v4.0.15 (#204) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index fc038365..01897af8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2331,9 +2331,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.14.tgz", - "integrity": "sha512-nGFJTnJN6cM2v9kXL+SOBq3AtjQby3Mv5ySGFof5UGRHrRioSJ5iG680cYNjE/yWk671nROcpPj4hAS8nyLhSw==", + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.15.tgz", + "integrity": "sha512-2IVHb9h4Mt6+UXkyMs0XbfICUh1eUrlJJAOupBHUhLRnKkruawyDddYRCs0Eizt900ntIMk9/4RksYl+FgSpcQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 8ede15fa55440082773d7dc3f79fbcf2e008a3ea Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Aug 2025 12:41:20 +0000 Subject: [PATCH 162/415] fix(deps): update dependency @line/bot-sdk to v10.1.0 (#205) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 01897af8..ac0d7e65 100644 --- a/package-lock.json +++ b/package-lock.json @@ -453,9 +453,9 @@ } }, "node_modules/@line/bot-sdk": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.0.1.tgz", - "integrity": "sha512-bpIJO0OLDXSdCir/wtYMbBwKLQmmsQbtczJLGVNstKtbD3CdeuPhWjR/efDjXUCtAhpIOALi3aY0q8EboqggSw==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.1.0.tgz", + "integrity": "sha512-liD1by78oi5XZz6zWYfcUghtdvxbEaL2XTVOl4kJ8+k0Yh7G2A3MIcTbYiCjglQvKPXA/aynQX1FrckPuxe6CQ==", "license": "Apache-2.0", "dependencies": { "@types/node": "^22.0.0" From f4b7b27248994a04c2d5699675291c8d564239ae Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Thu, 7 Aug 2025 16:35:58 +0900 Subject: [PATCH 163/415] Reminder for npm audit fix (#202) * NO-ISSUE Reminder for npm audit fix * NO-ISSUE update script * NO-ISSUE oops * NO-ISSUE Run script when pushing to master --- .github/scripts/npm-audit.sh | 35 +++++++++++++++++ .github/workflows/npm-audit.yml | 67 +++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100755 .github/scripts/npm-audit.sh create mode 100644 .github/workflows/npm-audit.yml diff --git a/.github/scripts/npm-audit.sh b/.github/scripts/npm-audit.sh new file mode 100755 index 00000000..4194204c --- /dev/null +++ b/.github/scripts/npm-audit.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +set -euo pipefail + +dirs=() +while IFS= read -r path; do + dirs+=("$(dirname "$path")") +done < <( + find . \( -path '*/node_modules' -o -path '*/dist' \) -prune -o \ + \( -name package.json -o -name package-lock.json \) -print +) + +IFS=$'\n' dirs=($(printf '%s\n' "${dirs[@]}" | sort -u)); unset IFS + +declare -a failed=() + +for dir in "${dirs[@]}"; do + printf '\n\n\033[1;34m==> %s\033[0m\n' "$dir" + + pushd "$dir" >/dev/null + if ! npm audit --audit-level moderate; then + failed+=("$dir") + fi + popd >/dev/null +done + +if ((${#failed[@]})); then + echo -e "\n\033[0;31mnpm audit reported vulnerabilities in:\033[0m" + printf ' - %s\n' "${failed[@]}" + echo "You can run 'npm audit fix' in these directories to resolve the issues." + echo "If running 'npm audit fix' does not resolve the issues, you may need to manually update dependencies." + exit 1 +else + echo "npm audit passed: no vulnerabilities detected" + exit 0 +fi diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml new file mode 100644 index 00000000..bec68eb5 --- /dev/null +++ b/.github/workflows/npm-audit.yml @@ -0,0 +1,67 @@ +name: "Reminder for 'run npm audit'" + +on: + schedule: + - cron: '0 22 * * *' + workflow_dispatch: + push: + branches: + - 'master' + +jobs: + run-npm-audit: + runs-on: ubuntu-latest + permissions: + contents: read + issues: write + if: github.repository == 'line/line-bot-mcp-server' + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 + with: + node-version: '24' + + - name: Run npm audit and check diff + id: audit + run: ./scripts/npm-audit.sh + continue-on-error: true + + - name: Create or update reminder issue + if: steps.audit.outcome == 'failure' + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + env: + TZ: 'Asia/Tokyo' + with: + script: | + const { owner, repo } = context.repo; + const title = 'Reminder: run npm audit'; + const securityURL = `https://github.com/${owner}/${repo}/security`; + const baseBody = [ + 'Fix all vulnerabilities. You can check with `.github/scripts/npm-audit.sh` locally, then send a PR with the fixes.', + `After fixing, make sure the vulnerabilities count in **${securityURL}** is **0**.` + ].join('\n\n'); + + const { data: result } = await github.rest.search.issuesAndPullRequests({ + q: `repo:${owner}/${repo} is:issue is:open in:title "${title}"` + }); + + const today = new Date(); + + if (result.total_count === 0) { + await github.rest.issues.create({ + owner, + repo, + title, + body: `${baseBody}\n\n0 days have passed.` + }); + } else { + const issue = result.items[0]; + const created = new Date(issue.created_at); + const diffDays = Math.floor((today - created) / 86_400_000); + await github.rest.issues.update({ + owner, + repo, + issue_number: issue.number, + body: `${baseBody}\n\n${diffDays} days have passed.` + }); + } From e14eb7dc072e0d318d5c2581e217e03c30803a64 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 7 Aug 2025 07:38:04 +0000 Subject: [PATCH 164/415] chore(deps): update actions/checkout digest to 8edcb1b (#206) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/npm-audit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index bec68eb5..d5666c21 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -16,7 +16,7 @@ jobs: issues: write if: github.repository == 'line/line-bot-mcp-server' steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 + - uses: actions/checkout@8edcb1bdb4e267140fa742c62e395cd74f332709 - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 with: node-version: '24' From 440c7f6a87cd9a3d28c4652d7d85b883e8eda691 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 7 Aug 2025 07:40:05 +0000 Subject: [PATCH 165/415] chore(deps): update actions/setup-node digest to 5e2628c (#207) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/npm-audit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index d5666c21..2548041a 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -17,7 +17,7 @@ jobs: if: github.repository == 'line/line-bot-mcp-server' steps: - uses: actions/checkout@8edcb1bdb4e267140fa742c62e395cd74f332709 - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 + - uses: actions/setup-node@5e2628c959b9ade56971c0afcebbe5332d44b398 with: node-version: '24' From e1bb4428ec9583d950f1d7446dfc01271a64301c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 7 Aug 2025 20:58:49 +0000 Subject: [PATCH 166/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.17.2 (#209) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index ac0d7e65..c2a39cd8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.1.tgz", - "integrity": "sha512-CPle1OQehbWqd25La9Ack5B07StKIxh4+Bf19qnpZKJC1oI22Y0czZHbifjw1UoczIfKBwBDAp/dFxvHG13B5A==", + "version": "1.17.2", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.2.tgz", + "integrity": "sha512-EFLRNXR/ixpXQWu6/3Cu30ndDFIFNaqUXcTqsGebujeMan9FzhAaFFswLRiFj61rgygDRr8WO1N+UijjgRxX9g==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", From 5d0d3f4cdae793569985f7e05ab6a38e03d00ad1 Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Fri, 8 Aug 2025 20:48:32 +0900 Subject: [PATCH 167/415] Fix wrong points in GH workflow (#208) NO-ISSUE Fix wrong points --- .github/workflows/npm-audit.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index 2548041a..02297ebe 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -6,7 +6,7 @@ on: workflow_dispatch: push: branches: - - 'master' + - 'main' jobs: run-npm-audit: @@ -23,7 +23,7 @@ jobs: - name: Run npm audit and check diff id: audit - run: ./scripts/npm-audit.sh + run: .github/scripts/npm-audit.sh continue-on-error: true - name: Create or update reminder issue From 0b77655247d50de7be28898041d002410d2d0cd9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 8 Aug 2025 11:50:28 +0000 Subject: [PATCH 168/415] fix(deps): update dependency @line/bot-sdk to v10.1.1 (#211) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c2a39cd8..ba45d96b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -453,9 +453,9 @@ } }, "node_modules/@line/bot-sdk": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.1.0.tgz", - "integrity": "sha512-liD1by78oi5XZz6zWYfcUghtdvxbEaL2XTVOl4kJ8+k0Yh7G2A3MIcTbYiCjglQvKPXA/aynQX1FrckPuxe6CQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.1.1.tgz", + "integrity": "sha512-0SEkbzovdBEGPy1PF8nJZYjMfLjqdn7WhRXU1K+cjEqc5rX9xzA6M2rt4/g2ZqefwBg37/hGfT5/YhHMkxtZaw==", "license": "Apache-2.0", "dependencies": { "@types/node": "^22.0.0" From 1e8ef781ec110654148d995ea6ef9b4b793860ce Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 8 Aug 2025 16:52:27 +0000 Subject: [PATCH 169/415] chore(deps): update dependency @types/node to v22.17.1 (#212) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index ba45d96b..53103e69 100644 --- a/package-lock.json +++ b/package-lock.json @@ -538,9 +538,9 @@ } }, "node_modules/@types/node": { - "version": "22.17.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.17.0.tgz", - "integrity": "sha512-bbAKTCqX5aNVryi7qXVMi+OkB3w/OyblodicMbvE38blyAz7GxXf6XYhklokijuPwwVg9sDLKRxt0ZHXQwZVfQ==", + "version": "22.17.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.17.1.tgz", + "integrity": "sha512-y3tBaz+rjspDTylNjAX37jEC3TETEFGNJL6uQDxwF9/8GLLIjW1rvVHlynyuUKMnMr1Roq8jOv3vkopBjC4/VA==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 7c5cbb8b0fe4d0ab19c23cae3fdb25585084c527 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 9 Aug 2025 00:35:02 +0000 Subject: [PATCH 170/415] fix(deps): update dependency zod to v4.0.16 (#213) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 53103e69..4eccecb5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2331,9 +2331,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.15.tgz", - "integrity": "sha512-2IVHb9h4Mt6+UXkyMs0XbfICUh1eUrlJJAOupBHUhLRnKkruawyDddYRCs0Eizt900ntIMk9/4RksYl+FgSpcQ==", + "version": "4.0.16", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.16.tgz", + "integrity": "sha512-Djo/cM339grjI7/HmN+ixYO2FzEMcWr/On50UlQ/RjrWK1I/hPpWhpC76heCptnRFpH0LMwrEbUY50HDc0V8wg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 58c3e00151ba6c4bc6e34c9c733d841b3274c720 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 9 Aug 2025 20:40:42 +0000 Subject: [PATCH 171/415] fix(deps): update dependency zod to v4.0.17 (#214) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4eccecb5..a5a8b6e6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2331,9 +2331,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "4.0.16", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.16.tgz", - "integrity": "sha512-Djo/cM339grjI7/HmN+ixYO2FzEMcWr/On50UlQ/RjrWK1I/hPpWhpC76heCptnRFpH0LMwrEbUY50HDc0V8wg==", + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.17.tgz", + "integrity": "sha512-1PHjlYRevNxxdy2JZ8JcNAw7rX8V9P1AKkP+x/xZfxB0K5FYfuV+Ug6P/6NVSR2jHQ+FzDDoDHS04nYUsOIyLQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From b3097b2dd07d0b5a6dcfcc9321542862da993763 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 11 Aug 2025 13:34:39 +0000 Subject: [PATCH 172/415] chore(deps): update actions/checkout action to v4.3.0 (#217) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/check-eol-newrelease.yml | 2 +- .github/workflows/create-draft-release.yml | 2 +- .github/workflows/label-issue.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/check-eol-newrelease.yml b/.github/workflows/check-eol-newrelease.yml index 154c9d8b..0c1d532f 100644 --- a/.github/workflows/check-eol-newrelease.yml +++ b/.github/workflows/check-eol-newrelease.yml @@ -15,7 +15,7 @@ jobs: if: github.repository == 'line/line-bot-mcp-server' steps: - name: Check out code - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 - name: Run EoL & NewRelease check uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 diff --git a/.github/workflows/create-draft-release.yml b/.github/workflows/create-draft-release.yml index 5d4aebf4..b0e662ec 100644 --- a/.github/workflows/create-draft-release.yml +++ b/.github/workflows/create-draft-release.yml @@ -45,7 +45,7 @@ jobs: permissions: contents: write steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 - name: Fetch Latest Release id: get-latest-release uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 diff --git a/.github/workflows/label-issue.yml b/.github/workflows/label-issue.yml index a440f781..662c3609 100644 --- a/.github/workflows/label-issue.yml +++ b/.github/workflows/label-issue.yml @@ -13,7 +13,7 @@ jobs: permissions: issues: write steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 - name: Add label on issue open if: github.event.action == 'opened' || github.event.action == 'reopened' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5bf05157..b1645cc0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ jobs: id-token: write issues: write steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 # Setup .npmrc file to publish to GitHub Packages - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index abd58dec..d66df83c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,7 +23,7 @@ jobs: name: Node.js ${{ matrix.node }} steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 with: submodules: true - name: Setup Node.js @@ -45,7 +45,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 - name: Run pinact uses: suzuki-shunsuke/pinact-action@49cbd6acd0dbab6a6be2585d1dbdaa43b4410133 # v1.0.0 with: From 7b7c4ea1d3897bec5d9fb23310c3188fed40d158 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 11 Aug 2025 13:39:54 +0000 Subject: [PATCH 173/415] chore(deps): update actions/checkout digest to 08c6903 (#216) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/npm-audit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index 02297ebe..d8ce6f6b 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -16,7 +16,7 @@ jobs: issues: write if: github.repository == 'line/line-bot-mcp-server' steps: - - uses: actions/checkout@8edcb1bdb4e267140fa742c62e395cd74f332709 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 - uses: actions/setup-node@5e2628c959b9ade56971c0afcebbe5332d44b398 with: node-version: '24' From 9a9beb4f4bbfd2d0b39c67790f382c117864ed3a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 11 Aug 2025 18:03:09 +0000 Subject: [PATCH 174/415] chore(deps): update actions/checkout action to v5 (#218) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/check-eol-newrelease.yml | 2 +- .github/workflows/create-draft-release.yml | 2 +- .github/workflows/label-issue.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/check-eol-newrelease.yml b/.github/workflows/check-eol-newrelease.yml index 0c1d532f..0bc21666 100644 --- a/.github/workflows/check-eol-newrelease.yml +++ b/.github/workflows/check-eol-newrelease.yml @@ -15,7 +15,7 @@ jobs: if: github.repository == 'line/line-bot-mcp-server' steps: - name: Check out code - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Run EoL & NewRelease check uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 diff --git a/.github/workflows/create-draft-release.yml b/.github/workflows/create-draft-release.yml index b0e662ec..de5a35e0 100644 --- a/.github/workflows/create-draft-release.yml +++ b/.github/workflows/create-draft-release.yml @@ -45,7 +45,7 @@ jobs: permissions: contents: write steps: - - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Fetch Latest Release id: get-latest-release uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 diff --git a/.github/workflows/label-issue.yml b/.github/workflows/label-issue.yml index 662c3609..5d30e866 100644 --- a/.github/workflows/label-issue.yml +++ b/.github/workflows/label-issue.yml @@ -13,7 +13,7 @@ jobs: permissions: issues: write steps: - - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Add label on issue open if: github.event.action == 'opened' || github.event.action == 'reopened' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b1645cc0..d55a645b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ jobs: id-token: write issues: write steps: - - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # Setup .npmrc file to publish to GitHub Packages - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d66df83c..6e7ee61a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,7 +23,7 @@ jobs: name: Node.js ${{ matrix.node }} steps: - - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: submodules: true - name: Setup Node.js @@ -45,7 +45,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Run pinact uses: suzuki-shunsuke/pinact-action@49cbd6acd0dbab6a6be2585d1dbdaa43b4410133 # v1.0.0 with: From bb896b19b775dfc5365ff7ad5f88e0e631cc307e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 12 Aug 2025 13:28:32 +0000 Subject: [PATCH 175/415] chore(deps): update dependency tsx to v4.20.4 (#219) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a5a8b6e6..d48f7277 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2229,9 +2229,9 @@ } }, "node_modules/tsx": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.3.tgz", - "integrity": "sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==", + "version": "4.20.4", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.4.tgz", + "integrity": "sha512-yyxBKfORQ7LuRt/BQKBXrpcq59ZvSW0XxwfjAt3w2/8PmdxaFzijtMhTawprSHhpzeM5BgU2hXHG3lklIERZXg==", "dev": true, "license": "MIT", "dependencies": { From b8ca4491090f543a713bd58cba3eef6227077b4b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 13 Aug 2025 02:08:00 +0000 Subject: [PATCH 176/415] fix(deps): update dependency @line/bot-sdk to v10.1.2 (#220) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index d48f7277..b5e726e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -453,9 +453,9 @@ } }, "node_modules/@line/bot-sdk": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.1.1.tgz", - "integrity": "sha512-0SEkbzovdBEGPy1PF8nJZYjMfLjqdn7WhRXU1K+cjEqc5rX9xzA6M2rt4/g2ZqefwBg37/hGfT5/YhHMkxtZaw==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.1.2.tgz", + "integrity": "sha512-vSoPdwK4IAtzPI34H1SKDO82fibDuydTPw9Mq/gb+ei/NJVoFIeRAfuoww1pYHitX41AYjG6SMAE4BK2rMdjPA==", "license": "Apache-2.0", "dependencies": { "@types/node": "^22.0.0" From 64ff936a16f8d7158bcc1717bce02321f8c68318 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 14 Aug 2025 02:01:00 +0900 Subject: [PATCH 177/415] chore(deps): update actions/checkout digest to ff7abcd (#221) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/npm-audit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index d8ce6f6b..243308b4 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -16,7 +16,7 @@ jobs: issues: write if: github.repository == 'line/line-bot-mcp-server' steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 + - uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 - uses: actions/setup-node@5e2628c959b9ade56971c0afcebbe5332d44b398 with: node-version: '24' From fe3eb506b7eb0abc26e4bf2f3a9ddd84f7877c12 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 14 Aug 2025 17:34:34 +0000 Subject: [PATCH 178/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.17.3 (#222) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b5e726e5..feb143fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.17.2", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.2.tgz", - "integrity": "sha512-EFLRNXR/ixpXQWu6/3Cu30ndDFIFNaqUXcTqsGebujeMan9FzhAaFFswLRiFj61rgygDRr8WO1N+UijjgRxX9g==", + "version": "1.17.3", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.3.tgz", + "integrity": "sha512-JPwUKWSsbzx+DLFznf/QZ32Qa+ptfbUlHhRLrBQBAFu9iI1iYvizM4p+zhhRDceSsPutXp4z+R/HPVphlIiclg==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", From 3e6829c857d054fd87f24cf93846b547d18c16d0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 15 Aug 2025 09:52:09 +0000 Subject: [PATCH 179/415] chore(deps): update dependency @types/node to v22.17.2 (#223) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index feb143fd..db70e4e1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -538,9 +538,9 @@ } }, "node_modules/@types/node": { - "version": "22.17.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.17.1.tgz", - "integrity": "sha512-y3tBaz+rjspDTylNjAX37jEC3TETEFGNJL6uQDxwF9/8GLLIjW1rvVHlynyuUKMnMr1Roq8jOv3vkopBjC4/VA==", + "version": "22.17.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.17.2.tgz", + "integrity": "sha512-gL6z5N9Jm9mhY+U2KXZpteb+09zyffliRkZyZOHODGATyC5B1Jt/7TzuuiLkFsSUMLbS1OLmlj/E+/3KF4Q/4w==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 50d6b7799299a2d257afad1cbba9c58b18aa36d0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 19 Aug 2025 21:04:18 +0000 Subject: [PATCH 180/415] chore(deps): update pnpm to v10.15.0 (#225) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5522da2f..677cde96 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.14.0+sha512.ad27a79641b49c3e481a16a805baa71817a04bbe06a38d17e60e2eaee83f6a146c6a688125f5792e48dd5ba30e7da52a5cda4c3992b9ccf333f9ce223af84748" + "packageManager": "pnpm@10.15.0+sha512.486ebc259d3e999a4e8691ce03b5cac4a71cbeca39372a9b762cb500cfdf0873e2cb16abe3d951b1ee2cf012503f027b98b6584e4df22524e0c7450d9ec7aa7b" } From 81a17707b3b2eedec2921b5b26521e195fc6c431 Mon Sep 17 00:00:00 2001 From: etrex kuo Date: Thu, 21 Aug 2025 15:38:29 +0800 Subject: [PATCH 181/415] docs: add local development with Inspector guide to README (#215) --- README.ja.md | 34 +++++++++++++++++++++++++++++++++- README.md | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/README.ja.md b/README.ja.md index 3e464356..d637d3cd 100644 --- a/README.ja.md +++ b/README.ja.md @@ -148,4 +148,36 @@ Claude DesktopやClaudeなどのAI Agentに次の設定を追加してくださ } } } -``` \ No newline at end of file +``` + +## Inspector を使用したローカル開発 + +MCP Inspector を使用して、サーバーをローカルでテストおよびデバッグできます。 + +### 前提条件 + +1. リポジトリをクローンする: +```bash +git clone git@github.com:line/line-bot-mcp-server.git +cd line-bot-mcp-server +``` + +2. 依存関係をインストールする: +```bash +npm install +``` + +3. プロジェクトをビルドする: +```bash +npm run build +``` + +### Inspector の実行 + +プロジェクトをビルドした後、MCP Inspector を起動できます: + +```bash +npx @modelcontextprotocol/inspector node dist/index.js +``` + +これにより、MCP Inspector インターフェースが起動し、LINE Bot MCP Server のツールを操作して機能をテストできます。 \ No newline at end of file diff --git a/README.md b/README.md index 96410da9..0ebfa902 100644 --- a/README.md +++ b/README.md @@ -156,6 +156,38 @@ You can confirm this by following [this instructions](https://developers.line.bi } ``` +## Local Development with Inspector + +You can use the MCP Inspector to test and debug the server locally. + +### Prerequisites + +1. Clone the repository: +```bash +git clone git@github.com:line/line-bot-mcp-server.git +cd line-bot-mcp-server +``` + +2. Install dependencies: +```bash +npm install +``` + +3. Build the project: +```bash +npm run build +``` + +### Run the Inspector + +After building the project, you can start the MCP Inspector: + +```bash +npx @modelcontextprotocol/inspector node dist/index.js +``` + +This will start the MCP Inspector interface where you can interact with the LINE Bot MCP Server tools and test their functionality. + ## Versioning This project respects semantic versioning From 2c2b1b36ebaaf67b7a0af69f70a37cf987c2d45a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 22 Aug 2025 10:55:57 +0000 Subject: [PATCH 182/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.17.4 (#226) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index db70e4e1..4280b6d2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.17.3", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.3.tgz", - "integrity": "sha512-JPwUKWSsbzx+DLFznf/QZ32Qa+ptfbUlHhRLrBQBAFu9iI1iYvizM4p+zhhRDceSsPutXp4z+R/HPVphlIiclg==", + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.4.tgz", + "integrity": "sha512-zq24hfuAmmlNZvik0FLI58uE5sriN0WWsQzIlYnzSuKDAHFqJtBFrl/LfB1NLgJT5Y7dEBzaX4yAKqOPrcetaw==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", From 83a84a7e7026436781cb851eb1fb1fe990eb2b01 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 23 Aug 2025 08:50:31 +0000 Subject: [PATCH 183/415] fix(deps): update dependency zod to v4.1.0 (#228) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4280b6d2..1d7c6c6f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2331,9 +2331,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.17.tgz", - "integrity": "sha512-1PHjlYRevNxxdy2JZ8JcNAw7rX8V9P1AKkP+x/xZfxB0K5FYfuV+Ug6P/6NVSR2jHQ+FzDDoDHS04nYUsOIyLQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.0.tgz", + "integrity": "sha512-UWxluYj2IDX9MHRXTMbB/2eeWrAMmmMSESM+MfT9MQw8U1qo9q5ASW08anoJh6AJ7pkt099fLdNFmfI+4aChHg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 288525c98a78c57cceae0e91e5c88e6db72bc9ef Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 24 Aug 2025 04:34:26 +0000 Subject: [PATCH 184/415] chore(deps): update dependency tsx to v4.20.5 (#229) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1d7c6c6f..bcb98a0e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2229,9 +2229,9 @@ } }, "node_modules/tsx": { - "version": "4.20.4", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.4.tgz", - "integrity": "sha512-yyxBKfORQ7LuRt/BQKBXrpcq59ZvSW0XxwfjAt3w2/8PmdxaFzijtMhTawprSHhpzeM5BgU2hXHG3lklIERZXg==", + "version": "4.20.5", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.5.tgz", + "integrity": "sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw==", "dev": true, "license": "MIT", "dependencies": { From 2953d6a89ef64bc99f1297d7ae0c642caf092172 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 24 Aug 2025 08:52:02 +0000 Subject: [PATCH 185/415] fix(deps): update dependency zod to v4.1.1 (#230) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index bcb98a0e..ebe19b15 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2331,9 +2331,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.0.tgz", - "integrity": "sha512-UWxluYj2IDX9MHRXTMbB/2eeWrAMmmMSESM+MfT9MQw8U1qo9q5ASW08anoJh6AJ7pkt099fLdNFmfI+4aChHg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.1.tgz", + "integrity": "sha512-SgMZK/h8Tigt9nnKkfJMvB/mKjiJXaX26xegP4sa+0wHIFVFWVlsQGdhklDmuargBD3Hsi3rsQRIzwJIhTPJHA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" From 742f6a24c275fa9d365352343a6df4c442b05400 Mon Sep 17 00:00:00 2001 From: koichi uchinishi Date: Mon, 25 Aug 2025 14:53:00 +0900 Subject: [PATCH 186/415] down grade the 3.21.4 (#227) * down grade the 3.21.4 * update the ignoreDeps --- package-lock.json | 26 +++++++++++++------------- package.json | 2 +- renovate.json5 | 3 +++ 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index ebe19b15..c84db58e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@line/bot-sdk": "^10.0.0", "@modelcontextprotocol/sdk": "^1.8.0", - "zod": "^4.0.0" + "zod": "^3.21.4" }, "bin": { "line-bot-mcp-server": "dist/index.js" @@ -499,6 +499,15 @@ "url": "https://github.com/sponsors/colinhacks" } }, + "node_modules/@modelcontextprotocol/sdk/node_modules/zod-to-json-schema": { + "version": "3.24.6", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz", + "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==", + "license": "ISC", + "peerDependencies": { + "zod": "^3.24.1" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2331,22 +2340,13 @@ "license": "ISC" }, "node_modules/zod": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.1.tgz", - "integrity": "sha512-SgMZK/h8Tigt9nnKkfJMvB/mKjiJXaX26xegP4sa+0wHIFVFWVlsQGdhklDmuargBD3Hsi3rsQRIzwJIhTPJHA==", + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", + "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" } - }, - "node_modules/zod-to-json-schema": { - "version": "3.24.5", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz", - "integrity": "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==", - "license": "ISC", - "peerDependencies": { - "zod": "^3.24.1" - } } } } diff --git a/package.json b/package.json index 677cde96..fb4f9ef2 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "dependencies": { "@line/bot-sdk": "^10.0.0", "@modelcontextprotocol/sdk": "^1.8.0", - "zod": "^4.0.0" + "zod": "^3.21.4" }, "devDependencies": { "@types/node": "^22", diff --git a/renovate.json5 b/renovate.json5 index a5a9133f..c33b9d56 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -9,5 +9,8 @@ platformAutomerge: true, labels: [ "dependency upgrade" + ], + ignoreDeps: [ + "zod" ] } From 645ecc88729dc2fb23b5c43fcee1dfd90ddebc46 Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Tue, 26 Aug 2025 10:49:22 +0900 Subject: [PATCH 187/415] Adjust zod version (#232) * Fix CONTRIBUTING.md * Adjust zod version --- package-lock.json | 17 ++++------------- package.json | 2 +- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index c84db58e..35775d3f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@line/bot-sdk": "^10.0.0", "@modelcontextprotocol/sdk": "^1.8.0", - "zod": "^3.21.4" + "zod": "^3.25.76" }, "bin": { "line-bot-mcp-server": "dist/index.js" @@ -490,15 +490,6 @@ "node": ">=18" } }, - "node_modules/@modelcontextprotocol/sdk/node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "node_modules/@modelcontextprotocol/sdk/node_modules/zod-to-json-schema": { "version": "3.24.6", "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz", @@ -2340,9 +2331,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "3.21.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", - "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/package.json b/package.json index fb4f9ef2..eafb63c0 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "dependencies": { "@line/bot-sdk": "^10.0.0", "@modelcontextprotocol/sdk": "^1.8.0", - "zod": "^3.21.4" + "zod": "^3.25.76" }, "devDependencies": { "@types/node": "^22", From 796dd4a94b08b54efb83fd21dfed70a2c6e829a2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 Aug 2025 01:58:10 +0000 Subject: [PATCH 188/415] chore(deps): update dependency @types/node to v22.18.0 (#233) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 35775d3f..8443b52a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -538,9 +538,9 @@ } }, "node_modules/@types/node": { - "version": "22.17.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.17.2.tgz", - "integrity": "sha512-gL6z5N9Jm9mhY+U2KXZpteb+09zyffliRkZyZOHODGATyC5B1Jt/7TzuuiLkFsSUMLbS1OLmlj/E+/3KF4Q/4w==", + "version": "22.18.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.0.tgz", + "integrity": "sha512-m5ObIqwsUp6BZzyiy4RdZpzWGub9bqLJMvZDD0QMXhxjqMHMENlj+SqF5QxoUwaQNFe+8kz8XM8ZQhqkQPTgMQ==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 02a95bf498a45f402d9932a752691c643c467161 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 Aug 2025 10:58:12 +0900 Subject: [PATCH 189/415] fix(deps): update dependency @line/bot-sdk to v10.2.0 (#234) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8443b52a..495c158f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -453,9 +453,9 @@ } }, "node_modules/@line/bot-sdk": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.1.2.tgz", - "integrity": "sha512-vSoPdwK4IAtzPI34H1SKDO82fibDuydTPw9Mq/gb+ei/NJVoFIeRAfuoww1pYHitX41AYjG6SMAE4BK2rMdjPA==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.2.0.tgz", + "integrity": "sha512-UbYONriZspwEiLhHP+RODMHaXxdhkj35KWoRXP7ysSU8G+2QULvBIBRLo6dmjUgPD5CaTj881zghMMdOg5mVrg==", "license": "Apache-2.0", "dependencies": { "@types/node": "^22.0.0" From 978700d8e2d816bbeb6d760913373ba05dc4248b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 Aug 2025 10:09:35 +0000 Subject: [PATCH 190/415] chore(deps): update actions/setup-node digest to d7a1131 (#235) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/npm-audit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index 243308b4..a0a1b22b 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -17,7 +17,7 @@ jobs: if: github.repository == 'line/line-bot-mcp-server' steps: - uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 - - uses: actions/setup-node@5e2628c959b9ade56971c0afcebbe5332d44b398 + - uses: actions/setup-node@d7a11313b581b306c961b506cfc8971208bb03f6 with: node-version: '24' From 418e95584c614bef85790b56a5b68481786e6649 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 31 Aug 2025 19:03:27 +0900 Subject: [PATCH 191/415] chore(deps): update node.js to v22.19.0 (#236) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 4e5919a7..fdbb10db 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.18-alpine AS builder +FROM node:22.19-alpine AS builder COPY . /app From bfb9ed995f1b3ac5aeb029b456790433ebca90dd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 1 Sep 2025 22:40:49 +0000 Subject: [PATCH 192/415] chore(deps): update pnpm to v10.15.1 (#237) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index eafb63c0..c1de10d9 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.15.0+sha512.486ebc259d3e999a4e8691ce03b5cac4a71cbeca39372a9b762cb500cfdf0873e2cb16abe3d951b1ee2cf012503f027b98b6584e4df22524e0c7450d9ec7aa7b" + "packageManager": "pnpm@10.15.1+sha512.34e538c329b5553014ca8e8f4535997f96180a1d0f614339357449935350d924e22f8614682191264ec33d1462ac21561aff97f6bb18065351c162c7e8f6de67" } From 7d31109e1dda4396e6ced2a77925181cf5b91817 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 2 Sep 2025 17:08:51 +0000 Subject: [PATCH 193/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.17.5 (#239) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 495c158f..8f9b9ab5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.4.tgz", - "integrity": "sha512-zq24hfuAmmlNZvik0FLI58uE5sriN0WWsQzIlYnzSuKDAHFqJtBFrl/LfB1NLgJT5Y7dEBzaX4yAKqOPrcetaw==", + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.5.tgz", + "integrity": "sha512-QakrKIGniGuRVfWBdMsDea/dx1PNE739QJ7gCM41s9q+qaCYTHCdsIBXQVVXry3mfWAiaM9kT22Hyz53Uw8mfg==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", @@ -490,15 +490,6 @@ "node": ">=18" } }, - "node_modules/@modelcontextprotocol/sdk/node_modules/zod-to-json-schema": { - "version": "3.24.6", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz", - "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==", - "license": "ISC", - "peerDependencies": { - "zod": "^3.24.1" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2338,6 +2329,15 @@ "funding": { "url": "https://github.com/sponsors/colinhacks" } + }, + "node_modules/zod-to-json-schema": { + "version": "3.24.6", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz", + "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==", + "license": "ISC", + "peerDependencies": { + "zod": "^3.24.1" + } } } } From 59e1a16a8bfb8e63acfcdff422f1299533ffae4f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 Sep 2025 01:48:18 +0000 Subject: [PATCH 194/415] chore(deps): update actions/setup-node digest to b7234cc (#240) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/npm-audit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index a0a1b22b..646cf836 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -17,7 +17,7 @@ jobs: if: github.repository == 'line/line-bot-mcp-server' steps: - uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 - - uses: actions/setup-node@d7a11313b581b306c961b506cfc8971208bb03f6 + - uses: actions/setup-node@b7234cc9fe124f0f4932554b4e5284543083ae7b with: node-version: '24' From 6275ded7bc68aa38ecf5686f2025cb803ff30345 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 Sep 2025 22:09:43 +0000 Subject: [PATCH 195/415] chore(deps): update actions/setup-node digest to a0853c2 (#242) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/npm-audit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index 646cf836..7db612f4 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -17,7 +17,7 @@ jobs: if: github.repository == 'line/line-bot-mcp-server' steps: - uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 - - uses: actions/setup-node@b7234cc9fe124f0f4932554b4e5284543083ae7b + - uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 with: node-version: '24' From 25c2b7e882c8b196519efc20fdc61e50791c5a27 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 Sep 2025 12:39:57 +0900 Subject: [PATCH 196/415] chore(deps): update actions/setup-node action to v5 (#243) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d55a645b..fb8ca003 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # Setup .npmrc file to publish to GitHub Packages - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + - uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 with: node-version: 24 registry-url: 'https://registry.npmjs.org' diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6e7ee61a..e8d1501e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,7 +27,7 @@ jobs: with: submodules: true - name: Setup Node.js - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 with: node-version: ${{ matrix.node }} cache: 'npm' From 4e203af45fd078d60b1621f0600328af1f94d34a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 Sep 2025 05:54:47 +0000 Subject: [PATCH 197/415] chore(deps): update actions/stale action to v10 (#244) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/close-issue.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/close-issue.yml b/.github/workflows/close-issue.yml index 456cd255..bee59021 100644 --- a/.github/workflows/close-issue.yml +++ b/.github/workflows/close-issue.yml @@ -14,7 +14,7 @@ jobs: pull-requests: write if: github.repository == 'line/line-bot-mcp-server' steps: - - uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9.1.0 + - uses: actions/stale@3a9db7e6a41a89f618792c92c0e97cc736e1b13f # v10.0.0 with: days-before-issue-stale: 28 # 4 weeks days-before-issue-close: 0 From 5cb2bdbb8cfa515af6756b778ef8c4cfb9daa6db Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 Sep 2025 14:41:27 +0000 Subject: [PATCH 198/415] chore(deps): update dependency @types/node to v22.18.1 (#245) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8f9b9ab5..07fd2596 100644 --- a/package-lock.json +++ b/package-lock.json @@ -529,9 +529,9 @@ } }, "node_modules/@types/node": { - "version": "22.18.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.0.tgz", - "integrity": "sha512-m5ObIqwsUp6BZzyiy4RdZpzWGub9bqLJMvZDD0QMXhxjqMHMENlj+SqF5QxoUwaQNFe+8kz8XM8ZQhqkQPTgMQ==", + "version": "22.18.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.1.tgz", + "integrity": "sha512-rzSDyhn4cYznVG+PCzGe1lwuMYJrcBS1fc3JqSa2PvtABwWo+dZ1ij5OVok3tqfpEBCBoaR4d7upFJk73HRJDw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 055b829ca92ba8244c13d209698697835a6e9000 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 Sep 2025 14:41:36 +0000 Subject: [PATCH 199/415] chore(deps): update actions/github-script action to v7.1.0 (#246) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/check-eol-newrelease.yml | 2 +- .github/workflows/create-draft-release.yml | 6 +++--- .github/workflows/npm-audit.yml | 2 +- .github/workflows/release.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/check-eol-newrelease.yml b/.github/workflows/check-eol-newrelease.yml index 0bc21666..512a7ad9 100644 --- a/.github/workflows/check-eol-newrelease.yml +++ b/.github/workflows/check-eol-newrelease.yml @@ -18,7 +18,7 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Run EoL & NewRelease check - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0 with: script: | const checkEolAndNewReleases = require('.github/scripts/check-eol-newrelease.cjs'); diff --git a/.github/workflows/create-draft-release.yml b/.github/workflows/create-draft-release.yml index de5a35e0..5e541f32 100644 --- a/.github/workflows/create-draft-release.yml +++ b/.github/workflows/create-draft-release.yml @@ -48,7 +48,7 @@ jobs: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Fetch Latest Release id: get-latest-release - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0 with: script: | const latestRelease = await github.rest.repos.getLatestRelease({ @@ -64,7 +64,7 @@ jobs: - name: Calculate New Version id: calculate-version - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0 with: script: | const latestTag = '${{ steps.get-latest-release.outputs.latest_tag }}'; @@ -85,7 +85,7 @@ jobs: - name: Generate Release Notes id: generate-release-notes - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0 with: script: | const { data: releaseNotes } = await github.rest.repos.generateReleaseNotes({ diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index 7db612f4..7fe097b0 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -28,7 +28,7 @@ jobs: - name: Create or update reminder issue if: steps.audit.outcome == 'failure' - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0 env: TZ: 'Asia/Tokyo' with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fb8ca003..22a8638a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,7 +37,7 @@ jobs: - name: Create GitHub Issue on Failure if: failure() - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0 with: script: | const { owner, repo } = context.repo; From 9209336de1357af12086a75eb92a9878b5c54fde Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 Sep 2025 16:29:18 +0000 Subject: [PATCH 200/415] chore(deps): update actions/github-script action to v8 (#247) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/check-eol-newrelease.yml | 2 +- .github/workflows/create-draft-release.yml | 6 +++--- .github/workflows/npm-audit.yml | 2 +- .github/workflows/release.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/check-eol-newrelease.yml b/.github/workflows/check-eol-newrelease.yml index 512a7ad9..b83227a0 100644 --- a/.github/workflows/check-eol-newrelease.yml +++ b/.github/workflows/check-eol-newrelease.yml @@ -18,7 +18,7 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Run EoL & NewRelease check - uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0 + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 with: script: | const checkEolAndNewReleases = require('.github/scripts/check-eol-newrelease.cjs'); diff --git a/.github/workflows/create-draft-release.yml b/.github/workflows/create-draft-release.yml index 5e541f32..60120094 100644 --- a/.github/workflows/create-draft-release.yml +++ b/.github/workflows/create-draft-release.yml @@ -48,7 +48,7 @@ jobs: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Fetch Latest Release id: get-latest-release - uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0 + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 with: script: | const latestRelease = await github.rest.repos.getLatestRelease({ @@ -64,7 +64,7 @@ jobs: - name: Calculate New Version id: calculate-version - uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0 + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 with: script: | const latestTag = '${{ steps.get-latest-release.outputs.latest_tag }}'; @@ -85,7 +85,7 @@ jobs: - name: Generate Release Notes id: generate-release-notes - uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0 + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 with: script: | const { data: releaseNotes } = await github.rest.repos.generateReleaseNotes({ diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index 7fe097b0..feb24adb 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -28,7 +28,7 @@ jobs: - name: Create or update reminder issue if: steps.audit.outcome == 'failure' - uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0 + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 env: TZ: 'Asia/Tokyo' with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 22a8638a..08da6dbc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,7 +37,7 @@ jobs: - name: Create GitHub Issue on Failure if: failure() - uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0 + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 with: script: | const { owner, repo } = context.repo; From 6069e0067284d3b5264f251f9a376e5a59538e1f Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Fri, 5 Sep 2025 18:45:46 +0900 Subject: [PATCH 201/415] Use setup-node v4.4.0 instead of the latest with help comment for next version up (#241) NO-ISSUE Use setup-node v4.4.0 instead of the latest with help comment for next version up --- .github/workflows/npm-audit.yml | 6 ++++-- .github/workflows/release.yml | 2 ++ .github/workflows/test.yml | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index feb24adb..bc7827ab 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -16,10 +16,12 @@ jobs: issues: write if: github.repository == 'line/line-bot-mcp-server' steps: - - uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 - - uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: '24' + # Enable this when setup-node v5 is released + # package-manager-cache: false - name: Run npm audit and check diff id: audit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 08da6dbc..9e6afd5f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,6 +22,8 @@ jobs: with: node-version: 24 registry-url: 'https://registry.npmjs.org' + # Enable this when setup-node v5 is released, and release is broken + # package-manager-cache: false - run: npm install - name: Update version in package.json, package-lock.json run: | diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e8d1501e..58f4eb00 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,6 +31,8 @@ jobs: with: node-version: ${{ matrix.node }} cache: 'npm' + # Enable this when setup-node v5 is released, and release is broken + # package-manager-cache: false - name: Install Dependency run: npm ci - name: Build From 24bc84738ef70e758b65fe1c032d6bd03442a8d7 Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Wed, 10 Sep 2025 08:19:05 +0900 Subject: [PATCH 202/415] Set minimumReleaseAge to 7 days to avoid merge renovate PR quickly (#250) NO-ISSUE Set minimumReleaseAge to 7 days to avoid merge renovate PR quickly --- renovate.json5 | 1 + 1 file changed, 1 insertion(+) diff --git a/renovate.json5 b/renovate.json5 index c33b9d56..bc309243 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -7,6 +7,7 @@ timezone: "Asia/Tokyo", automerge: true, platformAutomerge: true, + minimumReleaseAge : "7 days", labels: [ "dependency upgrade" ], From e5bcd3536b1227305b00137ade27bf5ddfd70678 Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Thu, 18 Sep 2025 12:48:15 +0900 Subject: [PATCH 203/415] Fix npm audit (#252) NO-ISSUE fix npm autit --- package-lock.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 07fd2596..716271ac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -574,14 +574,14 @@ "optional": true }, "node_modules/axios": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", - "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", + "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", "license": "MIT", "optional": true, "dependencies": { "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", + "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, From 28107b85d6e7271782d4b5a51ac2983a9c80b7d3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 18 Sep 2025 22:12:47 +0000 Subject: [PATCH 204/415] fix(deps): update dependency @modelcontextprotocol/sdk to v1.18.0 (#253) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 716271ac..1d77f56b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.17.5.tgz", - "integrity": "sha512-QakrKIGniGuRVfWBdMsDea/dx1PNE739QJ7gCM41s9q+qaCYTHCdsIBXQVVXry3mfWAiaM9kT22Hyz53Uw8mfg==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.18.0.tgz", + "integrity": "sha512-JvKyB6YwS3quM+88JPR0axeRgvdDu3Pv6mdZUy+w4qVkCzGgumb9bXG/TmtDRQv+671yaofVfXSQmFLlWU5qPQ==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", From 505f107831c8ef2abae50f3091edcdbc0465e484 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Sep 2025 16:31:01 +0000 Subject: [PATCH 205/415] chore(deps): update pnpm to v10.16.0 (#254) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c1de10d9..e266b7a7 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.15.1+sha512.34e538c329b5553014ca8e8f4535997f96180a1d0f614339357449935350d924e22f8614682191264ec33d1462ac21561aff97f6bb18065351c162c7e8f6de67" + "packageManager": "pnpm@10.16.0+sha512.8066e7b034217b700a9a4dbb3a005061d641ba130a89915213a10b3ca4919c19c037bec8066afdc559b89635fdb806b16ea673f2468fbb28aabfa13c53e3f769" } From 720188866c275973d018909e8f91b41e2951613f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Sep 2025 20:29:12 +0000 Subject: [PATCH 206/415] chore(deps): update dependency @types/node to v22.18.2 (#255) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1d77f56b..ad152c51 100644 --- a/package-lock.json +++ b/package-lock.json @@ -529,9 +529,9 @@ } }, "node_modules/@types/node": { - "version": "22.18.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.1.tgz", - "integrity": "sha512-rzSDyhn4cYznVG+PCzGe1lwuMYJrcBS1fc3JqSa2PvtABwWo+dZ1ij5OVok3tqfpEBCBoaR4d7upFJk73HRJDw==", + "version": "22.18.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.2.tgz", + "integrity": "sha512-lif9hF9afNk39jMUVYk5eyYEojLZQqaYX61LfuwUJJ1+qiQbh7jVaZXskYgzyjAIFDFQRf5Sd6MVM7EyXkfiRw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 90cff609c6e691da3d90aa1c0aa43e327c9ffc21 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 20 Sep 2025 00:35:58 +0000 Subject: [PATCH 207/415] chore(deps): update dependency @types/node to v22.18.3 (#256) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index ad152c51..9e283943 100644 --- a/package-lock.json +++ b/package-lock.json @@ -529,9 +529,9 @@ } }, "node_modules/@types/node": { - "version": "22.18.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.2.tgz", - "integrity": "sha512-lif9hF9afNk39jMUVYk5eyYEojLZQqaYX61LfuwUJJ1+qiQbh7jVaZXskYgzyjAIFDFQRf5Sd6MVM7EyXkfiRw==", + "version": "22.18.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.3.tgz", + "integrity": "sha512-gTVM8js2twdtqM+AE2PdGEe9zGQY4UvmFjan9rZcVb6FGdStfjWoWejdmy4CfWVO9rh5MiYQGZloKAGkJt8lMw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From e2ee3e83e748a7db89c9062a706132566f54756f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 20 Sep 2025 21:16:25 +0000 Subject: [PATCH 208/415] chore(deps): update pnpm to v10.16.1 (#257) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e266b7a7..a4c15cb7 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.16.0+sha512.8066e7b034217b700a9a4dbb3a005061d641ba130a89915213a10b3ca4919c19c037bec8066afdc559b89635fdb806b16ea673f2468fbb28aabfa13c53e3f769" + "packageManager": "pnpm@10.16.1+sha512.0e155aa2629db8672b49e8475da6226aa4bdea85fdcdfdc15350874946d4f3c91faaf64cbdc4a5d1ab8002f473d5c3fcedcd197989cf0390f9badd3c04678706" } From 13a0974cf58c66e3a90c1793266d8dfc764cfac1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Sep 2025 21:40:13 +0000 Subject: [PATCH 209/415] chore(deps): update dependency @types/node to v22.18.4 (#258) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9e283943..ea01fb97 100644 --- a/package-lock.json +++ b/package-lock.json @@ -529,9 +529,9 @@ } }, "node_modules/@types/node": { - "version": "22.18.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.3.tgz", - "integrity": "sha512-gTVM8js2twdtqM+AE2PdGEe9zGQY4UvmFjan9rZcVb6FGdStfjWoWejdmy4CfWVO9rh5MiYQGZloKAGkJt8lMw==", + "version": "22.18.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.4.tgz", + "integrity": "sha512-UJdblFqXymSBhmZf96BnbisoFIr8ooiiBRMolQgg77Ea+VM37jXw76C2LQr9n8wm9+i/OvlUlW6xSvqwzwqznw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 9b5ccffe14f6bc2b2fa17a556c72f1aca0d066f1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 24 Sep 2025 02:52:38 +0000 Subject: [PATCH 210/415] chore(deps): update dependency @types/node to v22.18.5 (#259) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index ea01fb97..0c501a73 100644 --- a/package-lock.json +++ b/package-lock.json @@ -529,9 +529,9 @@ } }, "node_modules/@types/node": { - "version": "22.18.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.4.tgz", - "integrity": "sha512-UJdblFqXymSBhmZf96BnbisoFIr8ooiiBRMolQgg77Ea+VM37jXw76C2LQr9n8wm9+i/OvlUlW6xSvqwzwqznw==", + "version": "22.18.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.5.tgz", + "integrity": "sha512-g9BpPfJvxYBXUWI9bV37j6d6LTMNQ88hPwdWWUeYZnMhlo66FIg9gCc1/DZb15QylJSKwOZjwrckvOTWpOiChg==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 1d725c574086f709ea19d916cb31b4285aef38ed Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 24 Sep 2025 17:44:57 +0000 Subject: [PATCH 211/415] chore(deps): update pnpm to v10.17.0 (#260) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a4c15cb7..50d82f91 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.16.1+sha512.0e155aa2629db8672b49e8475da6226aa4bdea85fdcdfdc15350874946d4f3c91faaf64cbdc4a5d1ab8002f473d5c3fcedcd197989cf0390f9badd3c04678706" + "packageManager": "pnpm@10.17.0+sha512.fce8a3dd29a4ed2ec566fb53efbb04d8c44a0f05bc6f24a73046910fb9c3ce7afa35a0980500668fa3573345bd644644fa98338fa168235c80f4aa17aa17fbef" } From fb05b095ff054bd3e5e589d69bb7084ea021f337 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 25 Sep 2025 20:33:32 +0000 Subject: [PATCH 212/415] chore(deps): update dependency @modelcontextprotocol/sdk to v1.18.1 (#262) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0c501a73..76d003dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.18.0.tgz", - "integrity": "sha512-JvKyB6YwS3quM+88JPR0axeRgvdDu3Pv6mdZUy+w4qVkCzGgumb9bXG/TmtDRQv+671yaofVfXSQmFLlWU5qPQ==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.18.1.tgz", + "integrity": "sha512-d//GE8/Yh7aC3e7p+kZG8JqqEAwwDUmAfvH1quogtbk+ksS6E0RR6toKKESPYYZVre0meqkJb27zb+dhqE9Sgw==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", @@ -1020,6 +1020,7 @@ "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", "license": "MIT", + "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.0", @@ -2326,6 +2327,7 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } From d0fe9b4e73976908b3ebc87b42688eee895d8d1e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 26 Sep 2025 02:12:48 +0000 Subject: [PATCH 213/415] chore(deps): update dependency @types/node to v22.18.6 (#261) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 76d003dd..7cc960ed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -529,9 +529,9 @@ } }, "node_modules/@types/node": { - "version": "22.18.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.5.tgz", - "integrity": "sha512-g9BpPfJvxYBXUWI9bV37j6d6LTMNQ88hPwdWWUeYZnMhlo66FIg9gCc1/DZb15QylJSKwOZjwrckvOTWpOiChg==", + "version": "22.18.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.6.tgz", + "integrity": "sha512-r8uszLPpeIWbNKtvWRt/DbVi5zbqZyj1PTmhRMqBMvDnaz1QpmSKujUtJLrqGZeoM8v72MfYggDceY4K1itzWQ==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From cc47b3976ce6c1c25b3abb0163ce6a0a34ab74a5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 27 Sep 2025 21:49:25 +0000 Subject: [PATCH 214/415] chore(deps): update node.js to v22.20.0 (#263) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index fdbb10db..4e3efab3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.19-alpine AS builder +FROM node:22.20-alpine AS builder COPY . /app From 47b47951f3a46c14887258031b75066d666b2b2a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 Sep 2025 14:26:19 +0000 Subject: [PATCH 215/415] chore(deps): update pnpm to v10.17.1 (#264) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 50d82f91..bea066b6 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.17.0+sha512.fce8a3dd29a4ed2ec566fb53efbb04d8c44a0f05bc6f24a73046910fb9c3ce7afa35a0980500668fa3573345bd644644fa98338fa168235c80f4aa17aa17fbef" + "packageManager": "pnpm@10.17.1+sha512.17c560fca4867ae9473a3899ad84a88334914f379be46d455cbf92e5cf4b39d34985d452d2583baf19967fa76cb5c17bc9e245529d0b98745721aa7200ecaf7a" } From 7116d3661f319c1810c0180b503927e9af7063d0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 1 Oct 2025 03:35:53 +0000 Subject: [PATCH 216/415] chore(deps): update dependency @line/bot-sdk to v10.3.0 (#265) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7cc960ed..92ba080e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -453,9 +453,9 @@ } }, "node_modules/@line/bot-sdk": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.2.0.tgz", - "integrity": "sha512-UbYONriZspwEiLhHP+RODMHaXxdhkj35KWoRXP7ysSU8G+2QULvBIBRLo6dmjUgPD5CaTj881zghMMdOg5mVrg==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.3.0.tgz", + "integrity": "sha512-+8EWzaU9v8XBGWA1UhYTHQvwP2SQ/ohoOQGa6Q3kaLdFmTomj5sPpsOOG4lHDLBuRhf9qmNclXJHSVQmPgmE6w==", "license": "Apache-2.0", "dependencies": { "@types/node": "^22.0.0" From b799211e685219944820d7e72bd1c4e4df415457 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 Oct 2025 17:53:54 +0000 Subject: [PATCH 217/415] chore(deps): update dependency @modelcontextprotocol/sdk to v1.18.2 (#266) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 92ba080e..2de7d810 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.18.1.tgz", - "integrity": "sha512-d//GE8/Yh7aC3e7p+kZG8JqqEAwwDUmAfvH1quogtbk+ksS6E0RR6toKKESPYYZVre0meqkJb27zb+dhqE9Sgw==", + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.18.2.tgz", + "integrity": "sha512-beedclIvFcCnPrYgHsylqiYJVJ/CI47Vyc4tY8no1/Li/O8U4BTlJfy6ZwxkYwx+Mx10nrgwSVrA7VBbhh4slg==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", From 190adabe83bd96ea04b6653b5bedf818db8eebb2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Oct 2025 06:04:03 +0000 Subject: [PATCH 218/415] chore(deps): update dependency tsx to v4.20.6 (#267) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2de7d810..c75ecd39 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2221,9 +2221,9 @@ } }, "node_modules/tsx": { - "version": "4.20.5", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.5.tgz", - "integrity": "sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw==", + "version": "4.20.6", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz", + "integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==", "dev": true, "license": "MIT", "dependencies": { From 43686f1b6bb7a41b9b4b850a0f8b3ebb881cafdc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 6 Oct 2025 20:40:43 +0000 Subject: [PATCH 219/415] chore(deps): update dependency @types/node to v22.18.7 (#268) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c75ecd39..f0512f7a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -529,9 +529,9 @@ } }, "node_modules/@types/node": { - "version": "22.18.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.6.tgz", - "integrity": "sha512-r8uszLPpeIWbNKtvWRt/DbVi5zbqZyj1PTmhRMqBMvDnaz1QpmSKujUtJLrqGZeoM8v72MfYggDceY4K1itzWQ==", + "version": "22.18.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.7.tgz", + "integrity": "sha512-3E97nlWEVp2V6J7aMkR8eOnw/w0pArPwf/5/W0865f+xzBoGL/ZuHkTAKAGN7cOWNwd+sG+hZOqj+fjzeHS75g==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 556431ca8f5203afef1408c9f8f507abd8280e5a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Oct 2025 04:50:35 +0000 Subject: [PATCH 220/415] chore(deps): update dependency @types/node to v22.18.8 (#270) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f0512f7a..9a255e96 100644 --- a/package-lock.json +++ b/package-lock.json @@ -529,9 +529,9 @@ } }, "node_modules/@types/node": { - "version": "22.18.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.7.tgz", - "integrity": "sha512-3E97nlWEVp2V6J7aMkR8eOnw/w0pArPwf/5/W0865f+xzBoGL/ZuHkTAKAGN7cOWNwd+sG+hZOqj+fjzeHS75g==", + "version": "22.18.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.8.tgz", + "integrity": "sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 882997efaee6ad6f10a2e1475375708707a84e86 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Oct 2025 04:50:48 +0000 Subject: [PATCH 221/415] chore(deps): update dependency typescript to v5.9.3 (#271) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9a255e96..aebf8172 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2255,9 +2255,9 @@ } }, "node_modules/typescript": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", - "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", "bin": { From 9256108412955eef5be72c1a9014ca1fc356d899 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 9 Oct 2025 17:01:00 +0000 Subject: [PATCH 222/415] chore(deps): update pnpm to v10.18.0 (#272) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bea066b6..3c5fe7fa 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.17.1+sha512.17c560fca4867ae9473a3899ad84a88334914f379be46d455cbf92e5cf4b39d34985d452d2583baf19967fa76cb5c17bc9e245529d0b98745721aa7200ecaf7a" + "packageManager": "pnpm@10.18.0+sha512.e804f889f1cecc40d572db084eec3e4881739f8dec69c0ff10d2d1beff9a4e309383ba27b5b750059d7f4c149535b6cd0d2cb1ed3aeb739239a4284a68f40cfa" } From 131d29db55152b652240d0e5b4d4b110f9426b2e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 9 Oct 2025 21:37:57 +0000 Subject: [PATCH 223/415] chore(deps): update dependency @modelcontextprotocol/sdk to v1.19.1 (#273) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index aebf8172..34469137 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.18.2.tgz", - "integrity": "sha512-beedclIvFcCnPrYgHsylqiYJVJ/CI47Vyc4tY8no1/Li/O8U4BTlJfy6ZwxkYwx+Mx10nrgwSVrA7VBbhh4slg==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.19.1.tgz", + "integrity": "sha512-3Y2h3MZKjec1eAqSTBclATlX+AbC6n1LgfVzRMJLt3v6w0RCYgwLrjbxPDbhsYHt6Wdqc/aCceNJYgj448ELQQ==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", From f2ecf343f75407939fef533d2d0bbaa3c9d166de Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 Oct 2025 21:10:06 +0000 Subject: [PATCH 224/415] chore(deps): update actions/stale action to v10.1.0 (#274) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/close-issue.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/close-issue.yml b/.github/workflows/close-issue.yml index bee59021..d1457e95 100644 --- a/.github/workflows/close-issue.yml +++ b/.github/workflows/close-issue.yml @@ -14,7 +14,7 @@ jobs: pull-requests: write if: github.repository == 'line/line-bot-mcp-server' steps: - - uses: actions/stale@3a9db7e6a41a89f618792c92c0e97cc736e1b13f # v10.0.0 + - uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 # v10.1.0 with: days-before-issue-stale: 28 # 4 weeks days-before-issue-close: 0 From 37c09c159331ee06cc42d492507529d9039a18fe Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Oct 2025 13:44:15 +0000 Subject: [PATCH 225/415] chore(deps): update pnpm to v10.18.1 (#275) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3c5fe7fa..088b4200 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.18.0+sha512.e804f889f1cecc40d572db084eec3e4881739f8dec69c0ff10d2d1beff9a4e309383ba27b5b750059d7f4c149535b6cd0d2cb1ed3aeb739239a4284a68f40cfa" + "packageManager": "pnpm@10.18.1+sha512.77a884a165cbba2d8d1c19e3b4880eee6d2fcabd0d879121e282196b80042351d5eb3ca0935fa599da1dc51265cc68816ad2bddd2a2de5ea9fdf92adbec7cd34" } From dbb617f229c464982e27bd5d7ad335517975d015 Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Wed, 15 Oct 2025 09:43:32 +0900 Subject: [PATCH 226/415] Prevent command injection when creating release notes (#276) NO-ISSUE Prevent command injection when creating release notes --- .github/workflows/create-draft-release.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/create-draft-release.yml b/.github/workflows/create-draft-release.yml index 60120094..beb9d00f 100644 --- a/.github/workflows/create-draft-release.yml +++ b/.github/workflows/create-draft-release.yml @@ -106,7 +106,8 @@ jobs: .concat(`\n\n${footer}`); console.log(`releaseNotes (modified): ${JSON.stringify(modifiedBody, null, 2)}`); - core.setOutput("release_body", modifiedBody); + const fs = require('fs'); + fs.writeFileSync('release-notes.txt', modifiedBody, { encoding: 'utf8' }); - name: Prepare Release Title id: title @@ -118,10 +119,6 @@ jobs: SANITIZED_TITLE="$(printf '%s' "$RAW_TITLE" | sed 's/"/\\"/g')" echo "sanitized_title=$SANITIZED_TITLE" >> "$GITHUB_OUTPUT" - - name: Write Release Notes to File - run: | - echo "${{ steps.generate-release-notes.outputs.release_body }}" > release-notes.txt - - name: Create Draft Release run: | gh release create "${{ steps.calculate-version.outputs.new_version }}" \ From ce7a9473b235ed107712ce70dad9648876474494 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Oct 2025 21:49:21 +0000 Subject: [PATCH 227/415] chore(deps): update dependency @types/node to v22.18.9 (#277) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 34469137..db84cc9a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -529,9 +529,9 @@ } }, "node_modules/@types/node": { - "version": "22.18.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.8.tgz", - "integrity": "sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==", + "version": "22.18.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.9.tgz", + "integrity": "sha512-5yBtK0k/q8PjkMXbTfeIEP/XVYnz1R9qZJ3yUicdEW7ppdDJfe+MqXEhpqDL3mtn4Wvs1u0KLEG0RXzCgNpsSg==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 1b5fc7b2867fb147ba8527b69fee5a7419299656 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Oct 2025 21:49:36 +0000 Subject: [PATCH 228/415] chore(deps): update pnpm to v10.18.2 (#278) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 088b4200..875381c7 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.18.1+sha512.77a884a165cbba2d8d1c19e3b4880eee6d2fcabd0d879121e282196b80042351d5eb3ca0935fa599da1dc51265cc68816ad2bddd2a2de5ea9fdf92adbec7cd34" + "packageManager": "pnpm@10.18.2+sha512.9fb969fa749b3ade6035e0f109f0b8a60b5d08a1a87fdf72e337da90dcc93336e2280ca4e44f2358a649b83c17959e9993e777c2080879f3801e6f0d999ad3dd" } From ec74b3c60f9db2ed37fb2b513f13c26624ad10db Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Oct 2025 02:53:37 +0000 Subject: [PATCH 229/415] chore(deps): update dependency @modelcontextprotocol/sdk to v1.20.0 (#279) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index db84cc9a..9bc168e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.19.1.tgz", - "integrity": "sha512-3Y2h3MZKjec1eAqSTBclATlX+AbC6n1LgfVzRMJLt3v6w0RCYgwLrjbxPDbhsYHt6Wdqc/aCceNJYgj448ELQQ==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.20.0.tgz", + "integrity": "sha512-kOQ4+fHuT4KbR2iq2IjeV32HiihueuOf1vJkq18z08CLZ1UQrTc8BXJpVfxZkq45+inLLD+D4xx4nBjUelJa4Q==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", From 693c0d5fbb3c33bd58f50709884d6d3d9f015967 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 18 Oct 2025 18:05:52 +0000 Subject: [PATCH 230/415] chore(deps): update dependency @types/node to v22.18.10 (#280) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9bc168e7..3aaaaf4f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -529,9 +529,9 @@ } }, "node_modules/@types/node": { - "version": "22.18.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.9.tgz", - "integrity": "sha512-5yBtK0k/q8PjkMXbTfeIEP/XVYnz1R9qZJ3yUicdEW7ppdDJfe+MqXEhpqDL3mtn4Wvs1u0KLEG0RXzCgNpsSg==", + "version": "22.18.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.10.tgz", + "integrity": "sha512-anNG/V/Efn/YZY4pRzbACnKxNKoBng2VTFydVu8RRs5hQjikP8CQfaeAV59VFSCzKNp90mXiVXW2QzV56rwMrg==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From d0a6f376f683d7e9bafd3b0579ced277c123570e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 21 Oct 2025 05:40:06 +0000 Subject: [PATCH 231/415] chore(deps): update actions/setup-node action to v6 (#281) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/npm-audit.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index bc7827ab..d5dfb8ca 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -17,7 +17,7 @@ jobs: if: github.repository == 'line/line-bot-mcp-server' steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: '24' # Enable this when setup-node v5 is released diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9e6afd5f..4941e565 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 # Setup .npmrc file to publish to GitHub Packages - - uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 + - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: 24 registry-url: 'https://registry.npmjs.org' diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 58f4eb00..5e14c35e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,7 +27,7 @@ jobs: with: submodules: true - name: Setup Node.js - uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 + uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: ${{ matrix.node }} cache: 'npm' From 83deeb01f88078e3a4354ac9dae032cc3338f934 Mon Sep 17 00:00:00 2001 From: ppaauuoo <60506291+ppaauuoo@users.noreply.github.com> Date: Tue, 21 Oct 2025 16:13:15 +0700 Subject: [PATCH 232/415] Fix README.md (#269) * Fix README.md fix user_id to userId and content to contents according to the api * Update README.md --------- Co-authored-by: Motoi Okuzono --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 0ebfa902..9e1ae680 100644 --- a/README.md +++ b/README.md @@ -16,14 +16,14 @@ 1. **push_text_message** - Push a simple text message to a user via LINE. - **Inputs:** - - `user_id` (string?): The user ID to receive a message. Defaults to DESTINATION_USER_ID. Either `user_id` or `DESTINATION_USER_ID` must be set. + - `userId` (string?): The user ID to receive a message. Defaults to DESTINATION_USER_ID. Either `userId` or `DESTINATION_USER_ID` must be set. - `message.text` (string): The plain text content to send to the user. 2. **push_flex_message** - Push a highly customizable flex message to a user via LINE. - **Inputs:** - - `user_id` (string?): The user ID to receive a message. Defaults to DESTINATION_USER_ID. Either `user_id` or `DESTINATION_USER_ID` must be set. + - `userId` (string?): The user ID to receive a message. Defaults to DESTINATION_USER_ID. Either `userId` or `DESTINATION_USER_ID` must be set. - `message.altText` (string): Alternative text shown when flex message cannot be displayed. - - `message.content` (any): The content of the flex message. This is a JSON object that defines the layout and components of the message. + - `message.contents` (any): The contents of the flex message. This is a JSON object that defines the layout and components of the message. - `message.contents.type` (enum): Type of the container. 'bubble' for single container, 'carousel' for multiple swipeable bubbles. 3. **broadcast_text_message** - Broadcast a simple text message via LINE to all users who have followed your LINE Official Account. @@ -33,12 +33,12 @@ - Broadcast a highly customizable flex message via LINE to all users who have added your LINE Official Account. - **Inputs:** - `message.altText` (string): Alternative text shown when flex message cannot be displayed. - - `message.content` (any): The content of the flex message. This is a JSON object that defines the layout and components of the message. + - `message.contents` (any): The contents of the flex message. This is a JSON object that defines the layout and components of the message. - `message.contents.type` (enum): Type of the container. 'bubble' for single container, 'carousel' for multiple swipeable bubbles. 5. **get_profile** - Get detailed profile information of a LINE user including display name, profile picture URL, status message and language. - **Inputs:** - - `user_id` (string?): The ID of the user whose profile you want to retrieve. Defaults to DESTINATION_USER_ID. + - `userId` (string?): The ID of the user whose profile you want to retrieve. Defaults to DESTINATION_USER_ID. 6. **get_message_quota** - Get the message quota and consumption of the LINE Official Account. This shows the monthly message limit and current usage. - **Inputs:** @@ -78,7 +78,7 @@ Please add the following configuration for an AI Agent like Claude Desktop or Cl Set the environment variables or arguments as follows: - `CHANNEL_ACCESS_TOKEN`: (required) Channel Access Token. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/basics/channel-access-token/#long-lived-channel-access-token). -- `DESTINATION_USER_ID`: (optional) The default user ID of the recipient. If the Tool's input does not include `user_id`, `DESTINATION_USER_ID` is required. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-user-ids/#get-own-user-id). +- `DESTINATION_USER_ID`: (optional) The default user ID of the recipient. If the Tool's input does not include `userId`, `DESTINATION_USER_ID` is required. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-user-ids/#get-own-user-id). ```json { @@ -128,7 +128,7 @@ Set the environment variables or arguments as follows: - `mcpServers.args`: (required) The path to `line-bot-mcp-server`. - `CHANNEL_ACCESS_TOKEN`: (required) Channel Access Token. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/basics/channel-access-token/#long-lived-channel-access-token). -- `DESTINATION_USER_ID`: (optional) The default user ID of the recipient. If the Tool's input does not include `user_id`, `DESTINATION_USER_ID` is required. +- `DESTINATION_USER_ID`: (optional) The default user ID of the recipient. If the Tool's input does not include `userId`, `DESTINATION_USER_ID` is required. You can confirm this by following [this instructions](https://developers.line.biz/en/docs/messaging-api/getting-user-ids/#get-own-user-id). From 0d8b96a510b07ed12d73a5e9bbccd3a5941737ed Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 21 Oct 2025 20:50:09 +0000 Subject: [PATCH 233/415] chore(deps): update pnpm to v10.18.3 (#283) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 875381c7..09e493a5 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.18.2+sha512.9fb969fa749b3ade6035e0f109f0b8a60b5d08a1a87fdf72e337da90dcc93336e2280ca4e44f2358a649b83c17959e9993e777c2080879f3801e6f0d999ad3dd" + "packageManager": "pnpm@10.18.3+sha512.bbd16e6d7286fd7e01f6b3c0b3c932cda2965c06a908328f74663f10a9aea51f1129eea615134bf992831b009eabe167ecb7008b597f40ff9bc75946aadfb08d" } From 6901a0c6474acda50d6d671aa80a98c2d62c0ca4 Mon Sep 17 00:00:00 2001 From: Motoi Okuzono Date: Wed, 22 Oct 2025 08:39:41 +0900 Subject: [PATCH 234/415] Fix Japanese README same as #269 (#282) --- README.ja.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.ja.md b/README.ja.md index d637d3cd..1bf3e04d 100644 --- a/README.ja.md +++ b/README.ja.md @@ -14,14 +14,14 @@ LINE公式アカウントとAI Agentを接続するために、LINE Messaging AP 1. **push_text_message** - LINEでユーザーにシンプルなテキストメッセージを送信する。 - **入力:** - - `user_id` (string?): メッセージ受信者のユーザーID。デフォルトはDESTINATION_USER_ID。`user_id`または`DESTINATION_USER_ID`のどちらか一方は必ず設定する必要があります。 + - `userId` (string?): メッセージ受信者のユーザーID。デフォルトはDESTINATION_USER_ID。`user_id`または`DESTINATION_USER_ID`のどちらか一方は必ず設定する必要があります。 - `message.text` (string): ユーザーに送信するテキスト。 2. **push_flex_message** - LINEでユーザーに高度にカスタマイズ可能なフレックスメッセージを送信する。 - **入力:** - `user_id` (string?): メッセージ受信者のユーザーID。デフォルトはDESTINATION_USER_ID。`user_id`または`DESTINATION_USER_ID`のどちらか一方は必ず設定する必要があります。 - `message.altText` (string): フレックスメッセージが表示できない場合に表示される代替テキスト。 - - `message.content` (any): フレックスメッセージの内容。メッセージのレイアウトとコンポーネントを定義するJSONオブジェクト。 + - `message.contents` (any): フレックスメッセージの内容。メッセージのレイアウトとコンポーネントを定義するJSONオブジェクト。 - `message.contents.type` (enum): コンテナのタイプ。'bubble'は単一コンテナ、'carousel'は複数のスワイプ可能なバブルを示す。 3. **broadcast_text_message** - LINE公式アカウントと友だちになっているすべてのユーザーに、LINEでシンプルなテキストメッセージを送信する。 @@ -31,12 +31,12 @@ LINE公式アカウントとAI Agentを接続するために、LINE Messaging AP - LINE公式アカウントと友だちになっているすべてのユーザーに、LINEで高度にカスタマイズ可能なフレックスメッセージを送信する。 - **入力:** - `message.altText` (string): フレックスメッセージが表示できない場合に表示される代替テキスト。 - - `message.content` (any): フレックスメッセージの内容。メッセージのレイアウトとコンポーネントを定義するJSONオブジェクト。 + - `message.contents` (any): フレックスメッセージの内容。メッセージのレイアウトとコンポーネントを定義するJSONオブジェクト。 - `message.contents.type` (enum): コンテナのタイプ。'bubble'は単一コンテナ、'carousel'は複数のスワイプ可能なバブルを示す。 5. **get_profile** - LINEユーザーの詳細なプロフィール情報を取得する。表示名、プロフィール画像URL、ステータスメッセージ、言語を取得できる。 - **入力:** - - `user_id` (string?): プロフィールを取得したいユーザーのユーザーID。デフォルトはDESTINATION_USER_ID。`user_id`または`DESTINATION_USER_ID`のどちらか一方は必ず設定する必要があります。 + - `userId` (string?): プロフィールを取得したいユーザーのユーザーID。デフォルトはDESTINATION_USER_ID。`user_id`または`DESTINATION_USER_ID`のどちらか一方は必ず設定する必要があります。 6. **get_message_quota** - LINE公式アカウントのメッセージ容量と消費量を取得します。月間メッセージ制限と現在の使用量が表示されます。 - **入力:** @@ -76,7 +76,7 @@ Claude DesktopやClaudeなどのAI Agentに次の設定を追加してくださ 環境変数や引数は次のように設定してください: - `CHANNEL_ACCESS_TOKEN`: (必須) チャネルアクセストークン。これを取得するには、[こちらの手順](https://developers.line.biz/ja/docs/basics/channel-access-token/#long-lived-channel-access-token)に従ってください。 -- `DESTINATION_USER_ID`: (オプション) デフォルトのメッセージ受信者のユーザーID。Toolの入力に`user_id`が含まれていない場合、`DESTINATION_USER_ID`は必ず設定する必要があります。これを確認するには、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-user-ids/#get-own-user-id)に従ってください。 +- `DESTINATION_USER_ID`: (オプション) デフォルトのメッセージ受信者のユーザーID。Toolの入力に`userId`が含まれていない場合、`DESTINATION_USER_ID`は必ず設定する必要があります。これを確認するには、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-user-ids/#get-own-user-id)に従ってください。 ```json { @@ -124,7 +124,7 @@ Claude DesktopやClaudeなどのAI Agentに次の設定を追加してくださ - `mcpServers.args`: (必須) `line-bot-mcp-server`へのパス。 - `CHANNEL_ACCESS_TOKEN`: (必須) チャネルアクセストークン。これを取得するには、[こちらの手順](https://developers.line.biz/ja/docs/basics/channel-access-token/#long-lived-channel-access-token)に従ってください。 -- `DESTINATION_USER_ID`: (オプション) デフォルトのメッセージ受信者のユーザーID。Toolの入力に`user_id`が含まれていない場合、`DESTINATION_USER_ID`は必ず設定する必要があります。これを確認するには、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-user-ids/#get-own-user-id)に従ってください。 +- `DESTINATION_USER_ID`: (オプション) デフォルトのメッセージ受信者のユーザーID。Toolの入力に`userId`が含まれていない場合、`DESTINATION_USER_ID`は必ず設定する必要があります。これを確認するには、[こちらの手順](https://developers.line.biz/ja/docs/messaging-api/getting-user-ids/#get-own-user-id)に従ってください。 ```json { @@ -180,4 +180,4 @@ npm run build npx @modelcontextprotocol/inspector node dist/index.js ``` -これにより、MCP Inspector インターフェースが起動し、LINE Bot MCP Server のツールを操作して機能をテストできます。 \ No newline at end of file +これにより、MCP Inspector インターフェースが起動し、LINE Bot MCP Server のツールを操作して機能をテストできます。 From 92d53f8b7d8b12a80d3ca619c3467f5a8f9c4be3 Mon Sep 17 00:00:00 2001 From: koichi uchinishi Date: Wed, 22 Oct 2025 14:13:18 +0900 Subject: [PATCH 235/415] Add environment variable examples to MCP Inspector command (#249) add inspector env variables Co-authored-by: Yuta Euchi <63095160+eucyt@users.noreply.github.com> --- README.ja.md | 4 +++- README.md | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/README.ja.md b/README.ja.md index 1bf3e04d..11f268a5 100644 --- a/README.ja.md +++ b/README.ja.md @@ -177,7 +177,9 @@ npm run build プロジェクトをビルドした後、MCP Inspector を起動できます: ```bash -npx @modelcontextprotocol/inspector node dist/index.js +npx @modelcontextprotocol/inspector node dist/index.js \ + -e CHANNEL_ACCESS_TOKEN="YOUR_CHANNEL_ACCESS_TOKEN" \ + -e DESTINATION_USER_ID="YOUR_DESTINATION_USER_ID" ``` これにより、MCP Inspector インターフェースが起動し、LINE Bot MCP Server のツールを操作して機能をテストできます。 diff --git a/README.md b/README.md index 9e1ae680..25ecfff4 100644 --- a/README.md +++ b/README.md @@ -183,7 +183,9 @@ npm run build After building the project, you can start the MCP Inspector: ```bash -npx @modelcontextprotocol/inspector node dist/index.js +npx @modelcontextprotocol/inspector node dist/index.js \ + -e CHANNEL_ACCESS_TOKEN="YOUR_CHANNEL_ACCESS_TOKEN" \ + -e DESTINATION_USER_ID="YOUR_DESTINATION_USER_ID" ``` This will start the MCP Inspector interface where you can interact with the LINE Bot MCP Server tools and test their functionality. From af3ce008d7ea8672f18c246c5103530a18e5517d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 24 Oct 2025 01:59:24 +0000 Subject: [PATCH 236/415] chore(deps): update dependency @modelcontextprotocol/sdk to v1.20.1 (#285) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3aaaaf4f..07783720 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,9 +468,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.20.0.tgz", - "integrity": "sha512-kOQ4+fHuT4KbR2iq2IjeV32HiihueuOf1vJkq18z08CLZ1UQrTc8BXJpVfxZkq45+inLLD+D4xx4nBjUelJa4Q==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.20.1.tgz", + "integrity": "sha512-j/P+yuxXfgxb+mW7OEoRCM3G47zCTDqUPivJo/VzpjbG8I9csTXtOprCf5FfOfHK4whOJny0aHuBEON+kS7CCA==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", From df903b274bb50f55ef110233aab23012e473d8ac Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 24 Oct 2025 08:05:58 +0000 Subject: [PATCH 237/415] chore(deps): update dependency @types/node to v22.18.11 (#286) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 07783720..57086910 100644 --- a/package-lock.json +++ b/package-lock.json @@ -529,9 +529,9 @@ } }, "node_modules/@types/node": { - "version": "22.18.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.10.tgz", - "integrity": "sha512-anNG/V/Efn/YZY4pRzbACnKxNKoBng2VTFydVu8RRs5hQjikP8CQfaeAV59VFSCzKNp90mXiVXW2QzV56rwMrg==", + "version": "22.18.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.11.tgz", + "integrity": "sha512-Gd33J2XIrXurb+eT2ktze3rJAfAp9ZNjlBdh4SVgyrKEOADwCbdUDaK7QgJno8Ue4kcajscsKqu6n8OBG3hhCQ==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 55530e017278003e4d3353b3baefeca2a90c97fb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 28 Oct 2025 02:02:49 +0000 Subject: [PATCH 238/415] chore(deps): update dependency @types/node to v22.18.12 (#288) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 57086910..7421ab0e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -529,9 +529,9 @@ } }, "node_modules/@types/node": { - "version": "22.18.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.11.tgz", - "integrity": "sha512-Gd33J2XIrXurb+eT2ktze3rJAfAp9ZNjlBdh4SVgyrKEOADwCbdUDaK7QgJno8Ue4kcajscsKqu6n8OBG3hhCQ==", + "version": "22.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.12.tgz", + "integrity": "sha512-BICHQ67iqxQGFSzfCFTT7MRQ5XcBjG5aeKh5Ok38UBbPe5fxTyE+aHFxwVrGyr8GNlqFMLKD1D3P2K/1ks8tog==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From f60aaf143aa2daada5fc829d886a57e3dd443fcc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 28 Oct 2025 05:53:22 +0000 Subject: [PATCH 239/415] chore(deps): update node.js to v24 (#289) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 4 ++-- package-lock.json | 27 ++++++++++++++++++++++----- package.json | 2 +- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4e3efab3..acd9826d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.20-alpine AS builder +FROM node:24.9-alpine AS builder COPY . /app @@ -9,7 +9,7 @@ RUN --mount=type=cache,target=/root/.npm-production npm ci --ignore-scripts --om RUN --mount=type=cache,target=/root/.npm npm run build # --- Release Stage --- -FROM node:22-alpine AS release +FROM node:24-alpine AS release # Set up a non-root user ('appuser'/'appgroup') to avoid running as root - good security practice! # (-S is the Alpine option for a system user/group, suitable here) diff --git a/package-lock.json b/package-lock.json index 7421ab0e..a6dbb1fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "line-bot-mcp-server": "dist/index.js" }, "devDependencies": { - "@types/node": "^22", + "@types/node": "^24.0.0", "prettier": "3.6.2", "shx": "^0.4.0", "tsx": "^4.19.3", @@ -467,6 +467,15 @@ "axios": "^1.7.4" } }, + "node_modules/@line/bot-sdk/node_modules/@types/node": { + "version": "22.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.12.tgz", + "integrity": "sha512-BICHQ67iqxQGFSzfCFTT7MRQ5XcBjG5aeKh5Ok38UBbPe5fxTyE+aHFxwVrGyr8GNlqFMLKD1D3P2K/1ks8tog==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, "node_modules/@modelcontextprotocol/sdk": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.20.1.tgz", @@ -529,14 +538,22 @@ } }, "node_modules/@types/node": { - "version": "22.18.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.12.tgz", - "integrity": "sha512-BICHQ67iqxQGFSzfCFTT7MRQ5XcBjG5aeKh5Ok38UBbPe5fxTyE+aHFxwVrGyr8GNlqFMLKD1D3P2K/1ks8tog==", + "version": "24.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.9.1.tgz", + "integrity": "sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==", + "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.21.0" + "undici-types": "~7.16.0" } }, + "node_modules/@types/node/node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" + }, "node_modules/accepts": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", diff --git a/package.json b/package.json index 09e493a5..7629fc62 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "zod": "^3.25.76" }, "devDependencies": { - "@types/node": "^22", + "@types/node": "^24.0.0", "prettier": "3.6.2", "shx": "^0.4.0", "tsx": "^4.19.3", From 05bcd0332564bbd20fb84603ada1427db3be6cb8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 28 Oct 2025 22:51:12 +0000 Subject: [PATCH 240/415] chore(deps): update pnpm to v10.19.0 (#290) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7629fc62..1cad881e 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,5 @@ "typescript": "^5.6.2" }, "license": "Apache-2.0", - "packageManager": "pnpm@10.18.3+sha512.bbd16e6d7286fd7e01f6b3c0b3c932cda2965c06a908328f74663f10a9aea51f1129eea615134bf992831b009eabe167ecb7008b597f40ff9bc75946aadfb08d" + "packageManager": "pnpm@10.19.0+sha512.c9fc7236e92adf5c8af42fd5bf1612df99c2ceb62f27047032f4720b33f8eacdde311865e91c411f2774f618d82f320808ecb51718bfa82c060c4ba7c76a32b8" } From f65cc1923f01da71427330d854e9dd77175585d6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 29 Oct 2025 07:48:50 +0000 Subject: [PATCH 241/415] chore(deps): update node.js to v24.10.0 (#291) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index acd9826d..75f49e53 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:24.9-alpine AS builder +FROM node:24.10-alpine AS builder COPY . /app From 853325f80d757c63ef82f5e905dfebe7b105d40c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 31 Oct 2025 03:37:00 +0000 Subject: [PATCH 242/415] chore(deps): update dependency @modelcontextprotocol/sdk to v1.20.2 (#292) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a6dbb1fa..67f966c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -477,9 +477,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.20.1.tgz", - "integrity": "sha512-j/P+yuxXfgxb+mW7OEoRCM3G47zCTDqUPivJo/VzpjbG8I9csTXtOprCf5FfOfHK4whOJny0aHuBEON+kS7CCA==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.20.2.tgz", + "integrity": "sha512-6rqTdFt67AAAzln3NOKsXRmv5ZzPkgbfaebKBqUbts7vK1GZudqnrun5a8d3M/h955cam9RHZ6Jb4Y1XhnmFPg==", "license": "MIT", "dependencies": { "ajv": "^6.12.6", From b5b8104bdfb7853bf7d0029175b0b060670adb98 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 31 Oct 2025 03:37:11 +0000 Subject: [PATCH 243/415] chore(deps): update dependency @line/bot-sdk to v10.4.0 (#293) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 67f966c2..3462d28d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -453,12 +453,12 @@ } }, "node_modules/@line/bot-sdk": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.3.0.tgz", - "integrity": "sha512-+8EWzaU9v8XBGWA1UhYTHQvwP2SQ/ohoOQGa6Q3kaLdFmTomj5sPpsOOG4lHDLBuRhf9qmNclXJHSVQmPgmE6w==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.4.0.tgz", + "integrity": "sha512-deUato9NM0o30cxtREuRGdKEdr7cXytK9glntr7FcYYkVm7nTTTnN/UOO4NoGJp6B3bXDQF5+RcGliBSFuBywA==", "license": "Apache-2.0", "dependencies": { - "@types/node": "^22.0.0" + "@types/node": "^22.18.10" }, "engines": { "node": ">=20" @@ -468,9 +468,9 @@ } }, "node_modules/@line/bot-sdk/node_modules/@types/node": { - "version": "22.18.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.12.tgz", - "integrity": "sha512-BICHQ67iqxQGFSzfCFTT7MRQ5XcBjG5aeKh5Ok38UBbPe5fxTyE+aHFxwVrGyr8GNlqFMLKD1D3P2K/1ks8tog==", + "version": "22.18.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.13.tgz", + "integrity": "sha512-Bo45YKIjnmFtv6I1TuC8AaHBbqXtIo+Om5fE4QiU1Tj8QR/qt+8O3BAtOimG5IFmwaWiPmB3Mv3jtYzBA4Us2A==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" From 326d8bf669203353ad04ecaa6c4fdfed7052685e Mon Sep 17 00:00:00 2001 From: koichi uchinishi Date: Fri, 31 Oct 2025 16:10:01 +0900 Subject: [PATCH 244/415] create rich menu operation (#121) * create six-splited richmenu * add templates * create rich-menu folder * separate the generateRichMenuImage function * add example images * refactor some * add h3 tag on templete 04 * change return messave * add create richmenu * add create rich menu command * update the create rich menu * change the image size * create the rich menu * refactor the code * change the templetes * change TempleteNo and height * change templete actions area * refactor the codes * use const variable * rename the filename * add the areas and some * debug * update the templetes * self review * fix the ci * use puppeteer * reply successful message * change the file name * change the templete to template * add fonts on docker * update the tools argument * add max and min argument * update chatBarText message * remove rich menu examples * change the chatBatText description * change the font * add the READMEs * change the z option * include finally * remove end of space * remove templateNumber * remove console.log * npm run format --------- Co-authored-by: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Co-authored-by: Euchi Yuta --- Dockerfile | 28 + README.ja.md | 14 + README.md | 14 + package-lock.json | 1912 +++++++++++++++++++++++------ package.json | 3 + richmenu-template/template-01.md | 46 + richmenu-template/template-02.md | 49 + richmenu-template/template-03.md | 74 ++ richmenu-template/template-04.md | 60 + richmenu-template/template-05.md | 67 + richmenu-template/template-06.md | 66 + src/common/schema/actionSchema.ts | 87 ++ src/index.ts | 9 + src/tools/createRichMenu.ts | 336 +++++ 14 files changed, 2367 insertions(+), 398 deletions(-) create mode 100644 richmenu-template/template-01.md create mode 100644 richmenu-template/template-02.md create mode 100644 richmenu-template/template-03.md create mode 100644 richmenu-template/template-04.md create mode 100644 richmenu-template/template-05.md create mode 100644 richmenu-template/template-06.md create mode 100644 src/common/schema/actionSchema.ts create mode 100644 src/tools/createRichMenu.ts diff --git a/Dockerfile b/Dockerfile index 75f49e53..cf343295 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,6 +11,33 @@ RUN --mount=type=cache,target=/root/.npm npm run build # --- Release Stage --- FROM node:24-alpine AS release +# Install necessary tools and base fonts +RUN apk add --no-cache \ + fontconfig \ + font-noto-cjk \ + ttf-freefont \ + curl \ + unzip \ + chromium \ + nss + +# Download and install Japanese fonts from GitHub +RUN mkdir -p /usr/share/fonts/truetype/google && \ + # Noto Sans JP from GitHub + curl -L "https://github.com/googlefonts/noto-cjk/raw/main/Sans/OTF/Japanese/NotoSansJP-Regular.otf" -o /usr/share/fonts/truetype/google/NotoSansJP-Regular.otf && \ + curl -L "https://github.com/googlefonts/noto-cjk/raw/main/Sans/OTF/Japanese/NotoSansJP-Bold.otf" -o /usr/share/fonts/truetype/google/NotoSansJP-Bold.otf && \ + # IPAex Gothic font as fallback + curl -L "https://moji.or.jp/wp-content/ipafont/IPAexfont/IPAexfont00401.zip" -o ipaex.zip && \ + unzip ipaex.zip && \ + cp IPAexfont00401/*.ttf /usr/share/fonts/truetype/google/ && \ + rm -rf IPAexfont00401 ipaex.zip + +# Update font cache +RUN fc-cache -f -v + +# Set Puppeteer to use system Chromium +ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser + # Set up a non-root user ('appuser'/'appgroup') to avoid running as root - good security practice! # (-S is the Alpine option for a system user/group, suitable here) RUN addgroup -S appgroup && adduser -S appuser -G appgroup @@ -19,6 +46,7 @@ RUN addgroup -S appgroup && adduser -S appuser -G appgroup COPY --from=builder /app/dist /app/dist COPY --from=builder /app/package.json /app/package.json COPY --from=builder /app/package-lock.json /app/package-lock.json +COPY --from=builder /app/richmenu-template /app/richmenu-template ENV NODE_ENV=production diff --git a/README.ja.md b/README.ja.md index 11f268a5..b1732948 100644 --- a/README.ja.md +++ b/README.ja.md @@ -57,6 +57,20 @@ LINE公式アカウントとAI Agentを接続するために、LINE Messaging AP - デフォルトのリッチメニューを解除する。 - **入力:** - なし +11. **create_rich_menu** + - 指定されたアクションに基づいてリッチメニューを作成。画像を生成してアップロード。デフォルトとして設定する。 + - **入力:** + - `chatBarText` (string): チャットバー表示、リッチメニュー名にされるテキスト。 + - `actions` (array): リッチメニューのアクション。最小1つから最大6つのアクションを指定できる。各アクションは以下のいずれかのタイプを指定できる: + - `postback`: ポストバックアクションを送信する + - `message`: テキストメッセージを送信する + - `uri`: URLを開く + - `datetimepicker`: 日付/時間選択ツールを開く + - `camera`: カメラを開く + - `cameraRoll`: カメラロールを開く + - `location`: 現在位置を送信する + - `richmenuswitch`: 別のリッチメニューに切り替える + - `clipboard`: テキストをクリップボードにコピーする ## インストール (npxを使用) diff --git a/README.md b/README.md index 25ecfff4..e4243a44 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,20 @@ - Cancel the default rich menu. - **Inputs:** - None +11. **create_rich_menu** + - Create a rich menu based on the given actions. Generate and upload an image. Set as default. + - **Inputs:** + - `chatBarText` (string): Text displayed in chat bar, also used as rich menu name. + - `actions` (array): The actions of the rich menu. You can specify minimum 1 to maximum 6 actions. Each action can be one of the following types: + - `postback`: For sending a postback action + - `message`: For sending a text message + - `uri`: For opening a URL + - `datetimepicker`: For opening a date/time picker + - `camera`: For opening the camera + - `cameraRoll`: For opening the camera roll + - `location`: For sending the current location + - `richmenuswitch`: For switching to another rich menu + - `clipboard`: For copying text to clipboard ## Installation (Using npx) diff --git a/package-lock.json b/package-lock.json index 3462d28d..7e658bf4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,10 @@ "license": "Apache-2.0", "dependencies": { "@line/bot-sdk": "^10.0.0", + "@marp-team/marp-cli": "^4.1.2", + "@marp-team/marp-core": "^4.1.0", "@modelcontextprotocol/sdk": "^1.8.0", + "puppeteer": "^24.10.2", "zod": "^3.25.76" }, "bin": { @@ -27,72 +30,92 @@ "node": ">=20" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", - "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", - "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.3.tgz", + "integrity": "sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", - "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" + "node_modules/@csstools/selector-resolve-nested": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz", + "integrity": "sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], "engines": { "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", - "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" + "node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], "engines": { "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" } }, "node_modules/@esbuild/darwin-arm64": { @@ -112,342 +135,83 @@ "node": ">=18" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", - "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", - "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", - "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", - "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", - "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", - "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", - "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", - "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", - "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", - "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", - "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", - "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", - "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", - "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", - "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", - "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], + "node_modules/@line/bot-sdk": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.3.0.tgz", + "integrity": "sha512-+8EWzaU9v8XBGWA1UhYTHQvwP2SQ/ohoOQGa6Q3kaLdFmTomj5sPpsOOG4lHDLBuRhf9qmNclXJHSVQmPgmE6w==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "^22.0.0" + }, "engines": { - "node": ">=18" + "node": ">=20" + }, + "optionalDependencies": { + "axios": "^1.7.4" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", - "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], + "node_modules/@marp-team/marp-cli": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@marp-team/marp-cli/-/marp-cli-4.2.0.tgz", + "integrity": "sha512-98yHfGeRxWzKff6aiAhXlyXnSbu5hr4NGzSfiUODEbH0m5Rri/hVneYGKCebWWh7mc3ZFlkx+w72+NCB75sj7A==", + "dependencies": { + "@marp-team/marp-core": "^4.1.0", + "@marp-team/marpit": "^3.1.3", + "chokidar": "^4.0.3", + "cosmiconfig": "^9.0.0", + "puppeteer-core": "^24.10.0", + "serve-index": "^1.9.1", + "tmp": "^0.2.3", + "ws": "^8.18.2", + "yargs": "^17.7.2" + }, + "bin": { + "marp": "marp-cli.js" + }, "engines": { "node": ">=18" } }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", - "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "node_modules/@marp-team/marp-core": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@marp-team/marp-core/-/marp-core-4.1.0.tgz", + "integrity": "sha512-QJ79tGpr3itR4TVQ4Cbe9J0kLHg9sR5cNX19OWSHeVK9EjDzMA9iCwS+OCRMKBAvRHo0LGUJC3lm9wUBg3Ud6A==", + "dependencies": { + "@marp-team/marpit": "^3.1.3", + "@marp-team/marpit-svg-polyfill": "^2.1.0", + "highlight.js": "^11.11.1", + "katex": "^0.16.22", + "mathjax-full": "^3.2.2", + "postcss": "^8.5.3", + "postcss-selector-parser": "^7.1.0", + "xss": "^1.0.15" + }, "engines": { "node": ">=18" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", - "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "node_modules/@marp-team/marpit": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@marp-team/marpit/-/marpit-3.1.3.tgz", + "integrity": "sha512-ApI1SmNK7qy6x1D9h9HGBPJorPhclincNXf4VXrpCJ1+gNFzVf8Aga10Q1JJYFb/5N5FtFxTodMZwMqB31S+Ig==", + "dependencies": { + "@csstools/postcss-is-pseudo-class": "^5.0.1", + "cssesc": "^3.0.0", + "js-yaml": "^4.1.0", + "lodash.kebabcase": "^4.1.1", + "markdown-it": "^14.1.0", + "markdown-it-front-matter": "^0.2.4", + "postcss": "^8.5.3", + "postcss-nesting": "^13.0.1" + }, "engines": { "node": ">=18" } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", - "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "node_modules/@marp-team/marpit-svg-polyfill": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@marp-team/marpit-svg-polyfill/-/marpit-svg-polyfill-2.1.0.tgz", + "integrity": "sha512-VqCoAKwv1HJdzZp36dDPxznz2JZgRjkVSSPHpCzk72G2N753F0HPKXjevdjxmzN6gir9bUGBgMD1SguWJIi11A==", "engines": { "node": ">=18" } @@ -460,11 +224,13 @@ "dependencies": { "@types/node": "^22.18.10" }, - "engines": { - "node": ">=20" + "peerDependencies": { + "@marp-team/marpit": ">=0.5.0" }, - "optionalDependencies": { - "axios": "^1.7.4" + "peerDependenciesMeta": { + "@marp-team/marpit": { + "optional": true + } } }, "node_modules/@line/bot-sdk/node_modules/@types/node": { @@ -487,12 +253,10 @@ "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", - "eventsource-parser": "^3.0.0", "express": "^5.0.1", "express-rate-limit": "^7.5.0", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", - "zod": "^3.23.8", "zod-to-json-schema": "^3.24.1" }, "engines": { @@ -537,6 +301,58 @@ "node": ">= 8" } }, + "node_modules/@puppeteer/browsers": { + "version": "2.10.5", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.5.tgz", + "integrity": "sha512-eifa0o+i8dERnngJwKrfp3dEq7ia5XFyoqB17S4gK8GhsQE4/P8nxOfQSE0zQHxzzLo/cmF+7+ywEQ7wK7Fb+w==", + "dependencies": { + "debug": "^4.4.1", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.5.0", + "semver": "^7.7.2", + "tar-fs": "^3.0.8", + "yargs": "^17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@puppeteer/browsers/node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@puppeteer/browsers/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" + }, "node_modules/@types/node": { "version": "24.9.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.9.1.tgz", @@ -547,6 +363,23 @@ "undici-types": "~7.16.0" } }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.8.tgz", + "integrity": "sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==", + "engines": { + "node": ">=14.6" + } + }, "node_modules/@types/node/node_modules/undici-types": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", @@ -567,6 +400,14 @@ "node": ">= 0.6" } }, + "node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "engines": { + "node": ">= 14" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -583,6 +424,44 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -602,6 +481,91 @@ "proxy-from-env": "^1.1.0" } }, + "node_modules/b4a": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==" + }, + "node_modules/bare-events": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", + "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", + "optional": true + }, + "node_modules/bare-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.5.tgz", + "integrity": "sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==", + "optional": true, + "dependencies": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } + } + }, + "node_modules/bare-os": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz", + "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==", + "optional": true, + "engines": { + "bare": ">=1.14.0" + } + }, + "node_modules/bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "optional": true, + "dependencies": { + "bare-os": "^3.0.1" + } + }, + "node_modules/bare-stream": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", + "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", + "optional": true, + "dependencies": { + "streamx": "^2.21.0" + }, + "peerDependencies": { + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } + } + }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + }, "node_modules/body-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", @@ -635,6 +599,14 @@ "node": ">=8" } }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "engines": { + "node": "*" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -673,6 +645,69 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chromium-bidi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-5.1.0.tgz", + "integrity": "sha512-9MSRhWRVoRPDG0TgzkHrshFSJJNZzfY5UFqUMuksg7zL1yoZIZ3jLB0YAgHclbiAxPI86pBnwDX1tbzoiV8aFw==", + "dependencies": { + "mitt": "^3.0.1", + "zod": "^3.24.1" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -686,6 +721,14 @@ "node": ">= 0.8" } }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, "node_modules/content-disposition": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", @@ -738,6 +781,31 @@ "node": ">= 0.10" } }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -752,6 +820,30 @@ "node": ">= 8" } }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" + }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "engines": { + "node": ">= 14" + } + }, "node_modules/debug": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", @@ -769,6 +861,19 @@ } } }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -788,6 +893,11 @@ "node": ">= 0.8" } }, + "node_modules/devtools-protocol": { + "version": "0.0.1452169", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1452169.tgz", + "integrity": "sha512-FOFDVMGrAUNp0dDKsAU1TorWJUx2JOU1k9xdgBKKJF3IBh/Uhl2yswG5r3TEAOrCiGY2QRp1e6LVDQrCsTKO4g==" + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -808,6 +918,11 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "license": "MIT" }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "node_modules/encodeurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", @@ -821,12 +936,38 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, "license": "MIT", "dependencies": { "once": "^1.4.0" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -914,12 +1055,76 @@ "@esbuild/win32-x64": "0.25.2" } }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "engines": { + "node": ">=6" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "license": "MIT" }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -1090,12 +1295,50 @@ "express": "^4.11 || 5 || ^5.0.0-beta.1" } }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "license": "MIT" }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", @@ -1129,6 +1372,14 @@ "reusify": "^1.0.4" } }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dependencies": { + "pend": "~1.2.0" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -1181,16 +1432,15 @@ } }, "node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", "license": "MIT", "optional": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { @@ -1262,6 +1512,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", @@ -1325,6 +1583,19 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, + "node_modules/get-uri": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz", + "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -1390,6 +1661,14 @@ "node": ">= 0.4" } }, + "node_modules/highlight.js": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", + "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -1406,6 +1685,30 @@ "node": ">= 0.8" } }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -1418,6 +1721,21 @@ "node": ">=0.10.0" } }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -1434,6 +1752,18 @@ "node": ">= 0.10" } }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -1443,6 +1773,11 @@ "node": ">= 0.10" } }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, "node_modules/is-core-module": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", @@ -1469,6 +1804,14 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -1514,12 +1857,100 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "license": "MIT" }, + "node_modules/katex": { + "version": "0.16.22", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz", + "integrity": "sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==" + }, + "node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdown-it-front-matter": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/markdown-it-front-matter/-/markdown-it-front-matter-0.2.4.tgz", + "integrity": "sha512-25GUs0yjS2hLl8zAemVndeEzThB1p42yxuDEKbd4JlL3jiz+jsm6e56Ya8B0VREOkNxLYB4TTwaoPJ3ElMmW+w==" + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -1529,6 +1960,22 @@ "node": ">= 0.4" } }, + "node_modules/mathjax-full": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.2.tgz", + "integrity": "sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==", + "dependencies": { + "esm": "^3.2.25", + "mhchemparser": "^4.1.0", + "mj-context-menu": "^0.6.1", + "speech-rule-engine": "^4.0.6" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" + }, "node_modules/media-typer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", @@ -1560,6 +2007,11 @@ "node": ">= 8" } }, + "node_modules/mhchemparser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz", + "integrity": "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==" + }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", @@ -1605,12 +2057,39 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, + "node_modules/mj-context-menu": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz", + "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==" + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/negotiator": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", @@ -1620,6 +2099,14 @@ "node": ">= 0.6" } }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -1702,6 +2189,64 @@ "node": ">=4" } }, + "node_modules/pac-proxy-agent": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", + "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.6", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -1736,6 +2281,16 @@ "node": ">=16" } }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -1743,19 +2298,84 @@ "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkce-challenge": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz", + "integrity": "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==", + "license": "MIT", + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/postcss": { + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.5.tgz", + "integrity": "sha512-d/jtm+rdNT8tpXuHY5MMtcbJFBkhXE6593XVR9UoGCH8jSFGci7jGvMGH5RYd5PBJW+00NZQt6gf7CbagJCrhg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-nesting": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.2.tgz", + "integrity": "sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/selector-resolve-nested": "^3.1.0", + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/pkce-challenge": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz", - "integrity": "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==", - "license": "MIT", + "node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, "engines": { - "node": ">=16.20.0" + "node": ">=4" } }, "node_modules/prettier": { @@ -1763,7 +2383,6 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, - "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -1774,6 +2393,14 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -1787,18 +2414,34 @@ "node": ">= 0.10" } }, + "node_modules/proxy-agent": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.6", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.1.0", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT", - "optional": true + "license": "MIT" }, "node_modules/pump": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", - "dev": true, "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", @@ -1814,6 +2457,66 @@ "node": ">=6" } }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/puppeteer": { + "version": "24.10.2", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.10.2.tgz", + "integrity": "sha512-+k26rCz6akFZntx0hqUoFjCojgOLIxZs6p2k53LmEicwsT8F/FMBKfRfiBw1sitjiCvlR/15K7lBqfjXa251FA==", + "hasInstallScript": true, + "dependencies": { + "@puppeteer/browsers": "2.10.5", + "chromium-bidi": "5.1.0", + "cosmiconfig": "^9.0.0", + "devtools-protocol": "0.0.1452169", + "puppeteer-core": "24.10.2", + "typed-query-selector": "^2.12.0" + }, + "bin": { + "puppeteer": "lib/cjs/puppeteer/node/cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/puppeteer-core": { + "version": "24.10.2", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.10.2.tgz", + "integrity": "sha512-CnzhOgrZj8DvkDqI+Yx+9or33i3Y9uUYbKyYpP4C13jWwXx/keQ38RMTMmxuLCWQlxjZrOH0Foq7P2fGP7adDQ==", + "dependencies": { + "@puppeteer/browsers": "2.10.5", + "chromium-bidi": "5.1.0", + "debug": "^4.4.1", + "devtools-protocol": "0.0.1452169", + "typed-query-selector": "^2.12.0", + "ws": "^8.18.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/puppeteer-core/node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/qs": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", @@ -1874,6 +2577,18 @@ "node": ">= 0.8" } }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -1886,6 +2601,14 @@ "node": ">= 0.10" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", @@ -1907,6 +2630,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", @@ -2026,6 +2757,115 @@ "node": ">= 18" } }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/serve-index/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/serve-index/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/serve-static": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", @@ -2183,6 +3023,84 @@ "dev": true, "license": "ISC" }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.5.tgz", + "integrity": "sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww==", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/speech-rule-engine": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.1.2.tgz", + "integrity": "sha512-S6ji+flMEga+1QU79NDbwZ8Ivf0S/MpupQQiIC0rTpU/ZTKgcajijJJb1OcByBQDjrXCN1/DJtGz4ZJeBMPGJw==", + "dependencies": { + "@xmldom/xmldom": "0.9.8", + "commander": "13.1.0", + "wicked-good-xpath": "1.3.0" + }, + "bin": { + "sre": "bin/sre" + } + }, + "node_modules/speech-rule-engine/node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "engines": { + "node": ">=18" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -2192,6 +3110,42 @@ "node": ">= 0.8" } }, + "node_modules/streamx": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz", + "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==", + "dependencies": { + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -2215,6 +3169,45 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tar-fs": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.9.tgz", + "integrity": "sha512-XF4w9Xp+ZQgifKakjZYmFdkLoSWd34VGKcsTCwlNWM7QG3ZbaxnTsaBwnjFZqHRf/rROxaR8rXnbtwdvaDI+lA==", + "dependencies": { + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0" + } + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/text-decoder": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", + "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "engines": { + "node": ">=14.14" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -2237,6 +3230,11 @@ "node": ">=0.6" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, "node_modules/tsx": { "version": "4.20.6", "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz", @@ -2271,6 +3269,11 @@ "node": ">= 0.6" } }, + "node_modules/typed-query-selector": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", + "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==" + }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", @@ -2285,6 +3288,11 @@ "node": ">=14.17" } }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==" + }, "node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", @@ -2309,6 +3317,11 @@ "punycode": "^2.1.0" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -2333,12 +3346,115 @@ "node": ">= 8" } }, + "node_modules/wicked-good-xpath": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", + "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, + "node_modules/ws": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", + "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xss": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.15.tgz", + "integrity": "sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==", + "dependencies": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + }, + "bin": { + "xss": "bin/xss" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/xss/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, "node_modules/zod": { "version": "3.25.76", "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", @@ -2350,9 +3466,9 @@ } }, "node_modules/zod-to-json-schema": { - "version": "3.24.6", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz", - "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==", + "version": "3.24.5", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz", + "integrity": "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==", "license": "ISC", "peerDependencies": { "zod": "^3.24.1" diff --git a/package.json b/package.json index 1cad881e..cedc4b98 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,10 @@ "bugs": "https://github.com/line/line-bot-mcp-server/issues", "dependencies": { "@line/bot-sdk": "^10.0.0", + "@marp-team/marp-cli": "^4.1.2", + "@marp-team/marp-core": "^4.1.0", "@modelcontextprotocol/sdk": "^1.8.0", + "puppeteer": "^24.10.2", "zod": "^3.25.76" }, "devDependencies": { diff --git a/richmenu-template/template-01.md b/richmenu-template/template-01.md new file mode 100644 index 00000000..2bb74b2e --- /dev/null +++ b/richmenu-template/template-01.md @@ -0,0 +1,46 @@ +--- +marp: true +size: 16:9 +--- + +
+
+

item01

+
+
diff --git a/richmenu-template/template-02.md b/richmenu-template/template-02.md new file mode 100644 index 00000000..3c28b819 --- /dev/null +++ b/richmenu-template/template-02.md @@ -0,0 +1,49 @@ +--- +marp: true +size: 16:9 +--- + +
+
+

item01

+
+
+

item02

+
+
diff --git a/richmenu-template/template-03.md b/richmenu-template/template-03.md new file mode 100644 index 00000000..17114872 --- /dev/null +++ b/richmenu-template/template-03.md @@ -0,0 +1,74 @@ +--- +marp: true +size: 16:9 +--- + +
+
+
+

item01

+
+
+
+
+

item02

+
+
+

item03

+
+
+
diff --git a/richmenu-template/template-04.md b/richmenu-template/template-04.md new file mode 100644 index 00000000..17c1ca9f --- /dev/null +++ b/richmenu-template/template-04.md @@ -0,0 +1,60 @@ +--- +marp: true +size: 16:9 +--- + +
+
+

item01

+
+
+

item02

+
+
+

item03

+
+
+

item04

+
+
diff --git a/richmenu-template/template-05.md b/richmenu-template/template-05.md new file mode 100644 index 00000000..c8bb3a01 --- /dev/null +++ b/richmenu-template/template-05.md @@ -0,0 +1,67 @@ +--- +marp: true +size: 16:9 +--- + +
+
+

item01

+
+
+

item02

+
+
+

item03

+
+
+

item04

+
+
+

item05

+
+
diff --git a/richmenu-template/template-06.md b/richmenu-template/template-06.md new file mode 100644 index 00000000..3b689bf2 --- /dev/null +++ b/richmenu-template/template-06.md @@ -0,0 +1,66 @@ +--- +marp: true +size: 16:9 +--- + +
+
+

item01

+
+
+

item02

+
+
+

item03

+
+
+

item04

+
+
+

item05

+
+
+

item06

+
+
diff --git a/src/common/schema/actionSchema.ts b/src/common/schema/actionSchema.ts new file mode 100644 index 00000000..8490a29b --- /dev/null +++ b/src/common/schema/actionSchema.ts @@ -0,0 +1,87 @@ +import { z } from "zod"; + +// references: +// * document: +// https://developers.line.biz/ja/docs/messaging-api/actions/ +// * line-bot-sdk-nodejs: +// https://github.com/line/line-bot-sdk-nodejs/blob/master/lib/messaging-api/model/action.ts + +// 1. Postback action +const postbackActionSchema = z.object({ + type: z.literal("postback"), + label: z.string(), + data: z.string(), + displayText: z.string().optional(), + inputOption: z + .enum(["closeRichMenu", "openRichMenu", "openKeyboard", "openVoice"]) + .optional(), + fillInText: z.string().optional(), +}); +// 2. Message action +const messageActionSchema = z.object({ + type: z.literal("message"), + label: z.string(), + text: z.string(), +}); +// 3. URI action +const uriActionSchema = z.object({ + type: z.literal("uri"), + label: z.string(), + uri: z.string(), + altUri: z + .object({ + desktop: z.string().optional(), + }) + .optional(), +}); +// 4. Datetime picker action +const datetimePickerActionSchema = z.object({ + type: z.literal("datetimepicker"), + label: z.string(), + data: z.string(), + mode: z.enum(["date", "time", "datetime"]), + initial: z.string().optional(), + max: z.string().optional(), + min: z.string().optional(), +}); +// 5. Camera action +const cameraActionSchema = z.object({ + type: z.literal("camera"), + label: z.string(), +}); +// 6. Camera roll action +const cameraRollActionSchema = z.object({ + type: z.literal("cameraRoll"), + label: z.string(), +}); +// 7. Location action +const locationActionSchema = z.object({ + type: z.literal("location"), + label: z.string(), +}); +// 8. Rich menu switch action +const richMenuSwitchActionSchema = z.object({ + type: z.literal("richmenuswitch"), + label: z.string(), + richMenuAliasId: z.string(), + data: z.string(), +}); +// 9. Clipboard action +const clipboardActionSchema = z.object({ + type: z.literal("clipboard"), + label: z.string(), + clipboardText: z.string(), +}); + +// actions +export const actionSchema = z.union([ + postbackActionSchema, + messageActionSchema, + uriActionSchema, + datetimePickerActionSchema, + cameraActionSchema, + cameraRollActionSchema, + locationActionSchema, + richMenuSwitchActionSchema, + clipboardActionSchema, +]); diff --git a/src/index.ts b/src/index.ts index edc2b615..1595abc1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -30,6 +30,7 @@ import GetMessageQuota from "./tools/getMessageQuota.js"; import GetRichMenuList from "./tools/getRichMenuList.js"; import DeleteRichMenu from "./tools/deleteRichMenu.js"; import SetRichMenuDefault from "./tools/setRichMenuDefault.js"; +import CreateRichMenu from "./tools/createRichMenu.js"; const server = new McpServer({ name: "line-bot", @@ -46,6 +47,13 @@ const messagingApiClient = new line.messagingApi.MessagingApiClient({ }, }); +const lineBlobClient = new line.messagingApi.MessagingApiBlobClient({ + channelAccessToken: channelAccessToken, + defaultHeaders: { + "User-Agent": USER_AGENT, + }, +}); + new PushTextMessage(messagingApiClient, destinationId).register(server); new PushFlexMessage(messagingApiClient, destinationId).register(server); new BroadcastTextMessage(messagingApiClient).register(server); @@ -56,6 +64,7 @@ new GetRichMenuList(messagingApiClient).register(server); new DeleteRichMenu(messagingApiClient).register(server); new SetRichMenuDefault(messagingApiClient).register(server); new CancelRichMenuDefault(messagingApiClient).register(server); +new CreateRichMenu(messagingApiClient, lineBlobClient).register(server); async function main() { if (!process.env.CHANNEL_ACCESS_TOKEN) { diff --git a/src/tools/createRichMenu.ts b/src/tools/createRichMenu.ts new file mode 100644 index 00000000..9ec3277f --- /dev/null +++ b/src/tools/createRichMenu.ts @@ -0,0 +1,336 @@ +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { messagingApi } from "@line/bot-sdk"; +import { + createErrorResponse, + createSuccessResponse, +} from "../common/response.js"; +import { AbstractTool } from "./AbstractTool.js"; +import { z } from "zod"; +import { Marp } from "@marp-team/marp-core"; +import puppeteer from "puppeteer"; +import fs from "fs"; +import path from "path"; +import os from "os"; +import { fileURLToPath } from "url"; +import { actionSchema } from "../common/schema/actionSchema.js"; +import { promises as fsp } from "fs"; + +const RICHMENU_HEIGHT = 910; +const RICHMENU_WIDTH = 1600; + +export default class CreateRichMenu extends AbstractTool { + private client: messagingApi.MessagingApiClient; + private lineBlobClient: messagingApi.MessagingApiBlobClient; + + constructor( + client: messagingApi.MessagingApiClient, + lineBlobClient: messagingApi.MessagingApiBlobClient, + ) { + super(); + this.client = client; + this.lineBlobClient = lineBlobClient; + } + + register(server: McpServer) { + 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.", + { + chatBarText: z + .string() + .describe( + "Text displayed in the chat bar and this is also used as name of the rich menu to create", + ), + actions: z + .array(actionSchema) + .min(1) + .max(6) + .describe("The actions of the rich menu."), + }, + async ({ chatBarText, actions }) => { + // Flow: + // 1. Validate the rich menu image + // 2. Create a rich menu + // 3. Generate a rich menu image + // 4. Upload the rich menu image + // 5. Set the rich menu as the default rich menu + let createRichMenuResponse: any = null; + let setImageResponse: any = null; + let setDefaultResponse: any = null; + const lineActions = actions as messagingApi.Action[]; + try { + // 1. Validate the rich menu image + if (lineActions.length < 1 || lineActions.length > 6) { + return createErrorResponse("Invalid actions length"); + } + + // 2. Create a rich menu + const areas: Array = + richmenuAreas(lineActions); + const createRichMenuParams = { + name: chatBarText, + chatBarText, + selected: true, + size: { + width: RICHMENU_WIDTH, + height: RICHMENU_HEIGHT, + }, + areas, + }; + createRichMenuResponse = + await this.client.createRichMenu(createRichMenuParams); + const richMenuId = createRichMenuResponse.richMenuId; + + // 3. Generate a rich menu image + const richMenuImagePath = await generateRichMenuImage(lineActions); + + // 4. Upload the rich menu image + const imageBuffer = fs.readFileSync(richMenuImagePath); + const imageType = "image/png"; + const imageBlob = new Blob([imageBuffer], { type: imageType }); + setImageResponse = await this.lineBlobClient.setRichMenuImage( + richMenuId, + imageBlob, + ); + + // 5. Set the rich menu as the default rich menu + setDefaultResponse = await this.client.setDefaultRichMenu(richMenuId); + + return createSuccessResponse({ + message: "Rich menu created successfully and set as default.", + richMenuId, + createRichMenuParams, + createRichMenuResponse, + setImageResponse, + setDefaultResponse, + richMenuImagePath, + }); + } catch (error) { + console.error("Rich menu creation error:", error); + return createErrorResponse( + JSON.stringify({ + error: error instanceof Error ? error.message : String(error), + stack: error instanceof Error ? error.stack : undefined, + createRichMenuResponse, + setImageResponse, + setDefaultResponse, + }), + ); + } + }, + ); + } +} + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +// Function to generate a rich menu image from a Markdown template +async function generateRichMenuImage( + actions: messagingApi.Action[], +): Promise { + const templateNo = actions.length; + // Flow: + // 1. Read the Markdown template + // 2. Convert Markdown to HTML using Marp + // 3. Save the HTML as a temporary file + // 4. Use puppeteer to convert HTML to PNG + // 5. Delete the temporary HTML file + const richMenuImagePath = path.join( + os.tmpdir(), + `template-0${templateNo}-${Date.now()}.png`, + ); + const serverPath = + process.env.SERVER_PATH || path.resolve(__dirname, "..", ".."); + // 1. Read the Markdown template + const srcPath = path.join( + serverPath, + `richmenu-template/template-0${templateNo}.md`, + ); + let content = await fsp.readFile(srcPath, "utf8"); + for (let index = 0; index < actions.length; index++) { + const pattern = new RegExp(`

item0${index + 1}

`, "g"); + content = content.replace(pattern, `

${actions[index].label}

`); + } + + // 2. Convert Markdown to HTML using Marp + const marp = new Marp(); + const { html, css } = marp.render(content); + + // 3. Save the HTML as a temporary file with Japanese font support + const htmlContent = ` + + + + + + + ${html} + + `; + const tempHtmlPath = path.join( + os.tmpdir(), + `temp_marp_slide_${Date.now()}.html`, + ); + await fsp.writeFile(tempHtmlPath, htmlContent, "utf8"); + + // 4. Use puppeteer to convert HTML to PNG with Docker-compatible settings + const browser = await puppeteer.launch({ + headless: true, + executablePath: process.env.PUPPETEER_EXECUTABLE_PATH || undefined, + args: [ + "--no-sandbox", + "--disable-setuid-sandbox", + "--disable-dev-shm-usage", + "--disable-gpu", + "--disable-web-security", + "--disable-features=VizDisplayCompositor", + "--no-first-run", + "--no-default-browser-check", + "--disable-default-apps", + "--disable-extensions", + ], + }); + const page = await browser.newPage(); + await page.setViewport({ width: RICHMENU_WIDTH, height: RICHMENU_HEIGHT }); + await page.goto(`file://${tempHtmlPath}`, { + waitUntil: "networkidle0", + }); + + // Wait for fonts to load + await page.evaluate(() => document.fonts.ready); + await new Promise(resolve => setTimeout(resolve, 2000)); + + await page.screenshot({ + path: richMenuImagePath as `${string}.png`, + clip: { x: 0, y: 0, width: RICHMENU_WIDTH, height: RICHMENU_HEIGHT }, + }); + await browser.close(); + + // Save image to output directory + const outputPath = path.join("/tmp", path.basename(richMenuImagePath)); + + try { + await fsp.copyFile(richMenuImagePath, outputPath); + } catch (error) { + console.warn(`Failed to save image to output directory: ${error}`); + } finally { + // 5. Delete the temporary HTML file + await fsp.unlink(tempHtmlPath); + } + + return richMenuImagePath; +} + +const richmenuAreas = ( + actions: messagingApi.Action[], +): messagingApi.RichMenuArea[] => { + const bounds = richmenuBounds(actions.length); + return actions.map((action, index) => { + return { + bounds: bounds[index], + action: action, + }; + }); +}; + +const richmenuBounds = (actionCount: number) => { + const boundsMap: { x: number; y: number; width: number; height: number }[][] = + [ + [], + // template-01 + [ + { + x: 0, + y: 0, + width: RICHMENU_WIDTH, + height: RICHMENU_HEIGHT, + }, + ], + // template-02 + [0, 1].map(i => ({ + x: (RICHMENU_WIDTH / 2) * i, + y: 0, + width: RICHMENU_WIDTH / 2, + height: RICHMENU_HEIGHT, + })), + // template-03 + [ + { + x: 0, + y: 0, + width: (RICHMENU_WIDTH / 3) * 2, + height: RICHMENU_HEIGHT, + }, + ...[0, 1].map(i => ({ + x: (RICHMENU_WIDTH / 3) * 2, + y: (RICHMENU_HEIGHT / 3) * i, + width: RICHMENU_WIDTH / 3, + height: RICHMENU_HEIGHT / 2, + })), + ], + // template-04 + [0, 1] + .map(i => + [0, 1].map(j => ({ + x: (RICHMENU_WIDTH / 2) * i, + y: (RICHMENU_HEIGHT / 2) * j, + width: RICHMENU_WIDTH / 2, + height: RICHMENU_HEIGHT / 2, + })), + ) + .flat(), + // template-05 + [ + { + x: 0, + y: 0, + width: (RICHMENU_WIDTH / 3) * 2, + height: RICHMENU_HEIGHT / 2, + }, + { + x: (RICHMENU_WIDTH / 3) * 2, + y: 0, + width: RICHMENU_WIDTH / 3, + height: RICHMENU_HEIGHT / 2, + }, + ...[0, 1, 2].map(i => ({ + x: (RICHMENU_WIDTH / 3) * i, + y: RICHMENU_HEIGHT / 2, + width: RICHMENU_WIDTH / 3, + height: RICHMENU_HEIGHT / 2, + })), + ], + // template-06 + [0, 1] + .map(i => + [0, 1, 2].map(j => ({ + x: (RICHMENU_WIDTH / 3) * j, + y: (RICHMENU_HEIGHT / 2) * i, + width: RICHMENU_WIDTH / 3, + height: RICHMENU_HEIGHT / 2, + })), + ) + .flat(), + ]; + + return boundsMap[actionCount]; +}; From c15cc29182c13c5817e54a0a7004f4ce48a8e4ad Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Nov 2025 06:40:25 +0000 Subject: [PATCH 245/415] chore(deps): update node.js to v24.11.0 (#301) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index cf343295..cc4e6f38 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:24.10-alpine AS builder +FROM node:24.11-alpine AS builder COPY . /app From 0b84c507ec3b7921ef17224d2b3f20530ad7f991 Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Thu, 6 Nov 2025 11:10:26 +0900 Subject: [PATCH 246/415] Set npm version as 11.6.0 in renovate (#302) Set npm version in renovate --- renovate.json5 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/renovate.json5 b/renovate.json5 index bc309243..6e34d1a9 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -13,5 +13,9 @@ ], ignoreDeps: [ "zod" - ] + ], + // To prevent libraries in optionalDependencies from being removed from the lock file + constraints: { + npm: "11.6.0" + } } From 9e52aee1ed22c8cda72ccb9b331cd0b1b0176fbc Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Fri, 7 Nov 2025 17:04:34 +0900 Subject: [PATCH 247/415] Update libraries version (#303) update version --- package-lock.json | 422 +++++++++++++++++++++++++--------------------- package.json | 9 +- 2 files changed, 233 insertions(+), 198 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7e658bf4..5289b8dc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,17 +10,17 @@ "license": "Apache-2.0", "dependencies": { "@line/bot-sdk": "^10.0.0", - "@marp-team/marp-cli": "^4.1.2", + "@marp-team/marp-cli": "^4.2.3", "@marp-team/marp-core": "^4.1.0", "@modelcontextprotocol/sdk": "^1.8.0", - "puppeteer": "^24.10.2", + "puppeteer": "^24.27.0", "zod": "^3.25.76" }, "bin": { "line-bot-mcp-server": "dist/index.js" }, "devDependencies": { - "@types/node": "^24.0.0", + "@types/node": "^24.9.2", "prettier": "3.6.2", "shx": "^0.4.0", "tsx": "^4.19.3", @@ -136,33 +136,48 @@ } }, "node_modules/@line/bot-sdk": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.3.0.tgz", - "integrity": "sha512-+8EWzaU9v8XBGWA1UhYTHQvwP2SQ/ohoOQGa6Q3kaLdFmTomj5sPpsOOG4lHDLBuRhf9qmNclXJHSVQmPgmE6w==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.4.0.tgz", + "integrity": "sha512-deUato9NM0o30cxtREuRGdKEdr7cXytK9glntr7FcYYkVm7nTTTnN/UOO4NoGJp6B3bXDQF5+RcGliBSFuBywA==", "license": "Apache-2.0", "dependencies": { - "@types/node": "^22.0.0" - }, - "engines": { - "node": ">=20" + "@types/node": "^22.18.10" }, "optionalDependencies": { "axios": "^1.7.4" + }, + "peerDependencies": { + "@marp-team/marpit": ">=0.5.0" + }, + "peerDependenciesMeta": { + "@marp-team/marpit": { + "optional": true + } + } + }, + "node_modules/@line/bot-sdk/node_modules/@types/node": { + "version": "22.18.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.13.tgz", + "integrity": "sha512-Bo45YKIjnmFtv6I1TuC8AaHBbqXtIo+Om5fE4QiU1Tj8QR/qt+8O3BAtOimG5IFmwaWiPmB3Mv3jtYzBA4Us2A==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" } }, "node_modules/@marp-team/marp-cli": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@marp-team/marp-cli/-/marp-cli-4.2.0.tgz", - "integrity": "sha512-98yHfGeRxWzKff6aiAhXlyXnSbu5hr4NGzSfiUODEbH0m5Rri/hVneYGKCebWWh7mc3ZFlkx+w72+NCB75sj7A==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@marp-team/marp-cli/-/marp-cli-4.2.3.tgz", + "integrity": "sha512-yfEIkF7mlumg8CVV5m/UkLEDkW/ayM/SD6Bo8fbAvdscBQ/l9D44/aNFJsiqgNtjfktzpvRqjcBXNhWD0YTq5Q==", + "license": "MIT", "dependencies": { "@marp-team/marp-core": "^4.1.0", "@marp-team/marpit": "^3.1.3", "chokidar": "^4.0.3", "cosmiconfig": "^9.0.0", - "puppeteer-core": "^24.10.0", + "puppeteer-core": "^24.16.0", "serve-index": "^1.9.1", - "tmp": "^0.2.3", - "ws": "^8.18.2", + "tmp": "^0.2.5", + "ws": "^8.18.3", "yargs": "^17.7.2" }, "bin": { @@ -216,32 +231,6 @@ "node": ">=18" } }, - "node_modules/@line/bot-sdk": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.4.0.tgz", - "integrity": "sha512-deUato9NM0o30cxtREuRGdKEdr7cXytK9glntr7FcYYkVm7nTTTnN/UOO4NoGJp6B3bXDQF5+RcGliBSFuBywA==", - "license": "Apache-2.0", - "dependencies": { - "@types/node": "^22.18.10" - }, - "peerDependencies": { - "@marp-team/marpit": ">=0.5.0" - }, - "peerDependenciesMeta": { - "@marp-team/marpit": { - "optional": true - } - } - }, - "node_modules/@line/bot-sdk/node_modules/@types/node": { - "version": "22.18.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.13.tgz", - "integrity": "sha512-Bo45YKIjnmFtv6I1TuC8AaHBbqXtIo+Om5fE4QiU1Tj8QR/qt+8O3BAtOimG5IFmwaWiPmB3Mv3jtYzBA4Us2A==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "node_modules/@modelcontextprotocol/sdk": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.20.2.tgz", @@ -302,16 +291,17 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.10.5", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.5.tgz", - "integrity": "sha512-eifa0o+i8dERnngJwKrfp3dEq7ia5XFyoqB17S4gK8GhsQE4/P8nxOfQSE0zQHxzzLo/cmF+7+ywEQ7wK7Fb+w==", + "version": "2.10.13", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.13.tgz", + "integrity": "sha512-a9Ruw3j3qlnB5a/zHRTkruppynxqaeE4H9WNj5eYGRWqw0ZauZ23f4W2ARf3hghF5doozyD+CRtt7XSYuYRI/Q==", + "license": "Apache-2.0", "dependencies": { - "debug": "^4.4.1", + "debug": "^4.4.3", "extract-zip": "^2.0.1", "progress": "^2.0.3", "proxy-agent": "^6.5.0", - "semver": "^7.7.2", - "tar-fs": "^3.0.8", + "semver": "^7.7.3", + "tar-fs": "^3.1.1", "yargs": "^17.7.2" }, "bin": { @@ -321,26 +311,11 @@ "node": ">=18" } }, - "node_modules/@puppeteer/browsers/node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/@puppeteer/browsers/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -351,22 +326,31 @@ "node_modules/@tootallnate/quickjs-emscripten": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", - "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "license": "MIT" }, "node_modules/@types/node": { - "version": "24.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.9.1.tgz", - "integrity": "sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==", - "dev": true, + "version": "24.10.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.0.tgz", + "integrity": "sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A==", + "devOptional": true, "license": "MIT", "dependencies": { "undici-types": "~7.16.0" } }, + "node_modules/@types/node/node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "devOptional": true, + "license": "MIT" + }, "node_modules/@types/yauzl": { "version": "2.10.3", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "license": "MIT", "optional": true, "dependencies": { "@types/node": "*" @@ -380,13 +364,6 @@ "node": ">=14.6" } }, - "node_modules/@types/node/node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "dev": true, - "license": "MIT" - }, "node_modules/accepts": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", @@ -401,9 +378,10 @@ } }, "node_modules/agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", "engines": { "node": ">= 14" } @@ -455,6 +433,7 @@ "version": "0.13.4", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "license": "MIT", "dependencies": { "tslib": "^2.0.1" }, @@ -482,25 +461,45 @@ } }, "node_modules/b4a": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", - "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==" + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", + "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } }, "node_modules/bare-events": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", - "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", - "optional": true + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } }, "node_modules/bare-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.5.tgz", - "integrity": "sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.0.tgz", + "integrity": "sha512-GljgCjeupKZJNetTqxKaQArLK10vpmK28or0+RwWjEl5Rk+/xG3wkpmkv+WrcBm3q1BwHKlnhXzR8O37kcvkXQ==", + "license": "Apache-2.0", "optional": true, "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", - "bare-stream": "^2.6.4" + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" }, "engines": { "bare": ">=1.16.0" @@ -515,9 +514,10 @@ } }, "node_modules/bare-os": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz", - "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz", + "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==", + "license": "Apache-2.0", "optional": true, "engines": { "bare": ">=1.14.0" @@ -527,15 +527,17 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "license": "Apache-2.0", "optional": true, "dependencies": { "bare-os": "^3.0.1" } }, "node_modules/bare-stream": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", - "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.7.0.tgz", + "integrity": "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==", + "license": "Apache-2.0", "optional": true, "dependencies": { "streamx": "^2.21.0" @@ -553,10 +555,21 @@ } } }, + "node_modules/bare-url": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", + "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-path": "^3.0.0" + } + }, "node_modules/basic-ftp": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "license": "MIT", "engines": { "node": ">=10.0.0" } @@ -603,6 +616,7 @@ "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", "engines": { "node": "*" } @@ -668,9 +682,10 @@ } }, "node_modules/chromium-bidi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-5.1.0.tgz", - "integrity": "sha512-9MSRhWRVoRPDG0TgzkHrshFSJJNZzfY5UFqUMuksg7zL1yoZIZ3jLB0YAgHclbiAxPI86pBnwDX1tbzoiV8aFw==", + "version": "10.5.1", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-10.5.1.tgz", + "integrity": "sha512-rlj6OyhKhVTnk4aENcUme3Jl9h+cq4oXu4AzBcvr8RMmT6BR4a3zSNT9dbIfXr9/BS6ibzRyDhowuw4n2GgzsQ==", + "license": "Apache-2.0", "dependencies": { "mitt": "^3.0.1", "zod": "^3.24.1" @@ -840,14 +855,15 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "license": "MIT", "engines": { "node": ">= 14" } }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -865,6 +881,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "license": "MIT", "dependencies": { "ast-types": "^0.13.4", "escodegen": "^2.1.0", @@ -894,9 +911,10 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1452169", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1452169.tgz", - "integrity": "sha512-FOFDVMGrAUNp0dDKsAU1TorWJUx2JOU1k9xdgBKKJF3IBh/Uhl2yswG5r3TEAOrCiGY2QRp1e6LVDQrCsTKO4g==" + "version": "0.0.1521046", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1521046.tgz", + "integrity": "sha512-vhE6eymDQSKWUXwwA37NtTTVEzjtGVfDr3pRbsWEQ5onH/Snp2c+2xZHWJJawG/0hCCJLRGt4xVtEVUVILol4w==", + "license": "BSD-3-Clause" }, "node_modules/dunder-proto": { "version": "1.0.1", @@ -1073,6 +1091,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", @@ -1101,6 +1120,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -1113,6 +1133,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -1121,6 +1142,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -1134,6 +1156,15 @@ "node": ">= 0.6" } }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, "node_modules/eventsource": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.6.tgz", @@ -1242,7 +1273,6 @@ "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", "license": "MIT", - "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.0", @@ -1299,6 +1329,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "license": "BSD-2-Clause", "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -1318,6 +1349,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -1337,7 +1369,8 @@ "node_modules/fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.3", @@ -1376,6 +1409,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "license": "MIT", "dependencies": { "pend": "~1.2.0" } @@ -1411,9 +1445,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "funding": [ { "type": "individual", @@ -1432,15 +1466,16 @@ } }, "node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", "license": "MIT", "optional": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { @@ -1584,9 +1619,10 @@ } }, "node_modules/get-uri": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz", - "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", + "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", + "license": "MIT", "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", @@ -1689,6 +1725,7 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -1701,6 +1738,7 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -1753,13 +1791,10 @@ } }, "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", + "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "license": "MIT", "engines": { "node": ">= 12" } @@ -1873,11 +1908,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" - }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -1926,6 +1956,7 @@ "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -2060,7 +2091,8 @@ "node_modules/mitt": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "license": "MIT" }, "node_modules/mj-context-menu": { "version": "0.6.1", @@ -2103,6 +2135,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -2193,6 +2226,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", + "license": "MIT", "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.1.2", @@ -2211,6 +2245,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "license": "MIT", "dependencies": { "degenerator": "^5.0.0", "netmask": "^2.0.2" @@ -2284,7 +2319,8 @@ "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "license": "MIT" }, "node_modules/picocolors": { "version": "1.1.1", @@ -2397,6 +2433,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -2418,6 +2455,7 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", + "license": "MIT", "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", @@ -2466,16 +2504,17 @@ } }, "node_modules/puppeteer": { - "version": "24.10.2", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.10.2.tgz", - "integrity": "sha512-+k26rCz6akFZntx0hqUoFjCojgOLIxZs6p2k53LmEicwsT8F/FMBKfRfiBw1sitjiCvlR/15K7lBqfjXa251FA==", + "version": "24.29.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.29.1.tgz", + "integrity": "sha512-pX05JV1mMP+1N0vP3I4DOVwjMdpihv2LxQTtSfw6CUm5F0ZFLUFE/LSZ4yUWHYaM3C11Hdu+sgn7uY7teq5MYw==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.10.5", - "chromium-bidi": "5.1.0", + "@puppeteer/browsers": "2.10.13", + "chromium-bidi": "10.5.1", "cosmiconfig": "^9.0.0", - "devtools-protocol": "0.0.1452169", - "puppeteer-core": "24.10.2", + "devtools-protocol": "0.0.1521046", + "puppeteer-core": "24.29.1", "typed-query-selector": "^2.12.0" }, "bin": { @@ -2486,37 +2525,23 @@ } }, "node_modules/puppeteer-core": { - "version": "24.10.2", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.10.2.tgz", - "integrity": "sha512-CnzhOgrZj8DvkDqI+Yx+9or33i3Y9uUYbKyYpP4C13jWwXx/keQ38RMTMmxuLCWQlxjZrOH0Foq7P2fGP7adDQ==", - "dependencies": { - "@puppeteer/browsers": "2.10.5", - "chromium-bidi": "5.1.0", - "debug": "^4.4.1", - "devtools-protocol": "0.0.1452169", + "version": "24.29.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.29.1.tgz", + "integrity": "sha512-ErJ9qKCK+bdLvBa7QVSQTBSPm8KZbl1yC/WvhrZ0ut27hDf2QBzjDsn1IukzE1i1KtZ7NYGETOV4W1beoo9izA==", + "license": "Apache-2.0", + "dependencies": { + "@puppeteer/browsers": "2.10.13", + "chromium-bidi": "10.5.1", + "debug": "^4.4.3", + "devtools-protocol": "0.0.1521046", "typed-query-selector": "^2.12.0", - "ws": "^8.18.2" + "webdriver-bidi-protocol": "0.3.8", + "ws": "^8.18.3" }, "engines": { "node": ">=18" } }, - "node_modules/puppeteer-core/node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/qs": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", @@ -3027,17 +3052,19 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" } }, "node_modules/socks": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.5.tgz", - "integrity": "sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww==", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "license": "MIT", "dependencies": { - "ip-address": "^9.0.5", + "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" }, "engines": { @@ -3049,6 +3076,7 @@ "version": "8.0.5", "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "license": "MIT", "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", @@ -3062,6 +3090,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" @@ -3096,11 +3125,6 @@ "node": ">=18" } }, - "node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" - }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -3111,15 +3135,14 @@ } }, "node_modules/streamx": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz", - "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==", + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", + "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", + "license": "MIT", "dependencies": { + "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" } }, "node_modules/string-width": { @@ -3170,9 +3193,10 @@ } }, "node_modules/tar-fs": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.9.tgz", - "integrity": "sha512-XF4w9Xp+ZQgifKakjZYmFdkLoSWd34VGKcsTCwlNWM7QG3ZbaxnTsaBwnjFZqHRf/rROxaR8rXnbtwdvaDI+lA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", + "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==", + "license": "MIT", "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" @@ -3186,6 +3210,7 @@ "version": "3.1.7", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "license": "MIT", "dependencies": { "b4a": "^1.6.4", "fast-fifo": "^1.2.0", @@ -3196,14 +3221,16 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "license": "Apache-2.0", "dependencies": { "b4a": "^1.6.4" } }, "node_modules/tmp": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", + "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", + "license": "MIT", "engines": { "node": ">=14.14" } @@ -3233,7 +3260,8 @@ "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/tsx": { "version": "4.20.6", @@ -3272,13 +3300,14 @@ "node_modules/typed-query-selector": { "version": "2.12.0", "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", - "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==" + "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==", + "license": "MIT" }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -3331,6 +3360,12 @@ "node": ">= 0.8" } }, + "node_modules/webdriver-bidi-protocol": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.3.8.tgz", + "integrity": "sha512-21Yi2GhGntMc671vNBCjiAeEVknXjVRoyu+k+9xOMShu+ZQfpGQwnBqbNz/Sv4GXZ6JmutlPAi2nIJcrymAWuQ==", + "license": "Apache-2.0" + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -3374,9 +3409,10 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", - "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -3450,6 +3486,7 @@ "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -3460,7 +3497,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index cedc4b98..7b78d62e 100644 --- a/package.json +++ b/package.json @@ -35,19 +35,18 @@ "bugs": "https://github.com/line/line-bot-mcp-server/issues", "dependencies": { "@line/bot-sdk": "^10.0.0", - "@marp-team/marp-cli": "^4.1.2", + "@marp-team/marp-cli": "^4.2.3", "@marp-team/marp-core": "^4.1.0", "@modelcontextprotocol/sdk": "^1.8.0", - "puppeteer": "^24.10.2", + "puppeteer": "^24.27.0", "zod": "^3.25.76" }, "devDependencies": { - "@types/node": "^24.0.0", + "@types/node": "^24.9.2", "prettier": "3.6.2", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" }, - "license": "Apache-2.0", - "packageManager": "pnpm@10.19.0+sha512.c9fc7236e92adf5c8af42fd5bf1612df99c2ceb62f27047032f4720b33f8eacdde311865e91c411f2774f618d82f320808ecb51718bfa82c060c4ba7c76a32b8" + "license": "Apache-2.0" } From f1622b3bdc745e963b15d97bfbece2e93044c44a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 9 Nov 2025 14:02:20 +0000 Subject: [PATCH 248/415] chore(deps): update dependency @marp-team/marp-core to v4.2.0 (#305) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5289b8dc..295ed4f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -188,16 +188,16 @@ } }, "node_modules/@marp-team/marp-core": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@marp-team/marp-core/-/marp-core-4.1.0.tgz", - "integrity": "sha512-QJ79tGpr3itR4TVQ4Cbe9J0kLHg9sR5cNX19OWSHeVK9EjDzMA9iCwS+OCRMKBAvRHo0LGUJC3lm9wUBg3Ud6A==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@marp-team/marp-core/-/marp-core-4.2.0.tgz", + "integrity": "sha512-AoqRk9g6kF44OhdgV2eUsc0ciyxkI3IM/S4ntV+aHy59NSTcwPEHrbtAzqe+q2PK/trmQX233/0plusNZPoF+Q==", + "license": "MIT", "dependencies": { - "@marp-team/marpit": "^3.1.3", + "@marp-team/marpit": "^3.2.0", "@marp-team/marpit-svg-polyfill": "^2.1.0", "highlight.js": "^11.11.1", - "katex": "^0.16.22", + "katex": "^0.16.25", "mathjax-full": "^3.2.2", - "postcss": "^8.5.3", "postcss-selector-parser": "^7.1.0", "xss": "^1.0.15" }, @@ -206,18 +206,19 @@ } }, "node_modules/@marp-team/marpit": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@marp-team/marpit/-/marpit-3.1.3.tgz", - "integrity": "sha512-ApI1SmNK7qy6x1D9h9HGBPJorPhclincNXf4VXrpCJ1+gNFzVf8Aga10Q1JJYFb/5N5FtFxTodMZwMqB31S+Ig==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@marp-team/marpit/-/marpit-3.2.0.tgz", + "integrity": "sha512-DNCbwkAKugzCtiHJg/7DciIRwnKwAI2QH3VWWC1cVxoBBQTPnH5D9HcWqpDdduUqnCuW2PY78afVo+QlaInDdQ==", + "license": "MIT", "dependencies": { - "@csstools/postcss-is-pseudo-class": "^5.0.1", + "@csstools/postcss-is-pseudo-class": "^5.0.3", "cssesc": "^3.0.0", "js-yaml": "^4.1.0", "lodash.kebabcase": "^4.1.1", "markdown-it": "^14.1.0", "markdown-it-front-matter": "^0.2.4", - "postcss": "^8.5.3", - "postcss-nesting": "^13.0.1" + "postcss": "^8.5.6", + "postcss-nesting": "^13.0.2" }, "engines": { "node": ">=18" @@ -1920,13 +1921,14 @@ "license": "MIT" }, "node_modules/katex": { - "version": "0.16.22", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz", - "integrity": "sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==", + "version": "0.16.25", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.25.tgz", + "integrity": "sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" ], + "license": "MIT", "dependencies": { "commander": "^8.3.0" }, @@ -2350,9 +2352,9 @@ } }, "node_modules/postcss": { - "version": "8.5.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.5.tgz", - "integrity": "sha512-d/jtm+rdNT8tpXuHY5MMtcbJFBkhXE6593XVR9UoGCH8jSFGci7jGvMGH5RYd5PBJW+00NZQt6gf7CbagJCrhg==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "funding": [ { "type": "opencollective", @@ -2367,6 +2369,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", From 700d44c8f1c74519b5a49614ca130e9cd86143d1 Mon Sep 17 00:00:00 2001 From: koichi uchinishi Date: Tue, 11 Nov 2025 21:46:56 +0900 Subject: [PATCH 249/415] update the action schemas (#284) * update the action schemas * refactor the type * order the queries * remove description * change the format * final update * self review * fix the limitation * update the date format * removed the deprecated components * update the header, body, footer * change the limitation * fix the format --- src/common/schema/flexMessage.ts | 382 +++++++++++++++++++++++++++++-- 1 file changed, 366 insertions(+), 16 deletions(-) diff --git a/src/common/schema/flexMessage.ts b/src/common/schema/flexMessage.ts index fb34185f..b89e9f66 100644 --- a/src/common/schema/flexMessage.ts +++ b/src/common/schema/flexMessage.ts @@ -1,22 +1,372 @@ import { z } from "zod"; -export const flexMessageSchema = z.object({ - type: z.literal("flex").default("flex"), - altText: z +const sizeSchema = z + .enum(["xxs", "xs", "sm", "md", "lg", "xl", "xxl", "3xl", "4xl", "5xl"]) + .default("md"); +const imageSizeSchema = z + .enum([ + "xxs", + "xs", + "sm", + "md", + "lg", + "xl", + "xxl", + "3xl", + "4xl", + "5xl", + "full", + ]) + .default("md"); +const spacerSizeSchema = z.enum(["xs", "sm", "md", "lg", "xl", "xxl"]); +const marginSchema = z.enum(["none", "xs", "sm", "md", "lg", "xl", "xxl"]); +const spacingSchema = z.enum(["none", "xs", "sm", "md", "lg", "xl", "xxl"]); +const positionSchema = z.enum(["relative", "absolute"]); +const alignSchema = z.enum(["start", "end", "center"]); +const gravitySchema = z.enum(["top", "bottom", "center"]); +const offsetSchema = z.string().regex(/^\d+px$/, "Format: '10px'"); +const colorSchema = z + .string() + .regex(/^#[0-9A-Fa-f]{6}$/, "Hex format: '#FF0000'"); +const flexWeightSchema = z.number(); +const scalingSchema = z.boolean(); + +const positionFields = { + position: positionSchema.optional(), + offsetTop: offsetSchema.optional(), + offsetBottom: offsetSchema.optional(), + offsetStart: offsetSchema.optional(), + offsetEnd: offsetSchema.optional(), +}; + +const layoutFields = { + flex: flexWeightSchema.optional(), + margin: marginSchema.optional(), + ...positionFields, +}; + +const alignmentFields = { + align: alignSchema.optional(), + gravity: gravitySchema.optional(), +}; + +const textStyleFields = { + text: z.string().min(1).max(2000), + color: colorSchema.optional(), + size: sizeSchema.optional(), + weight: z.enum(["regular", "bold"]).optional(), + style: z.enum(["normal", "italic"]).optional(), + decoration: z.enum(["none", "underline", "line-through"]).optional(), +}; + +const paddingFields = { + paddingAll: z + .string() + .regex(/^\d+px$/) + .optional(), + paddingTop: z + .string() + .regex(/^\d+px$/) + .optional(), + paddingBottom: z .string() - .describe("Alternative text shown when flex message cannot be displayed."), - contents: z - .object({ - type: z - .enum(["bubble", "carousel"]) + .regex(/^\d+px$/) + .optional(), + paddingStart: z + .string() + .regex(/^\d+px$/) + .optional(), + paddingEnd: z + .string() + .regex(/^\d+px$/) + .optional(), +}; + +const flexActionSchema = z.discriminatedUnion("type", [ + z.object({ + type: z.literal("postback"), + data: z.string().min(1).max(300), + label: z.string().min(1).max(20), + displayText: z.string().min(1).max(300).optional(), + inputOption: z + .enum(["closeRichMenu", "openRichMenu", "openKeyboard", "openVoice"]) + .optional(), + fillInText: z.string().min(1).max(160).optional(), + }), + z.object({ + type: z.literal("message"), + label: z.string().min(1).max(20), + text: z.string().min(1).max(300), + }), + z.object({ + type: z.literal("uri"), + label: z.string().min(1).max(20), + uri: z + .string() + .describe( + "LINE Custom URI or URI" + + "LINE Custom URI document: https://developers.line.biz/ja/docs/messaging-api/using-line-url-scheme/", + ), + altUri: z + .object({ + desktop: z.string().url(), + }) + .optional(), + }), + z.object({ + type: z.literal("datetimepicker"), + label: z.string().min(1).max(20), + data: z.string().min(1).max(300), + mode: z.enum(["date", "time", "datetime"]), + initial: z + .string() + .optional() + .describe("Format: 2100-12-31, 23:59, 2100-12-31T23:59"), + max: z + .string() + .optional() + .describe("Format: 2100-12-31, 23:59, 2100-12-31T23:59"), + min: z + .string() + .optional() + .describe("Format: 2100-12-31, 23:59, 2100-12-31T23:59"), + }), + z.object({ + type: z.literal("camera"), + label: z.string().min(1).max(20), + }), + z.object({ + type: z.literal("cameraRoll"), + label: z.string().min(1).max(20), + }), + z.object({ + type: z.literal("location"), + label: z.string().min(1).max(20), + }), + z.object({ + type: z.literal("richmenuswitch"), + label: z.string().min(1).max(20), + richMenuAliasId: z.string().min(1).max(32), + data: z.string().min(1).max(300), + }), + z.object({ + type: z.literal("clipboard"), + label: z.string().min(1).max(20), + clipboardText: z.string().min(1).max(1000), + }), +]); + +const flexSpanSchema = z.object({ + type: z.literal("span"), + ...textStyleFields, +}); + +const flexComponentSchema: z.ZodType = z.lazy(() => + z.discriminatedUnion("type", [ + z.object({ + type: z.literal("separator"), + margin: marginSchema.optional(), + color: colorSchema.optional(), + }), + z.object({ + type: z.literal("text"), + contents: z.array(flexSpanSchema).optional(), + adjustMode: z.enum(["shrink-to-fit"]).optional(), + wrap: z.boolean().optional().default(true), + lineSpacing: z.enum(["xs", "sm", "md", "lg", "xl", "xxl"]).optional(), + maxLines: z.number().optional(), + action: flexActionSchema.optional(), + scaling: scalingSchema.optional(), + ...textStyleFields, + ...layoutFields, + ...alignmentFields, + }), + + z.object({ + type: z.literal("icon"), + url: z + .string() + .url() + .min(1) + .max(2000) + .refine(url => url.startsWith("https://"), "Must use HTTPS protocol"), + size: sizeSchema.optional(), + aspectRatio: z + .string() + .regex(/^\d+:\d+$/) .describe( - "Type of the container. 'bubble' for single container, 'carousel' for multiple swipeable bubbles.", + "Aspect ratio in '{width}:{height}' format (e.g., '1:1', '16:9'). Width and height must be 1-100000, height cannot exceed width × 3", + ) + .optional(), + scaling: scalingSchema.optional(), + ...layoutFields, + }), + z.object({ + type: z.literal("image"), + url: z + .string() + .url() + .min(1) + .max(2000) + .default( + "https://developers-resource.landpress.line.me/fx/img/01_1_cafe.png", ), - }) - .passthrough() - .describe( - "Flexible container structure following LINE Flex Message format. For 'bubble' type, can include header, " + - "hero, body, footer, and styles sections. For 'carousel' type, includes an array of bubble containers in " + - "the 'contents' property.", - ), + size: imageSizeSchema.optional(), + aspectRatio: z + .string() + .regex(/^\d+:\d+$/) + .describe( + "Aspect ratio in '{width}:{height}' format (e.g., '1:1', '16:9'). Width and height must be 1-100000, height cannot exceed width × 3", + ) + .optional(), + aspectMode: z.enum(["cover", "fit"]).optional(), + backgroundColor: colorSchema.optional(), + animated: z.boolean().optional(), + action: flexActionSchema.optional(), + scaling: scalingSchema.optional(), + ...layoutFields, + ...alignmentFields, + }), + z.object({ + type: z.literal("video"), + url: z + .string() + .url() + .min(1) + .max(2000) + .refine(url => url.startsWith("https://"), "Must use HTTPS protocol"), + previewUrl: z + .string() + .url() + .min(1) + .max(2000) + .default( + "https://developers-resource.landpress.line.me/fx/img/01_1_cafe.png", + ), + altContent: flexComponentSchema, + size: imageSizeSchema.optional(), + aspectRatio: z + .string() + .regex(/^\d+:\d+$/) + .describe( + "Aspect ratio in '{width}:{height}' format (e.g., '1:1', '16:9'). Width and height must be 1-100000, height cannot exceed width × 3", + ) + .optional(), + action: flexActionSchema.optional(), + scaling: scalingSchema.optional(), + ...layoutFields, + ...alignmentFields, + }), + + z.object({ + type: z.literal("button"), + action: flexActionSchema, + height: z.enum(["sm", "md"]).optional(), + style: z.enum(["link", "primary", "secondary"]).optional(), + color: colorSchema.optional(), + gravity: gravitySchema.optional(), + adjustMode: z.enum(["shrink-to-fit"]).optional(), + scaling: scalingSchema.optional(), + ...layoutFields, + }), + + z.object({ + type: z.literal("box"), + layout: z.enum(["horizontal", "vertical", "baseline"]), + contents: z.array(flexComponentSchema), + backgroundColor: colorSchema.optional(), + borderColor: colorSchema.optional(), + borderWidth: z + .string() + .regex(/^\d+px$/) + .optional(), + cornerRadius: z + .string() + .regex(/^\d+px$/) + .optional(), + spacing: spacingSchema.optional(), + width: z + .string() + .regex(/^\d+px$/) + .optional(), + height: z + .string() + .regex(/^\d+px$/) + .optional(), + justifyContent: z + .enum([ + "flex-start", + "center", + "flex-end", + "space-between", + "space-around", + "space-evenly", + ]) + .optional(), + alignItems: z.enum(["flex-start", "center", "flex-end"]).optional(), + background: z + .object({ + type: z.literal("linearGradient"), + angle: z.string().regex(/^\d+deg$/, "Format: '90deg'"), + startColor: colorSchema, + endColor: colorSchema, + }) + .optional(), + action: flexActionSchema.optional(), + ...layoutFields, + ...paddingFields, + }), + ]), +); + +const sectionStyleSchema = z.object({ + backgroundColor: colorSchema.optional(), + separator: z.boolean().optional(), + separatorColor: colorSchema.optional(), +}); + +const flexBubbleStylesSchema = z.object({ + header: sectionStyleSchema.optional(), + hero: sectionStyleSchema.optional(), + body: sectionStyleSchema.optional(), + footer: sectionStyleSchema.optional(), +}); + +export const flexBubbleSchema = z.object({ + type: z.literal("bubble"), + size: z + .enum(["nano", "micro", "deca", "hecto", "kilo", "mega", "giga"]) + .optional(), + direction: z.enum(["ltr", "rtl"]).optional(), + header: flexComponentSchema + .optional() + .describe("Header must be a Box") + .refine(component => component.type === "box", "Header must be a Box"), + hero: flexComponentSchema.optional(), + body: flexComponentSchema + .optional() + .describe("Body must be a Box") + .refine(component => component.type === "box", "Body must be a Box"), + footer: flexComponentSchema + .optional() + .describe("Footer must be a Box") + .refine(component => component.type === "box", "Footer must be a Box"), + styles: flexBubbleStylesSchema.optional(), + action: flexActionSchema.optional(), +}); + +const flexCarouselSchema = z.object({ + type: z.literal("carousel"), + contents: z.array(flexBubbleSchema), +}); + +const flexContainerSchema = z.discriminatedUnion("type", [ + flexBubbleSchema, + flexCarouselSchema, +]); + +export const flexMessageSchema = z.object({ + type: z.literal("flex").default("flex"), + altText: z.string().min(1).max(400), + contents: flexContainerSchema, }); From a40019ae241c964c651aeef7047c3d4d044adcf5 Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Fri, 14 Nov 2025 15:47:08 +0900 Subject: [PATCH 250/415] Add docker CI (#307) * Fix lock file * Fix Dockerfile * Add docker CI --- .github/workflows/test.yml | 11 + Dockerfile | 4 +- package-lock.json | 417 ++++++++++++++++++++++++++++++++++++- 3 files changed, 429 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5e14c35e..c20b54f1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -42,6 +42,17 @@ jobs: - name: publint run: npx publint + docker-build: + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + with: + submodules: true + - name: Build Docker image + run: docker build . + pinact: runs-on: ubuntu-latest permissions: diff --git a/Dockerfile b/Dockerfile index cc4e6f38..b36a5380 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ COPY . /app WORKDIR /app -RUN --mount=type=cache,target=/root/.npm-production npm ci --ignore-scripts --omit-dev +RUN --mount=type=cache,target=/root/.npm-production npm ci --ignore-scripts RUN --mount=type=cache,target=/root/.npm npm run build @@ -57,7 +57,7 @@ WORKDIR /app RUN chown -R appuser:appgroup /app # Install *only* the production dependencies -RUN npm ci --ignore-scripts --omit-dev +RUN npm ci --ignore-scripts --omit=dev # Now, switch to running as our non-root user for the actual app process USER appuser diff --git a/package-lock.json b/package-lock.json index 295ed4f0..f38c6ff9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -118,6 +118,74 @@ "postcss-selector-parser": "^7.0.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", + "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", + "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", + "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", + "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/darwin-arm64": { "version": "0.25.2", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", @@ -135,6 +203,346 @@ "node": ">=18" } }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", + "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", + "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", + "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", + "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", + "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", + "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", + "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", + "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", + "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", + "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", + "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", + "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", + "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", + "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", + "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", + "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", + "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", + "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", + "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", + "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@line/bot-sdk": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.4.0.tgz", @@ -210,6 +618,7 @@ "resolved": "https://registry.npmjs.org/@marp-team/marpit/-/marpit-3.2.0.tgz", "integrity": "sha512-DNCbwkAKugzCtiHJg/7DciIRwnKwAI2QH3VWWC1cVxoBBQTPnH5D9HcWqpDdduUqnCuW2PY78afVo+QlaInDdQ==", "license": "MIT", + "peer": true, "dependencies": { "@csstools/postcss-is-pseudo-class": "^5.0.3", "cssesc": "^3.0.0", @@ -915,7 +1324,8 @@ "version": "0.0.1521046", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1521046.tgz", "integrity": "sha512-vhE6eymDQSKWUXwwA37NtTTVEzjtGVfDr3pRbsWEQ5onH/Snp2c+2xZHWJJawG/0hCCJLRGt4xVtEVUVILol4w==", - "license": "BSD-3-Clause" + "license": "BSD-3-Clause", + "peer": true }, "node_modules/dunder-proto": { "version": "1.0.1", @@ -1274,6 +1684,7 @@ "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", "license": "MIT", + "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.0", @@ -2370,6 +2781,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -2409,6 +2821,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -3312,6 +3725,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -3500,6 +3914,7 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } From 929dd645e4cd2895bc77a530cca909bae3b94270 Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Fri, 14 Nov 2025 17:32:26 +0900 Subject: [PATCH 251/415] Fix Create Richmenu Tool in npx (#308) Fix package.json --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 7b78d62e..4cec2454 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ "line-bot-mcp-server": "./dist/index.js" }, "files": [ - "dist" + "dist", + "richmenu-template" ], "scripts": { "build": "tsc && shx chmod +x dist/*.js", From 46bb5b44eea385214f3f1563dfcd7245338b55e0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 14 Nov 2025 08:34:13 +0000 Subject: [PATCH 252/415] chore(deps): update dependency @line/bot-sdk to v10.5.0 (#309) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 45 ++++++++------------------------------------- 1 file changed, 8 insertions(+), 37 deletions(-) diff --git a/package-lock.json b/package-lock.json index f38c6ff9..41a69643 100644 --- a/package-lock.json +++ b/package-lock.json @@ -544,32 +544,18 @@ } }, "node_modules/@line/bot-sdk": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.4.0.tgz", - "integrity": "sha512-deUato9NM0o30cxtREuRGdKEdr7cXytK9glntr7FcYYkVm7nTTTnN/UOO4NoGJp6B3bXDQF5+RcGliBSFuBywA==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.5.0.tgz", + "integrity": "sha512-YmFDH1fr6b3kWiTDld8JID80cI+O5IlYegYeqhvBZx/zh2GBHdeV7i+pdwDjATRY9FHahYkcYmHb27UQldh0qw==", "license": "Apache-2.0", "dependencies": { - "@types/node": "^22.18.10" + "@types/node": "^24.0.0" + }, + "engines": { + "node": ">=20" }, "optionalDependencies": { "axios": "^1.7.4" - }, - "peerDependencies": { - "@marp-team/marpit": ">=0.5.0" - }, - "peerDependenciesMeta": { - "@marp-team/marpit": { - "optional": true - } - } - }, - "node_modules/@line/bot-sdk/node_modules/@types/node": { - "version": "22.18.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.13.tgz", - "integrity": "sha512-Bo45YKIjnmFtv6I1TuC8AaHBbqXtIo+Om5fE4QiU1Tj8QR/qt+8O3BAtOimG5IFmwaWiPmB3Mv3jtYzBA4Us2A==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" } }, "node_modules/@marp-team/marp-cli": { @@ -618,7 +604,6 @@ "resolved": "https://registry.npmjs.org/@marp-team/marpit/-/marpit-3.2.0.tgz", "integrity": "sha512-DNCbwkAKugzCtiHJg/7DciIRwnKwAI2QH3VWWC1cVxoBBQTPnH5D9HcWqpDdduUqnCuW2PY78afVo+QlaInDdQ==", "license": "MIT", - "peer": true, "dependencies": { "@csstools/postcss-is-pseudo-class": "^5.0.3", "cssesc": "^3.0.0", @@ -743,7 +728,6 @@ "version": "24.10.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.0.tgz", "integrity": "sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A==", - "devOptional": true, "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -753,7 +737,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "devOptional": true, "license": "MIT" }, "node_modules/@types/yauzl": { @@ -1324,8 +1307,7 @@ "version": "0.0.1521046", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1521046.tgz", "integrity": "sha512-vhE6eymDQSKWUXwwA37NtTTVEzjtGVfDr3pRbsWEQ5onH/Snp2c+2xZHWJJawG/0hCCJLRGt4xVtEVUVILol4w==", - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/dunder-proto": { "version": "1.0.1", @@ -1684,7 +1666,6 @@ "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", "license": "MIT", - "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.0", @@ -2781,7 +2762,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -2821,7 +2801,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -3725,7 +3704,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -3739,12 +3717,6 @@ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==" }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "license": "MIT" - }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -3914,7 +3886,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } From 02d58b04945f4802da11f83521089b8e27b5e784 Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Fri, 14 Nov 2025 18:23:31 +0900 Subject: [PATCH 253/415] Fix release CI (#312) * chore(deps): update dependency @line/bot-sdk to v10.5.0 (#6) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Fix CI --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4941e565..eed50e29 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,7 +24,6 @@ jobs: registry-url: 'https://registry.npmjs.org' # Enable this when setup-node v5 is released, and release is broken # package-manager-cache: false - - run: npm install - name: Update version in package.json, package-lock.json run: | if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then @@ -35,6 +34,7 @@ jobs: VERSION=${VERSION#v} echo "VERSION=$VERSION" >> $GITHUB_ENV node .github/scripts/update-version.mjs $VERSION + - run: npm install - run: npm run release - name: Create GitHub Issue on Failure From a16e5ab98356995de73d3f918f502f96599a20a0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 19 Nov 2025 00:54:11 +0000 Subject: [PATCH 254/415] chore(deps): update dependency @types/node to v24.10.1 (#315) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 41a69643..a5635a3a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -725,20 +725,14 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.0.tgz", - "integrity": "sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A==", + "version": "24.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", + "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" } }, - "node_modules/@types/node/node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "license": "MIT" - }, "node_modules/@types/yauzl": { "version": "2.10.3", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", @@ -3717,6 +3711,12 @@ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==" }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "license": "MIT" + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", From e68d214d0d01ddb1c75bc39eaeb9e7b613f2b52d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 20 Nov 2025 09:01:46 +0000 Subject: [PATCH 255/415] chore(deps): update dependency puppeteer to v24.30.0 (#316) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index a5635a3a..46876fb8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1069,9 +1069,9 @@ } }, "node_modules/chromium-bidi": { - "version": "10.5.1", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-10.5.1.tgz", - "integrity": "sha512-rlj6OyhKhVTnk4aENcUme3Jl9h+cq4oXu4AzBcvr8RMmT6BR4a3zSNT9dbIfXr9/BS6ibzRyDhowuw4n2GgzsQ==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-11.0.0.tgz", + "integrity": "sha512-cM3DI+OOb89T3wO8cpPSro80Q9eKYJ7hGVXoGS3GkDPxnYSqiv+6xwpIf6XERyJ9Tdsl09hmNmY94BkgZdVekw==", "license": "Apache-2.0", "dependencies": { "mitt": "^3.0.1", @@ -2893,17 +2893,17 @@ } }, "node_modules/puppeteer": { - "version": "24.29.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.29.1.tgz", - "integrity": "sha512-pX05JV1mMP+1N0vP3I4DOVwjMdpihv2LxQTtSfw6CUm5F0ZFLUFE/LSZ4yUWHYaM3C11Hdu+sgn7uY7teq5MYw==", + "version": "24.30.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.30.0.tgz", + "integrity": "sha512-A5OtCi9WpiXBQgJ2vQiZHSyrAzQmO/WDsvghqlN4kgw21PhxA5knHUaUQq/N3EMt8CcvSS0RM+kmYLJmedR3TQ==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.10.13", - "chromium-bidi": "10.5.1", + "chromium-bidi": "11.0.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1521046", - "puppeteer-core": "24.29.1", + "puppeteer-core": "24.30.0", "typed-query-selector": "^2.12.0" }, "bin": { @@ -2914,13 +2914,13 @@ } }, "node_modules/puppeteer-core": { - "version": "24.29.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.29.1.tgz", - "integrity": "sha512-ErJ9qKCK+bdLvBa7QVSQTBSPm8KZbl1yC/WvhrZ0ut27hDf2QBzjDsn1IukzE1i1KtZ7NYGETOV4W1beoo9izA==", + "version": "24.30.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.30.0.tgz", + "integrity": "sha512-2S3Smy0t0W4wJnNvDe7W0bE7wDmZjfZ3ljfMgJd6hn2Hq/f0jgN+x9PULZo2U3fu5UUIJ+JP8cNUGllu8P91Pg==", "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.10.13", - "chromium-bidi": "10.5.1", + "chromium-bidi": "11.0.0", "debug": "^4.4.3", "devtools-protocol": "0.0.1521046", "typed-query-selector": "^2.12.0", From 330db5585ba53a92195ade4c4531993a498d626b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 20 Nov 2025 22:12:35 +0000 Subject: [PATCH 256/415] chore(deps): update actions/checkout action to v5.0.1 (#317) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/check-eol-newrelease.yml | 2 +- .github/workflows/create-draft-release.yml | 2 +- .github/workflows/label-issue.yml | 2 +- .github/workflows/npm-audit.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 6 +++--- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/check-eol-newrelease.yml b/.github/workflows/check-eol-newrelease.yml index b83227a0..836fb7f2 100644 --- a/.github/workflows/check-eol-newrelease.yml +++ b/.github/workflows/check-eol-newrelease.yml @@ -15,7 +15,7 @@ jobs: if: github.repository == 'line/line-bot-mcp-server' steps: - name: Check out code - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - name: Run EoL & NewRelease check uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 diff --git a/.github/workflows/create-draft-release.yml b/.github/workflows/create-draft-release.yml index beb9d00f..a5e1c32b 100644 --- a/.github/workflows/create-draft-release.yml +++ b/.github/workflows/create-draft-release.yml @@ -45,7 +45,7 @@ jobs: permissions: contents: write steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - name: Fetch Latest Release id: get-latest-release uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 diff --git a/.github/workflows/label-issue.yml b/.github/workflows/label-issue.yml index 5d30e866..17027961 100644 --- a/.github/workflows/label-issue.yml +++ b/.github/workflows/label-issue.yml @@ -13,7 +13,7 @@ jobs: permissions: issues: write steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - name: Add label on issue open if: github.event.action == 'opened' || github.event.action == 'reopened' diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index d5dfb8ca..11193e94 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -16,7 +16,7 @@ jobs: issues: write if: github.repository == 'line/line-bot-mcp-server' steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: '24' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index eed50e29..099d3e27 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ jobs: id-token: write issues: write steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 # Setup .npmrc file to publish to GitHub Packages - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c20b54f1..54b3c33b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,7 +23,7 @@ jobs: name: Node.js ${{ matrix.node }} steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 with: submodules: true - name: Setup Node.js @@ -47,7 +47,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 with: submodules: true - name: Build Docker image @@ -58,7 +58,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - name: Run pinact uses: suzuki-shunsuke/pinact-action@49cbd6acd0dbab6a6be2585d1dbdaa43b4410133 # v1.0.0 with: From d9f8bc22a9645967937210b0c0c45f20b533651a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Nov 2025 16:15:10 +0000 Subject: [PATCH 257/415] chore(deps): update dependency puppeteer to v24.31.0 (#318) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 46876fb8..37ca0e00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2893,9 +2893,9 @@ } }, "node_modules/puppeteer": { - "version": "24.30.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.30.0.tgz", - "integrity": "sha512-A5OtCi9WpiXBQgJ2vQiZHSyrAzQmO/WDsvghqlN4kgw21PhxA5knHUaUQq/N3EMt8CcvSS0RM+kmYLJmedR3TQ==", + "version": "24.31.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.31.0.tgz", + "integrity": "sha512-q8y5yLxLD8xdZdzNWqdOL43NbfvUOp60SYhaLZQwHC9CdKldxQKXOyJAciOr7oUJfyAH/KgB2wKvqT2sFKoVXA==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -2903,7 +2903,7 @@ "chromium-bidi": "11.0.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1521046", - "puppeteer-core": "24.30.0", + "puppeteer-core": "24.31.0", "typed-query-selector": "^2.12.0" }, "bin": { @@ -2914,9 +2914,9 @@ } }, "node_modules/puppeteer-core": { - "version": "24.30.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.30.0.tgz", - "integrity": "sha512-2S3Smy0t0W4wJnNvDe7W0bE7wDmZjfZ3ljfMgJd6hn2Hq/f0jgN+x9PULZo2U3fu5UUIJ+JP8cNUGllu8P91Pg==", + "version": "24.31.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.31.0.tgz", + "integrity": "sha512-pnAohhSZipWQoFpXuGV7xCZfaGhqcBR9C4pVrU0QSrcMi7tQMH9J9lDBqBvyMAHQqe8HCARuREqFuVKRQOgTvg==", "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.10.13", @@ -2924,7 +2924,7 @@ "debug": "^4.4.3", "devtools-protocol": "0.0.1521046", "typed-query-selector": "^2.12.0", - "webdriver-bidi-protocol": "0.3.8", + "webdriver-bidi-protocol": "0.3.9", "ws": "^8.18.3" }, "engines": { @@ -3750,9 +3750,9 @@ } }, "node_modules/webdriver-bidi-protocol": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.3.8.tgz", - "integrity": "sha512-21Yi2GhGntMc671vNBCjiAeEVknXjVRoyu+k+9xOMShu+ZQfpGQwnBqbNz/Sv4GXZ6JmutlPAi2nIJcrymAWuQ==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.3.9.tgz", + "integrity": "sha512-uIYvlRQ0PwtZR1EzHlTMol1G0lAlmOe6wPykF9a77AK3bkpvZHzIVxRE2ThOx5vjy2zISe0zhwf5rzuUfbo1PQ==", "license": "Apache-2.0" }, "node_modules/which": { From ad49fd51f367567c12d34230d43c82c47698ee0a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Nov 2025 18:56:14 +0000 Subject: [PATCH 258/415] chore(deps): update actions/checkout action to v6 (#319) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/check-eol-newrelease.yml | 2 +- .github/workflows/create-draft-release.yml | 2 +- .github/workflows/label-issue.yml | 2 +- .github/workflows/npm-audit.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 6 +++--- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/check-eol-newrelease.yml b/.github/workflows/check-eol-newrelease.yml index 836fb7f2..31c1f444 100644 --- a/.github/workflows/check-eol-newrelease.yml +++ b/.github/workflows/check-eol-newrelease.yml @@ -15,7 +15,7 @@ jobs: if: github.repository == 'line/line-bot-mcp-server' steps: - name: Check out code - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - name: Run EoL & NewRelease check uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 diff --git a/.github/workflows/create-draft-release.yml b/.github/workflows/create-draft-release.yml index a5e1c32b..fe890f2b 100644 --- a/.github/workflows/create-draft-release.yml +++ b/.github/workflows/create-draft-release.yml @@ -45,7 +45,7 @@ jobs: permissions: contents: write steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - name: Fetch Latest Release id: get-latest-release uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 diff --git a/.github/workflows/label-issue.yml b/.github/workflows/label-issue.yml index 17027961..9f27ed7d 100644 --- a/.github/workflows/label-issue.yml +++ b/.github/workflows/label-issue.yml @@ -13,7 +13,7 @@ jobs: permissions: issues: write steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - name: Add label on issue open if: github.event.action == 'opened' || github.event.action == 'reopened' diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index 11193e94..976940c6 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -16,7 +16,7 @@ jobs: issues: write if: github.repository == 'line/line-bot-mcp-server' steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: '24' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 099d3e27..0aeaad81 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ jobs: id-token: write issues: write steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 # Setup .npmrc file to publish to GitHub Packages - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 54b3c33b..78d4132a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,7 +23,7 @@ jobs: name: Node.js ${{ matrix.node }} steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: submodules: true - name: Setup Node.js @@ -47,7 +47,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: submodules: true - name: Build Docker image @@ -58,7 +58,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 - name: Run pinact uses: suzuki-shunsuke/pinact-action@49cbd6acd0dbab6a6be2585d1dbdaa43b4410133 # v1.0.0 with: From ee07da5b391e2ad108884233b020885ae83a4066 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 Dec 2025 10:49:10 +0000 Subject: [PATCH 259/415] chore(deps): update dependency prettier to v3.7.0 (#322) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 9 +++++---- package.json | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 37ca0e00..57cefaf5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ }, "devDependencies": { "@types/node": "^24.9.2", - "prettier": "3.6.2", + "prettier": "3.7.0", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" @@ -2804,10 +2804,11 @@ } }, "node_modules/prettier": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", - "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.0.tgz", + "integrity": "sha512-pBiBj/gjRY9Qpk1b7cDda6Rbwvkaggos779AHQ0Ek/odwDx6xG6DRBxtnp1QmxbuD7pAO8/SQ8vuhtGv9LoLWA==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, diff --git a/package.json b/package.json index 4cec2454..8291b85a 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ }, "devDependencies": { "@types/node": "^24.9.2", - "prettier": "3.6.2", + "prettier": "3.7.0", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" From ec059937ff07e0413c5aa0ca6e2093bc20de56ac Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 Dec 2025 15:45:35 +0000 Subject: [PATCH 260/415] chore(deps): update dependency prettier to v3.7.1 (#323) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 57cefaf5..bee0724e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ }, "devDependencies": { "@types/node": "^24.9.2", - "prettier": "3.7.0", + "prettier": "3.7.1", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" @@ -2804,9 +2804,9 @@ } }, "node_modules/prettier": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.0.tgz", - "integrity": "sha512-pBiBj/gjRY9Qpk1b7cDda6Rbwvkaggos779AHQ0Ek/odwDx6xG6DRBxtnp1QmxbuD7pAO8/SQ8vuhtGv9LoLWA==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.1.tgz", + "integrity": "sha512-RWKXE4qB3u5Z6yz7omJkjWwmTfLdcbv44jUVHC5NpfXwFGzvpQM798FGv/6WNK879tc+Cn0AAyherCl1KjbyZQ==", "dev": true, "license": "MIT", "bin": { diff --git a/package.json b/package.json index 8291b85a..282d80ea 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ }, "devDependencies": { "@types/node": "^24.9.2", - "prettier": "3.7.0", + "prettier": "3.7.1", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" From f88341e96fa475d583560a2e45152844cdc8f5e9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 6 Dec 2025 08:06:34 +0000 Subject: [PATCH 261/415] chore(deps): update dependency prettier to v3.7.2 (#325) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index bee0724e..6aa99f48 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ }, "devDependencies": { "@types/node": "^24.9.2", - "prettier": "3.7.1", + "prettier": "3.7.2", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" @@ -2804,9 +2804,9 @@ } }, "node_modules/prettier": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.1.tgz", - "integrity": "sha512-RWKXE4qB3u5Z6yz7omJkjWwmTfLdcbv44jUVHC5NpfXwFGzvpQM798FGv/6WNK879tc+Cn0AAyherCl1KjbyZQ==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.2.tgz", + "integrity": "sha512-n3HV2J6QhItCXndGa3oMWvWFAgN1ibnS7R9mt6iokScBOC0Ul9/iZORmU2IWUMcyAQaMPjTlY3uT34TqocUxMA==", "dev": true, "license": "MIT", "bin": { diff --git a/package.json b/package.json index 282d80ea..410a5104 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ }, "devDependencies": { "@types/node": "^24.9.2", - "prettier": "3.7.1", + "prettier": "3.7.2", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" From 86c18789b0f7c03050328ff703bad02f90d74d84 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 6 Dec 2025 21:05:58 +0000 Subject: [PATCH 262/415] chore(deps): update dependency prettier to v3.7.3 (#326) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6aa99f48..1f876335 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ }, "devDependencies": { "@types/node": "^24.9.2", - "prettier": "3.7.2", + "prettier": "3.7.3", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" @@ -2804,9 +2804,9 @@ } }, "node_modules/prettier": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.2.tgz", - "integrity": "sha512-n3HV2J6QhItCXndGa3oMWvWFAgN1ibnS7R9mt6iokScBOC0Ul9/iZORmU2IWUMcyAQaMPjTlY3uT34TqocUxMA==", + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.3.tgz", + "integrity": "sha512-QgODejq9K3OzoBbuyobZlUhznP5SKwPqp+6Q6xw6o8gnhr4O85L2U915iM2IDcfF2NPXVaM9zlo9tdwipnYwzg==", "dev": true, "license": "MIT", "bin": { diff --git a/package.json b/package.json index 410a5104..d013f63f 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ }, "devDependencies": { "@types/node": "^24.9.2", - "prettier": "3.7.2", + "prettier": "3.7.3", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" From 30198ca12cdef7919386e1c978995c3415f6c27e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 7 Dec 2025 18:01:12 +0000 Subject: [PATCH 263/415] chore(deps): update dependency tsx to v4.21.0 (#327) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 232 +++++++++++++++++++++++++--------------------- 1 file changed, 125 insertions(+), 107 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1f876335..6eeb0a50 100644 --- a/package-lock.json +++ b/package-lock.json @@ -119,9 +119,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", - "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.1.tgz", + "integrity": "sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==", "cpu": [ "ppc64" ], @@ -136,9 +136,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", - "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.1.tgz", + "integrity": "sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==", "cpu": [ "arm" ], @@ -153,9 +153,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", - "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.1.tgz", + "integrity": "sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==", "cpu": [ "arm64" ], @@ -170,9 +170,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", - "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.1.tgz", + "integrity": "sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==", "cpu": [ "x64" ], @@ -187,9 +187,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", - "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.1.tgz", + "integrity": "sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==", "cpu": [ "arm64" ], @@ -204,9 +204,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", - "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.1.tgz", + "integrity": "sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==", "cpu": [ "x64" ], @@ -221,9 +221,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", - "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.1.tgz", + "integrity": "sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==", "cpu": [ "arm64" ], @@ -238,9 +238,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", - "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.1.tgz", + "integrity": "sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==", "cpu": [ "x64" ], @@ -255,9 +255,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", - "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.1.tgz", + "integrity": "sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==", "cpu": [ "arm" ], @@ -272,9 +272,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", - "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.1.tgz", + "integrity": "sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==", "cpu": [ "arm64" ], @@ -289,9 +289,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", - "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.1.tgz", + "integrity": "sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==", "cpu": [ "ia32" ], @@ -306,9 +306,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", - "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.1.tgz", + "integrity": "sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==", "cpu": [ "loong64" ], @@ -323,9 +323,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", - "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.1.tgz", + "integrity": "sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==", "cpu": [ "mips64el" ], @@ -340,9 +340,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", - "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.1.tgz", + "integrity": "sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==", "cpu": [ "ppc64" ], @@ -357,9 +357,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", - "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.1.tgz", + "integrity": "sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==", "cpu": [ "riscv64" ], @@ -374,9 +374,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", - "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.1.tgz", + "integrity": "sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==", "cpu": [ "s390x" ], @@ -391,9 +391,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", - "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.1.tgz", + "integrity": "sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==", "cpu": [ "x64" ], @@ -408,9 +408,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", - "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.1.tgz", + "integrity": "sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==", "cpu": [ "arm64" ], @@ -425,9 +425,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", - "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.1.tgz", + "integrity": "sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==", "cpu": [ "x64" ], @@ -442,9 +442,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", - "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.1.tgz", + "integrity": "sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==", "cpu": [ "arm64" ], @@ -459,9 +459,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", - "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.1.tgz", + "integrity": "sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==", "cpu": [ "x64" ], @@ -475,10 +475,27 @@ "node": ">=18" } }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.1.tgz", + "integrity": "sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", - "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.1.tgz", + "integrity": "sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==", "cpu": [ "x64" ], @@ -493,9 +510,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", - "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.1.tgz", + "integrity": "sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==", "cpu": [ "arm64" ], @@ -510,9 +527,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", - "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.1.tgz", + "integrity": "sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==", "cpu": [ "ia32" ], @@ -527,9 +544,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", - "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.1.tgz", + "integrity": "sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==", "cpu": [ "x64" ], @@ -1420,9 +1437,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", - "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.1.tgz", + "integrity": "sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -1433,31 +1450,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.2", - "@esbuild/android-arm": "0.25.2", - "@esbuild/android-arm64": "0.25.2", - "@esbuild/android-x64": "0.25.2", - "@esbuild/darwin-arm64": "0.25.2", - "@esbuild/darwin-x64": "0.25.2", - "@esbuild/freebsd-arm64": "0.25.2", - "@esbuild/freebsd-x64": "0.25.2", - "@esbuild/linux-arm": "0.25.2", - "@esbuild/linux-arm64": "0.25.2", - "@esbuild/linux-ia32": "0.25.2", - "@esbuild/linux-loong64": "0.25.2", - "@esbuild/linux-mips64el": "0.25.2", - "@esbuild/linux-ppc64": "0.25.2", - "@esbuild/linux-riscv64": "0.25.2", - "@esbuild/linux-s390x": "0.25.2", - "@esbuild/linux-x64": "0.25.2", - "@esbuild/netbsd-arm64": "0.25.2", - "@esbuild/netbsd-x64": "0.25.2", - "@esbuild/openbsd-arm64": "0.25.2", - "@esbuild/openbsd-x64": "0.25.2", - "@esbuild/sunos-x64": "0.25.2", - "@esbuild/win32-arm64": "0.25.2", - "@esbuild/win32-ia32": "0.25.2", - "@esbuild/win32-x64": "0.25.2" + "@esbuild/aix-ppc64": "0.27.1", + "@esbuild/android-arm": "0.27.1", + "@esbuild/android-arm64": "0.27.1", + "@esbuild/android-x64": "0.27.1", + "@esbuild/darwin-arm64": "0.27.1", + "@esbuild/darwin-x64": "0.27.1", + "@esbuild/freebsd-arm64": "0.27.1", + "@esbuild/freebsd-x64": "0.27.1", + "@esbuild/linux-arm": "0.27.1", + "@esbuild/linux-arm64": "0.27.1", + "@esbuild/linux-ia32": "0.27.1", + "@esbuild/linux-loong64": "0.27.1", + "@esbuild/linux-mips64el": "0.27.1", + "@esbuild/linux-ppc64": "0.27.1", + "@esbuild/linux-riscv64": "0.27.1", + "@esbuild/linux-s390x": "0.27.1", + "@esbuild/linux-x64": "0.27.1", + "@esbuild/netbsd-arm64": "0.27.1", + "@esbuild/netbsd-x64": "0.27.1", + "@esbuild/openbsd-arm64": "0.27.1", + "@esbuild/openbsd-x64": "0.27.1", + "@esbuild/openharmony-arm64": "0.27.1", + "@esbuild/sunos-x64": "0.27.1", + "@esbuild/win32-arm64": "0.27.1", + "@esbuild/win32-ia32": "0.27.1", + "@esbuild/win32-x64": "0.27.1" } }, "node_modules/escalade": { @@ -3654,13 +3672,13 @@ "license": "0BSD" }, "node_modules/tsx": { - "version": "4.20.6", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz", - "integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", + "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "~0.25.0", + "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" }, "bin": { From 73b0c63fcb820a9e33abac71e6fffa0e140b1017 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 9 Dec 2025 03:59:53 +0000 Subject: [PATCH 264/415] chore(deps): update actions/checkout action to v6.0.1 (#328) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/check-eol-newrelease.yml | 2 +- .github/workflows/create-draft-release.yml | 2 +- .github/workflows/label-issue.yml | 2 +- .github/workflows/npm-audit.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 6 +++--- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/check-eol-newrelease.yml b/.github/workflows/check-eol-newrelease.yml index 31c1f444..a411e1b8 100644 --- a/.github/workflows/check-eol-newrelease.yml +++ b/.github/workflows/check-eol-newrelease.yml @@ -15,7 +15,7 @@ jobs: if: github.repository == 'line/line-bot-mcp-server' steps: - name: Check out code - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Run EoL & NewRelease check uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 diff --git a/.github/workflows/create-draft-release.yml b/.github/workflows/create-draft-release.yml index fe890f2b..3707470f 100644 --- a/.github/workflows/create-draft-release.yml +++ b/.github/workflows/create-draft-release.yml @@ -45,7 +45,7 @@ jobs: permissions: contents: write steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Fetch Latest Release id: get-latest-release uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 diff --git a/.github/workflows/label-issue.yml b/.github/workflows/label-issue.yml index 9f27ed7d..0cff2210 100644 --- a/.github/workflows/label-issue.yml +++ b/.github/workflows/label-issue.yml @@ -13,7 +13,7 @@ jobs: permissions: issues: write steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Add label on issue open if: github.event.action == 'opened' || github.event.action == 'reopened' diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index 976940c6..261b191f 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -16,7 +16,7 @@ jobs: issues: write if: github.repository == 'line/line-bot-mcp-server' steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: node-version: '24' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0aeaad81..beaffc75 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ jobs: id-token: write issues: write steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 # Setup .npmrc file to publish to GitHub Packages - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 78d4132a..ac2a4d26 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,7 +23,7 @@ jobs: name: Node.js ${{ matrix.node }} steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: submodules: true - name: Setup Node.js @@ -47,7 +47,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: submodules: true - name: Build Docker image @@ -58,7 +58,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Run pinact uses: suzuki-shunsuke/pinact-action@49cbd6acd0dbab6a6be2585d1dbdaa43b4410133 # v1.0.0 with: From 9e96d6d299babb199a452152e4316abf12237b7b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 10 Dec 2025 03:16:39 +0000 Subject: [PATCH 265/415] chore(deps): update actions/setup-node action to v6.1.0 (#330) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/npm-audit.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index 261b191f..d7def15b 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -17,7 +17,7 @@ jobs: if: github.repository == 'line/line-bot-mcp-server' steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: '24' # Enable this when setup-node v5 is released diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index beaffc75..37535c9b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 # Setup .npmrc file to publish to GitHub Packages - - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 24 registry-url: 'https://registry.npmjs.org' diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ac2a4d26..df362301 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,7 +27,7 @@ jobs: with: submodules: true - name: Setup Node.js - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: ${{ matrix.node }} cache: 'npm' From 3bc010a0b8d278ff884ba65b3d39014da423b845 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 10 Dec 2025 03:16:39 +0000 Subject: [PATCH 266/415] chore(deps): update actions/stale action to v10.1.1 (#329) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/close-issue.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/close-issue.yml b/.github/workflows/close-issue.yml index d1457e95..dffe9006 100644 --- a/.github/workflows/close-issue.yml +++ b/.github/workflows/close-issue.yml @@ -14,7 +14,7 @@ jobs: pull-requests: write if: github.repository == 'line/line-bot-mcp-server' steps: - - uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 # v10.1.0 + - uses: actions/stale@997185467fa4f803885201cee163a9f38240193d # v10.1.1 with: days-before-issue-stale: 28 # 4 weeks days-before-issue-close: 0 From 9f531e4fb6a3051d0db9e70dc003ce8b423558fb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 10 Dec 2025 05:15:19 +0000 Subject: [PATCH 267/415] chore(deps): update dependency prettier to v3.7.4 (#331) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6eeb0a50..03fd9920 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ }, "devDependencies": { "@types/node": "^24.9.2", - "prettier": "3.7.3", + "prettier": "3.7.4", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" @@ -2822,9 +2822,9 @@ } }, "node_modules/prettier": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.3.tgz", - "integrity": "sha512-QgODejq9K3OzoBbuyobZlUhznP5SKwPqp+6Q6xw6o8gnhr4O85L2U915iM2IDcfF2NPXVaM9zlo9tdwipnYwzg==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", + "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", "dev": true, "license": "MIT", "bin": { diff --git a/package.json b/package.json index d013f63f..cde7701e 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ }, "devDependencies": { "@types/node": "^24.9.2", - "prettier": "3.7.3", + "prettier": "3.7.4", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" From 8a97e6f6bb7034e91596d08e3d2047fe31b43a80 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 10 Dec 2025 09:06:53 +0000 Subject: [PATCH 268/415] chore(deps): update dependency puppeteer to v24.32.0 (#332) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index 03fd9920..71dd832b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -703,9 +703,9 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.10.13", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.13.tgz", - "integrity": "sha512-a9Ruw3j3qlnB5a/zHRTkruppynxqaeE4H9WNj5eYGRWqw0ZauZ23f4W2ARf3hghF5doozyD+CRtt7XSYuYRI/Q==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.11.0.tgz", + "integrity": "sha512-n6oQX6mYkG8TRPuPXmbPidkUbsSRalhmaaVAQxvH1IkQy63cwsH+kOjB3e4cpCDHg0aSvsiX9bQ4s2VB6mGWUQ==", "license": "Apache-2.0", "dependencies": { "debug": "^4.4.3", @@ -1315,9 +1315,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1521046", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1521046.tgz", - "integrity": "sha512-vhE6eymDQSKWUXwwA37NtTTVEzjtGVfDr3pRbsWEQ5onH/Snp2c+2xZHWJJawG/0hCCJLRGt4xVtEVUVILol4w==", + "version": "0.0.1534754", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1534754.tgz", + "integrity": "sha512-26T91cV5dbOYnXdJi5qQHoTtUoNEqwkHcAyu/IKtjIAxiEqPMrDiRkDOPWVsGfNZGmlQVHQbZRSjD8sxagWVsQ==", "license": "BSD-3-Clause" }, "node_modules/dunder-proto": { @@ -2912,17 +2912,17 @@ } }, "node_modules/puppeteer": { - "version": "24.31.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.31.0.tgz", - "integrity": "sha512-q8y5yLxLD8xdZdzNWqdOL43NbfvUOp60SYhaLZQwHC9CdKldxQKXOyJAciOr7oUJfyAH/KgB2wKvqT2sFKoVXA==", + "version": "24.32.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.32.0.tgz", + "integrity": "sha512-exyxHPV5DSsigIhM/pzLcyzl5XU4Dp5lNP+APwIeStDxAdYqpMnJ1qN0QHXghjJx+cQJczby+ySH5rgv/5GQLw==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.10.13", + "@puppeteer/browsers": "2.11.0", "chromium-bidi": "11.0.0", "cosmiconfig": "^9.0.0", - "devtools-protocol": "0.0.1521046", - "puppeteer-core": "24.31.0", + "devtools-protocol": "0.0.1534754", + "puppeteer-core": "24.32.0", "typed-query-selector": "^2.12.0" }, "bin": { @@ -2933,15 +2933,15 @@ } }, "node_modules/puppeteer-core": { - "version": "24.31.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.31.0.tgz", - "integrity": "sha512-pnAohhSZipWQoFpXuGV7xCZfaGhqcBR9C4pVrU0QSrcMi7tQMH9J9lDBqBvyMAHQqe8HCARuREqFuVKRQOgTvg==", + "version": "24.32.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.32.0.tgz", + "integrity": "sha512-MqzLLeJjqjtHK9J44+KE3kjtXXhFpPvg+AvXl/oy/jB8MeeNH66/4MNotOTqGZ6MPaxWi51YJ1ASga6OIff6xw==", "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.10.13", + "@puppeteer/browsers": "2.11.0", "chromium-bidi": "11.0.0", "debug": "^4.4.3", - "devtools-protocol": "0.0.1521046", + "devtools-protocol": "0.0.1534754", "typed-query-selector": "^2.12.0", "webdriver-bidi-protocol": "0.3.9", "ws": "^8.18.3" From a7fa306e03be5ed04f7921de5aca8252d1df00fe Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Dec 2025 13:45:24 +0000 Subject: [PATCH 269/415] chore(deps): update dependency puppeteer to v24.32.1 (#333) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 71dd832b..a2192f46 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2912,9 +2912,9 @@ } }, "node_modules/puppeteer": { - "version": "24.32.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.32.0.tgz", - "integrity": "sha512-exyxHPV5DSsigIhM/pzLcyzl5XU4Dp5lNP+APwIeStDxAdYqpMnJ1qN0QHXghjJx+cQJczby+ySH5rgv/5GQLw==", + "version": "24.32.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.32.1.tgz", + "integrity": "sha512-wa8vGswFjH1iCyG6bGGydIYssEBluXixbMibK4x2x6/lIAuR87gF+c+Jjzom2Wiw/dDOtuki89VBurRWrgYaUA==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -2922,7 +2922,7 @@ "chromium-bidi": "11.0.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1534754", - "puppeteer-core": "24.32.0", + "puppeteer-core": "24.32.1", "typed-query-selector": "^2.12.0" }, "bin": { @@ -2933,9 +2933,9 @@ } }, "node_modules/puppeteer-core": { - "version": "24.32.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.32.0.tgz", - "integrity": "sha512-MqzLLeJjqjtHK9J44+KE3kjtXXhFpPvg+AvXl/oy/jB8MeeNH66/4MNotOTqGZ6MPaxWi51YJ1ASga6OIff6xw==", + "version": "24.32.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.32.1.tgz", + "integrity": "sha512-GdWTOgy3RqaW6Etgx93ydlVJ4FBJ6TmhMksG5W7v4uawKAzLHNj33k4kBQ1SFZ9NvoXNjhdQuIQ+uik2kWnarA==", "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.11.0", From b0f54439bdf5118c741f8a1d2949176ad9618688 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 16 Dec 2025 02:38:12 +0000 Subject: [PATCH 270/415] chore(deps): update dependency @types/node to v24.10.2 (#334) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a2192f46..ae5bb4d2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -742,9 +742,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", + "version": "24.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.2.tgz", + "integrity": "sha512-WOhQTZ4G8xZ1tjJTvKOpyEVSGgOTvJAfDK3FNFgELyaTpzhdgHVHeqW8V+UJvzF5BT+/B54T/1S2K6gd9c7bbA==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" From 0e4d7b34ad3fcf3fc185c5274c4d5e27178259bd Mon Sep 17 00:00:00 2001 From: keigo habara <34413567+habara-k@users.noreply.github.com> Date: Wed, 17 Dec 2025 16:16:32 +0900 Subject: [PATCH 271/415] Fix flex message schema (#335) --- src/common/schema/flexMessage.ts | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/common/schema/flexMessage.ts b/src/common/schema/flexMessage.ts index b89e9f66..f41fa22b 100644 --- a/src/common/schema/flexMessage.ts +++ b/src/common/schema/flexMessage.ts @@ -341,16 +341,25 @@ export const flexBubbleSchema = z.object({ header: flexComponentSchema .optional() .describe("Header must be a Box") - .refine(component => component.type === "box", "Header must be a Box"), + .refine( + component => !component || component.type === "box", + "Header must be a Box", + ), hero: flexComponentSchema.optional(), body: flexComponentSchema .optional() .describe("Body must be a Box") - .refine(component => component.type === "box", "Body must be a Box"), + .refine( + component => !component || component.type === "box", + "Body must be a Box", + ), footer: flexComponentSchema .optional() .describe("Footer must be a Box") - .refine(component => component.type === "box", "Footer must be a Box"), + .refine( + component => !component || component.type === "box", + "Footer must be a Box", + ), styles: flexBubbleStylesSchema.optional(), action: flexActionSchema.optional(), }); From d75cfc136522ea92f98e6234bc5dff294bc09414 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 Dec 2025 21:31:40 +0000 Subject: [PATCH 272/415] chore(deps): update dependency @types/node to v24.10.3 (#336) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index ae5bb4d2..2f578566 100644 --- a/package-lock.json +++ b/package-lock.json @@ -742,9 +742,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.2.tgz", - "integrity": "sha512-WOhQTZ4G8xZ1tjJTvKOpyEVSGgOTvJAfDK3FNFgELyaTpzhdgHVHeqW8V+UJvzF5BT+/B54T/1S2K6gd9c7bbA==", + "version": "24.10.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.3.tgz", + "integrity": "sha512-gqkrWUsS8hcm0r44yn7/xZeV1ERva/nLgrLxFRUGb7aoNMIJfZJ3AC261zDQuOAKC7MiXai1WCpYc48jAHoShQ==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" From 6ef3ed31b2ee847f02018b2404ac266fa2cf6991 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 18 Dec 2025 22:28:22 +0000 Subject: [PATCH 273/415] chore(deps): update dependency puppeteer to v24.33.0 (#337) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2f578566..a4878d6e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2912,9 +2912,9 @@ } }, "node_modules/puppeteer": { - "version": "24.32.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.32.1.tgz", - "integrity": "sha512-wa8vGswFjH1iCyG6bGGydIYssEBluXixbMibK4x2x6/lIAuR87gF+c+Jjzom2Wiw/dDOtuki89VBurRWrgYaUA==", + "version": "24.33.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.33.0.tgz", + "integrity": "sha512-nl3wsAztq5F8zybn4Tk41OCnYIzFIzGC6AN0WcF2KCUnWenajvRRPgBmS6LvNUV2HEeIzT2zRZHH0TgVxLDKew==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -2922,7 +2922,7 @@ "chromium-bidi": "11.0.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1534754", - "puppeteer-core": "24.32.1", + "puppeteer-core": "24.33.0", "typed-query-selector": "^2.12.0" }, "bin": { @@ -2933,9 +2933,9 @@ } }, "node_modules/puppeteer-core": { - "version": "24.32.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.32.1.tgz", - "integrity": "sha512-GdWTOgy3RqaW6Etgx93ydlVJ4FBJ6TmhMksG5W7v4uawKAzLHNj33k4kBQ1SFZ9NvoXNjhdQuIQ+uik2kWnarA==", + "version": "24.33.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.33.0.tgz", + "integrity": "sha512-tPTxVg+Qdj/8av4cy6szv3GlhxeOoNhiiMZ955fjxQyvPQE/6DjCa6ZyF/x0WJrlgBZtaLSP8TQgJb7FdLDXXA==", "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.11.0", From 49e486305c8e2078b94a516c72513d93d39859ff Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 21 Dec 2025 05:57:48 +0000 Subject: [PATCH 274/415] chore(deps): update dependency @types/node to v24.10.4 (#339) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a4878d6e..6aa4d653 100644 --- a/package-lock.json +++ b/package-lock.json @@ -742,9 +742,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.3.tgz", - "integrity": "sha512-gqkrWUsS8hcm0r44yn7/xZeV1ERva/nLgrLxFRUGb7aoNMIJfZJ3AC261zDQuOAKC7MiXai1WCpYc48jAHoShQ==", + "version": "24.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.4.tgz", + "integrity": "sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" From d69f1a81adca9b3964f009460363cd43a0b3c67b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 25 Dec 2025 04:43:56 +0000 Subject: [PATCH 275/415] chore(deps): update node.js to v24.12.0 (#342) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b36a5380..7faf8d1a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:24.11-alpine AS builder +FROM node:24.12-alpine AS builder COPY . /app From 961ac6d1c43ec8059926d7cb5bf906d30955c7e8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 25 Dec 2025 12:51:18 +0000 Subject: [PATCH 276/415] chore(deps): update dependency puppeteer to v24.33.1 (#343) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6aa4d653..a429aa9c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1086,9 +1086,9 @@ } }, "node_modules/chromium-bidi": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-11.0.0.tgz", - "integrity": "sha512-cM3DI+OOb89T3wO8cpPSro80Q9eKYJ7hGVXoGS3GkDPxnYSqiv+6xwpIf6XERyJ9Tdsl09hmNmY94BkgZdVekw==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-12.0.1.tgz", + "integrity": "sha512-fGg+6jr0xjQhzpy5N4ErZxQ4wF7KLEvhGZXD6EgvZKDhu7iOhZXnZhcDxPJDcwTcrD48NPzOCo84RP2lv3Z+Cg==", "license": "Apache-2.0", "dependencies": { "mitt": "^3.0.1", @@ -2912,17 +2912,17 @@ } }, "node_modules/puppeteer": { - "version": "24.33.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.33.0.tgz", - "integrity": "sha512-nl3wsAztq5F8zybn4Tk41OCnYIzFIzGC6AN0WcF2KCUnWenajvRRPgBmS6LvNUV2HEeIzT2zRZHH0TgVxLDKew==", + "version": "24.33.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.33.1.tgz", + "integrity": "sha512-2KiSIXk+zFzmYsScv+hx/I3TODFGPcNpyJsWMQk1EQ2y8KZ2X6225/NingyqYxekzceSUnq5qX39dUezVDZ9EQ==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.11.0", - "chromium-bidi": "11.0.0", + "chromium-bidi": "12.0.1", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1534754", - "puppeteer-core": "24.33.0", + "puppeteer-core": "24.33.1", "typed-query-selector": "^2.12.0" }, "bin": { @@ -2933,17 +2933,17 @@ } }, "node_modules/puppeteer-core": { - "version": "24.33.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.33.0.tgz", - "integrity": "sha512-tPTxVg+Qdj/8av4cy6szv3GlhxeOoNhiiMZ955fjxQyvPQE/6DjCa6ZyF/x0WJrlgBZtaLSP8TQgJb7FdLDXXA==", + "version": "24.33.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.33.1.tgz", + "integrity": "sha512-MZjFLeGMBFbSkc1xKfcv6hjFlfNi1bmQly++HyqxGPYzLIMY0mSYyjqkAzT1PtomTYHq7SEonciIKkeyHExA1g==", "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.11.0", - "chromium-bidi": "11.0.0", + "chromium-bidi": "12.0.1", "debug": "^4.4.3", "devtools-protocol": "0.0.1534754", "typed-query-selector": "^2.12.0", - "webdriver-bidi-protocol": "0.3.9", + "webdriver-bidi-protocol": "0.3.10", "ws": "^8.18.3" }, "engines": { @@ -3769,9 +3769,9 @@ } }, "node_modules/webdriver-bidi-protocol": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.3.9.tgz", - "integrity": "sha512-uIYvlRQ0PwtZR1EzHlTMol1G0lAlmOe6wPykF9a77AK3bkpvZHzIVxRE2ThOx5vjy2zISe0zhwf5rzuUfbo1PQ==", + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.3.10.tgz", + "integrity": "sha512-5LAE43jAVLOhB/QqX4bwSiv0Hg1HBfMmOuwBSXHdvg4GMGu9Y0lIq7p4R/yySu6w74WmaR4GM4H9t2IwLW7hgw==", "license": "Apache-2.0" }, "node_modules/which": { From 28136bd1e9a4ec55c899ceaa4ff9539f48f11f31 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 26 Dec 2025 17:39:24 +0000 Subject: [PATCH 277/415] chore(deps): update dependency puppeteer to v24.34.0 (#344) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index a429aa9c..6618c185 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2912,9 +2912,9 @@ } }, "node_modules/puppeteer": { - "version": "24.33.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.33.1.tgz", - "integrity": "sha512-2KiSIXk+zFzmYsScv+hx/I3TODFGPcNpyJsWMQk1EQ2y8KZ2X6225/NingyqYxekzceSUnq5qX39dUezVDZ9EQ==", + "version": "24.34.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.34.0.tgz", + "integrity": "sha512-Sdpl/zsYOsagZ4ICoZJPGZw8d9gZmK5DcxVal11dXi/1/t2eIXHjCf5NfmhDg5XnG9Nye+yo/LqMzIxie2rHTw==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -2922,7 +2922,7 @@ "chromium-bidi": "12.0.1", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1534754", - "puppeteer-core": "24.33.1", + "puppeteer-core": "24.34.0", "typed-query-selector": "^2.12.0" }, "bin": { @@ -2933,9 +2933,9 @@ } }, "node_modules/puppeteer-core": { - "version": "24.33.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.33.1.tgz", - "integrity": "sha512-MZjFLeGMBFbSkc1xKfcv6hjFlfNi1bmQly++HyqxGPYzLIMY0mSYyjqkAzT1PtomTYHq7SEonciIKkeyHExA1g==", + "version": "24.34.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.34.0.tgz", + "integrity": "sha512-24evawO+mUGW4mvS2a2ivwLdX3gk8zRLZr9HP+7+VT2vBQnm0oh9jJEZmUE3ePJhRkYlZ93i7OMpdcoi2qNCLg==", "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.11.0", From 009f9f598809e9bc3709f2124cf7c6da31674f19 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 2 Jan 2026 18:34:17 +0900 Subject: [PATCH 278/415] chore(deps): update suzuki-shunsuke/pinact-action action to v1.0.1 (#345) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index df362301..3edc1a13 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -60,6 +60,6 @@ jobs: steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Run pinact - uses: suzuki-shunsuke/pinact-action@49cbd6acd0dbab6a6be2585d1dbdaa43b4410133 # v1.0.0 + uses: suzuki-shunsuke/pinact-action@e47c7dc7bae66b2adacb22482bde656164874c67 # v1.0.1 with: skip_push: "true" From 0e589cc37c30be33d9a98355e3ad5bf62697b8d1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 2 Jan 2026 13:11:41 +0000 Subject: [PATCH 279/415] chore(deps): update suzuki-shunsuke/pinact-action action to v1.1.0 (#346) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3edc1a13..ae9f5264 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -60,6 +60,6 @@ jobs: steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Run pinact - uses: suzuki-shunsuke/pinact-action@e47c7dc7bae66b2adacb22482bde656164874c67 # v1.0.1 + uses: suzuki-shunsuke/pinact-action@bd070edaef6bf653de2b9ef59fe6bde498152c17 # v1.1.0 with: skip_push: "true" From 6e4ea5741f34f01ad6e5f5997c14513c70f13d96 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 3 Jan 2026 16:55:30 +0000 Subject: [PATCH 280/415] chore(deps): update suzuki-shunsuke/pinact-action action to v1.2.0 (#347) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ae9f5264..aec20f8c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -60,6 +60,6 @@ jobs: steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Run pinact - uses: suzuki-shunsuke/pinact-action@bd070edaef6bf653de2b9ef59fe6bde498152c17 # v1.1.0 + uses: suzuki-shunsuke/pinact-action@78ea6afd1fd0678ef72a7e07efc834fcc5ee9a21 # v1.2.0 with: skip_push: "true" From 70d612bca4b105a7a2eafd10d784295a43a3e37e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 4 Jan 2026 02:30:18 +0000 Subject: [PATCH 281/415] chore(deps): update suzuki-shunsuke/pinact-action action to v1.3.0 (#348) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index aec20f8c..0433e4ec 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -60,6 +60,6 @@ jobs: steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Run pinact - uses: suzuki-shunsuke/pinact-action@78ea6afd1fd0678ef72a7e07efc834fcc5ee9a21 # v1.2.0 + uses: suzuki-shunsuke/pinact-action@28aeb220eb3252ad0d4422dd5d9368e925acbd8d # v1.3.0 with: skip_push: "true" From 33397dda902239e07f500bdfacd33f6eefcbb740 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 5 Jan 2026 16:00:40 +0900 Subject: [PATCH 282/415] chore(deps): update suzuki-shunsuke/pinact-action action to v1.3.1 (#349) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0433e4ec..da3501f8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -60,6 +60,6 @@ jobs: steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Run pinact - uses: suzuki-shunsuke/pinact-action@28aeb220eb3252ad0d4422dd5d9368e925acbd8d # v1.3.0 + uses: suzuki-shunsuke/pinact-action@3d49c6412901042473ffa78becddab1aea46bbea # v1.3.1 with: skip_push: "true" From 8501558d45d7e0dec733d1f54bdfd5f55680b953 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 7 Jan 2026 21:56:41 +0000 Subject: [PATCH 283/415] chore(deps): update dependency @modelcontextprotocol/sdk to v1.25.2 [security] (#320) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 157 +++++++++++++++++++++++++++++++++------------- 1 file changed, 115 insertions(+), 42 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6618c185..97882234 100644 --- a/package-lock.json +++ b/package-lock.json @@ -560,6 +560,18 @@ "node": ">=18" } }, + "node_modules/@hono/node-server": { + "version": "1.19.7", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.7.tgz", + "integrity": "sha512-vUcD0uauS7EU2caukW8z5lJKtoGMokxNbJtBiwHgpqxEXokaHCBkQUmCHhjFB1VUTWdqj25QoMkMKzgjq+uhrw==", + "license": "MIT", + "engines": { + "node": ">=18.14.1" + }, + "peerDependencies": { + "hono": "^4" + } + }, "node_modules/@line/bot-sdk": { "version": "10.5.0", "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.5.0.tgz", @@ -644,24 +656,42 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.20.2.tgz", - "integrity": "sha512-6rqTdFt67AAAzln3NOKsXRmv5ZzPkgbfaebKBqUbts7vK1GZudqnrun5a8d3M/h955cam9RHZ6Jb4Y1XhnmFPg==", + "version": "1.25.2", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.25.2.tgz", + "integrity": "sha512-LZFeo4F9M5qOhC/Uc1aQSrBHxMrvxett+9KLHt7OhcExtoiRN9DKgbZffMP/nxjutWDQpfMDfP3nkHI4X9ijww==", "license": "MIT", "dependencies": { - "ajv": "^6.12.6", + "@hono/node-server": "^1.19.7", + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", "express": "^5.0.1", "express-rate-limit": "^7.5.0", + "jose": "^6.1.1", + "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", - "zod-to-json-schema": "^3.24.1" + "zod": "^3.25 || ^4.0", + "zod-to-json-schema": "^3.25.0" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@cfworker/json-schema": "^4.1.1", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "@cfworker/json-schema": { + "optional": true + }, + "zod": { + "optional": false + } } }, "node_modules/@nodelib/fs.scandir": { @@ -791,21 +821,38 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, "funding": { "type": "github", "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -1794,11 +1841,21 @@ "node": ">=8.6.0" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "license": "MIT" + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" }, "node_modules/fastq": { "version": "1.19.1", @@ -2110,6 +2167,16 @@ "node": ">=12.0.0" } }, + "node_modules/hono": { + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.3.tgz", + "integrity": "sha512-PmQi306+M/ct/m5s66Hrg+adPnkD5jiO6IjA7WhWw0gSBSo1EcRegwuI1deZ+wd5pzCGynCcn2DprnE4/yEV4w==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=16.9.0" + } + }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -2297,6 +2364,15 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, + "node_modules/jose": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.1.3.tgz", + "integrity": "sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2319,11 +2395,17 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "license": "MIT" }, + "node_modules/json-schema-typed": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", + "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", + "license": "BSD-2-Clause" + }, "node_modules/katex": { "version": "0.16.25", "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.25.tgz", @@ -2894,15 +2976,6 @@ "once": "^1.3.1" } }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/punycode.js": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", @@ -3042,6 +3115,15 @@ "node": ">=0.10.0" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", @@ -3745,15 +3827,6 @@ "node": ">= 0.8" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -3910,12 +3983,12 @@ } }, "node_modules/zod-to-json-schema": { - "version": "3.24.5", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz", - "integrity": "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==", + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.1.tgz", + "integrity": "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==", "license": "ISC", "peerDependencies": { - "zod": "^3.24.1" + "zod": "^3.25 || ^4" } } } From daa6a8cb2f019d9074628779d519df2c64403923 Mon Sep 17 00:00:00 2001 From: keigo habara <34413567+habara-k@users.noreply.github.com> Date: Thu, 15 Jan 2026 21:43:30 +0900 Subject: [PATCH 284/415] Run npm audit fix --force (#350) --- package-lock.json | 91 +++++++++++++++++++++++++++-------------------- 1 file changed, 52 insertions(+), 39 deletions(-) diff --git a/package-lock.json b/package-lock.json index 97882234..c0dfd55d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1031,23 +1031,27 @@ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" }, "node_modules/body-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", - "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", "license": "MIT", "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", - "debug": "^4.4.0", + "debug": "^4.4.3", "http-errors": "^2.0.0", - "iconv-lite": "^0.6.3", + "iconv-lite": "^0.7.0", "on-finished": "^2.4.1", - "qs": "^6.14.0", - "raw-body": "^3.0.0", - "type-is": "^2.0.0" + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" }, "engines": { "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/braces": { @@ -2168,9 +2172,9 @@ } }, "node_modules/hono": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.3.tgz", - "integrity": "sha512-PmQi306+M/ct/m5s66Hrg+adPnkD5jiO6IjA7WhWw0gSBSo1EcRegwuI1deZ+wd5pzCGynCcn2DprnE4/yEV4w==", + "version": "4.11.4", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.4.tgz", + "integrity": "sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==", "license": "MIT", "peer": true, "engines": { @@ -2178,19 +2182,23 @@ } }, "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "license": "MIT", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "engines": { "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/http-proxy-agent": { @@ -2220,15 +2228,19 @@ } }, "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/import-fresh": { @@ -2379,9 +2391,10 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -3024,9 +3037,9 @@ } }, "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -3069,18 +3082,18 @@ } }, "node_modules/raw-body": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", - "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.6.3", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.10" } }, "node_modules/readdirp": { @@ -3616,9 +3629,9 @@ } }, "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "license": "MIT", "engines": { "node": ">= 0.8" From d975bb5f1757a9a8c0dd3f4679f1fa5ff0b881ed Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 17 Jan 2026 05:31:05 +0000 Subject: [PATCH 285/415] chore(deps): update dependency @types/node to v24.10.6 (#351) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c0dfd55d..7e35366c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -772,9 +772,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.4.tgz", - "integrity": "sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==", + "version": "24.10.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.6.tgz", + "integrity": "sha512-B8h60xgJMR/xmgyX9fncRzEW9gCxoJjdenUhke2v1JGOd/V66KopmWrLPXi5oUI4VuiGK+d+HlXJjDRZMj21EQ==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" From 04110a4307e036f3b2beafa639c56ebcd54c8352 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 17 Jan 2026 21:45:58 +0000 Subject: [PATCH 286/415] chore(deps): update dependency @types/node to v24.10.7 (#352) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7e35366c..f5fae219 100644 --- a/package-lock.json +++ b/package-lock.json @@ -772,9 +772,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.6.tgz", - "integrity": "sha512-B8h60xgJMR/xmgyX9fncRzEW9gCxoJjdenUhke2v1JGOd/V66KopmWrLPXi5oUI4VuiGK+d+HlXJjDRZMj21EQ==", + "version": "24.10.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.7.tgz", + "integrity": "sha512-+054pVMzVTmRQV8BhpGv3UyfZ2Llgl8rdpDTon+cUH9+na0ncBVXj3wTUKh14+Kiz18ziM3b4ikpP5/Pc0rQEQ==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" From 64aa36c9cb9c6578518cb798e9b651ca1bbce138 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 19 Jan 2026 09:48:43 +0000 Subject: [PATCH 287/415] chore(deps): update dependency puppeteer to v24.35.0 (#353) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index f5fae219..47b76720 100644 --- a/package-lock.json +++ b/package-lock.json @@ -733,9 +733,9 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.11.0.tgz", - "integrity": "sha512-n6oQX6mYkG8TRPuPXmbPidkUbsSRalhmaaVAQxvH1IkQy63cwsH+kOjB3e4cpCDHg0aSvsiX9bQ4s2VB6mGWUQ==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.11.1.tgz", + "integrity": "sha512-YmhAxs7XPuxN0j7LJloHpfD1ylhDuFmmwMvfy/+6nBSrETT2ycL53LrhgPtR+f+GcPSybQVuQ5inWWu5MrWCpA==", "license": "Apache-2.0", "dependencies": { "debug": "^4.4.3", @@ -2998,17 +2998,17 @@ } }, "node_modules/puppeteer": { - "version": "24.34.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.34.0.tgz", - "integrity": "sha512-Sdpl/zsYOsagZ4ICoZJPGZw8d9gZmK5DcxVal11dXi/1/t2eIXHjCf5NfmhDg5XnG9Nye+yo/LqMzIxie2rHTw==", + "version": "24.35.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.35.0.tgz", + "integrity": "sha512-sbjB5JnJ+3nwgSdRM/bqkFXqLxRz/vsz0GRIeTlCk+j+fGpqaF2dId9Qp25rXz9zfhqnN9s0krek1M/C2GDKtA==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.11.0", + "@puppeteer/browsers": "2.11.1", "chromium-bidi": "12.0.1", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1534754", - "puppeteer-core": "24.34.0", + "puppeteer-core": "24.35.0", "typed-query-selector": "^2.12.0" }, "bin": { @@ -3019,18 +3019,18 @@ } }, "node_modules/puppeteer-core": { - "version": "24.34.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.34.0.tgz", - "integrity": "sha512-24evawO+mUGW4mvS2a2ivwLdX3gk8zRLZr9HP+7+VT2vBQnm0oh9jJEZmUE3ePJhRkYlZ93i7OMpdcoi2qNCLg==", + "version": "24.35.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.35.0.tgz", + "integrity": "sha512-vt1zc2ME0kHBn7ZDOqLvgvrYD5bqNv5y2ZNXzYnCv8DEtZGw/zKhljlrGuImxptZ4rq+QI9dFGrUIYqG4/IQzA==", "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.11.0", + "@puppeteer/browsers": "2.11.1", "chromium-bidi": "12.0.1", "debug": "^4.4.3", "devtools-protocol": "0.0.1534754", "typed-query-selector": "^2.12.0", "webdriver-bidi-protocol": "0.3.10", - "ws": "^8.18.3" + "ws": "^8.19.0" }, "engines": { "node": ">=18" @@ -3903,9 +3903,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", "license": "MIT", "engines": { "node": ">=10.0.0" From 85f0e34ddfa0e078bf42da7a0209aeaad738d88d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 17:07:00 +0000 Subject: [PATCH 288/415] chore(deps): update dependency @types/node to v24.10.8 (#354) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 47b76720..4cc3f37e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -772,9 +772,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.7.tgz", - "integrity": "sha512-+054pVMzVTmRQV8BhpGv3UyfZ2Llgl8rdpDTon+cUH9+na0ncBVXj3wTUKh14+Kiz18ziM3b4ikpP5/Pc0rQEQ==", + "version": "24.10.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.8.tgz", + "integrity": "sha512-r0bBaXu5Swb05doFYO2kTWHMovJnNVbCsII0fhesM8bNRlLhXIuckley4a2DaD+vOdmm5G+zGkQZAPZsF80+YQ==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" From 2684d556a16b5d8e1b0c524d1a2d9780027f483f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 01:05:12 +0000 Subject: [PATCH 289/415] chore(deps): update dependency prettier to v3.8.0 (#355) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4cc3f37e..5b7bda6c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ }, "devDependencies": { "@types/node": "^24.9.2", - "prettier": "3.7.4", + "prettier": "3.8.0", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" @@ -2917,9 +2917,9 @@ } }, "node_modules/prettier": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", - "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.0.tgz", + "integrity": "sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==", "dev": true, "license": "MIT", "bin": { diff --git a/package.json b/package.json index cde7701e..7862f79d 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ }, "devDependencies": { "@types/node": "^24.9.2", - "prettier": "3.7.4", + "prettier": "3.8.0", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" From 85d1cbf9a780f5dafcd40f9635a04cbc82852d07 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 04:31:07 +0000 Subject: [PATCH 290/415] chore(deps): update actions/setup-node action to v6.2.0 (#356) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/npm-audit.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index d7def15b..3d864953 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -17,7 +17,7 @@ jobs: if: github.repository == 'line/line-bot-mcp-server' steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 + - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version: '24' # Enable this when setup-node v5 is released diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 37535c9b..25194274 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 # Setup .npmrc file to publish to GitHub Packages - - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 + - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version: 24 registry-url: 'https://registry.npmjs.org' diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index da3501f8..57cbb4d2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,7 +27,7 @@ jobs: with: submodules: true - name: Setup Node.js - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 + uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version: ${{ matrix.node }} cache: 'npm' From 8dc9bc83c4d692f2850f7501d75e42f392727134 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 04:31:13 +0000 Subject: [PATCH 291/415] chore(deps): update node.js to v24.13.0 (#357) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7faf8d1a..c484de22 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:24.12-alpine AS builder +FROM node:24.13-alpine AS builder COPY . /app From 4d25b836d014d8b4fce02b885c2b0b0e2596c468 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 17:12:59 +0000 Subject: [PATCH 292/415] chore(deps): update actions/checkout action to v6.0.2 (#358) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/check-eol-newrelease.yml | 2 +- .github/workflows/create-draft-release.yml | 2 +- .github/workflows/label-issue.yml | 2 +- .github/workflows/npm-audit.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 6 +++--- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/check-eol-newrelease.yml b/.github/workflows/check-eol-newrelease.yml index a411e1b8..b5bf199f 100644 --- a/.github/workflows/check-eol-newrelease.yml +++ b/.github/workflows/check-eol-newrelease.yml @@ -15,7 +15,7 @@ jobs: if: github.repository == 'line/line-bot-mcp-server' steps: - name: Check out code - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Run EoL & NewRelease check uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 diff --git a/.github/workflows/create-draft-release.yml b/.github/workflows/create-draft-release.yml index 3707470f..81dbb091 100644 --- a/.github/workflows/create-draft-release.yml +++ b/.github/workflows/create-draft-release.yml @@ -45,7 +45,7 @@ jobs: permissions: contents: write steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Fetch Latest Release id: get-latest-release uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 diff --git a/.github/workflows/label-issue.yml b/.github/workflows/label-issue.yml index 0cff2210..247c91aa 100644 --- a/.github/workflows/label-issue.yml +++ b/.github/workflows/label-issue.yml @@ -13,7 +13,7 @@ jobs: permissions: issues: write steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Add label on issue open if: github.event.action == 'opened' || github.event.action == 'reopened' diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index 3d864953..c6ccf101 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -16,7 +16,7 @@ jobs: issues: write if: github.repository == 'line/line-bot-mcp-server' steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version: '24' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 25194274..f5090e0f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ jobs: id-token: write issues: write steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 # Setup .npmrc file to publish to GitHub Packages - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 57cbb4d2..0c79cb0f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,7 +23,7 @@ jobs: name: Node.js ${{ matrix.node }} steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: submodules: true - name: Setup Node.js @@ -47,7 +47,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: submodules: true - name: Build Docker image @@ -58,7 +58,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Run pinact uses: suzuki-shunsuke/pinact-action@3d49c6412901042473ffa78becddab1aea46bbea # v1.3.1 with: From bef427c0ff88f1ec638b7f56084f4b29a1bf158f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 17:13:18 +0000 Subject: [PATCH 293/415] chore(deps): update dependency @types/node to v24.10.9 (#359) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5b7bda6c..b3339cef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -772,9 +772,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.8.tgz", - "integrity": "sha512-r0bBaXu5Swb05doFYO2kTWHMovJnNVbCsII0fhesM8bNRlLhXIuckley4a2DaD+vOdmm5G+zGkQZAPZsF80+YQ==", + "version": "24.10.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.9.tgz", + "integrity": "sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" From 9903f210c3fe5bd43c67562271a2f516d3da8e16 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 27 Jan 2026 16:03:46 +0000 Subject: [PATCH 294/415] chore(deps): update dependency @modelcontextprotocol/sdk to v1.25.3 (#361) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index b3339cef..c5a45b20 100644 --- a/package-lock.json +++ b/package-lock.json @@ -561,9 +561,9 @@ } }, "node_modules/@hono/node-server": { - "version": "1.19.7", - "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.7.tgz", - "integrity": "sha512-vUcD0uauS7EU2caukW8z5lJKtoGMokxNbJtBiwHgpqxEXokaHCBkQUmCHhjFB1VUTWdqj25QoMkMKzgjq+uhrw==", + "version": "1.19.9", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.9.tgz", + "integrity": "sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==", "license": "MIT", "engines": { "node": ">=18.14.1" @@ -656,12 +656,12 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.25.2", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.25.2.tgz", - "integrity": "sha512-LZFeo4F9M5qOhC/Uc1aQSrBHxMrvxett+9KLHt7OhcExtoiRN9DKgbZffMP/nxjutWDQpfMDfP3nkHI4X9ijww==", + "version": "1.25.3", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.25.3.tgz", + "integrity": "sha512-vsAMBMERybvYgKbg/l4L1rhS7VXV1c0CtyJg72vwxONVX0l4ZfKVAnZEWTQixJGTzKnELjQ59e4NbdFDALRiAQ==", "license": "MIT", "dependencies": { - "@hono/node-server": "^1.19.7", + "@hono/node-server": "^1.19.9", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", From 6aeb7a918b4110df6ce5e64e875db8bc9e1b5b95 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 Jan 2026 11:48:07 +0000 Subject: [PATCH 295/415] chore(deps): update dependency @line/bot-sdk to v10.6.0 (#363) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c5a45b20..5bb4f8f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -573,9 +573,9 @@ } }, "node_modules/@line/bot-sdk": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.5.0.tgz", - "integrity": "sha512-YmFDH1fr6b3kWiTDld8JID80cI+O5IlYegYeqhvBZx/zh2GBHdeV7i+pdwDjATRY9FHahYkcYmHb27UQldh0qw==", + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.6.0.tgz", + "integrity": "sha512-4hSpglL/G/cW2JCcohaYz/BS0uOSJNV9IEYdMm0EiPEvDLayoI2hGq2D86uYPQFD2gvgkyhmzdShpWLG3P5r3w==", "license": "Apache-2.0", "dependencies": { "@types/node": "^24.0.0" From f09739058c67344475998d558773ed5e52ed7bdb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 Jan 2026 18:57:42 +0000 Subject: [PATCH 296/415] chore(deps): update dependency prettier to v3.8.1 (#364) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5bb4f8f0..5d3e6b52 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ }, "devDependencies": { "@types/node": "^24.9.2", - "prettier": "3.8.0", + "prettier": "3.8.1", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" @@ -2917,9 +2917,9 @@ } }, "node_modules/prettier": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.0.tgz", - "integrity": "sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", "dev": true, "license": "MIT", "bin": { diff --git a/package.json b/package.json index 7862f79d..965a1d80 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ }, "devDependencies": { "@types/node": "^24.9.2", - "prettier": "3.8.0", + "prettier": "3.8.1", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2" From 54a8fd86a342985c2d40bb9b727bc345a7c0b26b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 Jan 2026 13:26:15 +0000 Subject: [PATCH 297/415] chore(deps): update dependency puppeteer to v24.36.0 (#365) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5d3e6b52..0f3cf6b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1137,9 +1137,9 @@ } }, "node_modules/chromium-bidi": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-12.0.1.tgz", - "integrity": "sha512-fGg+6jr0xjQhzpy5N4ErZxQ4wF7KLEvhGZXD6EgvZKDhu7iOhZXnZhcDxPJDcwTcrD48NPzOCo84RP2lv3Z+Cg==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-13.0.1.tgz", + "integrity": "sha512-c+RLxH0Vg2x2syS9wPw378oJgiJNXtYXUvnVAldUlt5uaHekn0CCU7gPksNgHjrH1qFhmjVXQj4esvuthuC7OQ==", "license": "Apache-2.0", "dependencies": { "mitt": "^3.0.1", @@ -1366,9 +1366,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1534754", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1534754.tgz", - "integrity": "sha512-26T91cV5dbOYnXdJi5qQHoTtUoNEqwkHcAyu/IKtjIAxiEqPMrDiRkDOPWVsGfNZGmlQVHQbZRSjD8sxagWVsQ==", + "version": "0.0.1551306", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1551306.tgz", + "integrity": "sha512-CFx8QdSim8iIv+2ZcEOclBKTQY6BI1IEDa7Tm9YkwAXzEWFndTEzpTo5jAUhSnq24IC7xaDw0wvGcm96+Y3PEg==", "license": "BSD-3-Clause" }, "node_modules/dunder-proto": { @@ -2998,17 +2998,17 @@ } }, "node_modules/puppeteer": { - "version": "24.35.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.35.0.tgz", - "integrity": "sha512-sbjB5JnJ+3nwgSdRM/bqkFXqLxRz/vsz0GRIeTlCk+j+fGpqaF2dId9Qp25rXz9zfhqnN9s0krek1M/C2GDKtA==", + "version": "24.36.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.36.0.tgz", + "integrity": "sha512-BD/VCyV/Uezvd6o7Fd1DmEJSxTzofAKplzDy6T9d4WbLTQ5A+06zY7VwO91ZlNU22vYE8sidVEsTpTrKc+EEnQ==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.11.1", - "chromium-bidi": "12.0.1", + "chromium-bidi": "13.0.1", "cosmiconfig": "^9.0.0", - "devtools-protocol": "0.0.1534754", - "puppeteer-core": "24.35.0", + "devtools-protocol": "0.0.1551306", + "puppeteer-core": "24.36.0", "typed-query-selector": "^2.12.0" }, "bin": { @@ -3019,17 +3019,17 @@ } }, "node_modules/puppeteer-core": { - "version": "24.35.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.35.0.tgz", - "integrity": "sha512-vt1zc2ME0kHBn7ZDOqLvgvrYD5bqNv5y2ZNXzYnCv8DEtZGw/zKhljlrGuImxptZ4rq+QI9dFGrUIYqG4/IQzA==", + "version": "24.36.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.36.0.tgz", + "integrity": "sha512-P3Ou0MAFDCQ0dK1d9F9+8jTrg6JvXjUacgG0YkJQP4kbEnUOGokSDEMmMId5ZhXD5HwsHM202E9VwEpEjWfwxg==", "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.11.1", - "chromium-bidi": "12.0.1", + "chromium-bidi": "13.0.1", "debug": "^4.4.3", - "devtools-protocol": "0.0.1534754", + "devtools-protocol": "0.0.1551306", "typed-query-selector": "^2.12.0", - "webdriver-bidi-protocol": "0.3.10", + "webdriver-bidi-protocol": "0.4.0", "ws": "^8.19.0" }, "engines": { @@ -3855,9 +3855,9 @@ } }, "node_modules/webdriver-bidi-protocol": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.3.10.tgz", - "integrity": "sha512-5LAE43jAVLOhB/QqX4bwSiv0Hg1HBfMmOuwBSXHdvg4GMGu9Y0lIq7p4R/yySu6w74WmaR4GM4H9t2IwLW7hgw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.0.tgz", + "integrity": "sha512-U9VIlNRrq94d1xxR9JrCEAx5Gv/2W7ERSv8oWRoNe/QYbfccS0V3h/H6qeNeCRJxXGMhhnkqvwNrvPAYeuP9VA==", "license": "Apache-2.0" }, "node_modules/which": { From 3d34ae0e29acd0d779fbc0114460a5515fef3827 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 3 Feb 2026 21:57:21 +0000 Subject: [PATCH 298/415] chore(deps): update dependency puppeteer to v24.36.1 (#367) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0f3cf6b4..30d8a9be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -733,9 +733,9 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.11.1.tgz", - "integrity": "sha512-YmhAxs7XPuxN0j7LJloHpfD1ylhDuFmmwMvfy/+6nBSrETT2ycL53LrhgPtR+f+GcPSybQVuQ5inWWu5MrWCpA==", + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.11.2.tgz", + "integrity": "sha512-GBY0+2lI9fDrjgb5dFL9+enKXqyOPok9PXg/69NVkjW3bikbK9RQrNrI3qccQXmDNN7ln4j/yL89Qgvj/tfqrw==", "license": "Apache-2.0", "dependencies": { "debug": "^4.4.3", @@ -2998,17 +2998,17 @@ } }, "node_modules/puppeteer": { - "version": "24.36.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.36.0.tgz", - "integrity": "sha512-BD/VCyV/Uezvd6o7Fd1DmEJSxTzofAKplzDy6T9d4WbLTQ5A+06zY7VwO91ZlNU22vYE8sidVEsTpTrKc+EEnQ==", + "version": "24.36.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.36.1.tgz", + "integrity": "sha512-uPiDUyf7gd7Il1KnqfNUtHqntL0w1LapEw5Zsuh8oCK8GsqdxySX1PzdIHKB2Dw273gWY4MW0zC5gy3Re9XlqQ==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.11.1", + "@puppeteer/browsers": "2.11.2", "chromium-bidi": "13.0.1", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1551306", - "puppeteer-core": "24.36.0", + "puppeteer-core": "24.36.1", "typed-query-selector": "^2.12.0" }, "bin": { @@ -3019,12 +3019,12 @@ } }, "node_modules/puppeteer-core": { - "version": "24.36.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.36.0.tgz", - "integrity": "sha512-P3Ou0MAFDCQ0dK1d9F9+8jTrg6JvXjUacgG0YkJQP4kbEnUOGokSDEMmMId5ZhXD5HwsHM202E9VwEpEjWfwxg==", + "version": "24.36.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.36.1.tgz", + "integrity": "sha512-L7ykMWc3lQf3HS7ME3PSjp7wMIjJeW6+bKfH/RSTz5l6VUDGubnrC2BKj3UvM28Y5PMDFW0xniJOZHBZPpW1dQ==", "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.11.1", + "@puppeteer/browsers": "2.11.2", "chromium-bidi": "13.0.1", "debug": "^4.4.3", "devtools-protocol": "0.0.1551306", From 234022bfb1d5a85b3d7b7f21a1ef8181ed61981d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 4 Feb 2026 22:41:52 +0000 Subject: [PATCH 299/415] chore(deps): update dependency @modelcontextprotocol/sdk to v1.26.0 [security] (#368) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 30d8a9be..f9c6e866 100644 --- a/package-lock.json +++ b/package-lock.json @@ -656,9 +656,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.25.3", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.25.3.tgz", - "integrity": "sha512-vsAMBMERybvYgKbg/l4L1rhS7VXV1c0CtyJg72vwxONVX0l4ZfKVAnZEWTQixJGTzKnELjQ59e4NbdFDALRiAQ==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.26.0.tgz", + "integrity": "sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==", "license": "MIT", "dependencies": { "@hono/node-server": "^1.19.9", @@ -669,14 +669,15 @@ "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", - "express": "^5.0.1", - "express-rate-limit": "^7.5.0", - "jose": "^6.1.1", + "express": "^5.2.1", + "express-rate-limit": "^8.2.1", + "hono": "^4.11.4", + "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", - "zod-to-json-schema": "^3.25.0" + "zod-to-json-schema": "^3.25.1" }, "engines": { "node": ">=18" @@ -1725,18 +1726,19 @@ } }, "node_modules/express": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", - "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "license": "MIT", "dependencies": { "accepts": "^2.0.0", - "body-parser": "^2.2.0", + "body-parser": "^2.2.1", "content-disposition": "^1.0.0", "content-type": "^1.0.5", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", + "depd": "^2.0.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", @@ -1767,10 +1769,13 @@ } }, "node_modules/express-rate-limit": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.0.tgz", - "integrity": "sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.2.1.tgz", + "integrity": "sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==", "license": "MIT", + "dependencies": { + "ip-address": "10.0.1" + }, "engines": { "node": ">= 16" }, @@ -1778,7 +1783,7 @@ "url": "https://github.com/sponsors/express-rate-limit" }, "peerDependencies": { - "express": "^4.11 || 5 || ^5.0.0-beta.1" + "express": ">= 4.11" } }, "node_modules/extract-zip": { @@ -2176,7 +2181,6 @@ "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.4.tgz", "integrity": "sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==", "license": "MIT", - "peer": true, "engines": { "node": ">=16.9.0" } From 7cedd24eab4c3d8cff6d4e96d92e22a58f4a3338 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 10 Feb 2026 01:35:06 +0000 Subject: [PATCH 300/415] chore(deps): update suzuki-shunsuke/pinact-action action to v1.4.0 (#370) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0c79cb0f..4b2bfa42 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -60,6 +60,6 @@ jobs: steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Run pinact - uses: suzuki-shunsuke/pinact-action@3d49c6412901042473ffa78becddab1aea46bbea # v1.3.1 + uses: suzuki-shunsuke/pinact-action@1081f5ad49ac904b7d977784f338145150a32112 # v1.4.0 with: skip_push: "true" From d228dac2f2a0d319c309d2eef4badeb0b4a038ff Mon Sep 17 00:00:00 2001 From: Bryan Thompson Date: Tue, 10 Feb 2026 03:30:08 -0600 Subject: [PATCH 301/415] feat: Add tool annotations for improved LLM tool understanding (#366) Add readOnlyHint and destructiveHint annotations to all 11 tools to help LLMs better understand tool behavior and make safer decisions. Changes: - Added readOnlyHint: true to read-only tools (get_profile, get_message_quota, get_rich_menu_list) - Added destructiveHint: true to tools that modify data (push/broadcast messages, rich menu management) - Added title annotations for human-readable display This improves tool safety metadata for MCP clients. Co-authored-by: bryankthompson <199543909+bryankthompson@users.noreply.github.com> Co-authored-by: Yuta Euchi <63095160+eucyt@users.noreply.github.com> --- src/tools/broadcastFlexMessage.ts | 4 ++++ src/tools/broadcastTextMessage.ts | 4 ++++ src/tools/cancelRichMenuDefault.ts | 4 ++++ src/tools/createRichMenu.ts | 4 ++++ src/tools/deleteRichMenu.ts | 4 ++++ src/tools/getMessageQuota.ts | 4 ++++ src/tools/getProfile.ts | 4 ++++ src/tools/getRichMenuList.ts | 4 ++++ src/tools/pushFlexMessage.ts | 4 ++++ src/tools/pushTextMessage.ts | 4 ++++ src/tools/setRichMenuDefault.ts | 4 ++++ 11 files changed, 44 insertions(+) diff --git a/src/tools/broadcastFlexMessage.ts b/src/tools/broadcastFlexMessage.ts index 08322330..26fd4056 100644 --- a/src/tools/broadcastFlexMessage.ts +++ b/src/tools/broadcastFlexMessage.ts @@ -24,6 +24,10 @@ export default class BroadcastFlexMessage extends AbstractTool { { message: flexMessageSchema, }, + { + title: "Broadcast Flex Message", + destructiveHint: true, + }, async ({ message }) => { try { const response = await this.client.broadcast({ diff --git a/src/tools/broadcastTextMessage.ts b/src/tools/broadcastTextMessage.ts index d61338ea..30894e20 100644 --- a/src/tools/broadcastTextMessage.ts +++ b/src/tools/broadcastTextMessage.ts @@ -23,6 +23,10 @@ export default class BroadcastTextMessage extends AbstractTool { { message: textMessageSchema, }, + { + title: "Broadcast Text Message", + destructiveHint: true, + }, async ({ message }) => { try { const response = await this.client.broadcast({ diff --git a/src/tools/cancelRichMenuDefault.ts b/src/tools/cancelRichMenuDefault.ts index c72cce2c..d730b74f 100644 --- a/src/tools/cancelRichMenuDefault.ts +++ b/src/tools/cancelRichMenuDefault.ts @@ -16,6 +16,10 @@ export default class CancelRichMenuDefault extends AbstractTool { "cancel_rich_menu_default", "Cancel the default rich menu.", {}, + { + title: "Cancel Rich Menu Default", + destructiveHint: true, + }, async () => { const response = await this.client.cancelDefaultRichMenu(); return createSuccessResponse(response); diff --git a/src/tools/createRichMenu.ts b/src/tools/createRichMenu.ts index 9ec3277f..ac26939e 100644 --- a/src/tools/createRichMenu.ts +++ b/src/tools/createRichMenu.ts @@ -47,6 +47,10 @@ export default class CreateRichMenu extends AbstractTool { .max(6) .describe("The actions of the rich menu."), }, + { + title: "Create Rich Menu", + destructiveHint: true, + }, async ({ chatBarText, actions }) => { // Flow: // 1. Validate the rich menu image diff --git a/src/tools/deleteRichMenu.ts b/src/tools/deleteRichMenu.ts index cb51b868..5a82df20 100644 --- a/src/tools/deleteRichMenu.ts +++ b/src/tools/deleteRichMenu.ts @@ -28,6 +28,10 @@ export default class DeleteRichMenu extends AbstractTool { "The ID of the rich menu to delete.", ), }, + { + title: "Delete Rich Menu", + destructiveHint: true, + }, async ({ richMenuId }) => { try { const response = await this.client.deleteRichMenu(richMenuId); diff --git a/src/tools/getMessageQuota.ts b/src/tools/getMessageQuota.ts index 8f413020..846a4314 100644 --- a/src/tools/getMessageQuota.ts +++ b/src/tools/getMessageQuota.ts @@ -16,6 +16,10 @@ export default class GetMessageQuota extends AbstractTool { "get_message_quota", "Get the message quota and consumption of the LINE Official Account. This shows the monthly message limit and current usage.", {}, + { + title: "Get Message Quota", + readOnlyHint: true, + }, async () => { const messageQuotaResponse = await this.client.getMessageQuota(); const messageQuotaConsumptionResponse = diff --git a/src/tools/getProfile.ts b/src/tools/getProfile.ts index 79a84ec5..7652d31a 100644 --- a/src/tools/getProfile.ts +++ b/src/tools/getProfile.ts @@ -32,6 +32,10 @@ export default class GetProfile extends AbstractTool { { userId: userIdSchema, }, + { + title: "Get Profile", + readOnlyHint: true, + }, async ({ userId }) => { if (!userId) { return createErrorResponse(NO_USER_ID_ERROR); diff --git a/src/tools/getRichMenuList.ts b/src/tools/getRichMenuList.ts index dc8e0668..1aad8da0 100644 --- a/src/tools/getRichMenuList.ts +++ b/src/tools/getRichMenuList.ts @@ -19,6 +19,10 @@ export default class GetRichMenuList extends AbstractTool { "get_rich_menu_list", "Get the list of rich menus associated with your LINE Official Account.", {}, + { + title: "Get Rich Menu List", + readOnlyHint: true, + }, async () => { try { const response = await this.client.getRichMenuList(); diff --git a/src/tools/pushFlexMessage.ts b/src/tools/pushFlexMessage.ts index 94351aff..10b0e6ad 100644 --- a/src/tools/pushFlexMessage.ts +++ b/src/tools/pushFlexMessage.ts @@ -35,6 +35,10 @@ export default class PushFlexMessage extends AbstractTool { userId: userIdSchema, message: flexMessageSchema, }, + { + title: "Push Flex Message", + destructiveHint: true, + }, async ({ userId, message }) => { if (!userId) { return createErrorResponse(NO_USER_ID_ERROR); diff --git a/src/tools/pushTextMessage.ts b/src/tools/pushTextMessage.ts index 52530341..a436d228 100644 --- a/src/tools/pushTextMessage.ts +++ b/src/tools/pushTextMessage.ts @@ -34,6 +34,10 @@ export default class PushTextMessage extends AbstractTool { userId: userIdSchema, message: textMessageSchema, }, + { + title: "Push Text Message", + destructiveHint: true, + }, async ({ userId, message }) => { if (!userId) { return createErrorResponse(NO_USER_ID_ERROR); diff --git a/src/tools/setRichMenuDefault.ts b/src/tools/setRichMenuDefault.ts index 8a40e5e8..4b10c39a 100644 --- a/src/tools/setRichMenuDefault.ts +++ b/src/tools/setRichMenuDefault.ts @@ -25,6 +25,10 @@ export default class SetRichMenuDefault extends AbstractTool { "The ID of the rich menu to set as default.", ), }, + { + title: "Set Rich Menu Default", + destructiveHint: true, + }, async ({ richMenuId }) => { const response = await this.client.setDefaultRichMenu(richMenuId); return createSuccessResponse(response); From 2b93e6cc488061d0fdca81c98f9ba57f1482131a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 10 Feb 2026 18:34:04 +0900 Subject: [PATCH 302/415] chore(deps): update dependency @types/node to v24.10.10 (#371) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f9c6e866..26dca7f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -773,9 +773,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.9.tgz", - "integrity": "sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==", + "version": "24.10.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.10.tgz", + "integrity": "sha512-+0/4J266CBGPUq/ELg7QUHhN25WYjE0wYTPSQJn1xeu8DOlIOPxXxrNGiLmfAWl7HMMgWFWXpt9IDjMWrF5Iow==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" From 7cf17ce9f9583f6ac334506d85fd5f63ef263a46 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 12 Feb 2026 10:59:33 +0000 Subject: [PATCH 303/415] chore(deps): update dependency puppeteer to v24.37.0 (#372) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 51 ++++++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 26dca7f6..5e1e1e3a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -734,9 +734,9 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.11.2", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.11.2.tgz", - "integrity": "sha512-GBY0+2lI9fDrjgb5dFL9+enKXqyOPok9PXg/69NVkjW3bikbK9RQrNrI3qccQXmDNN7ln4j/yL89Qgvj/tfqrw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.12.0.tgz", + "integrity": "sha512-Xuq42yxcQJ54ti8ZHNzF5snFvtpgXzNToJ1bXUGQRaiO8t+B6UM8sTUJfvV+AJnqtkJU/7hdy6nbKyA12aHtRw==", "license": "Apache-2.0", "dependencies": { "debug": "^4.4.3", @@ -755,9 +755,9 @@ } }, "node_modules/@puppeteer/browsers/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -1138,12 +1138,13 @@ } }, "node_modules/chromium-bidi": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-13.0.1.tgz", - "integrity": "sha512-c+RLxH0Vg2x2syS9wPw378oJgiJNXtYXUvnVAldUlt5uaHekn0CCU7gPksNgHjrH1qFhmjVXQj4esvuthuC7OQ==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-13.1.0.tgz", + "integrity": "sha512-IdGNojX6S04+wgJOALzvkkIyLelhEGqI8xSctwiYJJGSi9T2eBjwAQW2UjBD/mCXv/rUkNlH2+h7jz+58vT74A==", "license": "Apache-2.0", "dependencies": { "mitt": "^3.0.1", + "puppeteer": "^24.36.0", "zod": "^3.24.1" }, "peerDependencies": { @@ -1367,9 +1368,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1551306", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1551306.tgz", - "integrity": "sha512-CFx8QdSim8iIv+2ZcEOclBKTQY6BI1IEDa7Tm9YkwAXzEWFndTEzpTo5jAUhSnq24IC7xaDw0wvGcm96+Y3PEg==", + "version": "0.0.1566079", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1566079.tgz", + "integrity": "sha512-MJfAEA1UfVhSs7fbSQOG4czavUp1ajfg6prlAN0+cmfa2zNjaIbvq8VneP7do1WAQQIvgNJWSMeP6UyI90gIlQ==", "license": "BSD-3-Clause" }, "node_modules/dunder-proto": { @@ -3002,17 +3003,17 @@ } }, "node_modules/puppeteer": { - "version": "24.36.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.36.1.tgz", - "integrity": "sha512-uPiDUyf7gd7Il1KnqfNUtHqntL0w1LapEw5Zsuh8oCK8GsqdxySX1PzdIHKB2Dw273gWY4MW0zC5gy3Re9XlqQ==", + "version": "24.37.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.37.0.tgz", + "integrity": "sha512-s1jHugVhPtQjiJE6wUyonj4VEGWF+mfRDASqPMPsXgKcjZX0GaznBmcT9nLQ7bBL90phuQUqO4jiV5vTecZg4g==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.11.2", - "chromium-bidi": "13.0.1", + "@puppeteer/browsers": "2.12.0", + "chromium-bidi": "13.1.0", "cosmiconfig": "^9.0.0", - "devtools-protocol": "0.0.1551306", - "puppeteer-core": "24.36.1", + "devtools-protocol": "0.0.1566079", + "puppeteer-core": "24.37.0", "typed-query-selector": "^2.12.0" }, "bin": { @@ -3023,15 +3024,15 @@ } }, "node_modules/puppeteer-core": { - "version": "24.36.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.36.1.tgz", - "integrity": "sha512-L7ykMWc3lQf3HS7ME3PSjp7wMIjJeW6+bKfH/RSTz5l6VUDGubnrC2BKj3UvM28Y5PMDFW0xniJOZHBZPpW1dQ==", + "version": "24.37.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.37.0.tgz", + "integrity": "sha512-WoCBK36cBlbaxwuvPWhOp2+lR6O6ynHdDuvD8rEIkxPOPpUoMXSJuyiOWhHtexJBCLaMCAJk33QdYambvQl+og==", "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.11.2", - "chromium-bidi": "13.0.1", + "@puppeteer/browsers": "2.12.0", + "chromium-bidi": "13.1.0", "debug": "^4.4.3", - "devtools-protocol": "0.0.1551306", + "devtools-protocol": "0.0.1566079", "typed-query-selector": "^2.12.0", "webdriver-bidi-protocol": "0.4.0", "ws": "^8.19.0" From 5237250159c541d40398f33924d3be0216909f9b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 12 Feb 2026 19:49:07 +0000 Subject: [PATCH 304/415] chore(deps): update dependency @types/node to v24.10.11 (#373) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5e1e1e3a..344a24c9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -773,9 +773,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.10.tgz", - "integrity": "sha512-+0/4J266CBGPUq/ELg7QUHhN25WYjE0wYTPSQJn1xeu8DOlIOPxXxrNGiLmfAWl7HMMgWFWXpt9IDjMWrF5Iow==", + "version": "24.10.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.11.tgz", + "integrity": "sha512-/Af7O8r1frCVgOz0I62jWUtMohJ0/ZQU/ZoketltOJPZpnb17yoNc9BSoVuV9qlaIXJiPNOpsfq4ByFajSArNQ==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" From 460723b0a6d4e91f9120b06bd4db0c9bd2f562e9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 12 Feb 2026 19:49:22 +0000 Subject: [PATCH 305/415] chore(deps): update dependency puppeteer to v24.37.1 (#374) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 344a24c9..42413199 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1138,13 +1138,12 @@ } }, "node_modules/chromium-bidi": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-13.1.0.tgz", - "integrity": "sha512-IdGNojX6S04+wgJOALzvkkIyLelhEGqI8xSctwiYJJGSi9T2eBjwAQW2UjBD/mCXv/rUkNlH2+h7jz+58vT74A==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-13.1.1.tgz", + "integrity": "sha512-zB9MpoPd7VJwjowQqiW3FKOvQwffFMjQ8Iejp5ZW+sJaKLRhZX1sTxzl3Zt22TDB4zP0OOqs8lRoY7eAW5geyQ==", "license": "Apache-2.0", "dependencies": { "mitt": "^3.0.1", - "puppeteer": "^24.36.0", "zod": "^3.24.1" }, "peerDependencies": { @@ -3003,17 +3002,17 @@ } }, "node_modules/puppeteer": { - "version": "24.37.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.37.0.tgz", - "integrity": "sha512-s1jHugVhPtQjiJE6wUyonj4VEGWF+mfRDASqPMPsXgKcjZX0GaznBmcT9nLQ7bBL90phuQUqO4jiV5vTecZg4g==", + "version": "24.37.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.37.1.tgz", + "integrity": "sha512-iugAcwjRIX6XsMS1dzWbjKKUcEE0ZmmRbV0T6RyTtXNSHyBdss0r9GYJ9eOjUZfOoWeKCIOAptogdHYoBbJDeA==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.12.0", - "chromium-bidi": "13.1.0", + "chromium-bidi": "13.1.1", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1566079", - "puppeteer-core": "24.37.0", + "puppeteer-core": "24.37.1", "typed-query-selector": "^2.12.0" }, "bin": { @@ -3024,13 +3023,13 @@ } }, "node_modules/puppeteer-core": { - "version": "24.37.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.37.0.tgz", - "integrity": "sha512-WoCBK36cBlbaxwuvPWhOp2+lR6O6ynHdDuvD8rEIkxPOPpUoMXSJuyiOWhHtexJBCLaMCAJk33QdYambvQl+og==", + "version": "24.37.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.37.1.tgz", + "integrity": "sha512-ylRJReaA6kd/CrahdrxxnSZf5S2hf1QR0S39QeoS55fuBoOl4UggGPW94zheu9lmCokpRQpa7q8r98xYyiQl0Q==", "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.12.0", - "chromium-bidi": "13.1.0", + "chromium-bidi": "13.1.1", "debug": "^4.4.3", "devtools-protocol": "0.0.1566079", "typed-query-selector": "^2.12.0", From d2695e45ea421d4b6adaac876bf66944bd161b17 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 13 Feb 2026 14:02:05 +0000 Subject: [PATCH 306/415] chore(deps): update dependency puppeteer to v24.37.2 (#375) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 42413199..23e9d71c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3002,9 +3002,9 @@ } }, "node_modules/puppeteer": { - "version": "24.37.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.37.1.tgz", - "integrity": "sha512-iugAcwjRIX6XsMS1dzWbjKKUcEE0ZmmRbV0T6RyTtXNSHyBdss0r9GYJ9eOjUZfOoWeKCIOAptogdHYoBbJDeA==", + "version": "24.37.2", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.37.2.tgz", + "integrity": "sha512-FV1W/919ve0y0oiS/3Rp5XY4MUNUokpZOH/5M4MMDfrrvh6T9VbdKvAHrAFHBuCxvluDxhjra20W7Iz6HJUcIQ==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -3012,7 +3012,7 @@ "chromium-bidi": "13.1.1", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1566079", - "puppeteer-core": "24.37.1", + "puppeteer-core": "24.37.2", "typed-query-selector": "^2.12.0" }, "bin": { @@ -3023,9 +3023,9 @@ } }, "node_modules/puppeteer-core": { - "version": "24.37.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.37.1.tgz", - "integrity": "sha512-ylRJReaA6kd/CrahdrxxnSZf5S2hf1QR0S39QeoS55fuBoOl4UggGPW94zheu9lmCokpRQpa7q8r98xYyiQl0Q==", + "version": "24.37.2", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.37.2.tgz", + "integrity": "sha512-nN8qwE3TGF2vA/+xemPxbesntTuqD9vCGOiZL2uh8HES3pPzLX20MyQjB42dH2rhQ3W3TljZ4ZaKZ0yX/abQuw==", "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.12.0", From 9a28667f057afc1afca0dcdf77033af6896ddfef Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 15 Feb 2026 01:55:59 +0000 Subject: [PATCH 307/415] chore(deps): update dependency @types/node to v24.10.12 (#377) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 23e9d71c..677ac88a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -773,9 +773,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.11.tgz", - "integrity": "sha512-/Af7O8r1frCVgOz0I62jWUtMohJ0/ZQU/ZoketltOJPZpnb17yoNc9BSoVuV9qlaIXJiPNOpsfq4ByFajSArNQ==", + "version": "24.10.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.12.tgz", + "integrity": "sha512-68e+T28EbdmLSTkPgs3+UacC6rzmqrcWFPQs1C8mwJhI/r5Uxr0yEuQotczNRROd1gq30NGxee+fo0rSIxpyAw==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" From a73a9b9cde447c12f332d79019f142ad7f12c9a2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 17 Feb 2026 05:09:31 +0000 Subject: [PATCH 308/415] chore(deps): update actions/stale action to v10.2.0 (#378) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/close-issue.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/close-issue.yml b/.github/workflows/close-issue.yml index dffe9006..55e77b63 100644 --- a/.github/workflows/close-issue.yml +++ b/.github/workflows/close-issue.yml @@ -14,7 +14,7 @@ jobs: pull-requests: write if: github.repository == 'line/line-bot-mcp-server' steps: - - uses: actions/stale@997185467fa4f803885201cee163a9f38240193d # v10.1.1 + - uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0 with: days-before-issue-stale: 28 # 4 weeks days-before-issue-close: 0 From d5f68e9ef438f0b57e772e2720268c77d302f21c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 17 Feb 2026 20:42:07 +0000 Subject: [PATCH 309/415] chore(deps): update dependency @types/node to v24.10.13 (#379) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 677ac88a..99437463 100644 --- a/package-lock.json +++ b/package-lock.json @@ -773,9 +773,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.12.tgz", - "integrity": "sha512-68e+T28EbdmLSTkPgs3+UacC6rzmqrcWFPQs1C8mwJhI/r5Uxr0yEuQotczNRROd1gq30NGxee+fo0rSIxpyAw==", + "version": "24.10.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.13.tgz", + "integrity": "sha512-oH72nZRfDv9lADUBSo104Aq7gPHpQZc4BTx38r9xf9pg5LfP6EzSyH2n7qFmmxRQXh7YlUXODcYsg6PuTDSxGg==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" From cc4135fd4a8a6e1d3633dc8fdc278776f66532b7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 20 Feb 2026 23:10:04 +0900 Subject: [PATCH 310/415] chore(deps): update dependency puppeteer to v24.37.3 (#380) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index 99437463..2619d812 100644 --- a/package-lock.json +++ b/package-lock.json @@ -734,16 +734,16 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.12.0.tgz", - "integrity": "sha512-Xuq42yxcQJ54ti8ZHNzF5snFvtpgXzNToJ1bXUGQRaiO8t+B6UM8sTUJfvV+AJnqtkJU/7hdy6nbKyA12aHtRw==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.12.1.tgz", + "integrity": "sha512-fXa6uXLxfslBlus3MEpW8S6S9fe5RwmAE5Gd8u3krqOwnkZJV3/lQJiY3LaFdTctLLqJtyMgEUGkbDnRNf6vbQ==", "license": "Apache-2.0", "dependencies": { "debug": "^4.4.3", "extract-zip": "^2.0.1", "progress": "^2.0.3", "proxy-agent": "^6.5.0", - "semver": "^7.7.3", + "semver": "^7.7.4", "tar-fs": "^3.1.1", "yargs": "^17.7.2" }, @@ -1138,9 +1138,9 @@ } }, "node_modules/chromium-bidi": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-13.1.1.tgz", - "integrity": "sha512-zB9MpoPd7VJwjowQqiW3FKOvQwffFMjQ8Iejp5ZW+sJaKLRhZX1sTxzl3Zt22TDB4zP0OOqs8lRoY7eAW5geyQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-14.0.0.tgz", + "integrity": "sha512-9gYlLtS6tStdRWzrtXaTMnqcM4dudNegMXJxkR0I/CXObHalYeYcAMPrL19eroNZHtJ8DQmu1E+ZNOYu/IXMXw==", "license": "Apache-2.0", "dependencies": { "mitt": "^3.0.1", @@ -3002,17 +3002,17 @@ } }, "node_modules/puppeteer": { - "version": "24.37.2", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.37.2.tgz", - "integrity": "sha512-FV1W/919ve0y0oiS/3Rp5XY4MUNUokpZOH/5M4MMDfrrvh6T9VbdKvAHrAFHBuCxvluDxhjra20W7Iz6HJUcIQ==", + "version": "24.37.3", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.37.3.tgz", + "integrity": "sha512-AUGGWq0BhPM+IOS2U9A+ZREH3HDFkV1Y5HERYGDg5cbGXjoGsTCT7/A6VZRfNU0UJJdCclyEimZICkZW6pqJyw==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.12.0", - "chromium-bidi": "13.1.1", + "@puppeteer/browsers": "2.12.1", + "chromium-bidi": "14.0.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1566079", - "puppeteer-core": "24.37.2", + "puppeteer-core": "24.37.3", "typed-query-selector": "^2.12.0" }, "bin": { @@ -3023,17 +3023,17 @@ } }, "node_modules/puppeteer-core": { - "version": "24.37.2", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.37.2.tgz", - "integrity": "sha512-nN8qwE3TGF2vA/+xemPxbesntTuqD9vCGOiZL2uh8HES3pPzLX20MyQjB42dH2rhQ3W3TljZ4ZaKZ0yX/abQuw==", + "version": "24.37.3", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.37.3.tgz", + "integrity": "sha512-fokQ8gv+hNgsRWqVuP5rUjGp+wzV5aMTP3fcm8ekNabmLGlJdFHas1OdMscAH9Gzq4Qcf7cfI/Pe6wEcAqQhqg==", "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.12.0", - "chromium-bidi": "13.1.1", + "@puppeteer/browsers": "2.12.1", + "chromium-bidi": "14.0.0", "debug": "^4.4.3", "devtools-protocol": "0.0.1566079", "typed-query-selector": "^2.12.0", - "webdriver-bidi-protocol": "0.4.0", + "webdriver-bidi-protocol": "0.4.1", "ws": "^8.19.0" }, "engines": { @@ -3859,9 +3859,9 @@ } }, "node_modules/webdriver-bidi-protocol": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.0.tgz", - "integrity": "sha512-U9VIlNRrq94d1xxR9JrCEAx5Gv/2W7ERSv8oWRoNe/QYbfccS0V3h/H6qeNeCRJxXGMhhnkqvwNrvPAYeuP9VA==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.1.tgz", + "integrity": "sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw==", "license": "Apache-2.0" }, "node_modules/which": { From 2866430522fb5f1b8d32103428e2cf363c484c66 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 23 Feb 2026 23:47:24 +0000 Subject: [PATCH 311/415] chore(deps): update dependency @modelcontextprotocol/sdk to v1.27.0 (#381) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2619d812..00676b8e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -656,9 +656,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.26.0.tgz", - "integrity": "sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.27.0.tgz", + "integrity": "sha512-qOdO524oPMkUsOJTrsH9vz/HN3B5pKyW+9zIW51A9kDMVe7ON70drz1ouoyoyOcfzc+oxhkQ6jWmbyKnlWmYqA==", "license": "MIT", "dependencies": { "@hono/node-server": "^1.19.9", From a6959f6a09643ebeb9388285aa4ade346d29e5c1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Feb 2026 16:55:48 +0000 Subject: [PATCH 312/415] chore(deps): update dependency puppeteer to v24.37.4 (#382) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 00676b8e..5a0339db 100644 --- a/package-lock.json +++ b/package-lock.json @@ -734,9 +734,9 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.12.1.tgz", - "integrity": "sha512-fXa6uXLxfslBlus3MEpW8S6S9fe5RwmAE5Gd8u3krqOwnkZJV3/lQJiY3LaFdTctLLqJtyMgEUGkbDnRNf6vbQ==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.13.0.tgz", + "integrity": "sha512-46BZJYJjc/WwmKjsvDFykHtXrtomsCIrwYQPOP7VfMJoZY2bsDF9oROBABR3paDjDcmkUye1Pb1BqdcdiipaWA==", "license": "Apache-2.0", "dependencies": { "debug": "^4.4.3", @@ -3002,17 +3002,17 @@ } }, "node_modules/puppeteer": { - "version": "24.37.3", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.37.3.tgz", - "integrity": "sha512-AUGGWq0BhPM+IOS2U9A+ZREH3HDFkV1Y5HERYGDg5cbGXjoGsTCT7/A6VZRfNU0UJJdCclyEimZICkZW6pqJyw==", + "version": "24.37.4", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.37.4.tgz", + "integrity": "sha512-SMSq+FL3gnglolhrIks3maRkrdQEjoDCesy6FXziMPWsF1DxoX+GVxRa82y+euzkzS52/UujM/BoaFPQ+AnPXQ==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.12.1", + "@puppeteer/browsers": "2.13.0", "chromium-bidi": "14.0.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1566079", - "puppeteer-core": "24.37.3", + "puppeteer-core": "24.37.4", "typed-query-selector": "^2.12.0" }, "bin": { @@ -3023,12 +3023,12 @@ } }, "node_modules/puppeteer-core": { - "version": "24.37.3", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.37.3.tgz", - "integrity": "sha512-fokQ8gv+hNgsRWqVuP5rUjGp+wzV5aMTP3fcm8ekNabmLGlJdFHas1OdMscAH9Gzq4Qcf7cfI/Pe6wEcAqQhqg==", + "version": "24.37.4", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.37.4.tgz", + "integrity": "sha512-sQYtYgaNaLYO82k2FHmr7bR1tCmo2fBupEI7Kd0WpBlMropNcfxSTLOJXVRkhiHig0dUiMI7g0yq+HJI1IDCzg==", "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.12.1", + "@puppeteer/browsers": "2.13.0", "chromium-bidi": "14.0.0", "debug": "^4.4.3", "devtools-protocol": "0.0.1566079", From a70e1495f804342fc50e6577ecedd624709f7580 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 26 Feb 2026 17:34:48 +0000 Subject: [PATCH 313/415] chore(deps): update dependency puppeteer to v24.37.5 (#383) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5a0339db..6c8717fe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3002,9 +3002,9 @@ } }, "node_modules/puppeteer": { - "version": "24.37.4", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.37.4.tgz", - "integrity": "sha512-SMSq+FL3gnglolhrIks3maRkrdQEjoDCesy6FXziMPWsF1DxoX+GVxRa82y+euzkzS52/UujM/BoaFPQ+AnPXQ==", + "version": "24.37.5", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.37.5.tgz", + "integrity": "sha512-3PAOIQLceyEmn1Fi76GkGO2EVxztv5OtdlB1m8hMUZL3f8KDHnlvXbvCXv+Ls7KzF1R0KdKBqLuT/Hhrok12hQ==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -3012,7 +3012,7 @@ "chromium-bidi": "14.0.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1566079", - "puppeteer-core": "24.37.4", + "puppeteer-core": "24.37.5", "typed-query-selector": "^2.12.0" }, "bin": { @@ -3023,9 +3023,9 @@ } }, "node_modules/puppeteer-core": { - "version": "24.37.4", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.37.4.tgz", - "integrity": "sha512-sQYtYgaNaLYO82k2FHmr7bR1tCmo2fBupEI7Kd0WpBlMropNcfxSTLOJXVRkhiHig0dUiMI7g0yq+HJI1IDCzg==", + "version": "24.37.5", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.37.5.tgz", + "integrity": "sha512-ybL7iE78YPN4T6J+sPLO7r0lSByp/0NN6PvfBEql219cOnttoTFzCWKiBOjstXSqi/OKpwae623DWAsL7cn2MQ==", "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.13.0", From 07ef1231afa75df5ab3110f4fe8661834db321cb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 4 Mar 2026 01:23:40 +0000 Subject: [PATCH 314/415] chore(deps): update dependency @modelcontextprotocol/sdk to v1.27.1 (#384) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6c8717fe..ea4e8b77 100644 --- a/package-lock.json +++ b/package-lock.json @@ -656,9 +656,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.27.0.tgz", - "integrity": "sha512-qOdO524oPMkUsOJTrsH9vz/HN3B5pKyW+9zIW51A9kDMVe7ON70drz1ouoyoyOcfzc+oxhkQ6jWmbyKnlWmYqA==", + "version": "1.27.1", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.27.1.tgz", + "integrity": "sha512-sr6GbP+4edBwFndLbM60gf07z0FQ79gaExpnsjMGePXqFcSSb7t6iscpjk9DhFhwd+mTEQrzNafGP8/iGGFYaA==", "license": "MIT", "dependencies": { "@hono/node-server": "^1.19.9", From 3b5d690037c51aafd99b2399eaec8be98201646d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 4 Mar 2026 10:02:36 +0000 Subject: [PATCH 315/415] chore(deps): update node.js to v24.14.0 (#385) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index c484de22..523e0dab 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:24.13-alpine AS builder +FROM node:24.14-alpine AS builder COPY . /app From 66980ee396ff040a28e2983bc3532c61f9e3b5b0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 5 Mar 2026 01:49:51 +0000 Subject: [PATCH 316/415] chore(deps): update dependency @types/node to v24.10.14 (#386) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index ea4e8b77..f3d26b40 100644 --- a/package-lock.json +++ b/package-lock.json @@ -773,9 +773,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.13.tgz", - "integrity": "sha512-oH72nZRfDv9lADUBSo104Aq7gPHpQZc4BTx38r9xf9pg5LfP6EzSyH2n7qFmmxRQXh7YlUXODcYsg6PuTDSxGg==", + "version": "24.10.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.14.tgz", + "integrity": "sha512-OowOUbD1lBCOFIPOZ8xnMIhgqA4sCutMiYOmPHL1PTLt5+y1XA+g2+yC9OOyz8p+deMZqPZLxfMjYIfrKsPeFg==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" From d6fd4c7c9c46f8986482bf8e82af94b9ca9b3807 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 5 Mar 2026 21:48:38 +0000 Subject: [PATCH 317/415] chore(deps): update dependency @types/node to v24.10.15 (#387) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f3d26b40..554d18c3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -773,9 +773,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.14.tgz", - "integrity": "sha512-OowOUbD1lBCOFIPOZ8xnMIhgqA4sCutMiYOmPHL1PTLt5+y1XA+g2+yC9OOyz8p+deMZqPZLxfMjYIfrKsPeFg==", + "version": "24.10.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.15.tgz", + "integrity": "sha512-BgjLoRuSr0MTI5wA6gMw9Xy0sFudAaUuvrnjgGx9wZ522fYYLA5SYJ+1Y30vTcJEG+DRCyDHx/gzQVfofYzSdg==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" From f3b23dbe75ac10e67f6c77c6ec2b803c9fdf4197 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 7 Mar 2026 04:51:27 +0000 Subject: [PATCH 318/415] chore(deps): update dependency @types/node to v24.11.0 (#388) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 554d18c3..edbad132 100644 --- a/package-lock.json +++ b/package-lock.json @@ -773,9 +773,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.15.tgz", - "integrity": "sha512-BgjLoRuSr0MTI5wA6gMw9Xy0sFudAaUuvrnjgGx9wZ522fYYLA5SYJ+1Y30vTcJEG+DRCyDHx/gzQVfofYzSdg==", + "version": "24.11.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.11.0.tgz", + "integrity": "sha512-fPxQqz4VTgPI/IQ+lj9r0h+fDR66bzoeMGHp8ASee+32OSGIkeASsoZuJixsQoVef1QJbeubcPBxKk22QVoWdw==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" From d557e08a6e2bb8a213dc58461a053fd45a8993a4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 7 Mar 2026 22:00:18 +0000 Subject: [PATCH 319/415] chore(deps): update dependency @marp-team/marp-core to v4.3.0 (#389) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 51 +++++++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index edbad132..432c1566 100644 --- a/package-lock.json +++ b/package-lock.json @@ -611,17 +611,17 @@ } }, "node_modules/@marp-team/marp-core": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@marp-team/marp-core/-/marp-core-4.2.0.tgz", - "integrity": "sha512-AoqRk9g6kF44OhdgV2eUsc0ciyxkI3IM/S4ntV+aHy59NSTcwPEHrbtAzqe+q2PK/trmQX233/0plusNZPoF+Q==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@marp-team/marp-core/-/marp-core-4.3.0.tgz", + "integrity": "sha512-Qwd0wsHS+7bdCBmmnxCU2OKclCSdsVu4U474zSs44Y2SMXr6d9wBYAMD5IXI4dbmaB57Ez5fdPUxPZZsFo8Tmw==", "license": "MIT", "dependencies": { - "@marp-team/marpit": "^3.2.0", + "@marp-team/marpit": "^3.2.1", "@marp-team/marpit-svg-polyfill": "^2.1.0", "highlight.js": "^11.11.1", - "katex": "^0.16.25", + "katex": "^0.16.33", "mathjax-full": "^3.2.2", - "postcss-selector-parser": "^7.1.0", + "postcss-selector-parser": "^7.1.1", "xss": "^1.0.15" }, "engines": { @@ -629,16 +629,16 @@ } }, "node_modules/@marp-team/marpit": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@marp-team/marpit/-/marpit-3.2.0.tgz", - "integrity": "sha512-DNCbwkAKugzCtiHJg/7DciIRwnKwAI2QH3VWWC1cVxoBBQTPnH5D9HcWqpDdduUqnCuW2PY78afVo+QlaInDdQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@marp-team/marpit/-/marpit-3.2.1.tgz", + "integrity": "sha512-MflN1movsh8PXJbM9otjJOtlcB0vSrvw5PgXs2PDguVYVzKQmGpiy9QHHKq0rryrgaSp376TdJWBP7mXHHAG8w==", "license": "MIT", "dependencies": { "@csstools/postcss-is-pseudo-class": "^5.0.3", "cssesc": "^3.0.0", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "lodash.kebabcase": "^4.1.1", - "markdown-it": "^14.1.0", + "markdown-it": "^14.1.1", "markdown-it-front-matter": "^0.2.4", "postcss": "^8.5.6", "postcss-nesting": "^13.0.2" @@ -1419,6 +1419,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -2424,9 +2425,9 @@ "license": "BSD-2-Clause" }, "node_modules/katex": { - "version": "0.16.25", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.25.tgz", - "integrity": "sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q==", + "version": "0.16.37", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.37.tgz", + "integrity": "sha512-TIGjO2cCGYono+uUzgkE7RFF329mLLWGuHUlSr6cwIVj9O8f0VQZ783rsanmJpFUo32vvtj7XT04NGRPh+SZFg==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" @@ -2448,6 +2449,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "license": "MIT", "dependencies": { "uc.micro": "^2.0.0" } @@ -2467,9 +2469,10 @@ } }, "node_modules/markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz", + "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==", + "license": "MIT", "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", @@ -2510,7 +2513,8 @@ "node_modules/mdurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "license": "MIT" }, "node_modules/media-typer": { "version": "1.1.0", @@ -2909,9 +2913,10 @@ } }, "node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -2997,6 +3002,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -3827,7 +3833,8 @@ "node_modules/uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==" + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" }, "node_modules/undici-types": { "version": "7.16.0", From cd1823ef03029a1a985234aecd3489e584175110 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 9 Mar 2026 21:28:24 +0000 Subject: [PATCH 320/415] chore(deps): update actions/setup-node action to v6.3.0 (#390) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/npm-audit.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index c6ccf101..0668cab8 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -17,7 +17,7 @@ jobs: if: github.repository == 'line/line-bot-mcp-server' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: '24' # Enable this when setup-node v5 is released diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f5090e0f..7dc6b61d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 # Setup .npmrc file to publish to GitHub Packages - - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: 24 registry-url: 'https://registry.npmjs.org' diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4b2bfa42..76f3c428 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,7 +27,7 @@ jobs: with: submodules: true - name: Setup Node.js - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: ${{ matrix.node }} cache: 'npm' From e628a6887c59b1dfcb3d2f980705c1b464676813 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 11 Mar 2026 14:10:22 +0000 Subject: [PATCH 321/415] chore(deps): update dependency puppeteer to v24.38.0 (#391) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index 432c1566..a0b26145 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1367,9 +1367,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1566079", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1566079.tgz", - "integrity": "sha512-MJfAEA1UfVhSs7fbSQOG4czavUp1ajfg6prlAN0+cmfa2zNjaIbvq8VneP7do1WAQQIvgNJWSMeP6UyI90gIlQ==", + "version": "0.0.1581282", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1581282.tgz", + "integrity": "sha512-nv7iKtNZQshSW2hKzYNr46nM/Cfh5SEvE2oV0/SEGgc9XupIY5ggf84Cz8eJIkBce7S3bmTAauFD6aysMpnqsQ==", "license": "BSD-3-Clause" }, "node_modules/dunder-proto": { @@ -3008,18 +3008,18 @@ } }, "node_modules/puppeteer": { - "version": "24.37.5", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.37.5.tgz", - "integrity": "sha512-3PAOIQLceyEmn1Fi76GkGO2EVxztv5OtdlB1m8hMUZL3f8KDHnlvXbvCXv+Ls7KzF1R0KdKBqLuT/Hhrok12hQ==", + "version": "24.38.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.38.0.tgz", + "integrity": "sha512-abnJOBVoL9PQTLKSbYGm9mjNFyIPaTVj77J/6cS370dIQtcZMpx8wyZoAuBzR71Aoon6yvI71NEVFUsl3JU82g==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.13.0", "chromium-bidi": "14.0.0", "cosmiconfig": "^9.0.0", - "devtools-protocol": "0.0.1566079", - "puppeteer-core": "24.37.5", - "typed-query-selector": "^2.12.0" + "devtools-protocol": "0.0.1581282", + "puppeteer-core": "24.38.0", + "typed-query-selector": "^2.12.1" }, "bin": { "puppeteer": "lib/cjs/puppeteer/node/cli.js" @@ -3029,16 +3029,16 @@ } }, "node_modules/puppeteer-core": { - "version": "24.37.5", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.37.5.tgz", - "integrity": "sha512-ybL7iE78YPN4T6J+sPLO7r0lSByp/0NN6PvfBEql219cOnttoTFzCWKiBOjstXSqi/OKpwae623DWAsL7cn2MQ==", + "version": "24.38.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.38.0.tgz", + "integrity": "sha512-zB3S/tksIhgi2gZRndUe07AudBz5SXOB7hqG0kEa9/YXWrGwlVlYm3tZtwKgfRftBzbmLQl5iwHkQQl04n/mWw==", "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.13.0", "chromium-bidi": "14.0.0", "debug": "^4.4.3", - "devtools-protocol": "0.0.1566079", - "typed-query-selector": "^2.12.0", + "devtools-protocol": "0.0.1581282", + "typed-query-selector": "^2.12.1", "webdriver-bidi-protocol": "0.4.1", "ws": "^8.19.0" }, @@ -3811,9 +3811,9 @@ } }, "node_modules/typed-query-selector": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", - "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.1.tgz", + "integrity": "sha512-uzR+FzI8qrUEIu96oaeBJmd9E7CFEiQ3goA5qCVgc4s5llSubcfGHq9yUstZx/k4s9dXHVKsE35YWoFyvEqEHA==", "license": "MIT" }, "node_modules/typescript": { From a4ecf2601a93916001bf2929f205a61e8d6ec3fd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 13 Mar 2026 02:12:03 +0000 Subject: [PATCH 322/415] chore(deps): update dependency @types/node to v24.11.2 (#392) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a0b26145..0c7ce3b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -773,9 +773,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.11.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.11.0.tgz", - "integrity": "sha512-fPxQqz4VTgPI/IQ+lj9r0h+fDR66bzoeMGHp8ASee+32OSGIkeASsoZuJixsQoVef1QJbeubcPBxKk22QVoWdw==", + "version": "24.11.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.11.2.tgz", + "integrity": "sha512-HTsxyfkxTNxOXBsEdgIOzbMgBjDGPvkTfw0B1m09j1LFPk8u3tSL8SNBRTSc381wXXX/Wp93qPi1kQXwnWuHgA==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" From 601b426493785f1245027a2307b704039773fed9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 13 Mar 2026 18:19:37 +0900 Subject: [PATCH 323/415] chore(deps): update dependency @types/node to v24.12.0 (#393) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0c7ce3b0..888434b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -773,9 +773,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.11.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.11.2.tgz", - "integrity": "sha512-HTsxyfkxTNxOXBsEdgIOzbMgBjDGPvkTfw0B1m09j1LFPk8u3tSL8SNBRTSc381wXXX/Wp93qPi1kQXwnWuHgA==", + "version": "24.12.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.0.tgz", + "integrity": "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" From 8b7348bb863746a975e673dd3b2671a4e982cee2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 17 Mar 2026 17:26:20 +0000 Subject: [PATCH 324/415] chore(deps): update dependency puppeteer to v24.39.0 (#394) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 888434b6..40066015 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3008,9 +3008,9 @@ } }, "node_modules/puppeteer": { - "version": "24.38.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.38.0.tgz", - "integrity": "sha512-abnJOBVoL9PQTLKSbYGm9mjNFyIPaTVj77J/6cS370dIQtcZMpx8wyZoAuBzR71Aoon6yvI71NEVFUsl3JU82g==", + "version": "24.39.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.39.0.tgz", + "integrity": "sha512-uMpGyuPqz94YInmdHSbD9ssgwsddrwe8qXr08UaEwjzrEvOa8gGl8za0h+MWoEG+/6sIBsJwzRfwuGCYRbbcpg==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -3018,7 +3018,7 @@ "chromium-bidi": "14.0.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1581282", - "puppeteer-core": "24.38.0", + "puppeteer-core": "24.39.0", "typed-query-selector": "^2.12.1" }, "bin": { @@ -3029,9 +3029,9 @@ } }, "node_modules/puppeteer-core": { - "version": "24.38.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.38.0.tgz", - "integrity": "sha512-zB3S/tksIhgi2gZRndUe07AudBz5SXOB7hqG0kEa9/YXWrGwlVlYm3tZtwKgfRftBzbmLQl5iwHkQQl04n/mWw==", + "version": "24.39.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.39.0.tgz", + "integrity": "sha512-SzIxz76Kgu17HUIi57HOejPiN0JKa9VCd2GcPY1sAh6RA4BzGZarFQdOYIYrBdUVbtyH7CrDb9uhGEwVXK/YNA==", "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.13.0", From 2d0c018cc5e6f124d0ad426e1d2358e6846064a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yasunori=20Morishima=EF=BC=88=E7=9B=9B=E5=B3=B6=E5=BA=B7?= =?UTF-8?q?=E5=BE=B3=EF=BC=89?= Date: Wed, 18 Mar 2026 18:53:27 +0900 Subject: [PATCH 325/415] feat: add get_follower_ids tool (#369) * feat: add get_follower_ids tool (#15) Add a new MCP tool to get user IDs of LINE Official Account followers. This enables AI agents to obtain user IDs without manually preparing DESTINATION_USER_ID. - Add src/tools/getFollowerIds.ts with optional start/limit params - Register tool in src/index.ts - Update README.md, README.ja.md, and manifest.json Closes #15 Co-Authored-By: Claude Opus 4.6 * Add .coderabbit.yaml to enable Draft PR reviews * Remove .coderabbit.yaml from feature branch --------- Co-authored-by: Claude Opus 4.6 Co-authored-by: Yuta Euchi <63095160+eucyt@users.noreply.github.com> --- README.ja.md | 6 +++++ README.md | 6 +++++ manifest.json | 4 ++++ src/index.ts | 2 ++ src/tools/getFollowerIds.ts | 48 +++++++++++++++++++++++++++++++++++++ 5 files changed, 66 insertions(+) create mode 100644 src/tools/getFollowerIds.ts diff --git a/README.ja.md b/README.ja.md index b1732948..bb3aa732 100644 --- a/README.ja.md +++ b/README.ja.md @@ -72,6 +72,12 @@ LINE公式アカウントとAI Agentを接続するために、LINE Messaging AP - `richmenuswitch`: 別のリッチメニューに切り替える - `clipboard`: テキストをクリップボードにコピーする +12. **get_follower_ids** + - LINE公式アカウントを友だち追加しているユーザーのユーザーIDリストを取得する。これにより、DESTINATION_USER_IDを手動で準備せずにユーザーIDを取得できる。 + - **入力:** + - `start` (string?): 次のユーザーID配列を取得するための継続トークン。前回のレスポンスの`next`プロパティから取得できる。 + - `limit` (number?): 1回のリクエストで取得するユーザーIDの最大数。 + ## インストール (npxを使用) 要件: diff --git a/README.md b/README.md index e4243a44..5e2a62c9 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,12 @@ - `richmenuswitch`: For switching to another rich menu - `clipboard`: For copying text to clipboard +12. **get_follower_ids** + - Get a list of user IDs of users who have added the LINE Official Account as a friend. This allows you to obtain user IDs for sending messages without manually preparing them. + - **Inputs:** + - `start` (string?): Continuation token to get the next array of user IDs. Returned in the `next` property of a previous response. + - `limit` (number?): The maximum number of user IDs to retrieve in a single request. + ## Installation (Using npx) requirements: diff --git a/manifest.json b/manifest.json index b85c3fa9..1fcedd9f 100644 --- a/manifest.json +++ b/manifest.json @@ -69,6 +69,10 @@ { "name": "cancel_rich_menu_default", "description": "Remove the default rich menu" + }, + { + "name": "get_follower_ids", + "description": "Get a list of user IDs of followers" } ], "keywords": [ diff --git a/src/index.ts b/src/index.ts index 1595abc1..42e334a6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -31,6 +31,7 @@ import GetRichMenuList from "./tools/getRichMenuList.js"; import DeleteRichMenu from "./tools/deleteRichMenu.js"; import SetRichMenuDefault from "./tools/setRichMenuDefault.js"; import CreateRichMenu from "./tools/createRichMenu.js"; +import GetFollowerIds from "./tools/getFollowerIds.js"; const server = new McpServer({ name: "line-bot", @@ -65,6 +66,7 @@ new DeleteRichMenu(messagingApiClient).register(server); new SetRichMenuDefault(messagingApiClient).register(server); new CancelRichMenuDefault(messagingApiClient).register(server); new CreateRichMenu(messagingApiClient, lineBlobClient).register(server); +new GetFollowerIds(messagingApiClient).register(server); async function main() { if (!process.env.CHANNEL_ACCESS_TOKEN) { diff --git a/src/tools/getFollowerIds.ts b/src/tools/getFollowerIds.ts new file mode 100644 index 00000000..9e129fd1 --- /dev/null +++ b/src/tools/getFollowerIds.ts @@ -0,0 +1,48 @@ +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { messagingApi } from "@line/bot-sdk"; +import { z } from "zod"; +import { + createErrorResponse, + createSuccessResponse, +} from "../common/response.js"; +import { AbstractTool } from "./AbstractTool.js"; + +export default class GetFollowerIds extends AbstractTool { + private client: messagingApi.MessagingApiClient; + + constructor(client: messagingApi.MessagingApiClient) { + super(); + this.client = client; + } + + register(server: McpServer) { + server.tool( + "get_follower_ids", + "Get a list of user IDs of users who have added the LINE Official Account as a friend. This allows you to obtain user IDs for sending messages without manually preparing them.", + { + start: z + .string() + .optional() + .describe( + "Continuation token to get the next array of user IDs. Returned in the 'next' property of a previous response.", + ), + limit: z + .number() + .optional() + .describe( + "The maximum number of user IDs to retrieve in a single request.", + ), + }, + async ({ start, limit }) => { + try { + const response = await this.client.getFollowers(start, limit); + return createSuccessResponse(response); + } catch (error) { + return createErrorResponse( + `Failed to get follower IDs: ${error.message}`, + ); + } + }, + ); + } +} From 24cee7b6b0f339db2fdbfec6f0eefd417d39d043 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 20 Mar 2026 13:19:40 +0000 Subject: [PATCH 326/415] chore(deps): update dependency puppeteer to v24.39.1 (#399) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 40066015..d631ddd8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3008,9 +3008,9 @@ } }, "node_modules/puppeteer": { - "version": "24.39.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.39.0.tgz", - "integrity": "sha512-uMpGyuPqz94YInmdHSbD9ssgwsddrwe8qXr08UaEwjzrEvOa8gGl8za0h+MWoEG+/6sIBsJwzRfwuGCYRbbcpg==", + "version": "24.39.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.39.1.tgz", + "integrity": "sha512-68Zc9QpcVvfxp2C+3UL88TyUogEAn5tSylXidbEuEXvhiqK1+v65zeBU5ubinAgEHMGr3dcSYqvYrGtdzsPI3w==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -3018,7 +3018,7 @@ "chromium-bidi": "14.0.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1581282", - "puppeteer-core": "24.39.0", + "puppeteer-core": "24.39.1", "typed-query-selector": "^2.12.1" }, "bin": { @@ -3029,9 +3029,9 @@ } }, "node_modules/puppeteer-core": { - "version": "24.39.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.39.0.tgz", - "integrity": "sha512-SzIxz76Kgu17HUIi57HOejPiN0JKa9VCd2GcPY1sAh6RA4BzGZarFQdOYIYrBdUVbtyH7CrDb9uhGEwVXK/YNA==", + "version": "24.39.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.39.1.tgz", + "integrity": "sha512-AMqQIKoEhPS6CilDzw0Gd1brLri3emkC+1N2J6ZCCuY1Cglo56M63S0jOeBZDQlemOiRd686MYVMl9ELJBzN3A==", "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.13.0", From 71316b5dfde87ace1ecdbb9f8948ca101c515649 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 21 Mar 2026 14:02:34 +0000 Subject: [PATCH 327/415] chore(deps): update dependency @marp-team/marp-cli to v4.3.0 (#400) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 70 +++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/package-lock.json b/package-lock.json index d631ddd8..2a7c9f50 100644 --- a/package-lock.json +++ b/package-lock.json @@ -588,19 +588,19 @@ } }, "node_modules/@marp-team/marp-cli": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@marp-team/marp-cli/-/marp-cli-4.2.3.tgz", - "integrity": "sha512-yfEIkF7mlumg8CVV5m/UkLEDkW/ayM/SD6Bo8fbAvdscBQ/l9D44/aNFJsiqgNtjfktzpvRqjcBXNhWD0YTq5Q==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@marp-team/marp-cli/-/marp-cli-4.3.0.tgz", + "integrity": "sha512-Ywqjk9eIV2pubzua7946JrvL8zk7G/74PvbsT/hxDjWJ7ox5gXL4PqLyF4KcvxQgtYT/WbkwDnNge4h+uNNy0g==", "license": "MIT", "dependencies": { - "@marp-team/marp-core": "^4.1.0", - "@marp-team/marpit": "^3.1.3", + "@marp-team/marp-core": "^4.3.0", + "@marp-team/marpit": "^3.2.1", "chokidar": "^4.0.3", - "cosmiconfig": "^9.0.0", - "puppeteer-core": "^24.16.0", - "serve-index": "^1.9.1", + "cosmiconfig": "^9.0.1", + "puppeteer-core": "^24.39.1", + "serve-index": "^1.9.2", "tmp": "^0.2.5", - "ws": "^8.18.3", + "ws": "^8.19.0", "yargs": "^17.7.2" }, "bin": { @@ -1253,9 +1253,10 @@ } }, "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", + "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", + "license": "MIT", "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -3296,20 +3297,25 @@ } }, "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.2.tgz", + "integrity": "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==", + "license": "MIT", "dependencies": { - "accepts": "~1.3.4", + "accepts": "~1.3.8", "batch": "0.6.1", "debug": "2.6.9", "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" + "http-errors": "~1.8.0", + "mime-types": "~2.1.35", + "parseurl": "~1.3.3" }, "engines": { "node": ">= 0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/serve-index/node_modules/accepts": { @@ -3336,29 +3342,27 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "license": "MIT", "dependencies": { "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" }, "engines": { "node": ">= 0.6" } }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - }, "node_modules/serve-index/node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -3391,15 +3395,11 @@ "node": ">= 0.6" } }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", "engines": { "node": ">= 0.6" } From 53bd64d61c1b8b3990358f38b594a6c8ad3d3300 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 17:27:07 +0000 Subject: [PATCH 328/415] chore(deps): update dependency @marp-team/marp-cli to v4.3.1 (#401) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2a7c9f50..e5ba12bd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -588,9 +588,9 @@ } }, "node_modules/@marp-team/marp-cli": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@marp-team/marp-cli/-/marp-cli-4.3.0.tgz", - "integrity": "sha512-Ywqjk9eIV2pubzua7946JrvL8zk7G/74PvbsT/hxDjWJ7ox5gXL4PqLyF4KcvxQgtYT/WbkwDnNge4h+uNNy0g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@marp-team/marp-cli/-/marp-cli-4.3.1.tgz", + "integrity": "sha512-REj2PUTDhHiFsKxzh8AF90YrApEbNcOU7eZ8TKF3sF0b5O91lyaZMH2E5y7o/bfdFP70N8l7vyqXA4pdVQ+EIA==", "license": "MIT", "dependencies": { "@marp-team/marp-core": "^4.3.0", From 0be6ab2cef07f8d700dcc394a005ba9d222fd740 Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Tue, 24 Mar 2026 15:24:24 +0900 Subject: [PATCH 329/415] Use McpServer#registerTool instead of deprecated McpServer#tool (#397) NO-ISSUE Use McpServer#registerTool instead of deprecated McpServer#tool --- src/tools/broadcastFlexMessage.ts | 19 ++++++++++------- src/tools/broadcastTextMessage.ts | 17 +++++++++------ src/tools/cancelRichMenuDefault.ts | 9 ++++---- src/tools/createRichMenu.ts | 33 ++++++++++++++++------------- src/tools/deleteRichMenu.ts | 18 +++++++++------- src/tools/getFollowerIds.ts | 34 ++++++++++++++++++------------ src/tools/getMessageQuota.ts | 10 +++++---- src/tools/getProfile.ts | 15 +++++++------ src/tools/getRichMenuList.ts | 10 +++++---- src/tools/pushFlexMessage.ts | 19 ++++++++++------- src/tools/pushTextMessage.ts | 17 +++++++++------ src/tools/setRichMenuDefault.ts | 18 +++++++++------- 12 files changed, 126 insertions(+), 93 deletions(-) diff --git a/src/tools/broadcastFlexMessage.ts b/src/tools/broadcastFlexMessage.ts index 26fd4056..7d47898f 100644 --- a/src/tools/broadcastFlexMessage.ts +++ b/src/tools/broadcastFlexMessage.ts @@ -16,17 +16,20 @@ export default class BroadcastFlexMessage extends AbstractTool { } register(server: McpServer) { - server.tool( + server.registerTool( "broadcast_flex_message", - "Broadcast a highly customizable flex message via LINE to all users who have added your LINE Official Account. " + - "Supports both bubble (single container) and carousel (multiple swipeable bubbles) layouts. Please be aware that " + - "this message will be sent to all users.", - { - message: flexMessageSchema, - }, { title: "Broadcast Flex Message", - destructiveHint: true, + description: + "Broadcast a highly customizable flex message via LINE to all users who have added your LINE Official Account. " + + "Supports both bubble (single container) and carousel (multiple swipeable bubbles) layouts. Please be aware that " + + "this message will be sent to all users.", + inputSchema: { + message: flexMessageSchema, + }, + annotations: { + destructiveHint: true, + }, }, async ({ message }) => { try { diff --git a/src/tools/broadcastTextMessage.ts b/src/tools/broadcastTextMessage.ts index 30894e20..f3873423 100644 --- a/src/tools/broadcastTextMessage.ts +++ b/src/tools/broadcastTextMessage.ts @@ -16,16 +16,19 @@ export default class BroadcastTextMessage extends AbstractTool { } register(server: McpServer) { - server.tool( + server.registerTool( "broadcast_text_message", - "Broadcast a simple text message via LINE to all users who have followed your LINE Official Account. Use this for sending " + - "plain text messages without formatting. Please be aware that this message will be sent to all users.", - { - message: textMessageSchema, - }, { title: "Broadcast Text Message", - destructiveHint: true, + description: + "Broadcast a simple text message via LINE to all users who have followed your LINE Official Account. Use this for sending " + + "plain text messages without formatting. Please be aware that this message will be sent to all users.", + inputSchema: { + message: textMessageSchema, + }, + annotations: { + destructiveHint: true, + }, }, async ({ message }) => { try { diff --git a/src/tools/cancelRichMenuDefault.ts b/src/tools/cancelRichMenuDefault.ts index d730b74f..9eb178bf 100644 --- a/src/tools/cancelRichMenuDefault.ts +++ b/src/tools/cancelRichMenuDefault.ts @@ -12,13 +12,14 @@ export default class CancelRichMenuDefault extends AbstractTool { } register(server: McpServer) { - server.tool( + server.registerTool( "cancel_rich_menu_default", - "Cancel the default rich menu.", - {}, { title: "Cancel Rich Menu Default", - destructiveHint: true, + description: "Cancel the default rich menu.", + annotations: { + destructiveHint: true, + }, }, async () => { const response = await this.client.cancelDefaultRichMenu(); diff --git a/src/tools/createRichMenu.ts b/src/tools/createRichMenu.ts index ac26939e..cd089a0f 100644 --- a/src/tools/createRichMenu.ts +++ b/src/tools/createRichMenu.ts @@ -32,24 +32,27 @@ export default class CreateRichMenu extends AbstractTool { } register(server: McpServer) { - server.tool( + server.registerTool( "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.", - { - chatBarText: z - .string() - .describe( - "Text displayed in the chat bar and this is also used as name of the rich menu to create", - ), - actions: z - .array(actionSchema) - .min(1) - .max(6) - .describe("The actions of the rich menu."), - }, { title: "Create Rich Menu", - destructiveHint: true, + description: + "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.", + inputSchema: { + chatBarText: z + .string() + .describe( + "Text displayed in the chat bar and this is also used as name of the rich menu to create", + ), + actions: z + .array(actionSchema) + .min(1) + .max(6) + .describe("The actions of the rich menu."), + }, + annotations: { + destructiveHint: true, + }, }, async ({ chatBarText, actions }) => { // Flow: diff --git a/src/tools/deleteRichMenu.ts b/src/tools/deleteRichMenu.ts index 5a82df20..2a77b714 100644 --- a/src/tools/deleteRichMenu.ts +++ b/src/tools/deleteRichMenu.ts @@ -20,17 +20,19 @@ export default class DeleteRichMenu extends AbstractTool { .string() .describe("The ID of the rich menu to delete."); - server.tool( + server.registerTool( "delete_rich_menu", - "Delete a rich menu from your LINE Official Account.", - { - richMenuId: richMenuIdSchema.describe( - "The ID of the rich menu to delete.", - ), - }, { title: "Delete Rich Menu", - destructiveHint: true, + description: "Delete a rich menu from your LINE Official Account.", + inputSchema: { + richMenuId: richMenuIdSchema.describe( + "The ID of the rich menu to delete.", + ), + }, + annotations: { + destructiveHint: true, + }, }, async ({ richMenuId }) => { try { diff --git a/src/tools/getFollowerIds.ts b/src/tools/getFollowerIds.ts index 9e129fd1..aa589698 100644 --- a/src/tools/getFollowerIds.ts +++ b/src/tools/getFollowerIds.ts @@ -16,22 +16,28 @@ export default class GetFollowerIds extends AbstractTool { } register(server: McpServer) { - server.tool( + server.registerTool( "get_follower_ids", - "Get a list of user IDs of users who have added the LINE Official Account as a friend. This allows you to obtain user IDs for sending messages without manually preparing them.", { - start: z - .string() - .optional() - .describe( - "Continuation token to get the next array of user IDs. Returned in the 'next' property of a previous response.", - ), - limit: z - .number() - .optional() - .describe( - "The maximum number of user IDs to retrieve in a single request.", - ), + description: + "Get a list of user IDs of users who have added the LINE Official Account as a friend. This allows you to obtain user IDs for sending messages without manually preparing them.", + inputSchema: { + start: z + .string() + .optional() + .describe( + "Continuation token to get the next array of user IDs. Returned in the 'next' property of a previous response.", + ), + limit: z + .number() + .optional() + .describe( + "The maximum number of user IDs to retrieve in a single request.", + ), + }, + annotations: { + readOnlyHint: true, + }, }, async ({ start, limit }) => { try { diff --git a/src/tools/getMessageQuota.ts b/src/tools/getMessageQuota.ts index 846a4314..0bb39cc7 100644 --- a/src/tools/getMessageQuota.ts +++ b/src/tools/getMessageQuota.ts @@ -12,13 +12,15 @@ export default class GetMessageQuota extends AbstractTool { } register(server: McpServer) { - server.tool( + server.registerTool( "get_message_quota", - "Get the message quota and consumption of the LINE Official Account. This shows the monthly message limit and current usage.", - {}, { title: "Get Message Quota", - readOnlyHint: true, + description: + "Get the message quota and consumption of the LINE Official Account. This shows the monthly message limit and current usage.", + annotations: { + readOnlyHint: true, + }, }, async () => { const messageQuotaResponse = await this.client.getMessageQuota(); diff --git a/src/tools/getProfile.ts b/src/tools/getProfile.ts index 7652d31a..34a00558 100644 --- a/src/tools/getProfile.ts +++ b/src/tools/getProfile.ts @@ -26,15 +26,18 @@ export default class GetProfile extends AbstractTool { "The user ID to get a profile. Defaults to DESTINATION_USER_ID.", ); - server.tool( + server.registerTool( "get_profile", - "Get detailed profile information of a LINE user including display name, profile picture URL, status message and language.", - { - userId: userIdSchema, - }, { title: "Get Profile", - readOnlyHint: true, + description: + "Get detailed profile information of a LINE user including display name, profile picture URL, status message and language.", + inputSchema: { + userId: userIdSchema, + }, + annotations: { + readOnlyHint: true, + }, }, async ({ userId }) => { if (!userId) { diff --git a/src/tools/getRichMenuList.ts b/src/tools/getRichMenuList.ts index 1aad8da0..08a23976 100644 --- a/src/tools/getRichMenuList.ts +++ b/src/tools/getRichMenuList.ts @@ -15,13 +15,15 @@ export default class GetRichMenuList extends AbstractTool { } register(server: McpServer) { - server.tool( + server.registerTool( "get_rich_menu_list", - "Get the list of rich menus associated with your LINE Official Account.", - {}, { title: "Get Rich Menu List", - readOnlyHint: true, + description: + "Get the list of rich menus associated with your LINE Official Account.", + annotations: { + readOnlyHint: true, + }, }, async () => { try { diff --git a/src/tools/pushFlexMessage.ts b/src/tools/pushFlexMessage.ts index 10b0e6ad..bac5c928 100644 --- a/src/tools/pushFlexMessage.ts +++ b/src/tools/pushFlexMessage.ts @@ -27,17 +27,20 @@ export default class PushFlexMessage extends AbstractTool { "The user ID to receive a message. Defaults to DESTINATION_USER_ID.", ); - server.tool( + server.registerTool( "push_flex_message", - "Push a highly customizable flex message to a user via LINE. Supports both bubble (single container) and carousel " + - "(multiple swipeable bubbles) layouts.", - { - userId: userIdSchema, - message: flexMessageSchema, - }, { title: "Push Flex Message", - destructiveHint: true, + description: + "Push a highly customizable flex message to a user via LINE. Supports both bubble (single container) and carousel " + + "(multiple swipeable bubbles) layouts.", + inputSchema: { + userId: userIdSchema, + message: flexMessageSchema, + }, + annotations: { + destructiveHint: true, + }, }, async ({ userId, message }) => { if (!userId) { diff --git a/src/tools/pushTextMessage.ts b/src/tools/pushTextMessage.ts index a436d228..da154a00 100644 --- a/src/tools/pushTextMessage.ts +++ b/src/tools/pushTextMessage.ts @@ -27,16 +27,19 @@ export default class PushTextMessage extends AbstractTool { "The user ID to receive a message. Defaults to DESTINATION_USER_ID.", ); - server.tool( + server.registerTool( "push_text_message", - "Push a simple text message to a user via LINE. Use this for sending plain text messages without formatting.", - { - userId: userIdSchema, - message: textMessageSchema, - }, { title: "Push Text Message", - destructiveHint: true, + description: + "Push a simple text message to a user via LINE. Use this for sending plain text messages without formatting.", + inputSchema: { + userId: userIdSchema, + message: textMessageSchema, + }, + annotations: { + destructiveHint: true, + }, }, async ({ userId, message }) => { if (!userId) { diff --git a/src/tools/setRichMenuDefault.ts b/src/tools/setRichMenuDefault.ts index 4b10c39a..c180e41b 100644 --- a/src/tools/setRichMenuDefault.ts +++ b/src/tools/setRichMenuDefault.ts @@ -17,17 +17,19 @@ export default class SetRichMenuDefault extends AbstractTool { .string() .describe("The ID of the rich menu to set as default."); - server.tool( + server.registerTool( "set_rich_menu_default", - "Set a rich menu as the default rich menu.", - { - richMenuId: richMenuIdSchema.describe( - "The ID of the rich menu to set as default.", - ), - }, { title: "Set Rich Menu Default", - destructiveHint: true, + description: "Set a rich menu as the default rich menu.", + inputSchema: { + richMenuId: richMenuIdSchema.describe( + "The ID of the rich menu to set as default.", + ), + }, + annotations: { + destructiveHint: true, + }, }, async ({ richMenuId }) => { const response = await this.client.setDefaultRichMenu(richMenuId); From 52faed3620338fce144a7ef3cab5802a27c576b4 Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Tue, 24 Mar 2026 18:09:40 +0900 Subject: [PATCH 330/415] Add tests for tools (#396) * Add tests * Add documents * Add CI * Add vitest * Fix vitest version * Fix vitest version * Update CONTRIBUTING.md with testing guidelines for bug fixes * Change afterAll to afterEach in test files * Update prettier script to include test files * Revert "Fix vitest version" This reverts commit 0401c7f84418d0b3d2a3d4fd03cd670011436ad6. * Add TypeScript configuration for testing and update prebuild script --- .github/workflows/test.yml | 2 + CONTRIBUTING.md | 33 +- package-lock.json | 1046 +++++++++++++++++++++++++++- package.json | 12 +- test/helpers/mock-line-clients.ts | 23 + test/tools/getProfile.test.ts | 105 +++ test/tools/pushTextMessage.test.ts | 110 +++ tsconfig.json | 4 +- tsconfig.test.json | 9 + vitest.config.ts | 8 + 10 files changed, 1338 insertions(+), 14 deletions(-) create mode 100644 test/helpers/mock-line-clients.ts create mode 100644 test/tools/getProfile.test.ts create mode 100644 test/tools/pushTextMessage.test.ts create mode 100644 tsconfig.test.json create mode 100644 vitest.config.ts diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 76f3c428..ae59f9a8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -37,6 +37,8 @@ jobs: run: npm ci - name: Build run: npm run build + - name: Test + run: npm test - name: Install pnpm # For publint run: npm install -g pnpm - name: publint diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7e0a2b13..7aa288ca 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -32,14 +32,39 @@ implement the Tool in that file. The Tool should extend `AbstractTool` and should be registered in `src/index.ts`. Please remember to add the description of the tool to both README.md and README.ja.md. +When adding a new tool, you also need to update the following tests: + +1. **Add a tool test file** — Create `test/tools/.test.ts`. +2. **Add mock methods if needed** — If your tool calls a LINE API method + not yet listed in `test/helpers/mock-line-clients.ts`, add it there. + +### Run tests + +Run `npm test` to execute the test suite: + +```bash +npm test +``` + +Tests are located in the `test/` directory and use [Vitest](https://vitest.dev/). +LINE API calls are mocked using dependency injection — each tool class accepts +a client in its constructor, so tests pass in stub objects created with `vi.fn()`. +See `test/helpers/mock-line-clients.ts` for the mock factories. + +Especially for bug fixes, please follow this flow for testing and development: +1. Write a test before making changes to the library and confirm that the test fails. +2. Modify the code of the library. +3. Run the test again and confirm that it passes thanks to your changes. + ### Run all CI tasks in your local --`npm run format`: Format source code with [Prettier](https://github.com/prettier/prettier) --`npm run format:check`: Silently run `format` and report formatting errors --`npm run build`: Build TypeScript code into JavaScript. The built files will +- `npm run format`: Format source code with [Prettier](https://github.com/prettier/prettier) +- `npm run format:check`: Silently run `format` and report formatting errors +- `npm run build`: Build TypeScript code into JavaScript. The built files will be placed in `dist/`. +- `npm test`: Run the test suite. -We lint and build on CI, but it is always nice to check them before +We lint, build, and test on CI, but it is always nice to check them before uploading a pull request. ## Contributor license agreement diff --git a/package-lock.json b/package-lock.json index e5ba12bd..b1cfe7fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,8 @@ "prettier": "3.8.1", "shx": "^0.4.0", "tsx": "^4.19.3", - "typescript": "^5.6.2" + "typescript": "^5.6.2", + "vitest": "^3.2.4" }, "engines": { "node": ">=20" @@ -572,6 +573,13 @@ "hono": "^4" } }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, "node_modules/@line/bot-sdk": { "version": "10.6.0", "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.6.0.tgz", @@ -766,12 +774,387 @@ "node": ">=10" } }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@tootallnate/quickjs-emscripten": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", "license": "MIT" }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/node": { "version": "24.12.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.0.tgz", @@ -791,6 +1174,121 @@ "@types/node": "*" } }, + "node_modules/@vitest/expect": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.2.4", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.2.4", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^4.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, "node_modules/@xmldom/xmldom": { "version": "0.9.8", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.8.tgz", @@ -881,6 +1379,16 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, "node_modules/ast-types": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", @@ -1086,6 +1594,16 @@ "node": ">= 0.8" } }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", @@ -1123,6 +1641,33 @@ "node": ">=6" } }, + "node_modules/chai": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/check-error": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", + "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, "node_modules/chokidar": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", @@ -1334,6 +1879,16 @@ } } }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/degenerator": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", @@ -1371,7 +1926,8 @@ "version": "0.0.1581282", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1581282.tgz", "integrity": "sha512-nv7iKtNZQshSW2hKzYNr46nM/Cfh5SEvE2oV0/SEGgc9XupIY5ggf84Cz8eJIkBce7S3bmTAauFD6aysMpnqsQ==", - "license": "BSD-3-Clause" + "license": "BSD-3-Clause", + "peer": true }, "node_modules/dunder-proto": { "version": "1.0.1", @@ -1462,6 +2018,13 @@ "node": ">= 0.4" } }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", @@ -1597,6 +2160,16 @@ "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1727,11 +2300,22 @@ "which": "bin/which" } }, + "node_modules/expect-type": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/express": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "license": "MIT", + "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", @@ -2183,6 +2767,7 @@ "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.4.tgz", "integrity": "sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==", "license": "MIT", + "peer": true, "engines": { "node": ">=16.9.0" } @@ -2460,6 +3045,13 @@ "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==" }, + "node_modules/loupe": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", + "dev": true, + "license": "MIT" + }, "node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -2469,6 +3061,16 @@ "node": ">=12" } }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, "node_modules/markdown-it": { "version": "14.1.1", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz", @@ -2826,6 +3428,23 @@ "node": ">=16" } }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -2860,9 +3479,9 @@ } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", "funding": [ { "type": "opencollective", @@ -2878,6 +3497,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -2918,6 +3538,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", + "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -3198,6 +3819,51 @@ "node": ">=0.10.0" } }, + "node_modules/rollup": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", + "fsevents": "~2.3.2" + } + }, "node_modules/router": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", @@ -3554,6 +4220,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -3638,6 +4311,13 @@ "node": ">=18" } }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, "node_modules/statuses": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", @@ -3647,6 +4327,13 @@ "node": ">= 0.8" } }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, "node_modules/streamx": { "version": "2.23.0", "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", @@ -3692,6 +4379,26 @@ "node": ">=0.10.0" } }, + "node_modules/strip-literal": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", + "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -3739,6 +4446,99 @@ "b4a": "^1.6.4" } }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", + "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/tmp": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", @@ -3782,6 +4582,7 @@ "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" @@ -3822,6 +4623,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -3865,6 +4667,222 @@ "node": ">= 0.8" } }, + "node_modules/vite": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vitest": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", + "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.2.4", + "@vitest/ui": "3.2.4", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/webdriver-bidi-protocol": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.1.tgz", @@ -3886,6 +4904,23 @@ "node": ">= 8" } }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wicked-good-xpath": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", @@ -4002,6 +5037,7 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index 965a1d80..4890eff3 100644 --- a/package.json +++ b/package.json @@ -16,12 +16,15 @@ ], "scripts": { "build": "tsc && shx chmod +x dist/*.js", - "prettier": "prettier \"src/**/*.ts\"", + "prettier": "prettier \"src/**/*.ts\" \"test/**/*.ts\"", "format": "npm run prettier -- --write", "format:check": "npm run prettier -- -l", "clean": "rm -rf dist/*", - "prebuild": "npm run format:check && npm run clean", - "release": "npm run build && npm publish --provenance --access public" + "typecheck:test": "tsc --project tsconfig.test.json", + "prebuild": "npm run format:check && npm run typecheck:test && npm run clean", + "release": "npm run build && npm publish --provenance --access public", + "test": "vitest run", + "test:watch": "vitest" }, "repository": { "type": "git", @@ -47,7 +50,8 @@ "prettier": "3.8.1", "shx": "^0.4.0", "tsx": "^4.19.3", - "typescript": "^5.6.2" + "typescript": "^5.6.2", + "vitest": "^3.2.4" }, "license": "Apache-2.0" } diff --git a/test/helpers/mock-line-clients.ts b/test/helpers/mock-line-clients.ts new file mode 100644 index 00000000..afecb846 --- /dev/null +++ b/test/helpers/mock-line-clients.ts @@ -0,0 +1,23 @@ +import { vi } from "vitest"; +import type { messagingApi } from "@line/bot-sdk"; + +export function createMockMessagingApiClient() { + return { + pushMessage: vi.fn(), + broadcast: vi.fn(), + getProfile: vi.fn(), + getMessageQuota: vi.fn(), + getMessageQuotaConsumption: vi.fn(), + getRichMenuList: vi.fn(), + deleteRichMenu: vi.fn(), + setDefaultRichMenu: vi.fn(), + cancelDefaultRichMenu: vi.fn(), + createRichMenu: vi.fn(), + } as unknown as messagingApi.MessagingApiClient; +} + +export function createMockBlobClient() { + return { + setRichMenuImage: vi.fn(), + } as unknown as messagingApi.MessagingApiBlobClient; +} diff --git a/test/tools/getProfile.test.ts b/test/tools/getProfile.test.ts new file mode 100644 index 00000000..e0d63169 --- /dev/null +++ b/test/tools/getProfile.test.ts @@ -0,0 +1,105 @@ +import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { Client } from "@modelcontextprotocol/sdk/client/index.js"; +import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; +import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import GetProfile from "../../src/tools/getProfile.js"; + +const DESTINATION_ID = "U_DEFAULT_USER"; + +describe("get_profile tool", () => { + let client: Client; + let server: McpServer; + let mockLineClient: ReturnType; + + beforeEach(async () => { + mockLineClient = createMockMessagingApiClient(); + server = new McpServer({ name: "test", version: "0.0.1" }); + new GetProfile(mockLineClient, DESTINATION_ID).register(server); + + const [clientTransport, serverTransport] = + InMemoryTransport.createLinkedPair(); + client = new Client({ name: "test-client", version: "0.0.1" }); + await Promise.all([ + client.connect(clientTransport), + server.connect(serverTransport), + ]); + }); + + afterEach(async () => { + await client?.close(); + await server?.close(); + }); + + it("calls getProfile with the correct userId", async () => { + const profileData = { + displayName: "Test User", + userId: "U_EXPLICIT_USER", + pictureUrl: "https://example.com/pic.jpg", + statusMessage: "Hello", + }; + vi.mocked(mockLineClient.getProfile).mockResolvedValue( + profileData as never, + ); + + const result = await client.callTool({ + name: "get_profile", + arguments: { userId: "U_EXPLICIT_USER" }, + }); + + expect(mockLineClient.getProfile).toHaveBeenCalledWith("U_EXPLICIT_USER"); + expect(result.isError).toBeFalsy(); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + expect(JSON.parse(text)).toEqual(profileData); + }); + + it("uses default destinationId when userId is omitted", async () => { + vi.mocked(mockLineClient.getProfile).mockResolvedValue({} as never); + + await client.callTool({ + name: "get_profile", + arguments: {}, + }); + + expect(mockLineClient.getProfile).toHaveBeenCalledWith(DESTINATION_ID); + }); + + it("returns an error response when LINE API fails", async () => { + vi.mocked(mockLineClient.getProfile).mockRejectedValue( + new Error("Not found"), + ); + + const result = await client.callTool({ + name: "get_profile", + arguments: { userId: "U_UNKNOWN" }, + }); + + expect(result.isError).toBe(true); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + expect(text).toContain("Failed to get profile"); + }); + + it("returns an error when userId is empty and no default is set", async () => { + const emptyServer = new McpServer({ name: "test", version: "0.0.1" }); + new GetProfile(mockLineClient, "").register(emptyServer); + + const [ct, st] = InMemoryTransport.createLinkedPair(); + const emptyClient = new Client({ name: "test-client", version: "0.0.1" }); + await Promise.all([emptyClient.connect(ct), emptyServer.connect(st)]); + + const result = await emptyClient.callTool({ + name: "get_profile", + arguments: {}, + }); + + expect(result.isError).toBe(true); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + expect(text).toContain("userId"); + + await emptyClient.close(); + await emptyServer.close(); + }); +}); diff --git a/test/tools/pushTextMessage.test.ts b/test/tools/pushTextMessage.test.ts new file mode 100644 index 00000000..9b408d23 --- /dev/null +++ b/test/tools/pushTextMessage.test.ts @@ -0,0 +1,110 @@ +import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { Client } from "@modelcontextprotocol/sdk/client/index.js"; +import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; +import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import PushTextMessage from "../../src/tools/pushTextMessage.js"; + +const DESTINATION_ID = "U_DEFAULT_USER"; + +describe("push_text_message tool", () => { + let client: Client; + let server: McpServer; + let mockLineClient: ReturnType; + + beforeEach(async () => { + mockLineClient = createMockMessagingApiClient(); + server = new McpServer({ name: "test", version: "0.0.1" }); + new PushTextMessage(mockLineClient, DESTINATION_ID).register(server); + + const [clientTransport, serverTransport] = + InMemoryTransport.createLinkedPair(); + client = new Client({ name: "test-client", version: "0.0.1" }); + await Promise.all([ + client.connect(clientTransport), + server.connect(serverTransport), + ]); + }); + + afterEach(async () => { + await client?.close(); + await server?.close(); + }); + + it("calls pushMessage with the correct arguments", async () => { + vi.mocked(mockLineClient.pushMessage).mockResolvedValue({} as never); + + const result = await client.callTool({ + name: "push_text_message", + arguments: { + userId: "U_EXPLICIT_USER", + message: { type: "text", text: "hello" }, + }, + }); + + expect(mockLineClient.pushMessage).toHaveBeenCalledWith({ + to: "U_EXPLICIT_USER", + messages: [{ type: "text", text: "hello" }], + }); + expect(result.isError).toBeFalsy(); + }); + + it("uses default destinationId when userId is omitted", async () => { + vi.mocked(mockLineClient.pushMessage).mockResolvedValue({} as never); + + await client.callTool({ + name: "push_text_message", + arguments: { + message: { type: "text", text: "hello" }, + }, + }); + + expect(mockLineClient.pushMessage).toHaveBeenCalledWith( + expect.objectContaining({ to: DESTINATION_ID }), + ); + }); + + it("returns an error response when LINE API fails", async () => { + vi.mocked(mockLineClient.pushMessage).mockRejectedValue( + new Error("API error"), + ); + + const result = await client.callTool({ + name: "push_text_message", + arguments: { + userId: "U_USER", + message: { type: "text", text: "hello" }, + }, + }); + + expect(result.isError).toBe(true); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + expect(text).toContain("Failed to push message"); + }); + + it("returns an error when userId is empty and no default is set", async () => { + // Create a new server with empty destinationId + const emptyServer = new McpServer({ name: "test", version: "0.0.1" }); + new PushTextMessage(mockLineClient, "").register(emptyServer); + + const [ct, st] = InMemoryTransport.createLinkedPair(); + const emptyClient = new Client({ name: "test-client", version: "0.0.1" }); + await Promise.all([emptyClient.connect(ct), emptyServer.connect(st)]); + + const result = await emptyClient.callTool({ + name: "push_text_message", + arguments: { + message: { type: "text", text: "hello" }, + }, + }); + + expect(result.isError).toBe(true); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + expect(text).toContain("userId"); + + await emptyClient.close(); + await emptyServer.close(); + }); +}); diff --git a/tsconfig.json b/tsconfig.json index 0be3fba6..3ba0ec6d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -15,6 +15,8 @@ "exclude": [ "node_modules", "dist", - ".git" + ".git", + "test", + "vitest.config.ts" ], } diff --git a/tsconfig.test.json b/tsconfig.test.json new file mode 100644 index 00000000..ed1df42e --- /dev/null +++ b/tsconfig.test.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "rootDir": ".", + "noEmit": true + }, + "include": ["src", "test"], + "exclude": ["node_modules", "dist", ".git"] +} diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 00000000..5fab2394 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,8 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + include: ["test/**/*.test.ts"], + testTimeout: 30_000, + }, +}); From 0cb4b9ddc0bb9305965e39bbac442ceb6be6a480 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 24 Mar 2026 18:15:30 +0900 Subject: [PATCH 331/415] chore(deps): update suzuki-shunsuke/pinact-action action to v2 (#408) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ae59f9a8..69f3681b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -62,6 +62,6 @@ jobs: steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Run pinact - uses: suzuki-shunsuke/pinact-action@1081f5ad49ac904b7d977784f338145150a32112 # v1.4.0 + uses: suzuki-shunsuke/pinact-action@cf51507d80d4d6522a07348e3d58790290eaf0b6 # v2.0.0 with: skip_push: "true" From 2cfa1133dad31dc50077452de8bf5bd0264fd3c9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 24 Mar 2026 18:14:35 +0900 Subject: [PATCH 332/415] chore(deps): update dependency vitest to v4 (#405) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 360 +++++++++++++++++----------------------------- package.json | 2 +- 2 files changed, 135 insertions(+), 227 deletions(-) diff --git a/package-lock.json b/package-lock.json index b1cfe7fa..8123dcab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,7 @@ "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2", - "vitest": "^3.2.4" + "vitest": "^4.0.0" }, "engines": { "node": ">=20" @@ -1124,6 +1124,13 @@ "win32" ] }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" + }, "node_modules/@tootallnate/quickjs-emscripten": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", @@ -1175,39 +1182,40 @@ } }, "node_modules/@vitest/expect": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", - "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.1.tgz", + "integrity": "sha512-xAV0fqBTk44Rn6SjJReEQkHP3RrqbJo6JQ4zZ7/uVOiJZRarBtblzrOfFIZeYUrukp2YD6snZG6IBqhOoHTm+A==", "dev": true, "license": "MIT", "dependencies": { + "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "tinyrainbow": "^2.0.0" + "@vitest/spy": "4.1.1", + "@vitest/utils": "4.1.1", + "chai": "^6.2.2", + "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/mocker": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", - "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.1.tgz", + "integrity": "sha512-h3BOylsfsCLPeceuCPAAJ+BvNwSENgJa4hXoXu4im0bs9Lyp4URc4JYK4pWLZ4pG/UQn7AT92K6IByi6rE6g3A==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.2.4", + "@vitest/spy": "4.1.1", "estree-walker": "^3.0.3", - "magic-string": "^0.30.17" + "magic-string": "^0.30.21" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "msw": { @@ -1219,42 +1227,42 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", - "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.1.tgz", + "integrity": "sha512-GM+TEQN5WhOygr1lp7skeVjdLPqqWMHsfzXrcHAqZJi/lIVh63H0kaRCY8MDhNWikx19zBUK8ceaLB7X5AH9NQ==", "dev": true, "license": "MIT", "dependencies": { - "tinyrainbow": "^2.0.0" + "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", - "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.1.tgz", + "integrity": "sha512-f7+FPy75vN91QGWsITueq0gedwUZy1fLtHOCMeQpjs8jTekAHeKP80zfDEnhrleviLHzVSDXIWuCIOFn3D3f8A==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.2.4", - "pathe": "^2.0.3", - "strip-literal": "^3.0.0" + "@vitest/utils": "4.1.1", + "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/snapshot": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", - "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.1.tgz", + "integrity": "sha512-kMVSgcegWV2FibXEx9p9WIKgje58lcTbXgnJixfcg15iK8nzCXhmalL0ZLtTWLW9PH1+1NEDShiFFedB3tEgWg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.2.4", - "magic-string": "^0.30.17", + "@vitest/pretty-format": "4.1.1", + "@vitest/utils": "4.1.1", + "magic-string": "^0.30.21", "pathe": "^2.0.3" }, "funding": { @@ -1262,28 +1270,25 @@ } }, "node_modules/@vitest/spy": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", - "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.1.tgz", + "integrity": "sha512-6Ti/KT5OVaiupdIZEuZN7l3CZcR0cxnxt70Z0//3CtwgObwA6jZhmVBA3yrXSVN3gmwjgd7oDNLlsXz526gpRA==", "dev": true, "license": "MIT", - "dependencies": { - "tinyspy": "^4.0.3" - }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/utils": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", - "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.1.tgz", + "integrity": "sha512-cNxAlaB3sHoCdL6pj6yyUXv9Gry1NHNg0kFTXdvSIZXLHsqKH7chiWOkwJ5s5+d/oMwcoG9T0bKU38JZWKusrQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.2.4", - "loupe": "^3.1.4", - "tinyrainbow": "^2.0.0" + "@vitest/pretty-format": "4.1.1", + "convert-source-map": "^2.0.0", + "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" @@ -1594,16 +1599,6 @@ "node": ">= 0.8" } }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", @@ -1642,32 +1637,15 @@ } }, "node_modules/chai": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", - "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", "dev": true, "license": "MIT", - "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - }, "engines": { "node": ">=18" } }, - "node_modules/check-error": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", - "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - } - }, "node_modules/chokidar": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", @@ -1766,6 +1744,13 @@ "node": ">= 0.6" } }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, "node_modules/cookie": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", @@ -1879,16 +1864,6 @@ } } }, - "node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/degenerator": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", @@ -1926,8 +1901,7 @@ "version": "0.0.1581282", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1581282.tgz", "integrity": "sha512-nv7iKtNZQshSW2hKzYNr46nM/Cfh5SEvE2oV0/SEGgc9XupIY5ggf84Cz8eJIkBce7S3bmTAauFD6aysMpnqsQ==", - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/dunder-proto": { "version": "1.0.1", @@ -2018,13 +1992,6 @@ "node": ">= 0.4" } }, - "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "dev": true, - "license": "MIT" - }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", @@ -2315,7 +2282,6 @@ "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "license": "MIT", - "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", @@ -2767,7 +2733,6 @@ "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.4.tgz", "integrity": "sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==", "license": "MIT", - "peer": true, "engines": { "node": ">=16.9.0" } @@ -3045,13 +3010,6 @@ "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==" }, - "node_modules/loupe": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", - "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", - "dev": true, - "license": "MIT" - }, "node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -3303,6 +3261,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -3435,16 +3404,6 @@ "dev": true, "license": "MIT" }, - "node_modules/pathval": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", - "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.16" - } - }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -3497,7 +3456,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -3538,7 +3496,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -4328,9 +4285,9 @@ } }, "node_modules/std-env": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", - "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.0.0.tgz", + "integrity": "sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==", "dev": true, "license": "MIT" }, @@ -4379,26 +4336,6 @@ "node": ">=0.10.0" } }, - "node_modules/strip-literal": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", - "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^9.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/strip-literal/node_modules/js-tokens": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", - "dev": true, - "license": "MIT" - }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -4454,11 +4391,14 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", + "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/tinyglobby": { "version": "0.2.15", @@ -4501,7 +4441,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -4509,30 +4448,10 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/tinypool": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", - "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.0.0 || >=20.0.0" - } - }, "node_modules/tinyrainbow": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", - "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", - "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", + "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", "dev": true, "license": "MIT", "engines": { @@ -4582,7 +4501,6 @@ "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" @@ -4623,7 +4541,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -4742,29 +4659,6 @@ } } }, - "node_modules/vite-node": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", - "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.4.1", - "es-module-lexer": "^1.7.0", - "pathe": "^2.0.3", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, "node_modules/vite/node_modules/fdir": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", @@ -4789,7 +4683,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -4798,65 +4691,71 @@ } }, "node_modules/vitest": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", - "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "^5.2.2", - "@vitest/expect": "3.2.4", - "@vitest/mocker": "3.2.4", - "@vitest/pretty-format": "^3.2.4", - "@vitest/runner": "3.2.4", - "@vitest/snapshot": "3.2.4", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "debug": "^4.4.1", - "expect-type": "^1.2.1", - "magic-string": "^0.30.17", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.1.tgz", + "integrity": "sha512-yF+o4POL41rpAzj5KVILUxm1GCjKnELvaqmU9TLLUbMfDzuN0UpUR9uaDs+mCtjPe+uYPksXDRLQGGPvj1cTmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "4.1.1", + "@vitest/mocker": "4.1.1", + "@vitest/pretty-format": "4.1.1", + "@vitest/runner": "4.1.1", + "@vitest/snapshot": "4.1.1", + "@vitest/spy": "4.1.1", + "@vitest/utils": "4.1.1", + "es-module-lexer": "^2.0.0", + "expect-type": "^1.3.0", + "magic-string": "^0.30.21", + "obug": "^2.1.1", "pathe": "^2.0.3", - "picomatch": "^4.0.2", - "std-env": "^3.9.0", + "picomatch": "^4.0.3", + "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", - "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.14", - "tinypool": "^1.1.1", - "tinyrainbow": "^2.0.0", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", - "vite-node": "3.2.4", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.0.3", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "bin": { "vitest": "vitest.mjs" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "@edge-runtime/vm": "*", - "@types/debug": "^4.1.12", - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.2.4", - "@vitest/ui": "3.2.4", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.1.1", + "@vitest/browser-preview": "4.1.1", + "@vitest/browser-webdriverio": "4.1.1", + "@vitest/ui": "4.1.1", "happy-dom": "*", - "jsdom": "*" + "jsdom": "*", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "@edge-runtime/vm": { "optional": true }, - "@types/debug": { + "@opentelemetry/api": { "optional": true }, "@types/node": { "optional": true }, - "@vitest/browser": { + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { "optional": true }, "@vitest/ui": { @@ -4867,13 +4766,23 @@ }, "jsdom": { "optional": true + }, + "vite": { + "optional": false } } }, + "node_modules/vitest/node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "dev": true, + "license": "MIT" + }, "node_modules/vitest/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -5037,7 +4946,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index 4890eff3..5016de14 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^5.6.2", - "vitest": "^3.2.4" + "vitest": "^4.0.0" }, "license": "Apache-2.0" } From baf93913c6a239ee81b9cf60fc363002ffb6455e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 24 Mar 2026 09:23:58 +0000 Subject: [PATCH 333/415] chore(deps): update dependency puppeteer to v24.40.0 (#406) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8123dcab..313afc3e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3587,9 +3587,9 @@ } }, "node_modules/puppeteer": { - "version": "24.39.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.39.1.tgz", - "integrity": "sha512-68Zc9QpcVvfxp2C+3UL88TyUogEAn5tSylXidbEuEXvhiqK1+v65zeBU5ubinAgEHMGr3dcSYqvYrGtdzsPI3w==", + "version": "24.40.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.40.0.tgz", + "integrity": "sha512-IxQbDq93XHVVLWHrAkFP7F7iHvb9o0mgfsSIMlhHb+JM+JjM1V4v4MNSQfcRWJopx9dsNOr9adYv0U5fm9BJBQ==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -3597,7 +3597,7 @@ "chromium-bidi": "14.0.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1581282", - "puppeteer-core": "24.39.1", + "puppeteer-core": "24.40.0", "typed-query-selector": "^2.12.1" }, "bin": { @@ -3608,9 +3608,9 @@ } }, "node_modules/puppeteer-core": { - "version": "24.39.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.39.1.tgz", - "integrity": "sha512-AMqQIKoEhPS6CilDzw0Gd1brLri3emkC+1N2J6ZCCuY1Cglo56M63S0jOeBZDQlemOiRd686MYVMl9ELJBzN3A==", + "version": "24.40.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.40.0.tgz", + "integrity": "sha512-MWL3XbUCfVgGR0gRsidzT6oKJT2QydPLhMITU6HoVWiiv4gkb6gJi3pcdAa8q4HwjBTbqISOWVP4aJiiyUJvag==", "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.13.0", From b5a7629ed6d95c074f2baf589a55065b861d7266 Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Tue, 24 Mar 2026 21:08:45 +0900 Subject: [PATCH 334/415] Add support for auto-updating version in manifest.json (#402) * Add support for auto-updating version in manifest.json * lint manifest.json --- .github/scripts/update-version.mjs | 18 +++++++++++++++--- manifest.json | 4 +++- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/.github/scripts/update-version.mjs b/.github/scripts/update-version.mjs index 341dd699..6c5ad6fb 100644 --- a/.github/scripts/update-version.mjs +++ b/.github/scripts/update-version.mjs @@ -10,6 +10,7 @@ async function updateVersion(newVersion) { packageJson: './package.json', packageLockJson: './package-lock.json', versionTs: './src/version.ts', + manifestJson: './manifest.json', }; // package.json @@ -33,6 +34,11 @@ async function updateVersion(newVersion) { ); await fs.writeFile(files.versionTs, updatedVersionTsData); + // manifest.json + const manifestJsonData = JSON.parse(await fs.readFile(files.manifestJson, 'utf8')); + manifestJsonData.version = newVersion; + await fs.writeFile(files.manifestJson, JSON.stringify(manifestJsonData, null, 2) + '\n'); + console.log(`Version updated to ${newVersion} in all files.`); } @@ -58,6 +64,12 @@ async function verifyVersion(expectedVersion) { throw new Error(`src/version.ts version mismatch: expected ${expectedVersion}`); } + // manifest.json + const manifestJsonData = JSON.parse(await fs.readFile('./manifest.json', 'utf8')); + if (manifestJsonData.version !== expectedVersion) { + throw new Error(`manifest.json version mismatch: expected ${expectedVersion}, found ${manifestJsonData.version}`); + } + console.log(`All files have the correct version: ${expectedVersion}`); } @@ -71,11 +83,11 @@ async function verifyGitDiff() { return acc; }, { addedLines: 0, deletedLines: 0 }); - if (addedLines !== 4 || deletedLines !== 4) { - throw new Error(`Unexpected number of changed lines: expected 4 added and 4 deleted, found ${addedLines} added and ${deletedLines} deleted`); + if (addedLines !== 5 || deletedLines !== 5) { + throw new Error(`Unexpected number of changed lines: expected 5 added and 5 deleted, found ${addedLines} added and ${deletedLines} deleted`); } - console.log('Git diff verification passed: 4 lines added and 4 lines deleted.'); + console.log('Git diff verification passed: 5 lines added and 5 lines deleted.'); // Display the diff with context and color const { stdout: diffOutput } = await execAsync('git diff -U5 --color=always'); diff --git a/manifest.json b/manifest.json index 1fcedd9f..ac726054 100644 --- a/manifest.json +++ b/manifest.json @@ -15,7 +15,9 @@ "entry_point": "dist/index.js", "mcp_config": { "command": "node", - "args": ["${__dirname}/dist/index.js"], + "args": [ + "${__dirname}/dist/index.js" + ], "env": { "CHANNEL_ACCESS_TOKEN": "${user_config.channel_access_token}", "DESTINATION_USER_ID": "${user_config.destination_user_id}" From 9be4cfa237c54fdb5f7974576dd39677a3e09158 Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Tue, 24 Mar 2026 21:12:51 +0900 Subject: [PATCH 335/415] Fix error message and error handling (#398) NO-ISSUE Fix error message and error handling --- src/tools/cancelRichMenuDefault.ts | 15 ++++++++++++--- src/tools/getMessageQuota.ts | 27 ++++++++++++++++++--------- src/tools/getRichMenuList.ts | 2 +- src/tools/setRichMenuDefault.ts | 15 ++++++++++++--- 4 files changed, 43 insertions(+), 16 deletions(-) diff --git a/src/tools/cancelRichMenuDefault.ts b/src/tools/cancelRichMenuDefault.ts index 9eb178bf..75185a13 100644 --- a/src/tools/cancelRichMenuDefault.ts +++ b/src/tools/cancelRichMenuDefault.ts @@ -1,6 +1,9 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { messagingApi } from "@line/bot-sdk"; -import { createSuccessResponse } from "../common/response.js"; +import { + createErrorResponse, + createSuccessResponse, +} from "../common/response.js"; import { AbstractTool } from "./AbstractTool.js"; export default class CancelRichMenuDefault extends AbstractTool { @@ -22,8 +25,14 @@ export default class CancelRichMenuDefault extends AbstractTool { }, }, async () => { - const response = await this.client.cancelDefaultRichMenu(); - return createSuccessResponse(response); + try { + const response = await this.client.cancelDefaultRichMenu(); + return createSuccessResponse(response); + } catch (error) { + return createErrorResponse( + `Failed to cancel default rich menu: ${error.message}`, + ); + } }, ); } diff --git a/src/tools/getMessageQuota.ts b/src/tools/getMessageQuota.ts index 0bb39cc7..fbe53718 100644 --- a/src/tools/getMessageQuota.ts +++ b/src/tools/getMessageQuota.ts @@ -1,6 +1,9 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { messagingApi } from "@line/bot-sdk"; -import { createSuccessResponse } from "../common/response.js"; +import { + createErrorResponse, + createSuccessResponse, +} from "../common/response.js"; import { AbstractTool } from "./AbstractTool.js"; export default class GetMessageQuota extends AbstractTool { @@ -23,14 +26,20 @@ export default class GetMessageQuota extends AbstractTool { }, }, async () => { - const messageQuotaResponse = await this.client.getMessageQuota(); - const messageQuotaConsumptionResponse = - await this.client.getMessageQuotaConsumption(); - const response = { - limited: messageQuotaResponse.value, - totalUsage: messageQuotaConsumptionResponse.totalUsage, - }; - return createSuccessResponse(response); + try { + const messageQuotaResponse = await this.client.getMessageQuota(); + const messageQuotaConsumptionResponse = + await this.client.getMessageQuotaConsumption(); + const response = { + limited: messageQuotaResponse.value, + totalUsage: messageQuotaConsumptionResponse.totalUsage, + }; + return createSuccessResponse(response); + } catch (error) { + return createErrorResponse( + `Failed to get message quota: ${error.message}`, + ); + } }, ); } diff --git a/src/tools/getRichMenuList.ts b/src/tools/getRichMenuList.ts index 08a23976..204a7527 100644 --- a/src/tools/getRichMenuList.ts +++ b/src/tools/getRichMenuList.ts @@ -31,7 +31,7 @@ export default class GetRichMenuList extends AbstractTool { return createSuccessResponse(response); } catch (error) { return createErrorResponse( - `Failed to broadcast message: ${error.message}`, + `Failed to get rich menu list: ${error.message}`, ); } }, diff --git a/src/tools/setRichMenuDefault.ts b/src/tools/setRichMenuDefault.ts index c180e41b..dcaa3c29 100644 --- a/src/tools/setRichMenuDefault.ts +++ b/src/tools/setRichMenuDefault.ts @@ -1,6 +1,9 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { messagingApi } from "@line/bot-sdk"; -import { createSuccessResponse } from "../common/response.js"; +import { + createErrorResponse, + createSuccessResponse, +} from "../common/response.js"; import { AbstractTool } from "./AbstractTool.js"; import { z } from "zod"; @@ -32,8 +35,14 @@ export default class SetRichMenuDefault extends AbstractTool { }, }, async ({ richMenuId }) => { - const response = await this.client.setDefaultRichMenu(richMenuId); - return createSuccessResponse(response); + try { + const response = await this.client.setDefaultRichMenu(richMenuId); + return createSuccessResponse(response); + } catch (error) { + return createErrorResponse( + `Failed to set default rich menu: ${error.message}`, + ); + } }, ); } From 717e9247775a3370984776b67854dee2eff55e8d Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Tue, 24 Mar 2026 21:24:55 +0900 Subject: [PATCH 336/415] Update vulnerable libraries (#404) --- package-lock.json | 69 ++++++++++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 31 deletions(-) diff --git a/package-lock.json b/package-lock.json index 313afc3e..f2e31d35 100644 --- a/package-lock.json +++ b/package-lock.json @@ -562,9 +562,9 @@ } }, "node_modules/@hono/node-server": { - "version": "1.19.9", - "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.9.tgz", - "integrity": "sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==", + "version": "1.19.11", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.11.tgz", + "integrity": "sha512-dr8/3zEaB+p0D2n/IUrlPF1HZm586qgJNXK1a9fhg/PzdtkK7Ksd5l312tJX2yBuALqDYBlG20QEbayqPyxn+g==", "license": "MIT", "engines": { "node": ">=18.14.1" @@ -1325,9 +1325,9 @@ } }, "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", @@ -1414,14 +1414,14 @@ "optional": true }, "node_modules/axios": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", - "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz", + "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==", "license": "MIT", "optional": true, "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", "proxy-from-env": "^1.1.0" } }, @@ -1531,9 +1531,9 @@ } }, "node_modules/basic-ftp": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", - "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.2.0.tgz", + "integrity": "sha512-VoMINM2rqJwJgfdHq6RiUudKt2BV+FY5ZFezP/ypmwayk68+NzzAQy4XXLlqsGD4MCzq3DrmNFD/uUmBJuGoXw==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -1901,7 +1901,8 @@ "version": "0.0.1581282", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1581282.tgz", "integrity": "sha512-nv7iKtNZQshSW2hKzYNr46nM/Cfh5SEvE2oV0/SEGgc9XupIY5ggf84Cz8eJIkBce7S3bmTAauFD6aysMpnqsQ==", - "license": "BSD-3-Clause" + "license": "BSD-3-Clause", + "peer": true }, "node_modules/dunder-proto": { "version": "1.0.1", @@ -2282,6 +2283,7 @@ "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "license": "MIT", + "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", @@ -2321,12 +2323,12 @@ } }, "node_modules/express-rate-limit": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.2.1.tgz", - "integrity": "sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.1.tgz", + "integrity": "sha512-D1dKN+cmyPWuvB+G2SREQDzPY1agpBIcTa9sJxOPMCNeH3gwzhqJRDWCXW3gg0y//+LQ/8j52JbMROWyrKdMdw==", "license": "MIT", "dependencies": { - "ip-address": "10.0.1" + "ip-address": "10.1.0" }, "engines": { "node": ">= 16" @@ -2489,9 +2491,9 @@ } }, "node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "license": "MIT", "optional": true, "dependencies": { @@ -2729,10 +2731,11 @@ } }, "node_modules/hono": { - "version": "4.11.4", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.4.tgz", - "integrity": "sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==", + "version": "4.12.9", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.9.tgz", + "integrity": "sha512-wy3T8Zm2bsEvxKZM5w21VdHDDcwVS1yUFFY6i8UobSsKfFceT7TOwhbhfKsDyx7tYQlmRM5FLpIuYvNFyjctiA==", "license": "MIT", + "peer": true, "engines": { "node": ">=16.9.0" } @@ -2831,9 +2834,9 @@ } }, "node_modules/ip-address": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", - "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "license": "MIT", "engines": { "node": ">= 12" @@ -3456,6 +3459,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -3496,6 +3500,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", + "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -3626,9 +3631,9 @@ } }, "node_modules/qs": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -4541,6 +4546,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -4946,6 +4952,7 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } From 7bccf189820fff59ad9dbbfb1664a29f8c7f79e1 Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Tue, 24 Mar 2026 21:46:10 +0900 Subject: [PATCH 337/415] Update typescript to v6 (#409) * Update typescript to v6.0.2 and add peer dependencies * Improve error handling in messaging functions * Fix tests --------- Co-authored-by: Yuta Kasai --- package-lock.json | 12 ++++++++---- package.json | 2 +- src/tools/broadcastFlexMessage.ts | 4 ++-- src/tools/broadcastTextMessage.ts | 4 ++-- src/tools/cancelRichMenuDefault.ts | 2 +- src/tools/deleteRichMenu.ts | 4 ++-- src/tools/getFollowerIds.ts | 4 ++-- src/tools/getMessageQuota.ts | 2 +- src/tools/getProfile.ts | 6 ++++-- src/tools/getRichMenuList.ts | 4 ++-- src/tools/pushFlexMessage.ts | 4 ++-- src/tools/pushTextMessage.ts | 4 ++-- src/tools/setRichMenuDefault.ts | 2 +- 13 files changed, 30 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index f2e31d35..7000ba3e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "prettier": "3.8.1", "shx": "^0.4.0", "tsx": "^4.19.3", - "typescript": "^5.6.2", + "typescript": "^6.0.2", "vitest": "^4.0.0" }, "engines": { @@ -4446,6 +4446,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -4506,6 +4507,7 @@ "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" @@ -4541,9 +4543,9 @@ "license": "MIT" }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz", + "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==", "devOptional": true, "license": "Apache-2.0", "peer": true, @@ -4596,6 +4598,7 @@ "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", @@ -4689,6 +4692,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, diff --git a/package.json b/package.json index 5016de14..58752773 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "prettier": "3.8.1", "shx": "^0.4.0", "tsx": "^4.19.3", - "typescript": "^5.6.2", + "typescript": "^6.0.2", "vitest": "^4.0.0" }, "license": "Apache-2.0" diff --git a/src/tools/broadcastFlexMessage.ts b/src/tools/broadcastFlexMessage.ts index 7d47898f..1dcb0dae 100644 --- a/src/tools/broadcastFlexMessage.ts +++ b/src/tools/broadcastFlexMessage.ts @@ -37,9 +37,9 @@ export default class BroadcastFlexMessage extends AbstractTool { messages: [message as unknown as messagingApi.Message], }); return createSuccessResponse(response); - } catch (error) { + } catch (error: unknown) { return createErrorResponse( - `Failed to broadcast message: ${error.message}`, + `Failed to broadcast message: ${error instanceof Error ? error.message : String(error)}`, ); } }, diff --git a/src/tools/broadcastTextMessage.ts b/src/tools/broadcastTextMessage.ts index f3873423..bb6be223 100644 --- a/src/tools/broadcastTextMessage.ts +++ b/src/tools/broadcastTextMessage.ts @@ -36,9 +36,9 @@ export default class BroadcastTextMessage extends AbstractTool { messages: [message as unknown as messagingApi.Message], }); return createSuccessResponse(response); - } catch (error) { + } catch (error: unknown) { return createErrorResponse( - `Failed to broadcast message: ${error.message}`, + `Failed to broadcast message: ${error instanceof Error ? error.message : String(error)}`, ); } }, diff --git a/src/tools/cancelRichMenuDefault.ts b/src/tools/cancelRichMenuDefault.ts index 75185a13..5edcb142 100644 --- a/src/tools/cancelRichMenuDefault.ts +++ b/src/tools/cancelRichMenuDefault.ts @@ -30,7 +30,7 @@ export default class CancelRichMenuDefault extends AbstractTool { return createSuccessResponse(response); } catch (error) { return createErrorResponse( - `Failed to cancel default rich menu: ${error.message}`, + `Failed to cancel default rich menu: ${error instanceof Error ? error.message : String(error)}`, ); } }, diff --git a/src/tools/deleteRichMenu.ts b/src/tools/deleteRichMenu.ts index 2a77b714..58e94287 100644 --- a/src/tools/deleteRichMenu.ts +++ b/src/tools/deleteRichMenu.ts @@ -38,9 +38,9 @@ export default class DeleteRichMenu extends AbstractTool { try { const response = await this.client.deleteRichMenu(richMenuId); return createSuccessResponse(response); - } catch (error) { + } catch (error: unknown) { return createErrorResponse( - `Failed to delete rich menu: ${error.message}`, + `Failed to delete rich menu: ${error instanceof Error ? error.message : String(error)}`, ); } }, diff --git a/src/tools/getFollowerIds.ts b/src/tools/getFollowerIds.ts index aa589698..ca418578 100644 --- a/src/tools/getFollowerIds.ts +++ b/src/tools/getFollowerIds.ts @@ -43,9 +43,9 @@ export default class GetFollowerIds extends AbstractTool { try { const response = await this.client.getFollowers(start, limit); return createSuccessResponse(response); - } catch (error) { + } catch (error: unknown) { return createErrorResponse( - `Failed to get follower IDs: ${error.message}`, + `Failed to get follower IDs: ${error instanceof Error ? error.message : String(error)}`, ); } }, diff --git a/src/tools/getMessageQuota.ts b/src/tools/getMessageQuota.ts index fbe53718..376ae7c5 100644 --- a/src/tools/getMessageQuota.ts +++ b/src/tools/getMessageQuota.ts @@ -37,7 +37,7 @@ export default class GetMessageQuota extends AbstractTool { return createSuccessResponse(response); } catch (error) { return createErrorResponse( - `Failed to get message quota: ${error.message}`, + `Failed to get message quota: ${error instanceof Error ? error.message : String(error)}`, ); } }, diff --git a/src/tools/getProfile.ts b/src/tools/getProfile.ts index 34a00558..ae79cc72 100644 --- a/src/tools/getProfile.ts +++ b/src/tools/getProfile.ts @@ -47,8 +47,10 @@ export default class GetProfile extends AbstractTool { try { const response = await this.client.getProfile(userId); return createSuccessResponse(response); - } catch (error) { - return createErrorResponse(`Failed to get profile: ${error.message}`); + } catch (error: unknown) { + return createErrorResponse( + `Failed to get profile: ${error instanceof Error ? error.message : String(error)}`, + ); } }, ); diff --git a/src/tools/getRichMenuList.ts b/src/tools/getRichMenuList.ts index 204a7527..267c58e4 100644 --- a/src/tools/getRichMenuList.ts +++ b/src/tools/getRichMenuList.ts @@ -29,9 +29,9 @@ export default class GetRichMenuList extends AbstractTool { try { const response = await this.client.getRichMenuList(); return createSuccessResponse(response); - } catch (error) { + } catch (error: unknown) { return createErrorResponse( - `Failed to get rich menu list: ${error.message}`, + `Failed to get rich menu list: ${error instanceof Error ? error.message : String(error)}`, ); } }, diff --git a/src/tools/pushFlexMessage.ts b/src/tools/pushFlexMessage.ts index bac5c928..eda8e98f 100644 --- a/src/tools/pushFlexMessage.ts +++ b/src/tools/pushFlexMessage.ts @@ -53,9 +53,9 @@ export default class PushFlexMessage extends AbstractTool { messages: [message as unknown as messagingApi.Message], }); return createSuccessResponse(response); - } catch (error) { + } catch (error: unknown) { return createErrorResponse( - `Failed to push flex message: ${error.message}`, + `Failed to push flex message: ${error instanceof Error ? error.message : String(error)}`, ); } }, diff --git a/src/tools/pushTextMessage.ts b/src/tools/pushTextMessage.ts index da154a00..a6c4bd1f 100644 --- a/src/tools/pushTextMessage.ts +++ b/src/tools/pushTextMessage.ts @@ -52,9 +52,9 @@ export default class PushTextMessage extends AbstractTool { messages: [message as unknown as messagingApi.Message], }); return createSuccessResponse(response); - } catch (error) { + } catch (error: unknown) { return createErrorResponse( - `Failed to push message: ${error.message}`, + `Failed to push message: ${error instanceof Error ? error.message : String(error)}`, ); } }, diff --git a/src/tools/setRichMenuDefault.ts b/src/tools/setRichMenuDefault.ts index dcaa3c29..3844121c 100644 --- a/src/tools/setRichMenuDefault.ts +++ b/src/tools/setRichMenuDefault.ts @@ -40,7 +40,7 @@ export default class SetRichMenuDefault extends AbstractTool { return createSuccessResponse(response); } catch (error) { return createErrorResponse( - `Failed to set default rich menu: ${error.message}`, + `Failed to set default rich menu: ${error instanceof Error ? error.message : String(error)}`, ); } }, From 53f4b61a28b71b614af709bcabe46aa2232551f5 Mon Sep 17 00:00:00 2001 From: Yuta Euchi <63095160+eucyt@users.noreply.github.com> Date: Mon, 30 Mar 2026 09:45:30 +0900 Subject: [PATCH 338/415] Add tests for all tools (#410) * Add tests for all tools * Fix tests * Add tests for rich menu creation with varying area bounds * Add test to verify no overlapping areas in rich menu creation * Fix bounds in template-04 --- src/tools/createRichMenu.ts | 6 +- test/helpers/mock-line-clients.ts | 1 + test/tools/broadcastFlexMessage.test.ts | 92 ++++++++ test/tools/broadcastTextMessage.test.ts | 65 ++++++ test/tools/cancelRichMenuDefault.test.ts | 58 +++++ test/tools/createRichMenu.test.ts | 282 +++++++++++++++++++++++ test/tools/deleteRichMenu.test.ts | 59 +++++ test/tools/getFollowerIds.test.ts | 85 +++++++ test/tools/getMessageQuota.test.ts | 66 ++++++ test/tools/getRichMenuList.test.ts | 70 ++++++ test/tools/pushFlexMessage.test.ts | 137 +++++++++++ test/tools/setRichMenuDefault.test.ts | 58 +++++ 12 files changed, 976 insertions(+), 3 deletions(-) create mode 100644 test/tools/broadcastFlexMessage.test.ts create mode 100644 test/tools/broadcastTextMessage.test.ts create mode 100644 test/tools/cancelRichMenuDefault.test.ts create mode 100644 test/tools/createRichMenu.test.ts create mode 100644 test/tools/deleteRichMenu.test.ts create mode 100644 test/tools/getFollowerIds.test.ts create mode 100644 test/tools/getMessageQuota.test.ts create mode 100644 test/tools/getRichMenuList.test.ts create mode 100644 test/tools/pushFlexMessage.test.ts create mode 100644 test/tools/setRichMenuDefault.test.ts diff --git a/src/tools/createRichMenu.ts b/src/tools/createRichMenu.ts index cd089a0f..e9db0086 100644 --- a/src/tools/createRichMenu.ts +++ b/src/tools/createRichMenu.ts @@ -289,7 +289,7 @@ const richmenuBounds = (actionCount: number) => { }, ...[0, 1].map(i => ({ x: (RICHMENU_WIDTH / 3) * 2, - y: (RICHMENU_HEIGHT / 3) * i, + y: (RICHMENU_HEIGHT / 2) * i, width: RICHMENU_WIDTH / 3, height: RICHMENU_HEIGHT / 2, })), @@ -298,8 +298,8 @@ const richmenuBounds = (actionCount: number) => { [0, 1] .map(i => [0, 1].map(j => ({ - x: (RICHMENU_WIDTH / 2) * i, - y: (RICHMENU_HEIGHT / 2) * j, + x: (RICHMENU_WIDTH / 2) * j, + y: (RICHMENU_HEIGHT / 2) * i, width: RICHMENU_WIDTH / 2, height: RICHMENU_HEIGHT / 2, })), diff --git a/test/helpers/mock-line-clients.ts b/test/helpers/mock-line-clients.ts index afecb846..4252cb9d 100644 --- a/test/helpers/mock-line-clients.ts +++ b/test/helpers/mock-line-clients.ts @@ -13,6 +13,7 @@ export function createMockMessagingApiClient() { setDefaultRichMenu: vi.fn(), cancelDefaultRichMenu: vi.fn(), createRichMenu: vi.fn(), + getFollowers: vi.fn(), } as unknown as messagingApi.MessagingApiClient; } diff --git a/test/tools/broadcastFlexMessage.test.ts b/test/tools/broadcastFlexMessage.test.ts new file mode 100644 index 00000000..4cf8256d --- /dev/null +++ b/test/tools/broadcastFlexMessage.test.ts @@ -0,0 +1,92 @@ +import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { Client } from "@modelcontextprotocol/sdk/client/index.js"; +import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; +import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import BroadcastFlexMessage from "../../src/tools/broadcastFlexMessage.js"; + +const SAMPLE_FLEX_MESSAGE = { + type: "flex", + altText: "Test flex message", + contents: { + type: "bubble", + body: { + type: "box", + layout: "vertical", + contents: [{ type: "text", text: "Hello" }], + }, + }, +}; + +// Zod schema applies default values (e.g. wrap: true for text elements) +const EXPECTED_FLEX_MESSAGE = { + type: "flex", + altText: "Test flex message", + contents: { + type: "bubble", + body: { + type: "box", + layout: "vertical", + contents: [{ type: "text", text: "Hello", wrap: true }], + }, + }, +}; + +describe("broadcast_flex_message tool", () => { + let client: Client; + let server: McpServer; + let mockLineClient: ReturnType; + + beforeEach(async () => { + mockLineClient = createMockMessagingApiClient(); + server = new McpServer({ name: "test", version: "0.0.1" }); + new BroadcastFlexMessage(mockLineClient).register(server); + + const [clientTransport, serverTransport] = + InMemoryTransport.createLinkedPair(); + client = new Client({ name: "test-client", version: "0.0.1" }); + await Promise.all([ + client.connect(clientTransport), + server.connect(serverTransport), + ]); + }); + + afterEach(async () => { + await client?.close(); + await server?.close(); + }); + + it("calls broadcast with the correct arguments", async () => { + vi.mocked(mockLineClient.broadcast).mockResolvedValue({} as never); + + const result = await client.callTool({ + name: "broadcast_flex_message", + arguments: { + message: SAMPLE_FLEX_MESSAGE, + }, + }); + + expect(mockLineClient.broadcast).toHaveBeenCalledWith({ + messages: [EXPECTED_FLEX_MESSAGE], + }); + expect(result.isError).toBeFalsy(); + }); + + it("returns an error response when LINE API fails", async () => { + vi.mocked(mockLineClient.broadcast).mockRejectedValue( + new Error("API error"), + ); + + const result = await client.callTool({ + name: "broadcast_flex_message", + arguments: { + message: SAMPLE_FLEX_MESSAGE, + }, + }); + + expect(result.isError).toBe(true); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + expect(text).toContain("Failed to broadcast message"); + }); +}); diff --git a/test/tools/broadcastTextMessage.test.ts b/test/tools/broadcastTextMessage.test.ts new file mode 100644 index 00000000..4e6490b6 --- /dev/null +++ b/test/tools/broadcastTextMessage.test.ts @@ -0,0 +1,65 @@ +import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { Client } from "@modelcontextprotocol/sdk/client/index.js"; +import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; +import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import BroadcastTextMessage from "../../src/tools/broadcastTextMessage.js"; + +describe("broadcast_text_message tool", () => { + let client: Client; + let server: McpServer; + let mockLineClient: ReturnType; + + beforeEach(async () => { + mockLineClient = createMockMessagingApiClient(); + server = new McpServer({ name: "test", version: "0.0.1" }); + new BroadcastTextMessage(mockLineClient).register(server); + + const [clientTransport, serverTransport] = + InMemoryTransport.createLinkedPair(); + client = new Client({ name: "test-client", version: "0.0.1" }); + await Promise.all([ + client.connect(clientTransport), + server.connect(serverTransport), + ]); + }); + + afterEach(async () => { + await client?.close(); + await server?.close(); + }); + + it("calls broadcast with the correct arguments", async () => { + vi.mocked(mockLineClient.broadcast).mockResolvedValue({} as never); + + const result = await client.callTool({ + name: "broadcast_text_message", + arguments: { + message: { type: "text", text: "hello everyone" }, + }, + }); + + expect(mockLineClient.broadcast).toHaveBeenCalledWith({ + messages: [{ type: "text", text: "hello everyone" }], + }); + expect(result.isError).toBeFalsy(); + }); + + it("returns an error response when LINE API fails", async () => { + vi.mocked(mockLineClient.broadcast).mockRejectedValue( + new Error("API error"), + ); + + const result = await client.callTool({ + name: "broadcast_text_message", + arguments: { + message: { type: "text", text: "hello" }, + }, + }); + + expect(result.isError).toBe(true); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + expect(text).toContain("Failed to broadcast message"); + }); +}); diff --git a/test/tools/cancelRichMenuDefault.test.ts b/test/tools/cancelRichMenuDefault.test.ts new file mode 100644 index 00000000..c6b34897 --- /dev/null +++ b/test/tools/cancelRichMenuDefault.test.ts @@ -0,0 +1,58 @@ +import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { Client } from "@modelcontextprotocol/sdk/client/index.js"; +import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; +import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import CancelRichMenuDefault from "../../src/tools/cancelRichMenuDefault.js"; + +describe("cancel_rich_menu_default tool", () => { + let client: Client; + let server: McpServer; + let mockLineClient: ReturnType; + + beforeEach(async () => { + mockLineClient = createMockMessagingApiClient(); + server = new McpServer({ name: "test", version: "0.0.1" }); + new CancelRichMenuDefault(mockLineClient).register(server); + + const [clientTransport, serverTransport] = + InMemoryTransport.createLinkedPair(); + client = new Client({ name: "test-client", version: "0.0.1" }); + await Promise.all([ + client.connect(clientTransport), + server.connect(serverTransport), + ]); + }); + + afterEach(async () => { + await client?.close(); + await server?.close(); + }); + + it("calls cancelDefaultRichMenu", async () => { + vi.mocked(mockLineClient.cancelDefaultRichMenu).mockResolvedValue( + {} as never, + ); + + const result = await client.callTool({ + name: "cancel_rich_menu_default", + arguments: {}, + }); + + expect(mockLineClient.cancelDefaultRichMenu).toHaveBeenCalled(); + expect(result.isError).toBeFalsy(); + }); + + it("returns an error when LINE API fails", async () => { + vi.mocked(mockLineClient.cancelDefaultRichMenu).mockRejectedValue( + new Error("API error"), + ); + + const result = await client.callTool({ + name: "cancel_rich_menu_default", + arguments: {}, + }); + + expect(result.isError).toBe(true); + }); +}); diff --git a/test/tools/createRichMenu.test.ts b/test/tools/createRichMenu.test.ts new file mode 100644 index 00000000..c81276c1 --- /dev/null +++ b/test/tools/createRichMenu.test.ts @@ -0,0 +1,282 @@ +import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { Client } from "@modelcontextprotocol/sdk/client/index.js"; +import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; +import { + createMockMessagingApiClient, + createMockBlobClient, +} from "../helpers/mock-line-clients.js"; + +// Mock external dependencies before importing the tool. +// vi.mock factories are hoisted, so all values must be created inline. +vi.mock("puppeteer", () => ({ + default: { + launch: vi.fn().mockResolvedValue({ + newPage: vi.fn().mockResolvedValue({ + setViewport: vi.fn().mockResolvedValue(undefined), + goto: vi.fn().mockResolvedValue(undefined), + evaluate: vi.fn().mockResolvedValue(undefined), + screenshot: vi.fn().mockResolvedValue(undefined), + }), + close: vi.fn().mockResolvedValue(undefined), + }), + }, +})); + +vi.mock("@marp-team/marp-core", () => ({ + Marp: class { + render() { + return { html: "
mock
", css: "body{}" }; + } + }, +})); + +vi.mock("fs", async importOriginal => { + const actual: any = await importOriginal(); + return { + ...actual, + default: { + ...actual.default, + readFileSync: vi.fn().mockReturnValue(Buffer.from("fake-image-data")), + }, + promises: { + ...actual.promises, + readFile: vi + .fn() + .mockResolvedValue("# Template\n

item01

\n

item02

"), + writeFile: vi.fn().mockResolvedValue(undefined), + copyFile: vi.fn().mockResolvedValue(undefined), + unlink: vi.fn().mockResolvedValue(undefined), + }, + }; +}); + +// Import after mocks are set up +import CreateRichMenu from "../../src/tools/createRichMenu.js"; + +describe("create_rich_menu tool", () => { + let client: Client; + let server: McpServer; + let mockLineClient: ReturnType; + let mockBlobClient: ReturnType; + + beforeEach(async () => { + mockLineClient = createMockMessagingApiClient(); + mockBlobClient = createMockBlobClient(); + server = new McpServer({ name: "test", version: "0.0.1" }); + new CreateRichMenu(mockLineClient, mockBlobClient).register(server); + + const [clientTransport, serverTransport] = + InMemoryTransport.createLinkedPair(); + client = new Client({ name: "test-client", version: "0.0.1" }); + await Promise.all([ + client.connect(clientTransport), + server.connect(serverTransport), + ]); + }); + + afterEach(async () => { + await client?.close(); + await server?.close(); + }); + + it( + "creates a rich menu, uploads image, and sets as default", + { timeout: 10000 }, + async () => { + vi.mocked(mockLineClient.createRichMenu).mockResolvedValue({ + richMenuId: "richmenu-new-123", + } as never); + vi.mocked(mockBlobClient.setRichMenuImage).mockResolvedValue({} as never); + vi.mocked(mockLineClient.setDefaultRichMenu).mockResolvedValue( + {} as never, + ); + + const result = await client.callTool({ + name: "create_rich_menu", + arguments: { + chatBarText: "My Menu", + actions: [ + { type: "message", label: "Action 1", text: "action1" }, + { type: "message", label: "Action 2", text: "action2" }, + ], + }, + }); + + expect(mockLineClient.createRichMenu).toHaveBeenCalledWith( + expect.objectContaining({ + name: "My Menu", + chatBarText: "My Menu", + selected: true, + size: { width: 1600, height: 910 }, + }), + ); + expect(mockBlobClient.setRichMenuImage).toHaveBeenCalledWith( + "richmenu-new-123", + expect.any(Blob), + ); + expect(mockLineClient.setDefaultRichMenu).toHaveBeenCalledWith( + "richmenu-new-123", + ); + expect(result.isError).toBeFalsy(); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + const parsed = JSON.parse(text); + expect(parsed.richMenuId).toBe("richmenu-new-123"); + expect(parsed.message).toContain("Rich menu created successfully"); + }, + ); + + it.each([ + { + // +-----------+ + // | | + // | 1 | + // | | + // +-----------+ + templateName: "template-01", + actionCount: 1, + expectedBounds: [{ x: 0, y: 0, width: 1600, height: 910 }], + }, + { + // +-----+-----+ + // | | | + // | 1 | 2 | + // | | | + // +-----+-----+ + templateName: "template-02", + actionCount: 2, + expectedBounds: [ + { x: 0, y: 0, width: 800, height: 910 }, + { x: 800, y: 0, width: 800, height: 910 }, + ], + }, + { + // +-------+---+ + // | | 2 | + // | 1 +---+ + // | | 3 | + // +-------+---+ + templateName: "template-03", + actionCount: 3, + expectedBounds: [ + { x: 0, y: 0, width: (1600 / 3) * 2, height: 910 }, + { x: (1600 / 3) * 2, y: 0, width: 1600 / 3, height: 455 }, + { x: (1600 / 3) * 2, y: 455, width: 1600 / 3, height: 455 }, + ], + }, + { + // +-----+-----+ + // | 1 | 2 | + // +-----+-----+ + // | 3 | 4 | + // +-----+-----+ + templateName: "template-04", + actionCount: 4, + expectedBounds: [ + { x: 0, y: 0, width: 800, height: 455 }, + { x: 800, y: 0, width: 800, height: 455 }, + { x: 0, y: 455, width: 800, height: 455 }, + { x: 800, y: 455, width: 800, height: 455 }, + ], + }, + { + // +-------+---+ + // | 1 | 2 | + // +---+---+---+ + // | 3 | 4 | 5 | + // +---+---+---+ + templateName: "template-05", + actionCount: 5, + expectedBounds: [ + { x: 0, y: 0, width: (1600 / 3) * 2, height: 455 }, + { x: (1600 / 3) * 2, y: 0, width: 1600 / 3, height: 455 }, + { x: 0, y: 455, width: 1600 / 3, height: 455 }, + { x: 1600 / 3, y: 455, width: 1600 / 3, height: 455 }, + { x: (1600 / 3) * 2, y: 455, width: 1600 / 3, height: 455 }, + ], + }, + { + // +---+---+---+ + // | 1 | 2 | 3 | + // +---+---+---+ + // | 4 | 5 | 6 | + // +---+---+---+ + templateName: "template-06", + actionCount: 6, + expectedBounds: [ + { x: 0, y: 0, width: 1600 / 3, height: 455 }, + { x: 1600 / 3, y: 0, width: 1600 / 3, height: 455 }, + { x: (1600 / 3) * 2, y: 0, width: 1600 / 3, height: 455 }, + { x: 0, y: 455, width: 1600 / 3, height: 455 }, + { x: 1600 / 3, y: 455, width: 1600 / 3, height: 455 }, + { x: (1600 / 3) * 2, y: 455, width: 1600 / 3, height: 455 }, + ], + }, + ])( + "$templateName: creates a rich menu with correct areas for $actionCount actions", + { timeout: 10000 }, + async ({ actionCount, expectedBounds }) => { + vi.mocked(mockLineClient.createRichMenu).mockResolvedValue({ + richMenuId: "richmenu-new-123", + } as never); + vi.mocked(mockBlobClient.setRichMenuImage).mockResolvedValue({} as never); + vi.mocked(mockLineClient.setDefaultRichMenu).mockResolvedValue( + {} as never, + ); + + const actions = Array.from({ length: actionCount }, (_, i) => ({ + type: "message" as const, + label: `Action ${i + 1}`, + text: `action${i + 1}`, + })); + + await client.callTool({ + name: "create_rich_menu", + arguments: { chatBarText: "My Menu", actions }, + }); + + const callArgs = vi.mocked(mockLineClient.createRichMenu).mock + .calls[0][0]; + const actualBounds = callArgs.areas?.map(area => area.bounds); + expect(actualBounds).toEqual(expectedBounds); + + // Verify no areas overlap + for (let i = 0; i < expectedBounds.length; i++) { + for (let j = i + 1; j < expectedBounds.length; j++) { + const a = expectedBounds[i]; + const b = expectedBounds[j]; + const overlaps = + a.x < b.x + b.width && + b.x < a.x + a.width && + a.y < b.y + b.height && + b.y < a.y + a.height; + expect(overlaps, `areas[${i}] and areas[${j}] overlap`).toBe(false); + } + } + }, + ); + + it( + "returns an error when createRichMenu API fails", + { timeout: 10000 }, + async () => { + vi.mocked(mockLineClient.createRichMenu).mockRejectedValue( + new Error("API error"), + ); + + const result = await client.callTool({ + name: "create_rich_menu", + arguments: { + chatBarText: "My Menu", + actions: [{ type: "message", label: "Action 1", text: "action1" }], + }, + }); + + expect(result.isError).toBe(true); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + expect(text).toContain("API error"); + }, + ); +}); diff --git a/test/tools/deleteRichMenu.test.ts b/test/tools/deleteRichMenu.test.ts new file mode 100644 index 00000000..955fcd0f --- /dev/null +++ b/test/tools/deleteRichMenu.test.ts @@ -0,0 +1,59 @@ +import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { Client } from "@modelcontextprotocol/sdk/client/index.js"; +import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; +import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import DeleteRichMenu from "../../src/tools/deleteRichMenu.js"; + +describe("delete_rich_menu tool", () => { + let client: Client; + let server: McpServer; + let mockLineClient: ReturnType; + + beforeEach(async () => { + mockLineClient = createMockMessagingApiClient(); + server = new McpServer({ name: "test", version: "0.0.1" }); + new DeleteRichMenu(mockLineClient).register(server); + + const [clientTransport, serverTransport] = + InMemoryTransport.createLinkedPair(); + client = new Client({ name: "test-client", version: "0.0.1" }); + await Promise.all([ + client.connect(clientTransport), + server.connect(serverTransport), + ]); + }); + + afterEach(async () => { + await client?.close(); + await server?.close(); + }); + + it("calls deleteRichMenu with the correct richMenuId", async () => { + vi.mocked(mockLineClient.deleteRichMenu).mockResolvedValue({} as never); + + const result = await client.callTool({ + name: "delete_rich_menu", + arguments: { richMenuId: "richmenu-123" }, + }); + + expect(mockLineClient.deleteRichMenu).toHaveBeenCalledWith("richmenu-123"); + expect(result.isError).toBeFalsy(); + }); + + it("returns an error response when LINE API fails", async () => { + vi.mocked(mockLineClient.deleteRichMenu).mockRejectedValue( + new Error("Not found"), + ); + + const result = await client.callTool({ + name: "delete_rich_menu", + arguments: { richMenuId: "richmenu-unknown" }, + }); + + expect(result.isError).toBe(true); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + expect(text).toContain("Failed to delete rich menu"); + }); +}); diff --git a/test/tools/getFollowerIds.test.ts b/test/tools/getFollowerIds.test.ts new file mode 100644 index 00000000..8faa25fd --- /dev/null +++ b/test/tools/getFollowerIds.test.ts @@ -0,0 +1,85 @@ +import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { Client } from "@modelcontextprotocol/sdk/client/index.js"; +import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; +import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import GetFollowerIds from "../../src/tools/getFollowerIds.js"; + +describe("get_follower_ids tool", () => { + let client: Client; + let server: McpServer; + let mockLineClient: ReturnType; + + beforeEach(async () => { + mockLineClient = createMockMessagingApiClient(); + server = new McpServer({ name: "test", version: "0.0.1" }); + new GetFollowerIds(mockLineClient).register(server); + + const [clientTransport, serverTransport] = + InMemoryTransport.createLinkedPair(); + client = new Client({ name: "test-client", version: "0.0.1" }); + await Promise.all([ + client.connect(clientTransport), + server.connect(serverTransport), + ]); + }); + + afterEach(async () => { + await client?.close(); + await server?.close(); + }); + + it("calls getFollowers with the correct arguments", async () => { + const followerData = { + userIds: ["U_USER_1", "U_USER_2"], + next: "continuation_token", + }; + vi.mocked(mockLineClient.getFollowers).mockResolvedValue( + followerData as never, + ); + + const result = await client.callTool({ + name: "get_follower_ids", + arguments: { start: "token_abc", limit: 100 }, + }); + + expect(mockLineClient.getFollowers).toHaveBeenCalledWith("token_abc", 100); + expect(result.isError).toBeFalsy(); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + expect(JSON.parse(text)).toEqual(followerData); + }); + + it("calls getFollowers without optional parameters", async () => { + vi.mocked(mockLineClient.getFollowers).mockResolvedValue({ + userIds: [], + } as never); + + const result = await client.callTool({ + name: "get_follower_ids", + arguments: {}, + }); + + expect(mockLineClient.getFollowers).toHaveBeenCalledWith( + undefined, + undefined, + ); + expect(result.isError).toBeFalsy(); + }); + + it("returns an error response when LINE API fails", async () => { + vi.mocked(mockLineClient.getFollowers).mockRejectedValue( + new Error("Forbidden"), + ); + + const result = await client.callTool({ + name: "get_follower_ids", + arguments: {}, + }); + + expect(result.isError).toBe(true); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + expect(text).toContain("Failed to get follower IDs"); + }); +}); diff --git a/test/tools/getMessageQuota.test.ts b/test/tools/getMessageQuota.test.ts new file mode 100644 index 00000000..c1049527 --- /dev/null +++ b/test/tools/getMessageQuota.test.ts @@ -0,0 +1,66 @@ +import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { Client } from "@modelcontextprotocol/sdk/client/index.js"; +import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; +import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import GetMessageQuota from "../../src/tools/getMessageQuota.js"; + +describe("get_message_quota tool", () => { + let client: Client; + let server: McpServer; + let mockLineClient: ReturnType; + + beforeEach(async () => { + mockLineClient = createMockMessagingApiClient(); + server = new McpServer({ name: "test", version: "0.0.1" }); + new GetMessageQuota(mockLineClient).register(server); + + const [clientTransport, serverTransport] = + InMemoryTransport.createLinkedPair(); + client = new Client({ name: "test-client", version: "0.0.1" }); + await Promise.all([ + client.connect(clientTransport), + server.connect(serverTransport), + ]); + }); + + afterEach(async () => { + await client?.close(); + await server?.close(); + }); + + it("returns quota and consumption data", async () => { + vi.mocked(mockLineClient.getMessageQuota).mockResolvedValue({ + type: "limited", + value: 1000, + } as never); + vi.mocked(mockLineClient.getMessageQuotaConsumption).mockResolvedValue({ + totalUsage: 250, + } as never); + + const result = await client.callTool({ + name: "get_message_quota", + arguments: {}, + }); + + expect(mockLineClient.getMessageQuota).toHaveBeenCalled(); + expect(mockLineClient.getMessageQuotaConsumption).toHaveBeenCalled(); + expect(result.isError).toBeFalsy(); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + expect(JSON.parse(text)).toEqual({ limited: 1000, totalUsage: 250 }); + }); + + it("returns an error when LINE API fails", async () => { + vi.mocked(mockLineClient.getMessageQuota).mockRejectedValue( + new Error("API error"), + ); + + const result = await client.callTool({ + name: "get_message_quota", + arguments: {}, + }); + + expect(result.isError).toBe(true); + }); +}); diff --git a/test/tools/getRichMenuList.test.ts b/test/tools/getRichMenuList.test.ts new file mode 100644 index 00000000..390960fb --- /dev/null +++ b/test/tools/getRichMenuList.test.ts @@ -0,0 +1,70 @@ +import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { Client } from "@modelcontextprotocol/sdk/client/index.js"; +import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; +import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import GetRichMenuList from "../../src/tools/getRichMenuList.js"; + +describe("get_rich_menu_list tool", () => { + let client: Client; + let server: McpServer; + let mockLineClient: ReturnType; + + beforeEach(async () => { + mockLineClient = createMockMessagingApiClient(); + server = new McpServer({ name: "test", version: "0.0.1" }); + new GetRichMenuList(mockLineClient).register(server); + + const [clientTransport, serverTransport] = + InMemoryTransport.createLinkedPair(); + client = new Client({ name: "test-client", version: "0.0.1" }); + await Promise.all([ + client.connect(clientTransport), + server.connect(serverTransport), + ]); + }); + + afterEach(async () => { + await client?.close(); + await server?.close(); + }); + + it("returns the list of rich menus", async () => { + const richMenus = { + richmenus: [ + { richMenuId: "rm-1", name: "Menu 1" }, + { richMenuId: "rm-2", name: "Menu 2" }, + ], + }; + vi.mocked(mockLineClient.getRichMenuList).mockResolvedValue( + richMenus as never, + ); + + const result = await client.callTool({ + name: "get_rich_menu_list", + arguments: {}, + }); + + expect(mockLineClient.getRichMenuList).toHaveBeenCalled(); + expect(result.isError).toBeFalsy(); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + expect(JSON.parse(text)).toEqual(richMenus); + }); + + it("returns an error response when LINE API fails", async () => { + vi.mocked(mockLineClient.getRichMenuList).mockRejectedValue( + new Error("API error"), + ); + + const result = await client.callTool({ + name: "get_rich_menu_list", + arguments: {}, + }); + + expect(result.isError).toBe(true); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + expect(text).toContain("Failed to get rich menu list"); + }); +}); diff --git a/test/tools/pushFlexMessage.test.ts b/test/tools/pushFlexMessage.test.ts new file mode 100644 index 00000000..04168a10 --- /dev/null +++ b/test/tools/pushFlexMessage.test.ts @@ -0,0 +1,137 @@ +import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { Client } from "@modelcontextprotocol/sdk/client/index.js"; +import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; +import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import PushFlexMessage from "../../src/tools/pushFlexMessage.js"; + +const DESTINATION_ID = "U_DEFAULT_USER"; + +const SAMPLE_FLEX_MESSAGE = { + type: "flex", + altText: "Test flex message", + contents: { + type: "bubble", + body: { + type: "box", + layout: "vertical", + contents: [{ type: "text", text: "Hello" }], + }, + }, +}; + +// Zod schema applies default values (e.g. wrap: true for text elements) +const EXPECTED_FLEX_MESSAGE = { + type: "flex", + altText: "Test flex message", + contents: { + type: "bubble", + body: { + type: "box", + layout: "vertical", + contents: [{ type: "text", text: "Hello", wrap: true }], + }, + }, +}; + +describe("push_flex_message tool", () => { + let client: Client; + let server: McpServer; + let mockLineClient: ReturnType; + + beforeEach(async () => { + mockLineClient = createMockMessagingApiClient(); + server = new McpServer({ name: "test", version: "0.0.1" }); + new PushFlexMessage(mockLineClient, DESTINATION_ID).register(server); + + const [clientTransport, serverTransport] = + InMemoryTransport.createLinkedPair(); + client = new Client({ name: "test-client", version: "0.0.1" }); + await Promise.all([ + client.connect(clientTransport), + server.connect(serverTransport), + ]); + }); + + afterEach(async () => { + await client?.close(); + await server?.close(); + }); + + it("calls pushMessage with the correct arguments", async () => { + vi.mocked(mockLineClient.pushMessage).mockResolvedValue({} as never); + + const result = await client.callTool({ + name: "push_flex_message", + arguments: { + userId: "U_EXPLICIT_USER", + message: SAMPLE_FLEX_MESSAGE, + }, + }); + + expect(mockLineClient.pushMessage).toHaveBeenCalledWith({ + to: "U_EXPLICIT_USER", + messages: [EXPECTED_FLEX_MESSAGE], + }); + expect(result.isError).toBeFalsy(); + }); + + it("uses default destinationId when userId is omitted", async () => { + vi.mocked(mockLineClient.pushMessage).mockResolvedValue({} as never); + + await client.callTool({ + name: "push_flex_message", + arguments: { + message: SAMPLE_FLEX_MESSAGE, + }, + }); + + expect(mockLineClient.pushMessage).toHaveBeenCalledWith({ + to: DESTINATION_ID, + messages: [EXPECTED_FLEX_MESSAGE], + }); + }); + + it("returns an error response when LINE API fails", async () => { + vi.mocked(mockLineClient.pushMessage).mockRejectedValue( + new Error("API error"), + ); + + const result = await client.callTool({ + name: "push_flex_message", + arguments: { + userId: "U_USER", + message: SAMPLE_FLEX_MESSAGE, + }, + }); + + expect(result.isError).toBe(true); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + expect(text).toContain("Failed to push flex message"); + }); + + it("returns an error when userId is empty and no default is set", async () => { + const emptyServer = new McpServer({ name: "test", version: "0.0.1" }); + new PushFlexMessage(mockLineClient, "").register(emptyServer); + + const [ct, st] = InMemoryTransport.createLinkedPair(); + const emptyClient = new Client({ name: "test-client", version: "0.0.1" }); + await Promise.all([emptyClient.connect(ct), emptyServer.connect(st)]); + + const result = await emptyClient.callTool({ + name: "push_flex_message", + arguments: { + message: SAMPLE_FLEX_MESSAGE, + }, + }); + + expect(result.isError).toBe(true); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + expect(text).toContain("userId"); + + await emptyClient.close(); + await emptyServer.close(); + }); +}); diff --git a/test/tools/setRichMenuDefault.test.ts b/test/tools/setRichMenuDefault.test.ts new file mode 100644 index 00000000..f9316e91 --- /dev/null +++ b/test/tools/setRichMenuDefault.test.ts @@ -0,0 +1,58 @@ +import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { Client } from "@modelcontextprotocol/sdk/client/index.js"; +import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; +import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import SetRichMenuDefault from "../../src/tools/setRichMenuDefault.js"; + +describe("set_rich_menu_default tool", () => { + let client: Client; + let server: McpServer; + let mockLineClient: ReturnType; + + beforeEach(async () => { + mockLineClient = createMockMessagingApiClient(); + server = new McpServer({ name: "test", version: "0.0.1" }); + new SetRichMenuDefault(mockLineClient).register(server); + + const [clientTransport, serverTransport] = + InMemoryTransport.createLinkedPair(); + client = new Client({ name: "test-client", version: "0.0.1" }); + await Promise.all([ + client.connect(clientTransport), + server.connect(serverTransport), + ]); + }); + + afterEach(async () => { + await client?.close(); + await server?.close(); + }); + + it("calls setDefaultRichMenu with the correct richMenuId", async () => { + vi.mocked(mockLineClient.setDefaultRichMenu).mockResolvedValue({} as never); + + const result = await client.callTool({ + name: "set_rich_menu_default", + arguments: { richMenuId: "richmenu-123" }, + }); + + expect(mockLineClient.setDefaultRichMenu).toHaveBeenCalledWith( + "richmenu-123", + ); + expect(result.isError).toBeFalsy(); + }); + + it("returns an error when LINE API fails", async () => { + vi.mocked(mockLineClient.setDefaultRichMenu).mockRejectedValue( + new Error("API error"), + ); + + const result = await client.callTool({ + name: "set_rich_menu_default", + arguments: { richMenuId: "richmenu-unknown" }, + }); + + expect(result.isError).toBe(true); + }); +}); From 131aee52770e62fe1bc8cd91f3080485198e1a59 Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Wed, 1 Apr 2026 12:01:41 +0900 Subject: [PATCH 339/415] Disable lifecycle script to avoid supply chain attack (#413) NO-ISSUE Disable lifecycle script to avoid supply chain attack --- .github/workflows/test.yml | 4 +- .npmrc | 2 + README.ja.md | 1 + README.md | 1 + package-lock.json | 108 ++++++++++++++++++++++++++++--------- package.json | 5 +- 6 files changed, 90 insertions(+), 31 deletions(-) create mode 100644 .npmrc diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 69f3681b..c4e71b1e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -39,10 +39,8 @@ jobs: run: npm run build - name: Test run: npm test - - name: Install pnpm # For publint - run: npm install -g pnpm - name: publint - run: npx publint + run: npm run check:publint docker-build: runs-on: ubuntu-latest diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..2143f3df --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +ignore-scripts=true +min-release-age=7 diff --git a/README.ja.md b/README.ja.md index bb3aa732..b1424ced 100644 --- a/README.ja.md +++ b/README.ja.md @@ -107,6 +107,7 @@ Claude DesktopやClaudeなどのAI Agentに次の設定を追加してくださ "@line/line-bot-mcp-server" ], "env": { + "NPM_CONFIG_IGNORE_SCRIPTS": "true", "CHANNEL_ACCESS_TOKEN" : "FILL_HERE", "DESTINATION_USER_ID" : "FILL_HERE" } diff --git a/README.md b/README.md index 5e2a62c9..097a3207 100644 --- a/README.md +++ b/README.md @@ -109,6 +109,7 @@ Set the environment variables or arguments as follows: "@line/line-bot-mcp-server" ], "env": { + "NPM_CONFIG_IGNORE_SCRIPTS": "true", "CHANNEL_ACCESS_TOKEN" : "FILL_HERE", "DESTINATION_USER_ID" : "FILL_HERE" } diff --git a/package-lock.json b/package-lock.json index 7000ba3e..387f8fde 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,7 @@ "devDependencies": { "@types/node": "^24.9.2", "prettier": "3.8.1", + "publint": "0.3.18", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^6.0.2", @@ -741,6 +742,19 @@ "node": ">= 8" } }, + "node_modules/@publint/pack": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@publint/pack/-/pack-0.1.4.tgz", + "integrity": "sha512-HDVTWq3H0uTXiU0eeSQntcVUTPP3GamzeXI41+x7uU9J65JgWQh3qWZHblR1i0npXfFtF+mxBiU2nJH8znxWnQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://bjornlu.com/sponsor" + } + }, "node_modules/@puppeteer/browsers": { "version": "2.13.0", "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.13.0.tgz", @@ -1901,8 +1915,7 @@ "version": "0.0.1581282", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1581282.tgz", "integrity": "sha512-nv7iKtNZQshSW2hKzYNr46nM/Cfh5SEvE2oV0/SEGgc9XupIY5ggf84Cz8eJIkBce7S3bmTAauFD6aysMpnqsQ==", - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/dunder-proto": { "version": "1.0.1", @@ -2283,7 +2296,6 @@ "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "license": "MIT", - "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", @@ -2735,7 +2747,6 @@ "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.9.tgz", "integrity": "sha512-wy3T8Zm2bsEvxKZM5w21VdHDDcwVS1yUFFY6i8UobSsKfFceT7TOwhbhfKsDyx7tYQlmRM5FLpIuYvNFyjctiA==", "license": "MIT", - "peer": true, "engines": { "node": ">=16.9.0" } @@ -3172,6 +3183,16 @@ "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz", "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==" }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -3338,6 +3359,13 @@ "node": ">= 14" } }, + "node_modules/package-manager-detector": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.6.0.tgz", + "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==", + "dev": true, + "license": "MIT" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -3392,12 +3420,13 @@ "license": "MIT" }, "node_modules/path-to-regexp": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", - "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.1.tgz", + "integrity": "sha512-fvU78fIjZ+SBM9YwCknCvKOUKkLVqtWDVctl0s7xIqfmfb38t2TT4ZU2gHm+Z8xGwgW+QWEU3oQSAzIbo89Ggw==", "license": "MIT", - "engines": { - "node": ">=16" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/pathe": { @@ -3419,9 +3448,9 @@ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -3459,7 +3488,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -3500,7 +3528,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -3572,6 +3599,28 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, + "node_modules/publint": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/publint/-/publint-0.3.18.tgz", + "integrity": "sha512-JRJFeBTrfx4qLwEuGFPk+haJOJN97KnPuK01yj+4k/Wj5BgoOK5uNsivporiqBjk2JDaslg7qJOhGRnpltGeog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@publint/pack": "^0.1.4", + "package-manager-detector": "^1.6.0", + "picocolors": "^1.1.1", + "sade": "^1.8.1" + }, + "bin": { + "publint": "src/cli.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://bjornlu.com/sponsor" + } + }, "node_modules/pump": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", @@ -3866,6 +3915,19 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -4441,12 +4503,11 @@ } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -4507,7 +4568,6 @@ "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" @@ -4548,7 +4608,6 @@ "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==", "devOptional": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -4598,7 +4657,6 @@ "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", @@ -4687,12 +4745,11 @@ } }, "node_modules/vite/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -4956,7 +5013,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index 58752773..b41d66d8 100644 --- a/package.json +++ b/package.json @@ -15,14 +15,14 @@ "richmenu-template" ], "scripts": { - "build": "tsc && shx chmod +x dist/*.js", + "build": "npm run format:check && npm run typecheck:test && npm run clean && tsc && shx chmod +x dist/*.js", "prettier": "prettier \"src/**/*.ts\" \"test/**/*.ts\"", "format": "npm run prettier -- --write", "format:check": "npm run prettier -- -l", "clean": "rm -rf dist/*", "typecheck:test": "tsc --project tsconfig.test.json", - "prebuild": "npm run format:check && npm run typecheck:test && npm run clean", "release": "npm run build && npm publish --provenance --access public", + "check:publint": "publint", "test": "vitest run", "test:watch": "vitest" }, @@ -48,6 +48,7 @@ "devDependencies": { "@types/node": "^24.9.2", "prettier": "3.8.1", + "publint": "0.3.18", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^6.0.2", From ab04afe40548bdfa545350fba716eae6ee5a8b69 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 Apr 2026 00:09:03 +0900 Subject: [PATCH 340/415] chore(deps): update dependency @modelcontextprotocol/sdk to v1.28.0 (#414) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 387f8fde..99da7772 100644 --- a/package-lock.json +++ b/package-lock.json @@ -665,9 +665,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.27.1", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.27.1.tgz", - "integrity": "sha512-sr6GbP+4edBwFndLbM60gf07z0FQ79gaExpnsjMGePXqFcSSb7t6iscpjk9DhFhwd+mTEQrzNafGP8/iGGFYaA==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.28.0.tgz", + "integrity": "sha512-gmloF+i+flI8ouQK7MWW4mOwuMh4RePBuPFAEPC6+pdqyWOUMDOixb6qZ69owLJpz6XmyllCouc4t8YWO+E2Nw==", "license": "MIT", "dependencies": { "@hono/node-server": "^1.19.9", From 8c0a421accf714b80a7456d2e8c4d9446850364c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Apr 2026 14:20:01 +0900 Subject: [PATCH 341/415] chore(deps): update dependency vitest to v4.1.2 (#415) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 106 +++++++++++++++++++++++----------------------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/package-lock.json b/package-lock.json index 99da7772..2fd1729f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1196,31 +1196,31 @@ } }, "node_modules/@vitest/expect": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.1.tgz", - "integrity": "sha512-xAV0fqBTk44Rn6SjJReEQkHP3RrqbJo6JQ4zZ7/uVOiJZRarBtblzrOfFIZeYUrukp2YD6snZG6IBqhOoHTm+A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.2.tgz", + "integrity": "sha512-gbu+7B0YgUJ2nkdsRJrFFW6X7NTP44WlhiclHniUhxADQJH5Szt9mZ9hWnJPJ8YwOK5zUOSSlSvyzRf0u1DSBQ==", "dev": true, "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.1.1", - "@vitest/utils": "4.1.1", + "@vitest/spy": "4.1.2", + "@vitest/utils": "4.1.2", "chai": "^6.2.2", - "tinyrainbow": "^3.0.3" + "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/mocker": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.1.tgz", - "integrity": "sha512-h3BOylsfsCLPeceuCPAAJ+BvNwSENgJa4hXoXu4im0bs9Lyp4URc4JYK4pWLZ4pG/UQn7AT92K6IByi6rE6g3A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.2.tgz", + "integrity": "sha512-Ize4iQtEALHDttPRCmN+FKqOl2vxTiNUhzobQFFt/BM1lRUTG7zRCLOykG/6Vo4E4hnUdfVLo5/eqKPukcWW7Q==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.1.1", + "@vitest/spy": "4.1.2", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -1241,26 +1241,26 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.1.tgz", - "integrity": "sha512-GM+TEQN5WhOygr1lp7skeVjdLPqqWMHsfzXrcHAqZJi/lIVh63H0kaRCY8MDhNWikx19zBUK8ceaLB7X5AH9NQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.2.tgz", + "integrity": "sha512-dwQga8aejqeuB+TvXCMzSQemvV9hNEtDDpgUKDzOmNQayl2OG241PSWeJwKRH3CiC+sESrmoFd49rfnq7T4RnA==", "dev": true, "license": "MIT", "dependencies": { - "tinyrainbow": "^3.0.3" + "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.1.tgz", - "integrity": "sha512-f7+FPy75vN91QGWsITueq0gedwUZy1fLtHOCMeQpjs8jTekAHeKP80zfDEnhrleviLHzVSDXIWuCIOFn3D3f8A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.2.tgz", + "integrity": "sha512-Gr+FQan34CdiYAwpGJmQG8PgkyFVmARK8/xSijia3eTFgVfpcpztWLuP6FttGNfPLJhaZVP/euvujeNYar36OQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.1.1", + "@vitest/utils": "4.1.2", "pathe": "^2.0.3" }, "funding": { @@ -1268,14 +1268,14 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.1.tgz", - "integrity": "sha512-kMVSgcegWV2FibXEx9p9WIKgje58lcTbXgnJixfcg15iK8nzCXhmalL0ZLtTWLW9PH1+1NEDShiFFedB3tEgWg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.2.tgz", + "integrity": "sha512-g7yfUmxYS4mNxk31qbOYsSt2F4m1E02LFqO53Xpzg3zKMhLAPZAjjfyl9e6z7HrW6LvUdTwAQR3HHfLjpko16A==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.1", - "@vitest/utils": "4.1.1", + "@vitest/pretty-format": "4.1.2", + "@vitest/utils": "4.1.2", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -1284,9 +1284,9 @@ } }, "node_modules/@vitest/spy": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.1.tgz", - "integrity": "sha512-6Ti/KT5OVaiupdIZEuZN7l3CZcR0cxnxt70Z0//3CtwgObwA6jZhmVBA3yrXSVN3gmwjgd7oDNLlsXz526gpRA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.2.tgz", + "integrity": "sha512-DU4fBnbVCJGNBwVA6xSToNXrkZNSiw59H8tcuUspVMsBDBST4nfvsPsEHDHGtWRRnqBERBQu7TrTKskmjqTXKA==", "dev": true, "license": "MIT", "funding": { @@ -1294,15 +1294,15 @@ } }, "node_modules/@vitest/utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.1.tgz", - "integrity": "sha512-cNxAlaB3sHoCdL6pj6yyUXv9Gry1NHNg0kFTXdvSIZXLHsqKH7chiWOkwJ5s5+d/oMwcoG9T0bKU38JZWKusrQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.2.tgz", + "integrity": "sha512-xw2/TiX82lQHA06cgbqRKFb5lCAy3axQ4H4SoUFhUsg+wztiet+co86IAMDtF6Vm1hc7J6j09oh/rgDn+JdKIQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.1", + "@vitest/pretty-format": "4.1.2", "convert-source-map": "^2.0.0", - "tinyrainbow": "^3.0.3" + "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -2006,6 +2006,13 @@ "node": ">= 0.4" } }, + "node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "dev": true, + "license": "MIT" + }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", @@ -4758,19 +4765,19 @@ } }, "node_modules/vitest": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.1.tgz", - "integrity": "sha512-yF+o4POL41rpAzj5KVILUxm1GCjKnELvaqmU9TLLUbMfDzuN0UpUR9uaDs+mCtjPe+uYPksXDRLQGGPvj1cTmA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.2.tgz", + "integrity": "sha512-xjR1dMTVHlFLh98JE3i/f/WePqJsah4A0FK9cc8Ehp9Udk0AZk6ccpIZhh1qJ/yxVWRZ+Q54ocnD8TXmkhspGg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "4.1.1", - "@vitest/mocker": "4.1.1", - "@vitest/pretty-format": "4.1.1", - "@vitest/runner": "4.1.1", - "@vitest/snapshot": "4.1.1", - "@vitest/spy": "4.1.1", - "@vitest/utils": "4.1.1", + "@vitest/expect": "4.1.2", + "@vitest/mocker": "4.1.2", + "@vitest/pretty-format": "4.1.2", + "@vitest/runner": "4.1.2", + "@vitest/snapshot": "4.1.2", + "@vitest/spy": "4.1.2", + "@vitest/utils": "4.1.2", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", @@ -4781,7 +4788,7 @@ "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", - "tinyrainbow": "^3.0.3", + "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, @@ -4798,10 +4805,10 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.1.1", - "@vitest/browser-preview": "4.1.1", - "@vitest/browser-webdriverio": "4.1.1", - "@vitest/ui": "4.1.1", + "@vitest/browser-playwright": "4.1.2", + "@vitest/browser-preview": "4.1.2", + "@vitest/browser-webdriverio": "4.1.2", + "@vitest/ui": "4.1.2", "happy-dom": "*", "jsdom": "*", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -4839,13 +4846,6 @@ } } }, - "node_modules/vitest/node_modules/es-module-lexer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", - "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", - "dev": true, - "license": "MIT" - }, "node_modules/vitest/node_modules/picomatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", From 22eea067ab6d9324815f080e3fcf9b6e19537cad Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 6 Apr 2026 17:12:53 +0000 Subject: [PATCH 342/415] chore(deps): update dependency @modelcontextprotocol/sdk to v1.29.0 (#419) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2fd1729f..02b0bcd0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -665,9 +665,9 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.28.0.tgz", - "integrity": "sha512-gmloF+i+flI8ouQK7MWW4mOwuMh4RePBuPFAEPC6+pdqyWOUMDOixb6qZ69owLJpz6XmyllCouc4t8YWO+E2Nw==", + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz", + "integrity": "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==", "license": "MIT", "dependencies": { "@hono/node-server": "^1.19.9", From 13bc7e8778999eeb6294bf84e913931df43449e2 Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Tue, 7 Apr 2026 13:36:33 +0900 Subject: [PATCH 343/415] Upgrade @line/bot-sdk to v11 (#417) NO-ISSUE Upgrade @line/bot-sdk to v11 --- package-lock.json | 162 ++++------------------------------------------ package.json | 2 +- 2 files changed, 14 insertions(+), 150 deletions(-) diff --git a/package-lock.json b/package-lock.json index 02b0bcd0..071cdf08 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.1-local", "license": "Apache-2.0", "dependencies": { - "@line/bot-sdk": "^10.0.0", + "@line/bot-sdk": "^11.0.0", "@marp-team/marp-cli": "^4.2.3", "@marp-team/marp-core": "^4.1.0", "@modelcontextprotocol/sdk": "^1.8.0", @@ -582,18 +582,15 @@ "license": "MIT" }, "node_modules/@line/bot-sdk": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-10.6.0.tgz", - "integrity": "sha512-4hSpglL/G/cW2JCcohaYz/BS0uOSJNV9IEYdMm0EiPEvDLayoI2hGq2D86uYPQFD2gvgkyhmzdShpWLG3P5r3w==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-11.0.0.tgz", + "integrity": "sha512-3NZJjeFm2BikwVRgA8osIVbgKhuL0CzphQOdrB8okXIC40qMRE4RRfHFN3G8/qTb/34RtB95mD4J/KW5MD+b8g==", "license": "Apache-2.0", "dependencies": { "@types/node": "^24.0.0" }, "engines": { "node": ">=20" - }, - "optionalDependencies": { - "axios": "^1.7.4" } }, "node_modules/@marp-team/marp-cli": { @@ -1309,9 +1306,10 @@ } }, "node_modules/@xmldom/xmldom": { - "version": "0.9.8", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.8.tgz", - "integrity": "sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==", + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.9.tgz", + "integrity": "sha512-qycIHAucxy/LXAYIjmLmtQ8q9GPnMbnjG1KXhWm9o5sCr6pOYDATkMPiTNa6/v8eELyqOQ2FsEqeoFYmgv/gJg==", + "license": "MIT", "engines": { "node": ">=14.6" } @@ -1420,25 +1418,6 @@ "node": ">=4" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT", - "optional": true - }, - "node_modules/axios": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz", - "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "follow-redirects": "^1.15.11", - "form-data": "^4.0.5", - "proxy-from-env": "^1.1.0" - } - }, "node_modules/b4a": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", @@ -1716,19 +1695,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "optional": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/commander": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", @@ -1892,16 +1858,6 @@ "node": ">= 14" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -2025,22 +1981,6 @@ "node": ">= 0.4" } }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "license": "MIT", - "optional": true, - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/esbuild": { "version": "0.27.1", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.1.tgz", @@ -2488,67 +2428,6 @@ "node": ">= 0.8" } }, - "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "optional": true, - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "license": "MIT", - "optional": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/form-data/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/form-data/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "optional": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -2713,22 +2592,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "optional": true, - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -4322,11 +4185,12 @@ } }, "node_modules/speech-rule-engine": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.1.2.tgz", - "integrity": "sha512-S6ji+flMEga+1QU79NDbwZ8Ivf0S/MpupQQiIC0rTpU/ZTKgcajijJJb1OcByBQDjrXCN1/DJtGz4ZJeBMPGJw==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.1.3.tgz", + "integrity": "sha512-SBMgkuJYvP4F62daRfBNwYC2nXTEhNXAfsBZ/BB7Ly85/KnbnjmKM7/45ZrFbH6jIMiAliDUDPSZFUuXDvcg6A==", + "license": "Apache-2.0", "dependencies": { - "@xmldom/xmldom": "0.9.8", + "@xmldom/xmldom": "0.9.9", "commander": "13.1.0", "wicked-good-xpath": "1.3.0" }, diff --git a/package.json b/package.json index b41d66d8..f5c47273 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "homepage": "https://github.com/line/line-bot-mcp-server", "bugs": "https://github.com/line/line-bot-mcp-server/issues", "dependencies": { - "@line/bot-sdk": "^10.0.0", + "@line/bot-sdk": "^11.0.0", "@marp-team/marp-cli": "^4.2.3", "@marp-team/marp-core": "^4.1.0", "@modelcontextprotocol/sdk": "^1.8.0", From 0b60bc52423f08e412857b36ffea984db028236f Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Tue, 7 Apr 2026 15:35:18 +0900 Subject: [PATCH 344/415] Add test using dist/index.js (#418) NO-ISSUE Add test using dist/index.js --- package.json | 2 +- src/index.ts | 2 + test/e2e/pushTextMessage.e2e.test.ts | 147 +++++++++++++++++++++++++++ 3 files changed, 150 insertions(+), 1 deletion(-) create mode 100644 test/e2e/pushTextMessage.e2e.test.ts diff --git a/package.json b/package.json index f5c47273..54953dd4 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "typecheck:test": "tsc --project tsconfig.test.json", "release": "npm run build && npm publish --provenance --access public", "check:publint": "publint", - "test": "vitest run", + "test": "npm run build && vitest run", "test:watch": "vitest" }, "repository": { diff --git a/src/index.ts b/src/index.ts index 42e334a6..7efcbbe5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -40,9 +40,11 @@ const server = new McpServer({ const channelAccessToken = process.env.CHANNEL_ACCESS_TOKEN || ""; const destinationId = process.env.DESTINATION_USER_ID || ""; +const messagingApiBaseUrl = process.env.LINE_MESSAGING_API_BASE_URL; const messagingApiClient = new line.messagingApi.MessagingApiClient({ channelAccessToken: channelAccessToken, + baseURL: messagingApiBaseUrl, defaultHeaders: { "User-Agent": USER_AGENT, }, diff --git a/test/e2e/pushTextMessage.e2e.test.ts b/test/e2e/pushTextMessage.e2e.test.ts new file mode 100644 index 00000000..d9d1ce2e --- /dev/null +++ b/test/e2e/pushTextMessage.e2e.test.ts @@ -0,0 +1,147 @@ +import { createServer, type IncomingHttpHeaders, type Server } from "node:http"; +import { fileURLToPath } from "node:url"; +import { Client } from "@modelcontextprotocol/sdk/client/index.js"; +import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js"; +import { describe, expect, it } from "vitest"; +import { USER_AGENT } from "../../src/version.js"; + +type RecordedRequest = { + method: string; + url: string; + headers: IncomingHttpHeaders; + body: string; +}; + +const DIST_SERVER_ENTRY = fileURLToPath( + new URL("../../dist/index.js", import.meta.url), +); + +async function closeServer(server: Server): Promise { + if (!server.listening) { + return; + } + + await new Promise((resolve, reject) => { + server.close(error => { + if (error) { + reject(error); + return; + } + resolve(); + }); + }); +} + +async function startMockLineApiServer(): Promise<{ + baseUrl: string; + recordedRequests: RecordedRequest[]; + close: () => Promise; +}> { + const recordedRequests: RecordedRequest[] = []; + + const server = createServer((request, response) => { + const chunks: Buffer[] = []; + + request.on("data", chunk => { + chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)); + }); + + request.on("end", () => { + const body = Buffer.concat(chunks).toString("utf8"); + + recordedRequests.push({ + method: request.method ?? "", + url: request.url ?? "", + headers: request.headers, + body, + }); + + if (request.method === "POST" && request.url === "/v2/bot/message/push") { + response.writeHead(200, { "content-type": "application/json" }); + response.end(JSON.stringify({})); + return; + } + + response.writeHead(404, { "content-type": "application/json" }); + response.end(JSON.stringify({ message: "Not found" })); + }); + }); + + await new Promise((resolve, reject) => { + server.once("error", reject); + server.listen(0, "127.0.0.1", () => { + server.off("error", reject); + resolve(); + }); + }); + + const address = server.address(); + if (!address || typeof address === "string") { + await closeServer(server); + throw new Error("Failed to determine mock LINE API server address"); + } + + return { + baseUrl: `http://127.0.0.1:${address.port}`, + recordedRequests, + close: () => closeServer(server), + }; +} + +describe("push_text_message E2E with localhost mock LINE API", () => { + it( + "routes the tool call through MCP stdio and sends the HTTP request to the mock server", + { timeout: 30_000 }, + async () => { + const mockApi = await startMockLineApiServer(); + const client = new Client({ name: "test-client", version: "0.0.1" }); + + try { + const transport = new StdioClientTransport({ + command: process.execPath, + args: [DIST_SERVER_ENTRY], + env: { + CHANNEL_ACCESS_TOKEN: "test-channel-access-token", + DESTINATION_USER_ID: "U_TEST_DESTINATION", + LINE_MESSAGING_API_BASE_URL: mockApi.baseUrl, + }, + }); + + await client.connect(transport); + + const result = await client.callTool({ + name: "push_text_message", + arguments: { + message: { type: "text", text: "hello from e2e" }, + }, + }); + + expect(result.isError).toBeFalsy(); + + const text = ( + result.content as Array<{ type: string; text: string }> + )[0].text; + expect(JSON.parse(text)).toEqual({}); + + expect(mockApi.recordedRequests).toHaveLength(1); + expect(mockApi.recordedRequests[0]).toMatchObject({ + method: "POST", + url: "/v2/bot/message/push", + }); + expect(mockApi.recordedRequests[0].headers.authorization).toBe( + "Bearer test-channel-access-token", + ); + expect(mockApi.recordedRequests[0].headers["user-agent"]).toBe( + USER_AGENT, + ); + expect(JSON.parse(mockApi.recordedRequests[0].body)).toEqual({ + to: "U_TEST_DESTINATION", + messages: [{ type: "text", text: "hello from e2e" }], + }); + } finally { + await client.close().catch(() => undefined); + await mockApi.close(); + } + }, + ); +}); From eb3bdf800cc078f3dc1e2f0fb12fa04a6e874ef7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 Apr 2026 09:55:03 +0000 Subject: [PATCH 345/415] Update dependency @types/node to v24.12.1 (#421) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 071cdf08..c6e902bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1174,9 +1174,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.12.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.0.tgz", - "integrity": "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==", + "version": "24.12.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.1.tgz", + "integrity": "sha512-v6Ct1W1Fdz7xg5jYCg4FTrbNcIqzds2jv/HL6+5Rs/Cyjf0oljAgW59zvDZXyYG7nt9MLrAFJv9erP/fLjwt+g==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" From 6e085036318122f265997169d7f1b16703c85329 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Apr 2026 13:09:50 +0000 Subject: [PATCH 346/415] Update dependency @types/node to v24.12.2 (#422) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c6e902bf..c6bfef86 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1174,9 +1174,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.12.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.1.tgz", - "integrity": "sha512-v6Ct1W1Fdz7xg5jYCg4FTrbNcIqzds2jv/HL6+5Rs/Cyjf0oljAgW59zvDZXyYG7nt9MLrAFJv9erP/fLjwt+g==", + "version": "24.12.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.2.tgz", + "integrity": "sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" From b3d2a5bd9e637c201bd6738dedaa21d91eecea79 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 Apr 2026 10:33:24 +0000 Subject: [PATCH 347/415] Update dependency vitest to v4.1.3 (#423) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 92 +++++++++++++++++++++++++---------------------- 1 file changed, 50 insertions(+), 42 deletions(-) diff --git a/package-lock.json b/package-lock.json index c6bfef86..3f9d1d31 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1193,16 +1193,16 @@ } }, "node_modules/@vitest/expect": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.2.tgz", - "integrity": "sha512-gbu+7B0YgUJ2nkdsRJrFFW6X7NTP44WlhiclHniUhxADQJH5Szt9mZ9hWnJPJ8YwOK5zUOSSlSvyzRf0u1DSBQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.3.tgz", + "integrity": "sha512-CW8Q9KMtXDGHj0vCsqui0M5KqRsu0zm0GNDW7Gd3U7nZ2RFpPKSCpeCXoT+/+5zr1TNlsoQRDEz+LzZUyq6gnQ==", "dev": true, "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.1.2", - "@vitest/utils": "4.1.2", + "@vitest/spy": "4.1.3", + "@vitest/utils": "4.1.3", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" }, @@ -1211,13 +1211,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.2.tgz", - "integrity": "sha512-Ize4iQtEALHDttPRCmN+FKqOl2vxTiNUhzobQFFt/BM1lRUTG7zRCLOykG/6Vo4E4hnUdfVLo5/eqKPukcWW7Q==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.3.tgz", + "integrity": "sha512-XN3TrycitDQSzGRnec/YWgoofkYRhouyVQj4YNsJ5r/STCUFqMrP4+oxEv3e7ZbLi4og5kIHrZwekDJgw6hcjw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.1.2", + "@vitest/spy": "4.1.3", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -1238,9 +1238,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.2.tgz", - "integrity": "sha512-dwQga8aejqeuB+TvXCMzSQemvV9hNEtDDpgUKDzOmNQayl2OG241PSWeJwKRH3CiC+sESrmoFd49rfnq7T4RnA==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.3.tgz", + "integrity": "sha512-hYqqwuMbpkkBodpRh4k4cQSOELxXky1NfMmQvOfKvV8zQHz8x8Dla+2wzElkMkBvSAJX5TRGHJAQvK0TcOafwg==", "dev": true, "license": "MIT", "dependencies": { @@ -1251,13 +1251,13 @@ } }, "node_modules/@vitest/runner": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.2.tgz", - "integrity": "sha512-Gr+FQan34CdiYAwpGJmQG8PgkyFVmARK8/xSijia3eTFgVfpcpztWLuP6FttGNfPLJhaZVP/euvujeNYar36OQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.3.tgz", + "integrity": "sha512-VwgOz5MmT0KhlUj40h02LWDpUBVpflZ/b7xZFA25F29AJzIrE+SMuwzFf0b7t4EXdwRNX61C3B6auIXQTR3ttA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.1.2", + "@vitest/utils": "4.1.3", "pathe": "^2.0.3" }, "funding": { @@ -1265,14 +1265,14 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.2.tgz", - "integrity": "sha512-g7yfUmxYS4mNxk31qbOYsSt2F4m1E02LFqO53Xpzg3zKMhLAPZAjjfyl9e6z7HrW6LvUdTwAQR3HHfLjpko16A==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.3.tgz", + "integrity": "sha512-9l+k/J9KG5wPJDX9BcFFzhhwNjwkRb8RsnYhaT1vPY7OufxmQFc9sZzScRCPTiETzl37mrIWVY9zxzmdVeJwDQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.2", - "@vitest/utils": "4.1.2", + "@vitest/pretty-format": "4.1.3", + "@vitest/utils": "4.1.3", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -1281,9 +1281,9 @@ } }, "node_modules/@vitest/spy": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.2.tgz", - "integrity": "sha512-DU4fBnbVCJGNBwVA6xSToNXrkZNSiw59H8tcuUspVMsBDBST4nfvsPsEHDHGtWRRnqBERBQu7TrTKskmjqTXKA==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.3.tgz", + "integrity": "sha512-ujj5Uwxagg4XUIfAUyRQxAg631BP6e9joRiN99mr48Bg9fRs+5mdUElhOoZ6rP5mBr8Bs3lmrREnkrQWkrsTCw==", "dev": true, "license": "MIT", "funding": { @@ -1291,13 +1291,13 @@ } }, "node_modules/@vitest/utils": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.2.tgz", - "integrity": "sha512-xw2/TiX82lQHA06cgbqRKFb5lCAy3axQ4H4SoUFhUsg+wztiet+co86IAMDtF6Vm1hc7J6j09oh/rgDn+JdKIQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.3.tgz", + "integrity": "sha512-Pc/Oexse/khOWsGB+w3q4yzA4te7W4gpZZAvk+fr8qXfTURZUMj5i7kuxsNK5mP/dEB6ao3jfr0rs17fHhbHdw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.2", + "@vitest/pretty-format": "4.1.3", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" }, @@ -4629,19 +4629,19 @@ } }, "node_modules/vitest": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.2.tgz", - "integrity": "sha512-xjR1dMTVHlFLh98JE3i/f/WePqJsah4A0FK9cc8Ehp9Udk0AZk6ccpIZhh1qJ/yxVWRZ+Q54ocnD8TXmkhspGg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.3.tgz", + "integrity": "sha512-DBc4Tx0MPNsqb9isoyOq00lHftVx/KIU44QOm2q59npZyLUkENn8TMFsuzuO+4U2FUa9rgbbPt3udrP25GcjXw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "4.1.2", - "@vitest/mocker": "4.1.2", - "@vitest/pretty-format": "4.1.2", - "@vitest/runner": "4.1.2", - "@vitest/snapshot": "4.1.2", - "@vitest/spy": "4.1.2", - "@vitest/utils": "4.1.2", + "@vitest/expect": "4.1.3", + "@vitest/mocker": "4.1.3", + "@vitest/pretty-format": "4.1.3", + "@vitest/runner": "4.1.3", + "@vitest/snapshot": "4.1.3", + "@vitest/spy": "4.1.3", + "@vitest/utils": "4.1.3", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", @@ -4669,10 +4669,12 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.1.2", - "@vitest/browser-preview": "4.1.2", - "@vitest/browser-webdriverio": "4.1.2", - "@vitest/ui": "4.1.2", + "@vitest/browser-playwright": "4.1.3", + "@vitest/browser-preview": "4.1.3", + "@vitest/browser-webdriverio": "4.1.3", + "@vitest/coverage-istanbul": "4.1.3", + "@vitest/coverage-v8": "4.1.3", + "@vitest/ui": "4.1.3", "happy-dom": "*", "jsdom": "*", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -4696,6 +4698,12 @@ "@vitest/browser-webdriverio": { "optional": true }, + "@vitest/coverage-istanbul": { + "optional": true + }, + "@vitest/coverage-v8": { + "optional": true + }, "@vitest/ui": { "optional": true }, From b967a14382a7f9818d39343576891c9b162cee41 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 16 Apr 2026 18:48:23 +0900 Subject: [PATCH 348/415] Update dependency vitest to v4.1.4 (#424) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 88 +++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3f9d1d31..5a6a129b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1193,16 +1193,16 @@ } }, "node_modules/@vitest/expect": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.3.tgz", - "integrity": "sha512-CW8Q9KMtXDGHj0vCsqui0M5KqRsu0zm0GNDW7Gd3U7nZ2RFpPKSCpeCXoT+/+5zr1TNlsoQRDEz+LzZUyq6gnQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.4.tgz", + "integrity": "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww==", "dev": true, "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.1.3", - "@vitest/utils": "4.1.3", + "@vitest/spy": "4.1.4", + "@vitest/utils": "4.1.4", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" }, @@ -1211,13 +1211,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.3.tgz", - "integrity": "sha512-XN3TrycitDQSzGRnec/YWgoofkYRhouyVQj4YNsJ5r/STCUFqMrP4+oxEv3e7ZbLi4og5kIHrZwekDJgw6hcjw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.4.tgz", + "integrity": "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.1.3", + "@vitest/spy": "4.1.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -1238,9 +1238,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.3.tgz", - "integrity": "sha512-hYqqwuMbpkkBodpRh4k4cQSOELxXky1NfMmQvOfKvV8zQHz8x8Dla+2wzElkMkBvSAJX5TRGHJAQvK0TcOafwg==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.4.tgz", + "integrity": "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A==", "dev": true, "license": "MIT", "dependencies": { @@ -1251,13 +1251,13 @@ } }, "node_modules/@vitest/runner": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.3.tgz", - "integrity": "sha512-VwgOz5MmT0KhlUj40h02LWDpUBVpflZ/b7xZFA25F29AJzIrE+SMuwzFf0b7t4EXdwRNX61C3B6auIXQTR3ttA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.4.tgz", + "integrity": "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.1.3", + "@vitest/utils": "4.1.4", "pathe": "^2.0.3" }, "funding": { @@ -1265,14 +1265,14 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.3.tgz", - "integrity": "sha512-9l+k/J9KG5wPJDX9BcFFzhhwNjwkRb8RsnYhaT1vPY7OufxmQFc9sZzScRCPTiETzl37mrIWVY9zxzmdVeJwDQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.4.tgz", + "integrity": "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.3", - "@vitest/utils": "4.1.3", + "@vitest/pretty-format": "4.1.4", + "@vitest/utils": "4.1.4", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -1281,9 +1281,9 @@ } }, "node_modules/@vitest/spy": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.3.tgz", - "integrity": "sha512-ujj5Uwxagg4XUIfAUyRQxAg631BP6e9joRiN99mr48Bg9fRs+5mdUElhOoZ6rP5mBr8Bs3lmrREnkrQWkrsTCw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.4.tgz", + "integrity": "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ==", "dev": true, "license": "MIT", "funding": { @@ -1291,13 +1291,13 @@ } }, "node_modules/@vitest/utils": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.3.tgz", - "integrity": "sha512-Pc/Oexse/khOWsGB+w3q4yzA4te7W4gpZZAvk+fr8qXfTURZUMj5i7kuxsNK5mP/dEB6ao3jfr0rs17fHhbHdw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.4.tgz", + "integrity": "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.3", + "@vitest/pretty-format": "4.1.4", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" }, @@ -4629,19 +4629,19 @@ } }, "node_modules/vitest": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.3.tgz", - "integrity": "sha512-DBc4Tx0MPNsqb9isoyOq00lHftVx/KIU44QOm2q59npZyLUkENn8TMFsuzuO+4U2FUa9rgbbPt3udrP25GcjXw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.4.tgz", + "integrity": "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "4.1.3", - "@vitest/mocker": "4.1.3", - "@vitest/pretty-format": "4.1.3", - "@vitest/runner": "4.1.3", - "@vitest/snapshot": "4.1.3", - "@vitest/spy": "4.1.3", - "@vitest/utils": "4.1.3", + "@vitest/expect": "4.1.4", + "@vitest/mocker": "4.1.4", + "@vitest/pretty-format": "4.1.4", + "@vitest/runner": "4.1.4", + "@vitest/snapshot": "4.1.4", + "@vitest/spy": "4.1.4", + "@vitest/utils": "4.1.4", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", @@ -4669,12 +4669,12 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.1.3", - "@vitest/browser-preview": "4.1.3", - "@vitest/browser-webdriverio": "4.1.3", - "@vitest/coverage-istanbul": "4.1.3", - "@vitest/coverage-v8": "4.1.3", - "@vitest/ui": "4.1.3", + "@vitest/browser-playwright": "4.1.4", + "@vitest/browser-preview": "4.1.4", + "@vitest/browser-webdriverio": "4.1.4", + "@vitest/coverage-istanbul": "4.1.4", + "@vitest/coverage-v8": "4.1.4", + "@vitest/ui": "4.1.4", "happy-dom": "*", "jsdom": "*", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" From 062b65b9fefec0d6c8ae92f6f1d6b41f7410c07c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Apr 2026 02:06:05 +0000 Subject: [PATCH 349/415] Update actions/github-script action to v9 (#425) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/check-eol-newrelease.yml | 2 +- .github/workflows/create-draft-release.yml | 6 +++--- .github/workflows/npm-audit.yml | 2 +- .github/workflows/release.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/check-eol-newrelease.yml b/.github/workflows/check-eol-newrelease.yml index b5bf199f..5b827e73 100644 --- a/.github/workflows/check-eol-newrelease.yml +++ b/.github/workflows/check-eol-newrelease.yml @@ -18,7 +18,7 @@ jobs: uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Run EoL & NewRelease check - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 with: script: | const checkEolAndNewReleases = require('.github/scripts/check-eol-newrelease.cjs'); diff --git a/.github/workflows/create-draft-release.yml b/.github/workflows/create-draft-release.yml index 81dbb091..27639d5d 100644 --- a/.github/workflows/create-draft-release.yml +++ b/.github/workflows/create-draft-release.yml @@ -48,7 +48,7 @@ jobs: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Fetch Latest Release id: get-latest-release - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 with: script: | const latestRelease = await github.rest.repos.getLatestRelease({ @@ -64,7 +64,7 @@ jobs: - name: Calculate New Version id: calculate-version - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 with: script: | const latestTag = '${{ steps.get-latest-release.outputs.latest_tag }}'; @@ -85,7 +85,7 @@ jobs: - name: Generate Release Notes id: generate-release-notes - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 with: script: | const { data: releaseNotes } = await github.rest.repos.generateReleaseNotes({ diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index 0668cab8..695aa49e 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -30,7 +30,7 @@ jobs: - name: Create or update reminder issue if: steps.audit.outcome == 'failure' - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 env: TZ: 'Asia/Tokyo' with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7dc6b61d..3902b53c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -39,7 +39,7 @@ jobs: - name: Create GitHub Issue on Failure if: failure() - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 with: script: | const { owner, repo } = context.repo; From d641be3a92bc769b65663b1bc08998ffd9d9af6c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Apr 2026 06:15:00 +0000 Subject: [PATCH 350/415] Update dependency prettier to v3.8.2 (#426) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5a6a129b..37e34f27 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ }, "devDependencies": { "@types/node": "^24.9.2", - "prettier": "3.8.1", + "prettier": "3.8.2", "publint": "0.3.18", "shx": "^0.4.0", "tsx": "^4.19.3", @@ -3407,9 +3407,9 @@ } }, "node_modules/prettier": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.2.tgz", + "integrity": "sha512-8c3mgTe0ASwWAJK+78dpviD+A8EqhndQPUBpNUIPt6+xWlIigCwfN01lWr9MAede4uqXGTEKeQWTvzb3vjia0Q==", "dev": true, "license": "MIT", "bin": { diff --git a/package.json b/package.json index 54953dd4..d5f1f88f 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ }, "devDependencies": { "@types/node": "^24.9.2", - "prettier": "3.8.1", + "prettier": "3.8.2", "publint": "0.3.18", "shx": "^0.4.0", "tsx": "^4.19.3", From ffe4ad9ce37a1eb05360dad54e7027c32a04bfb7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Apr 2026 03:38:37 +0000 Subject: [PATCH 351/415] Update dependency prettier to v3.8.3 (#430) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 37e34f27..31a8ba04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ }, "devDependencies": { "@types/node": "^24.9.2", - "prettier": "3.8.2", + "prettier": "3.8.3", "publint": "0.3.18", "shx": "^0.4.0", "tsx": "^4.19.3", @@ -3407,9 +3407,9 @@ } }, "node_modules/prettier": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.2.tgz", - "integrity": "sha512-8c3mgTe0ASwWAJK+78dpviD+A8EqhndQPUBpNUIPt6+xWlIigCwfN01lWr9MAede4uqXGTEKeQWTvzb3vjia0Q==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", + "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", "dev": true, "license": "MIT", "bin": { diff --git a/package.json b/package.json index d5f1f88f..7858078a 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ }, "devDependencies": { "@types/node": "^24.9.2", - "prettier": "3.8.2", + "prettier": "3.8.3", "publint": "0.3.18", "shx": "^0.4.0", "tsx": "^4.19.3", From bd9bd2f9c83385c8b4f2fa15fd9375fb3a7f9486 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Apr 2026 18:46:17 +0000 Subject: [PATCH 352/415] Update dependency puppeteer to v24.41.0 (#431) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 31a8ba04..b4a0efd8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1868,9 +1868,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1581282", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1581282.tgz", - "integrity": "sha512-nv7iKtNZQshSW2hKzYNr46nM/Cfh5SEvE2oV0/SEGgc9XupIY5ggf84Cz8eJIkBce7S3bmTAauFD6aysMpnqsQ==", + "version": "0.0.1595872", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1595872.tgz", + "integrity": "sha512-kRfgp8vWVjBu/fbYCiVFiOqsCk3CrMKEo3WbgGT2NXK2dG7vawWPBljixajVgGK9II8rDO9G0oD0zLt3I1daRg==", "license": "BSD-3-Clause" }, "node_modules/dunder-proto": { @@ -3511,17 +3511,17 @@ } }, "node_modules/puppeteer": { - "version": "24.40.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.40.0.tgz", - "integrity": "sha512-IxQbDq93XHVVLWHrAkFP7F7iHvb9o0mgfsSIMlhHb+JM+JjM1V4v4MNSQfcRWJopx9dsNOr9adYv0U5fm9BJBQ==", + "version": "24.41.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.41.0.tgz", + "integrity": "sha512-W6Fk0J3TPjjtwjXOyR/qf+YaL0H/Uq8HIgHcXG4mNM/IgbKMCH/HPyK0Fi2qbTU/QpSl9bCte2yBpGHKejTpIw==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.13.0", "chromium-bidi": "14.0.0", "cosmiconfig": "^9.0.0", - "devtools-protocol": "0.0.1581282", - "puppeteer-core": "24.40.0", + "devtools-protocol": "0.0.1595872", + "puppeteer-core": "24.41.0", "typed-query-selector": "^2.12.1" }, "bin": { @@ -3532,15 +3532,15 @@ } }, "node_modules/puppeteer-core": { - "version": "24.40.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.40.0.tgz", - "integrity": "sha512-MWL3XbUCfVgGR0gRsidzT6oKJT2QydPLhMITU6HoVWiiv4gkb6gJi3pcdAa8q4HwjBTbqISOWVP4aJiiyUJvag==", + "version": "24.41.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.41.0.tgz", + "integrity": "sha512-rLIUri7E/NQ3APSEYCCozaSJx0u8Tu9wxO6BJwnvXmIgILSK3L0TombaVh3izp1njAGrO6H2ru0hcIrLF+gWLw==", "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.13.0", "chromium-bidi": "14.0.0", "debug": "^4.4.3", - "devtools-protocol": "0.0.1581282", + "devtools-protocol": "0.0.1595872", "typed-query-selector": "^2.12.1", "webdriver-bidi-protocol": "0.4.1", "ws": "^8.19.0" From 2ccf20ddb80f53d8cc0acd4160a31cb13ae4b6d4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Apr 2026 18:31:52 +0000 Subject: [PATCH 353/415] Update Node.js to v24.15.0 (#433) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 523e0dab..99ed8351 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:24.14-alpine AS builder +FROM node:24.15-alpine AS builder COPY . /app From 7dcb762e5e64cf93e47688762b310a768f4a987b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 24 Apr 2026 01:39:03 +0000 Subject: [PATCH 354/415] Update dependency typescript to v6.0.3 (#434) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b4a0efd8..3370c2ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4474,9 +4474,9 @@ "license": "MIT" }, "node_modules/typescript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz", - "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "devOptional": true, "license": "Apache-2.0", "bin": { From 8e3b3e0c97d1b31dcdf4e40e98f67f8e20f4daf0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2026 06:00:30 +0000 Subject: [PATCH 355/415] Update actions/setup-node action to v6.4.0 (#435) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/npm-audit.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index 695aa49e..2a72f523 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -17,7 +17,7 @@ jobs: if: github.repository == 'line/line-bot-mcp-server' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 + - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: '24' # Enable this when setup-node v5 is released diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3902b53c..ffcad345 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 # Setup .npmrc file to publish to GitHub Packages - - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 + - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: 24 registry-url: 'https://registry.npmjs.org' diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c4e71b1e..b5359f4f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,7 +27,7 @@ jobs: with: submodules: true - name: Setup Node.js - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: ${{ matrix.node }} cache: 'npm' From e00abf9c2e5dc2af079e3d14228ba1c1dadb8197 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2026 22:25:36 +0900 Subject: [PATCH 356/415] Update dependency puppeteer to v24.42.0 (#436) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3370c2ef..de003be6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3511,9 +3511,9 @@ } }, "node_modules/puppeteer": { - "version": "24.41.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.41.0.tgz", - "integrity": "sha512-W6Fk0J3TPjjtwjXOyR/qf+YaL0H/Uq8HIgHcXG4mNM/IgbKMCH/HPyK0Fi2qbTU/QpSl9bCte2yBpGHKejTpIw==", + "version": "24.42.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.42.0.tgz", + "integrity": "sha512-94MoPfFp2eY3eYIMdINkez4IOP5TMHntlZbVx06fHlQTtiQiYgaY0L2Zzfod8PVUkPqP7m3Qlre2v8YS8cudPA==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -3521,7 +3521,7 @@ "chromium-bidi": "14.0.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1595872", - "puppeteer-core": "24.41.0", + "puppeteer-core": "24.42.0", "typed-query-selector": "^2.12.1" }, "bin": { @@ -3532,9 +3532,9 @@ } }, "node_modules/puppeteer-core": { - "version": "24.41.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.41.0.tgz", - "integrity": "sha512-rLIUri7E/NQ3APSEYCCozaSJx0u8Tu9wxO6BJwnvXmIgILSK3L0TombaVh3izp1njAGrO6H2ru0hcIrLF+gWLw==", + "version": "24.42.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.42.0.tgz", + "integrity": "sha512-T4zXokk/izH01fYPhyyev1A4piWiOKrYq7CUFpdoYQxmOnXoV6YjUabmfIjCYkNspSoAXIxRid3Tw+Vg0fthYg==", "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.13.0", From a2779337c3dd02dcfb570f59a2715e77e61bc697 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 28 Apr 2026 15:09:33 +0000 Subject: [PATCH 357/415] Update dependency vitest to v4.1.5 (#440) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 88 +++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/package-lock.json b/package-lock.json index de003be6..3dfbdc73 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1193,16 +1193,16 @@ } }, "node_modules/@vitest/expect": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.4.tgz", - "integrity": "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.5.tgz", + "integrity": "sha512-PWBaRY5JoKuRnHlUHfpV/KohFylaDZTupcXN1H9vYryNLOnitSw60Mw9IAE2r67NbwwzBw/Cc/8q9BK3kIX8Kw==", "dev": true, "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.1.4", - "@vitest/utils": "4.1.4", + "@vitest/spy": "4.1.5", + "@vitest/utils": "4.1.5", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" }, @@ -1211,13 +1211,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.4.tgz", - "integrity": "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.5.tgz", + "integrity": "sha512-/x2EmFC4mT4NNzqvC3fmesuV97w5FC903KPmey4gsnJiMQ3Be1IlDKVaDaG8iqaLFHqJ2FVEkxZk5VmeLjIItw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.1.4", + "@vitest/spy": "4.1.5", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -1238,9 +1238,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.4.tgz", - "integrity": "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.5.tgz", + "integrity": "sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==", "dev": true, "license": "MIT", "dependencies": { @@ -1251,13 +1251,13 @@ } }, "node_modules/@vitest/runner": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.4.tgz", - "integrity": "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.5.tgz", + "integrity": "sha512-2D+o7Pr82IEO46YPpoA/YU0neeyr6FTerQb5Ro7BUnBuv6NQtT/kmVnczngiMEBhzgqz2UZYl5gArejsyERDSQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.1.4", + "@vitest/utils": "4.1.5", "pathe": "^2.0.3" }, "funding": { @@ -1265,14 +1265,14 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.4.tgz", - "integrity": "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.5.tgz", + "integrity": "sha512-zypXEt4KH/XgKGPUz4eC2AvErYx0My5hfL8oDb1HzGFpEk1P62bxSohdyOmvz+d9UJwanI68MKwr2EquOaOgMQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.4", - "@vitest/utils": "4.1.4", + "@vitest/pretty-format": "4.1.5", + "@vitest/utils": "4.1.5", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -1281,9 +1281,9 @@ } }, "node_modules/@vitest/spy": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.4.tgz", - "integrity": "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.5.tgz", + "integrity": "sha512-2lNOsh6+R2Idnf1TCZqSwYlKN2E/iDlD8sgU59kYVl+OMDmvldO1VDk39smRfpUNwYpNRVn3w4YfuC7KfbBnkQ==", "dev": true, "license": "MIT", "funding": { @@ -1291,13 +1291,13 @@ } }, "node_modules/@vitest/utils": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.4.tgz", - "integrity": "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.5.tgz", + "integrity": "sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.4", + "@vitest/pretty-format": "4.1.5", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" }, @@ -4629,19 +4629,19 @@ } }, "node_modules/vitest": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.4.tgz", - "integrity": "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.5.tgz", + "integrity": "sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "4.1.4", - "@vitest/mocker": "4.1.4", - "@vitest/pretty-format": "4.1.4", - "@vitest/runner": "4.1.4", - "@vitest/snapshot": "4.1.4", - "@vitest/spy": "4.1.4", - "@vitest/utils": "4.1.4", + "@vitest/expect": "4.1.5", + "@vitest/mocker": "4.1.5", + "@vitest/pretty-format": "4.1.5", + "@vitest/runner": "4.1.5", + "@vitest/snapshot": "4.1.5", + "@vitest/spy": "4.1.5", + "@vitest/utils": "4.1.5", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", @@ -4669,12 +4669,12 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.1.4", - "@vitest/browser-preview": "4.1.4", - "@vitest/browser-webdriverio": "4.1.4", - "@vitest/coverage-istanbul": "4.1.4", - "@vitest/coverage-v8": "4.1.4", - "@vitest/ui": "4.1.4", + "@vitest/browser-playwright": "4.1.5", + "@vitest/browser-preview": "4.1.5", + "@vitest/browser-webdriverio": "4.1.5", + "@vitest/coverage-istanbul": "4.1.5", + "@vitest/coverage-v8": "4.1.5", + "@vitest/ui": "4.1.5", "happy-dom": "*", "jsdom": "*", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" From d79c313ed63c7670d30fe625a9e2b784de660d7b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 12 May 2026 16:15:20 +0000 Subject: [PATCH 358/415] Update dependency publint to v0.3.19 (#445) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3dfbdc73..ec3649c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "devDependencies": { "@types/node": "^24.9.2", "prettier": "3.8.3", - "publint": "0.3.18", + "publint": "0.3.19", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^6.0.2", @@ -3470,9 +3470,9 @@ "license": "MIT" }, "node_modules/publint": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/publint/-/publint-0.3.18.tgz", - "integrity": "sha512-JRJFeBTrfx4qLwEuGFPk+haJOJN97KnPuK01yj+4k/Wj5BgoOK5uNsivporiqBjk2JDaslg7qJOhGRnpltGeog==", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/publint/-/publint-0.3.19.tgz", + "integrity": "sha512-J3p4GOocCRFyLLFRzGfIhAwWgk0Kkcdxj5iFspFvCYbyiJs5IhCM8gsIkcNeQL+tdpV671RtJQiTFSUKhl1Wjg==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 7858078a..87a65fac 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "devDependencies": { "@types/node": "^24.9.2", "prettier": "3.8.3", - "publint": "0.3.18", + "publint": "0.3.19", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^6.0.2", From 78f3b4679c09ed2f3b4c69f42d6d0b4292cf8bbb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 12 May 2026 16:16:05 +0000 Subject: [PATCH 359/415] Update npm tool constraint to v11.13.0 (#446) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- renovate.json5 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/renovate.json5 b/renovate.json5 index 6e34d1a9..947f1b72 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -16,6 +16,6 @@ ], // To prevent libraries in optionalDependencies from being removed from the lock file constraints: { - npm: "11.6.0" + npm: "11.13.0" } } From 048c5b03a9eae021f336fa55a47c3df22fba54e8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 13 May 2026 08:40:49 +0000 Subject: [PATCH 360/415] Update dependency puppeteer to v24.43.0 (#447) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 52 +++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/package-lock.json b/package-lock.json index ec3649c8..5e47ac46 100644 --- a/package-lock.json +++ b/package-lock.json @@ -753,9 +753,9 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.13.0.tgz", - "integrity": "sha512-46BZJYJjc/WwmKjsvDFykHtXrtomsCIrwYQPOP7VfMJoZY2bsDF9oROBABR3paDjDcmkUye1Pb1BqdcdiipaWA==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.13.1.tgz", + "integrity": "sha512-zmS4RTK9fbrc++WlAJhxYbfz3IjDeOmkK/CwwbLmk7ydfS9e2CiEeRJHEPvjDVElO/bwXbidwGA37Bsm6LzCnQ==", "license": "Apache-2.0", "dependencies": { "debug": "^4.4.3", @@ -1868,9 +1868,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1595872", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1595872.tgz", - "integrity": "sha512-kRfgp8vWVjBu/fbYCiVFiOqsCk3CrMKEo3WbgGT2NXK2dG7vawWPBljixajVgGK9II8rDO9G0oD0zLt3I1daRg==", + "version": "0.0.1608973", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1608973.tgz", + "integrity": "sha512-Tpm17fxYzt+J7VrGdc1k8YdRqS3YV7se/M6KeemEqvUbq/n7At1rWVuXMxQgpWkdwSdIEKYbU//Bve+Shm4YNQ==", "license": "BSD-3-Clause" }, "node_modules/dunder-proto": { @@ -3511,18 +3511,18 @@ } }, "node_modules/puppeteer": { - "version": "24.42.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.42.0.tgz", - "integrity": "sha512-94MoPfFp2eY3eYIMdINkez4IOP5TMHntlZbVx06fHlQTtiQiYgaY0L2Zzfod8PVUkPqP7m3Qlre2v8YS8cudPA==", + "version": "24.43.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.43.0.tgz", + "integrity": "sha512-DRnMFz+J3s4lFUQcjqKl0/7h0jzlCZuUFU9lNjtKrnMl5WI1RwCaIItpHVu9empuPyUreYueN0sUW3/pnfdqsg==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.13.0", + "@puppeteer/browsers": "2.13.1", "chromium-bidi": "14.0.0", "cosmiconfig": "^9.0.0", - "devtools-protocol": "0.0.1595872", - "puppeteer-core": "24.42.0", - "typed-query-selector": "^2.12.1" + "devtools-protocol": "0.0.1608973", + "puppeteer-core": "24.43.0", + "typed-query-selector": "^2.12.2" }, "bin": { "puppeteer": "lib/cjs/puppeteer/node/cli.js" @@ -3532,18 +3532,18 @@ } }, "node_modules/puppeteer-core": { - "version": "24.42.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.42.0.tgz", - "integrity": "sha512-T4zXokk/izH01fYPhyyev1A4piWiOKrYq7CUFpdoYQxmOnXoV6YjUabmfIjCYkNspSoAXIxRid3Tw+Vg0fthYg==", + "version": "24.43.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.43.0.tgz", + "integrity": "sha512-cCRNXsUlhyPoKDz6+TiSpfZpRS3mD6Y1YFKhkdr6ik6TMfuJb7fAtXq9ThUFc4sphxObDk3BuAvdxc1Y6YOnqQ==", "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.13.0", + "@puppeteer/browsers": "2.13.1", "chromium-bidi": "14.0.0", "debug": "^4.4.3", - "devtools-protocol": "0.0.1595872", - "typed-query-selector": "^2.12.1", + "devtools-protocol": "0.0.1608973", + "typed-query-selector": "^2.12.2", "webdriver-bidi-protocol": "0.4.1", - "ws": "^8.19.0" + "ws": "^8.20.0" }, "engines": { "node": ">=18" @@ -4468,9 +4468,9 @@ } }, "node_modules/typed-query-selector": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.1.tgz", - "integrity": "sha512-uzR+FzI8qrUEIu96oaeBJmd9E7CFEiQ3goA5qCVgc4s5llSubcfGHq9yUstZx/k4s9dXHVKsE35YWoFyvEqEHA==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.2.tgz", + "integrity": "sha512-EOPFbyIub4ngnEdqi2yOcNeDLaX/0jcE1JoAXQDDMIthap7FoN795lc/SHfIq2d416VufXpM8z/lD+WRm2gfOQ==", "license": "MIT" }, "node_modules/typescript": { @@ -4797,9 +4797,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", - "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", "license": "MIT", "engines": { "node": ">=10.0.0" From fb187492aab9baa37d5f16f6b5a49171b1852584 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 13 May 2026 21:14:38 +0000 Subject: [PATCH 361/415] Update npm tool constraint to v11.14.0 (#449) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- renovate.json5 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/renovate.json5 b/renovate.json5 index 947f1b72..412f62f9 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -16,6 +16,6 @@ ], // To prevent libraries in optionalDependencies from being removed from the lock file constraints: { - npm: "11.13.0" + npm: "11.14.0" } } From 85d9c5c5f32ebe9f6e1f76eef956fef7e24ee3c9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 13 May 2026 21:18:32 +0000 Subject: [PATCH 362/415] Update dependency @marp-team/marp-cli to v4.4.0 (#448) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5e47ac46..d9ace70a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -594,9 +594,9 @@ } }, "node_modules/@marp-team/marp-cli": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@marp-team/marp-cli/-/marp-cli-4.3.1.tgz", - "integrity": "sha512-REj2PUTDhHiFsKxzh8AF90YrApEbNcOU7eZ8TKF3sF0b5O91lyaZMH2E5y7o/bfdFP70N8l7vyqXA4pdVQ+EIA==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@marp-team/marp-cli/-/marp-cli-4.4.0.tgz", + "integrity": "sha512-fLBOZpi0mi7IoN+fXiCyGklbdROSE40DKv7LZa7en1mBd1XlQe5O7mE9KEzuYRKVbUMK4swrQqgcQ9WNNNoY6Q==", "license": "MIT", "dependencies": { "@marp-team/marp-core": "^4.3.0", @@ -606,8 +606,7 @@ "puppeteer-core": "^24.39.1", "serve-index": "^1.9.2", "tmp": "^0.2.5", - "ws": "^8.19.0", - "yargs": "^17.7.2" + "ws": "^8.19.0" }, "bin": { "marp": "marp-cli.js" From d22d39e0e810ed7eec81e7a50ae4c4185aa7e57d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 15 May 2026 01:07:53 +0000 Subject: [PATCH 363/415] Update dependency @types/node to v24.12.3 (#450) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index d9ace70a..f30824c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1173,9 +1173,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.12.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.2.tgz", - "integrity": "sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==", + "version": "24.12.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.3.tgz", + "integrity": "sha512-8oljBDGun9cIsZRJR6fkihn0TSXJI0UDOOhncYaERq6M0JMDoPLxyscwruJcb4GKS6dvK/d8xebYBg27h/duaQ==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" From 7aa461bf790c884c23fa073a76cd4cef46ff8242 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 15 May 2026 13:02:24 +0000 Subject: [PATCH 364/415] Update dependency publint to v0.3.20 (#451) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index f30824c2..8252c035 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "devDependencies": { "@types/node": "^24.9.2", "prettier": "3.8.3", - "publint": "0.3.19", + "publint": "0.3.20", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^6.0.2", @@ -3469,9 +3469,9 @@ "license": "MIT" }, "node_modules/publint": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/publint/-/publint-0.3.19.tgz", - "integrity": "sha512-J3p4GOocCRFyLLFRzGfIhAwWgk0Kkcdxj5iFspFvCYbyiJs5IhCM8gsIkcNeQL+tdpV671RtJQiTFSUKhl1Wjg==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/publint/-/publint-0.3.20.tgz", + "integrity": "sha512-UWqFYP7VBVCe9l/leEEGJrDs6Am4K4KapLmLi5qbt+9fA+Ny38ghdW+bw1nYfVqCK8/3kgsxjjhFjTYqYYRpyw==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 87a65fac..0f7992d4 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "devDependencies": { "@types/node": "^24.9.2", "prettier": "3.8.3", - "publint": "0.3.19", + "publint": "0.3.20", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^6.0.2", From dc33df8130e6918624b3a8f1d438f326ebba1bfd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 15 May 2026 20:27:57 +0000 Subject: [PATCH 365/415] Update npm tool constraint to v11.14.1 (#452) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- renovate.json5 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/renovate.json5 b/renovate.json5 index 412f62f9..a62c48bf 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -16,6 +16,6 @@ ], // To prevent libraries in optionalDependencies from being removed from the lock file constraints: { - npm: "11.14.0" + npm: "11.14.1" } } From 52a62786521eddb58bb6590f747db84aa4d936aa Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 18 May 2026 14:13:05 +0000 Subject: [PATCH 366/415] Update dependency puppeteer to v24.43.1 (#453) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8252c035..f28de0a5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -752,9 +752,9 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.13.1.tgz", - "integrity": "sha512-zmS4RTK9fbrc++WlAJhxYbfz3IjDeOmkK/CwwbLmk7ydfS9e2CiEeRJHEPvjDVElO/bwXbidwGA37Bsm6LzCnQ==", + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.13.2.tgz", + "integrity": "sha512-5EUZSUIc37H6aIXyWO0Z4y8NlF8NnjgmqeQgOGiswAU7pY0HOo16ho4+alIWmSfdZnjqBRawMsP3I5YqLSn6kw==", "license": "Apache-2.0", "dependencies": { "debug": "^4.4.3", @@ -773,9 +773,9 @@ } }, "node_modules/@puppeteer/browsers/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -3510,17 +3510,17 @@ } }, "node_modules/puppeteer": { - "version": "24.43.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.43.0.tgz", - "integrity": "sha512-DRnMFz+J3s4lFUQcjqKl0/7h0jzlCZuUFU9lNjtKrnMl5WI1RwCaIItpHVu9empuPyUreYueN0sUW3/pnfdqsg==", + "version": "24.43.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.43.1.tgz", + "integrity": "sha512-/FSOViCrqRdb1HDocpsM9Z1giA71gTQPUt3SpHGVRALKAy/rJr1fLFYZW9F23qPxqVxTHQnbh/5B5opJST3kAw==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.13.1", + "@puppeteer/browsers": "2.13.2", "chromium-bidi": "14.0.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1608973", - "puppeteer-core": "24.43.0", + "puppeteer-core": "24.43.1", "typed-query-selector": "^2.12.2" }, "bin": { @@ -3531,12 +3531,12 @@ } }, "node_modules/puppeteer-core": { - "version": "24.43.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.43.0.tgz", - "integrity": "sha512-cCRNXsUlhyPoKDz6+TiSpfZpRS3mD6Y1YFKhkdr6ik6TMfuJb7fAtXq9ThUFc4sphxObDk3BuAvdxc1Y6YOnqQ==", + "version": "24.43.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.43.1.tgz", + "integrity": "sha512-T5ScUMAsmhdNbgDR41AGESYeS6V9MSgetkSnVhhW+gXvzC42VesKCn5ld87gAZDJ6vLHL9GkRvY9WtQWSnwFbw==", "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.13.1", + "@puppeteer/browsers": "2.13.2", "chromium-bidi": "14.0.0", "debug": "^4.4.3", "devtools-protocol": "0.0.1608973", From e6b61966205a2ee58e3873ea70cfe7bd64add1b6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 18 May 2026 21:35:50 +0000 Subject: [PATCH 367/415] Update dependency vitest to v4.1.6 (#454) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 88 +++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/package-lock.json b/package-lock.json index f28de0a5..3376182f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1192,16 +1192,16 @@ } }, "node_modules/@vitest/expect": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.5.tgz", - "integrity": "sha512-PWBaRY5JoKuRnHlUHfpV/KohFylaDZTupcXN1H9vYryNLOnitSw60Mw9IAE2r67NbwwzBw/Cc/8q9BK3kIX8Kw==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.6.tgz", + "integrity": "sha512-7EHDquPthALSV0jhhjgEW8FXaviMx7rSqu8W6oqCoAuOhKov814P99QDV1pxMA3QPv21YudvJngIhjrNI4opLg==", "dev": true, "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.1.5", - "@vitest/utils": "4.1.5", + "@vitest/spy": "4.1.6", + "@vitest/utils": "4.1.6", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" }, @@ -1210,13 +1210,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.5.tgz", - "integrity": "sha512-/x2EmFC4mT4NNzqvC3fmesuV97w5FC903KPmey4gsnJiMQ3Be1IlDKVaDaG8iqaLFHqJ2FVEkxZk5VmeLjIItw==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.6.tgz", + "integrity": "sha512-MCFc63czMjEInOlcY2cpQCvCN+KgbAn+60xu9cMgP4sKaLC5JNAKw7JH8QdAnoAC88hW1IiSNZ+GgVXlN1UcMQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.1.5", + "@vitest/spy": "4.1.6", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -1237,9 +1237,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.5.tgz", - "integrity": "sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.6.tgz", + "integrity": "sha512-h5SxD/IzNhZYnrSZRsUZQIC+vD0GY8cUvq0iwsmkFKixRCKLLWqCXa/FIQ4S1R+sI+PGoojkHsdNrbZiM9Qpgw==", "dev": true, "license": "MIT", "dependencies": { @@ -1250,13 +1250,13 @@ } }, "node_modules/@vitest/runner": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.5.tgz", - "integrity": "sha512-2D+o7Pr82IEO46YPpoA/YU0neeyr6FTerQb5Ro7BUnBuv6NQtT/kmVnczngiMEBhzgqz2UZYl5gArejsyERDSQ==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.6.tgz", + "integrity": "sha512-nOPCmn2+yD0ZNmKdsXGv/UxMMWbMuKeD6GyYncNwdkYDxpQvrPSKYj2rWuDjC2Y4b6w6hjip5dBKFzEUuZe3vA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.1.5", + "@vitest/utils": "4.1.6", "pathe": "^2.0.3" }, "funding": { @@ -1264,14 +1264,14 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.5.tgz", - "integrity": "sha512-zypXEt4KH/XgKGPUz4eC2AvErYx0My5hfL8oDb1HzGFpEk1P62bxSohdyOmvz+d9UJwanI68MKwr2EquOaOgMQ==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.6.tgz", + "integrity": "sha512-YhsdE6xAVfTDmzjxL2ZDUvjj+ZsgyOKe+TdQzqkD72wIOmHka8NuGQ6NpTNZv9D2Z63fbwWKJPeVpEw4EQgYxw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.5", - "@vitest/utils": "4.1.5", + "@vitest/pretty-format": "4.1.6", + "@vitest/utils": "4.1.6", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -1280,9 +1280,9 @@ } }, "node_modules/@vitest/spy": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.5.tgz", - "integrity": "sha512-2lNOsh6+R2Idnf1TCZqSwYlKN2E/iDlD8sgU59kYVl+OMDmvldO1VDk39smRfpUNwYpNRVn3w4YfuC7KfbBnkQ==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.6.tgz", + "integrity": "sha512-JFKxMx6udhwKh/Ldo270e17QX710vgunMkuPAvXjHSvC6oqLWAHhVhjg/I71q0u0CBSErIODV1Kjv0FQNSWjdg==", "dev": true, "license": "MIT", "funding": { @@ -1290,13 +1290,13 @@ } }, "node_modules/@vitest/utils": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.5.tgz", - "integrity": "sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.6.tgz", + "integrity": "sha512-FxIY+U81R3LGKCxaHHFRQ5+g6/iRgGLmeHWdp2Amj4ljQRrEIWHmZyDfDYBRZlpyqA7qKxtS9DD1dhk8RnRIVQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.5", + "@vitest/pretty-format": "4.1.6", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" }, @@ -4628,19 +4628,19 @@ } }, "node_modules/vitest": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.5.tgz", - "integrity": "sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.6.tgz", + "integrity": "sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "4.1.5", - "@vitest/mocker": "4.1.5", - "@vitest/pretty-format": "4.1.5", - "@vitest/runner": "4.1.5", - "@vitest/snapshot": "4.1.5", - "@vitest/spy": "4.1.5", - "@vitest/utils": "4.1.5", + "@vitest/expect": "4.1.6", + "@vitest/mocker": "4.1.6", + "@vitest/pretty-format": "4.1.6", + "@vitest/runner": "4.1.6", + "@vitest/snapshot": "4.1.6", + "@vitest/spy": "4.1.6", + "@vitest/utils": "4.1.6", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", @@ -4668,12 +4668,12 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.1.5", - "@vitest/browser-preview": "4.1.5", - "@vitest/browser-webdriverio": "4.1.5", - "@vitest/coverage-istanbul": "4.1.5", - "@vitest/coverage-v8": "4.1.5", - "@vitest/ui": "4.1.5", + "@vitest/browser-playwright": "4.1.6", + "@vitest/browser-preview": "4.1.6", + "@vitest/browser-webdriverio": "4.1.6", + "@vitest/coverage-istanbul": "4.1.6", + "@vitest/coverage-v8": "4.1.6", + "@vitest/ui": "4.1.6", "happy-dom": "*", "jsdom": "*", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" From 29e6f850dead762f6af1225d0dad778208fb2bc8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 19 May 2026 02:38:50 +0000 Subject: [PATCH 368/415] Update dependency @types/node to v24.12.4 (#455) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3376182f..d14140a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1173,9 +1173,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.12.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.3.tgz", - "integrity": "sha512-8oljBDGun9cIsZRJR6fkihn0TSXJI0UDOOhncYaERq6M0JMDoPLxyscwruJcb4GKS6dvK/d8xebYBg27h/duaQ==", + "version": "24.12.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.4.tgz", + "integrity": "sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" From a9a56ae06d954d13822f9cf8c99b836280827707 Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Tue, 19 May 2026 12:36:33 +0900 Subject: [PATCH 369/415] Support Node.js 26 and Drop Node.js 20 support (#442) * Drop Node.js 20 support * NO-ISSUE npm audit fix * NO-ISSUE Add nodejs v26 * NO-ISSUE npm audit fix * NO-ISSUE npm audit fix --- .github/workflows/release.yml | 1 - .github/workflows/test.yml | 3 +- .npmrc | 1 + README.ja.md | 2 +- README.md | 2 +- package-lock.json | 881 ++++++++++++++++++++++------------ package.json | 2 +- 7 files changed, 577 insertions(+), 315 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ffcad345..88821eef 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,7 +21,6 @@ jobs: - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: 24 - registry-url: 'https://registry.npmjs.org' # Enable this when setup-node v5 is released, and release is broken # package-manager-cache: false - name: Update version in package.json, package-lock.json diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b5359f4f..3d366d80 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,10 +14,9 @@ jobs: matrix: # https://nodejs.org/en/about/releases/ node: - - '20' - - '20.12.2' - '22' - '24' + - '26' fail-fast: false name: Node.js ${{ matrix.node }} diff --git a/.npmrc b/.npmrc index 2143f3df..c0dee2a4 100644 --- a/.npmrc +++ b/.npmrc @@ -1,2 +1,3 @@ ignore-scripts=true min-release-age=7 +registry=https://registry.npmjs.org/ diff --git a/README.ja.md b/README.ja.md index b1424ced..8251bfde 100644 --- a/README.ja.md +++ b/README.ja.md @@ -81,7 +81,7 @@ LINE公式アカウントとAI Agentを接続するために、LINE Messaging AP ## インストール (npxを使用) 要件: -- Node.js v20 以上 +- Node.js v22 以上 ### Step 1: LINE公式アカウントを作成 diff --git a/README.md b/README.md index 097a3207..d4112e52 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ ## Installation (Using npx) requirements: -- Node.js v20 or later +- Node.js v22 or later ### Step 1: Create LINE Official Account diff --git a/package-lock.json b/package-lock.json index d14140a2..ee1d2542 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,7 +29,7 @@ "vitest": "^4.0.0" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@babel/code-frame": { @@ -120,6 +120,40 @@ "postcss-selector-parser": "^7.0.0" } }, + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.27.1", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.1.tgz", @@ -563,9 +597,9 @@ } }, "node_modules/@hono/node-server": { - "version": "1.19.11", - "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.11.tgz", - "integrity": "sha512-dr8/3zEaB+p0D2n/IUrlPF1HZm586qgJNXK1a9fhg/PzdtkK7Ksd5l312tJX2yBuALqDYBlG20QEbayqPyxn+g==", + "version": "1.19.14", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.14.tgz", + "integrity": "sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==", "license": "MIT", "engines": { "node": ">=18.14.1" @@ -700,6 +734,25 @@ } } }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", + "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -738,6 +791,16 @@ "node": ">= 8" } }, + "node_modules/@oxc-project/types": { + "version": "0.129.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.129.0.tgz", + "integrity": "sha512-3oz8m3FGdr2nDXVqmFUw7jolKliC4MoyXYIG2c7gpjBnzUWQpUGIYcXYKxTdTi+N2jusvt610ckTMkxdwHkYEg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, "node_modules/@publint/pack": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/@publint/pack/-/pack-0.1.4.tgz", @@ -784,24 +847,10 @@ "node": ">=10" } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", - "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", - "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0.tgz", + "integrity": "sha512-TWMZnRLMe63C2Lhyicviu7ZHaU4kxa6PS3rofvc9GmcvptzNN11BcfQ4Sl7MwTOsisQoa2keB/EBdNCAnUo8vA==", "cpu": [ "arm64" ], @@ -810,12 +859,15 @@ "optional": true, "os": [ "android" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", - "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0.tgz", + "integrity": "sha512-6XcD+8k0gPVItNagEw78/qqcBDwKcwDYS8V2hRmVsfUSIrd8cWe/CBvRDI5toqFyPfj+FJr6t8U6Xj2P2prEew==", "cpu": [ "arm64" ], @@ -824,12 +876,15 @@ "optional": true, "os": [ "darwin" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", - "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0.tgz", + "integrity": "sha512-iN/tWVXRQDWvmZlKdceP1Dwug9GDpEymhb9p4xnEe6zvCg5lFmzVljl+1qR1NVx3yfGpr2Na+CuLmv5IU8uzfQ==", "cpu": [ "x64" ], @@ -838,26 +893,15 @@ "optional": true, "os": [ "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", - "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", - "cpu": [ - "arm64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", - "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0.tgz", + "integrity": "sha512-jjQMDvvwSOuhOwMszD/klSOjyWMM3zI64hWTj9KT5x4MxRbZAf+7vLQ6qouRhtsLVFHr3f0ILaJAfgENPiQdAQ==", "cpu": [ "x64" ], @@ -866,26 +910,15 @@ "optional": true, "os": [ "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", - "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", - "cpu": [ - "arm" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", - "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0.tgz", + "integrity": "sha512-d//Dtg2x6/m3mbV64yUGNnDGNZaDGRpDLLNGerHQUVObuNaIQaaDp25yUiqGXtHEXX+NP2d0wAlmKgpYgIAJ2A==", "cpu": [ "arm" ], @@ -894,180 +927,135 @@ "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", - "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", - "cpu": [ - "arm64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", - "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0.tgz", + "integrity": "sha512-n7Ofp0mx+aB2cC+Sdy5YtMnXtY9lchnHbY+3Yt0uq9JsWQExf4f5Whu0tK0R8Jdc9S6RchTHjIFY7uc92puOVQ==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", - "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", - "cpu": [ - "loong64" + "libc": [ + "glibc" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", - "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", - "cpu": [ - "loong64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", - "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0.tgz", + "integrity": "sha512-EIVjy2cgd7uuMMo94FVkBp7F6DhcZAUwNURkSG3RwUmvAXR6s0ISxM81U+IydcZByPG0pZIHsf1b6kTxoFDgJA==", "cpu": [ - "ppc64" + "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", - "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0.tgz", + "integrity": "sha512-JEwwOPcwTLAcpDQlqSmjEmfs63xJnSiUNIGvLcDLUHCWK4XowpS/7c7tUsUH6uT/ct6bMUTdXKfI8967FYj6mg==", "cpu": [ "ppc64" ], "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", - "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", - "cpu": [ - "riscv64" + "libc": [ + "glibc" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", - "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", - "cpu": [ - "riscv64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", - "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0.tgz", + "integrity": "sha512-0wjCFhLrihtAubnT9iA0N++0pSV0z5Hg7tNGdNJ4RFaINceHadoF+kiFGyY1qSSNVIAZtLotG8Ju1bgDPkjnFA==", "cpu": [ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", - "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0.tgz", + "integrity": "sha512-Dfn7iak9BcMMePxcoJfpSbWqnEyrp/dRF63/8qW/eHBdOZov6x5aShLLEYGYdIeSJ6vMLK/XCVB+lGIxm41bQA==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", - "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0.tgz", + "integrity": "sha512-5/utzzDmD/pD/bmuaUcbTf/sZYy0aztwIVlfpoW1fTjCZ0BaPOMVWGZL1zvgxyi7ZIVYWlxKONHmSbHuiOh8Jw==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", - "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", - "cpu": [ - "x64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", - "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0.tgz", + "integrity": "sha512-ouJs8VcUomfLfpbUECqFMRqdV4x6aeAK3MA4m6vTrJJjKyWTV5KnxZx7Jd9G+GlDaQQxubcba00x16OyJ1meig==", "cpu": [ "arm64" ], @@ -1076,40 +1064,51 @@ "optional": true, "os": [ "openharmony" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", - "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0.tgz", + "integrity": "sha512-E+oHKGiDA+lsKMmFtffDDw91EryDT7uJocrIuCHqhm6bCTM6xFK+3gaCkYOHfPwQr0cCNarSM2xaELoQDz9jJg==", "cpu": [ - "arm64" + "wasm32" ], "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "@emnapi/core": "1.10.0", + "@emnapi/runtime": "1.10.0", + "@napi-rs/wasm-runtime": "^1.1.4" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", - "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0.tgz", + "integrity": "sha512-yYK02n8Rngo+gbm1y6G0+7jk1sJ/2Wt7K0me0Y7k/ErBpyf+LJ2gFpqWVTcRV1rUepBlQRmpgWkTQCiiwrK0Ow==", "cpu": [ - "ia32" + "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", - "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0.tgz", + "integrity": "sha512-14bpChMahXRRXiTwahSl+zzHPW6qQTXtkMuJBFlbo+pqSAews2d4BdCSHfrJ/MBsCZtpmTafsY+1QhBzitcmdg==", "cpu": [ "x64" ], @@ -1118,21 +1117,17 @@ "optional": true, "os": [ "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", - "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", - "cpu": [ - "x64" ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0.tgz", + "integrity": "sha512-aKs/3GSWyV0mrhNmt/96/Z3yczC3yvrzYATCiCXQebBsGyYzjNdUphRVLeJQ67ySKVXRfMxt2lm12pmXvbPFQQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "license": "MIT" }, "node_modules/@standard-schema/spec": { "version": "1.1.0", @@ -1147,6 +1142,17 @@ "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", "license": "MIT" }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", + "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@types/chai": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", @@ -1305,9 +1311,9 @@ } }, "node_modules/@xmldom/xmldom": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.9.tgz", - "integrity": "sha512-qycIHAucxy/LXAYIjmLmtQ8q9GPnMbnjG1KXhWm9o5sCr6pOYDATkMPiTNa6/v8eELyqOQ2FsEqeoFYmgv/gJg==", + "version": "0.9.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.10.tgz", + "integrity": "sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw==", "license": "MIT", "engines": { "node": ">=14.6" @@ -1523,9 +1529,9 @@ } }, "node_modules/basic-ftp": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.2.0.tgz", - "integrity": "sha512-VoMINM2rqJwJgfdHq6RiUudKt2BV+FY5ZFezP/ypmwayk68+NzzAQy4XXLlqsGD4MCzq3DrmNFD/uUmBJuGoXw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.3.1.tgz", + "integrity": "sha512-bopVNp6ugyA150DDuZfPFdt1KZ5a94ZDiwX4hMgZDzF+GttD80lEy8kj98kbyhLXnPvhtIo93mdnLIjpCAeeOw==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -1866,6 +1872,16 @@ "node": ">= 0.8" } }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, "node_modules/devtools-protocol": { "version": "0.0.1608973", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1608973.tgz", @@ -2281,12 +2297,12 @@ } }, "node_modules/express-rate-limit": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.1.tgz", - "integrity": "sha512-D1dKN+cmyPWuvB+G2SREQDzPY1agpBIcTa9sJxOPMCNeH3gwzhqJRDWCXW3gg0y//+LQ/8j52JbMROWyrKdMdw==", + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.5.1.tgz", + "integrity": "sha512-5O6KYmyJEpuPJV5hNTXKbAHWRqrzyu+OI3vUnSd2kXFubIVpG7ezpgxQy76Zo5GQZtrQBg86hF+CM/NX+cioiQ==", "license": "MIT", "dependencies": { - "ip-address": "10.1.0" + "ip-address": "^10.2.0" }, "engines": { "node": ">= 16" @@ -2363,9 +2379,9 @@ } }, "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", + "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", "funding": [ { "type": "github", @@ -2612,9 +2628,9 @@ } }, "node_modules/hono": { - "version": "4.12.9", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.9.tgz", - "integrity": "sha512-wy3T8Zm2bsEvxKZM5w21VdHDDcwVS1yUFFY6i8UobSsKfFceT7TOwhbhfKsDyx7tYQlmRM5FLpIuYvNFyjctiA==", + "version": "4.12.18", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.18.tgz", + "integrity": "sha512-RWzP96k/yv0PQfyXnWjs6zot20TqfpfsNXhOnev8d1InAxubW93L11/oNUc3tQqn2G0bSdAOBpX+2uDFHV7kdQ==", "license": "MIT", "engines": { "node": ">=16.9.0" @@ -2714,9 +2730,9 @@ } }, "node_modules/ip-address": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", - "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz", + "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==", "license": "MIT", "engines": { "node": ">= 12" @@ -2874,6 +2890,279 @@ "katex": "cli.js" } }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -3339,9 +3628,9 @@ } }, "node_modules/postcss": { - "version": "8.5.8", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", - "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", + "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", "funding": [ { "type": "opencollective", @@ -3699,49 +3988,38 @@ "node": ">=0.10.0" } }, - "node_modules/rollup": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", - "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", + "node_modules/rolldown": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0.tgz", + "integrity": "sha512-yD986aXDESFGS95spT1LAv0jssywP4npMEjmMHyN2/5+eE8qQJUype2AaKkRiLgBgyD0LFlubwAht7VmY8rGoA==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.8" + "@oxc-project/types": "=0.129.0", + "@rolldown/pluginutils": "1.0.0" }, "bin": { - "rollup": "dist/bin/rollup" + "rolldown": "bin/cli.mjs" }, "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" + "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.59.0", - "@rollup/rollup-android-arm64": "4.59.0", - "@rollup/rollup-darwin-arm64": "4.59.0", - "@rollup/rollup-darwin-x64": "4.59.0", - "@rollup/rollup-freebsd-arm64": "4.59.0", - "@rollup/rollup-freebsd-x64": "4.59.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", - "@rollup/rollup-linux-arm-musleabihf": "4.59.0", - "@rollup/rollup-linux-arm64-gnu": "4.59.0", - "@rollup/rollup-linux-arm64-musl": "4.59.0", - "@rollup/rollup-linux-loong64-gnu": "4.59.0", - "@rollup/rollup-linux-loong64-musl": "4.59.0", - "@rollup/rollup-linux-ppc64-gnu": "4.59.0", - "@rollup/rollup-linux-ppc64-musl": "4.59.0", - "@rollup/rollup-linux-riscv64-gnu": "4.59.0", - "@rollup/rollup-linux-riscv64-musl": "4.59.0", - "@rollup/rollup-linux-s390x-gnu": "4.59.0", - "@rollup/rollup-linux-x64-gnu": "4.59.0", - "@rollup/rollup-linux-x64-musl": "4.59.0", - "@rollup/rollup-openbsd-x64": "4.59.0", - "@rollup/rollup-openharmony-arm64": "4.59.0", - "@rollup/rollup-win32-arm64-msvc": "4.59.0", - "@rollup/rollup-win32-ia32-msvc": "4.59.0", - "@rollup/rollup-win32-x64-gnu": "4.59.0", - "@rollup/rollup-win32-x64-msvc": "4.59.0", - "fsevents": "~2.3.2" + "@rolldown/binding-android-arm64": "1.0.0", + "@rolldown/binding-darwin-arm64": "1.0.0", + "@rolldown/binding-darwin-x64": "1.0.0", + "@rolldown/binding-freebsd-x64": "1.0.0", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0", + "@rolldown/binding-linux-arm64-gnu": "1.0.0", + "@rolldown/binding-linux-arm64-musl": "1.0.0", + "@rolldown/binding-linux-ppc64-gnu": "1.0.0", + "@rolldown/binding-linux-s390x-gnu": "1.0.0", + "@rolldown/binding-linux-x64-gnu": "1.0.0", + "@rolldown/binding-linux-x64-musl": "1.0.0", + "@rolldown/binding-openharmony-arm64": "1.0.0", + "@rolldown/binding-wasm32-wasi": "1.0.0", + "@rolldown/binding-win32-arm64-msvc": "1.0.0", + "@rolldown/binding-win32-x64-msvc": "1.0.0" } }, "node_modules/router": { @@ -4184,12 +4462,12 @@ } }, "node_modules/speech-rule-engine": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.1.3.tgz", - "integrity": "sha512-SBMgkuJYvP4F62daRfBNwYC2nXTEhNXAfsBZ/BB7Ly85/KnbnjmKM7/45ZrFbH6jIMiAliDUDPSZFUuXDvcg6A==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.1.4.tgz", + "integrity": "sha512-i/VCLG1fvRc95pMHRqG4aQNscv+9aIsqA2oI7ZQS51sTdUcDHYX6cpT8/tqZ+enjs1tKVwbRBWgxut9SWn+f9g==", "license": "Apache-2.0", "dependencies": { - "@xmldom/xmldom": "0.9.9", + "@xmldom/xmldom": "0.9.10", "commander": "13.1.0", "wicked-good-xpath": "1.3.0" }, @@ -4338,14 +4616,14 @@ } }, "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">=12.0.0" @@ -4522,18 +4800,17 @@ } }, "node_modules/vite": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", - "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "version": "8.0.12", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.12.tgz", + "integrity": "sha512-w2dDofOWv2QB09ZITZBsvKTVAlYvPR4IAmrY/v0ir9KvLs0xybR7i48wxhM1/oyBWO34wPns+bPGw5ZrZqDpZg==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.27.0", - "fdir": "^6.5.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", - "tinyglobby": "^0.2.15" + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.14", + "rolldown": "1.0.0", + "tinyglobby": "^0.2.16" }, "bin": { "vite": "bin/vite.js" @@ -4549,9 +4826,10 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.1.18", + "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", - "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", @@ -4564,13 +4842,16 @@ "@types/node": { "optional": true }, - "jiti": { + "@vitejs/devtools": { "optional": true }, - "less": { + "esbuild": { "optional": true }, - "lightningcss": { + "jiti": { + "optional": true + }, + "less": { "optional": true }, "sass": { @@ -4596,24 +4877,6 @@ } } }, - "node_modules/vite/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, "node_modules/vite/node_modules/picomatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", diff --git a/package.json b/package.json index 0f7992d4..080f5053 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "MCP server for interacting with your LINE Official Account", "type": "module", "engines": { - "node": ">=20" + "node": ">=22" }, "module": "./dist/index.js", "bin": { From bd2ed10fab237141d43dbd8f4eacab7ffdd6ce34 Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Tue, 19 May 2026 15:47:28 +0900 Subject: [PATCH 370/415] Sync manifest and README.ja.md tool definitions (#443) NO-ISSUE Sync manifest and README.ja tool definitions --- README.ja.md | 6 +++--- manifest.json | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/README.ja.md b/README.ja.md index 8251bfde..a37dffd3 100644 --- a/README.ja.md +++ b/README.ja.md @@ -14,12 +14,12 @@ LINE公式アカウントとAI Agentを接続するために、LINE Messaging AP 1. **push_text_message** - LINEでユーザーにシンプルなテキストメッセージを送信する。 - **入力:** - - `userId` (string?): メッセージ受信者のユーザーID。デフォルトはDESTINATION_USER_ID。`user_id`または`DESTINATION_USER_ID`のどちらか一方は必ず設定する必要があります。 + - `userId` (string?): メッセージ受信者のユーザーID。デフォルトはDESTINATION_USER_ID。`userId`または`DESTINATION_USER_ID`のどちらか一方は必ず設定する必要があります。 - `message.text` (string): ユーザーに送信するテキスト。 2. **push_flex_message** - LINEでユーザーに高度にカスタマイズ可能なフレックスメッセージを送信する。 - **入力:** - - `user_id` (string?): メッセージ受信者のユーザーID。デフォルトはDESTINATION_USER_ID。`user_id`または`DESTINATION_USER_ID`のどちらか一方は必ず設定する必要があります。 + - `userId` (string?): メッセージ受信者のユーザーID。デフォルトはDESTINATION_USER_ID。`userId`または`DESTINATION_USER_ID`のどちらか一方は必ず設定する必要があります。 - `message.altText` (string): フレックスメッセージが表示できない場合に表示される代替テキスト。 - `message.contents` (any): フレックスメッセージの内容。メッセージのレイアウトとコンポーネントを定義するJSONオブジェクト。 - `message.contents.type` (enum): コンテナのタイプ。'bubble'は単一コンテナ、'carousel'は複数のスワイプ可能なバブルを示す。 @@ -36,7 +36,7 @@ LINE公式アカウントとAI Agentを接続するために、LINE Messaging AP 5. **get_profile** - LINEユーザーの詳細なプロフィール情報を取得する。表示名、プロフィール画像URL、ステータスメッセージ、言語を取得できる。 - **入力:** - - `userId` (string?): プロフィールを取得したいユーザーのユーザーID。デフォルトはDESTINATION_USER_ID。`user_id`または`DESTINATION_USER_ID`のどちらか一方は必ず設定する必要があります。 + - `userId` (string?): プロフィールを取得したいユーザーのユーザーID。デフォルトはDESTINATION_USER_ID。`userId`または`DESTINATION_USER_ID`のどちらか一方は必ず設定する必要があります。 6. **get_message_quota** - LINE公式アカウントのメッセージ容量と消費量を取得します。月間メッセージ制限と現在の使用量が表示されます。 - **入力:** diff --git a/manifest.json b/manifest.json index ac726054..1c14e3bb 100644 --- a/manifest.json +++ b/manifest.json @@ -72,6 +72,10 @@ "name": "cancel_rich_menu_default", "description": "Remove the default rich menu" }, + { + "name": "create_rich_menu", + "description": "Create a rich menu from actions, upload its image, and set it as default" + }, { "name": "get_follower_ids", "description": "Get a list of user IDs of followers" From c54dd95604e83167f1e5c3cc67ae2c166a71f998 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 20 May 2026 00:56:15 +0000 Subject: [PATCH 371/415] Update dependency publint to v0.3.21 (#457) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index ee1d2542..f8258803 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "devDependencies": { "@types/node": "^24.9.2", "prettier": "3.8.3", - "publint": "0.3.20", + "publint": "0.3.21", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^6.0.2", @@ -3758,9 +3758,9 @@ "license": "MIT" }, "node_modules/publint": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/publint/-/publint-0.3.20.tgz", - "integrity": "sha512-UWqFYP7VBVCe9l/leEEGJrDs6Am4K4KapLmLi5qbt+9fA+Ny38ghdW+bw1nYfVqCK8/3kgsxjjhFjTYqYYRpyw==", + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/publint/-/publint-0.3.21.tgz", + "integrity": "sha512-OqejcnMV6E9zel2oCrUOJEiiFkGiAAni0A6ibfQNh1k9Gu5z4F+Yso8lllam7AzmV6Do0vp7u3UpZNRBwuXaHQ==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 080f5053..90c11a98 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "devDependencies": { "@types/node": "^24.9.2", "prettier": "3.8.3", - "publint": "0.3.20", + "publint": "0.3.21", "shx": "^0.4.0", "tsx": "^4.19.3", "typescript": "^6.0.2", From fbb44bf13cba2324e48eaeda1b198ca4aa136c30 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 21 May 2026 15:08:47 +0000 Subject: [PATCH 372/415] Update dependency tsx to v4.22.0 (#458) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 246 +++++++++++++++++++++------------------------- 1 file changed, 111 insertions(+), 135 deletions(-) diff --git a/package-lock.json b/package-lock.json index f8258803..95e96418 100644 --- a/package-lock.json +++ b/package-lock.json @@ -155,9 +155,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.1.tgz", - "integrity": "sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.0.tgz", + "integrity": "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==", "cpu": [ "ppc64" ], @@ -172,9 +172,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.1.tgz", - "integrity": "sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.0.tgz", + "integrity": "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==", "cpu": [ "arm" ], @@ -189,9 +189,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.1.tgz", - "integrity": "sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.0.tgz", + "integrity": "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==", "cpu": [ "arm64" ], @@ -206,9 +206,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.1.tgz", - "integrity": "sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.0.tgz", + "integrity": "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==", "cpu": [ "x64" ], @@ -223,9 +223,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.1.tgz", - "integrity": "sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.0.tgz", + "integrity": "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==", "cpu": [ "arm64" ], @@ -240,9 +240,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.1.tgz", - "integrity": "sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.0.tgz", + "integrity": "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==", "cpu": [ "x64" ], @@ -257,9 +257,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.1.tgz", - "integrity": "sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.0.tgz", + "integrity": "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==", "cpu": [ "arm64" ], @@ -274,9 +274,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.1.tgz", - "integrity": "sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.0.tgz", + "integrity": "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==", "cpu": [ "x64" ], @@ -291,9 +291,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.1.tgz", - "integrity": "sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.0.tgz", + "integrity": "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==", "cpu": [ "arm" ], @@ -308,9 +308,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.1.tgz", - "integrity": "sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.0.tgz", + "integrity": "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==", "cpu": [ "arm64" ], @@ -325,9 +325,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.1.tgz", - "integrity": "sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.0.tgz", + "integrity": "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==", "cpu": [ "ia32" ], @@ -342,9 +342,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.1.tgz", - "integrity": "sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.0.tgz", + "integrity": "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==", "cpu": [ "loong64" ], @@ -359,9 +359,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.1.tgz", - "integrity": "sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.0.tgz", + "integrity": "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==", "cpu": [ "mips64el" ], @@ -376,9 +376,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.1.tgz", - "integrity": "sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.0.tgz", + "integrity": "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==", "cpu": [ "ppc64" ], @@ -393,9 +393,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.1.tgz", - "integrity": "sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.0.tgz", + "integrity": "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==", "cpu": [ "riscv64" ], @@ -410,9 +410,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.1.tgz", - "integrity": "sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.0.tgz", + "integrity": "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==", "cpu": [ "s390x" ], @@ -427,9 +427,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.1.tgz", - "integrity": "sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.0.tgz", + "integrity": "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==", "cpu": [ "x64" ], @@ -444,9 +444,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.1.tgz", - "integrity": "sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.0.tgz", + "integrity": "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==", "cpu": [ "arm64" ], @@ -461,9 +461,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.1.tgz", - "integrity": "sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.0.tgz", + "integrity": "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==", "cpu": [ "x64" ], @@ -478,9 +478,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.1.tgz", - "integrity": "sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.0.tgz", + "integrity": "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==", "cpu": [ "arm64" ], @@ -495,9 +495,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.1.tgz", - "integrity": "sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.0.tgz", + "integrity": "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==", "cpu": [ "x64" ], @@ -512,9 +512,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.1.tgz", - "integrity": "sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.0.tgz", + "integrity": "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==", "cpu": [ "arm64" ], @@ -529,9 +529,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.1.tgz", - "integrity": "sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.0.tgz", + "integrity": "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==", "cpu": [ "x64" ], @@ -546,9 +546,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.1.tgz", - "integrity": "sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.0.tgz", + "integrity": "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==", "cpu": [ "arm64" ], @@ -563,9 +563,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.1.tgz", - "integrity": "sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.0.tgz", + "integrity": "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==", "cpu": [ "ia32" ], @@ -580,9 +580,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.1.tgz", - "integrity": "sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.0.tgz", + "integrity": "sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==", "cpu": [ "x64" ], @@ -1997,9 +1997,9 @@ } }, "node_modules/esbuild": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.1.tgz", - "integrity": "sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.0.tgz", + "integrity": "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -2010,32 +2010,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.1", - "@esbuild/android-arm": "0.27.1", - "@esbuild/android-arm64": "0.27.1", - "@esbuild/android-x64": "0.27.1", - "@esbuild/darwin-arm64": "0.27.1", - "@esbuild/darwin-x64": "0.27.1", - "@esbuild/freebsd-arm64": "0.27.1", - "@esbuild/freebsd-x64": "0.27.1", - "@esbuild/linux-arm": "0.27.1", - "@esbuild/linux-arm64": "0.27.1", - "@esbuild/linux-ia32": "0.27.1", - "@esbuild/linux-loong64": "0.27.1", - "@esbuild/linux-mips64el": "0.27.1", - "@esbuild/linux-ppc64": "0.27.1", - "@esbuild/linux-riscv64": "0.27.1", - "@esbuild/linux-s390x": "0.27.1", - "@esbuild/linux-x64": "0.27.1", - "@esbuild/netbsd-arm64": "0.27.1", - "@esbuild/netbsd-x64": "0.27.1", - "@esbuild/openbsd-arm64": "0.27.1", - "@esbuild/openbsd-x64": "0.27.1", - "@esbuild/openharmony-arm64": "0.27.1", - "@esbuild/sunos-x64": "0.27.1", - "@esbuild/win32-arm64": "0.27.1", - "@esbuild/win32-ia32": "0.27.1", - "@esbuild/win32-x64": "0.27.1" + "@esbuild/aix-ppc64": "0.28.0", + "@esbuild/android-arm": "0.28.0", + "@esbuild/android-arm64": "0.28.0", + "@esbuild/android-x64": "0.28.0", + "@esbuild/darwin-arm64": "0.28.0", + "@esbuild/darwin-x64": "0.28.0", + "@esbuild/freebsd-arm64": "0.28.0", + "@esbuild/freebsd-x64": "0.28.0", + "@esbuild/linux-arm": "0.28.0", + "@esbuild/linux-arm64": "0.28.0", + "@esbuild/linux-ia32": "0.28.0", + "@esbuild/linux-loong64": "0.28.0", + "@esbuild/linux-mips64el": "0.28.0", + "@esbuild/linux-ppc64": "0.28.0", + "@esbuild/linux-riscv64": "0.28.0", + "@esbuild/linux-s390x": "0.28.0", + "@esbuild/linux-x64": "0.28.0", + "@esbuild/netbsd-arm64": "0.28.0", + "@esbuild/netbsd-x64": "0.28.0", + "@esbuild/openbsd-arm64": "0.28.0", + "@esbuild/openbsd-x64": "0.28.0", + "@esbuild/openharmony-arm64": "0.28.0", + "@esbuild/sunos-x64": "0.28.0", + "@esbuild/win32-arm64": "0.28.0", + "@esbuild/win32-ia32": "0.28.0", + "@esbuild/win32-x64": "0.28.0" } }, "node_modules/escalade": { @@ -2543,19 +2543,6 @@ "node": ">=6" } }, - "node_modules/get-tsconfig": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", - "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, "node_modules/get-uri": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", @@ -3967,16 +3954,6 @@ "node": ">=4" } }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -4711,14 +4688,13 @@ "license": "0BSD" }, "node_modules/tsx": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", - "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.22.0.tgz", + "integrity": "sha512-8ccZMPD69s1AbKXx0C5ddTNZfNjwV04iIKgjZmKfKxMynEtSYcK0Lh7iQFh53fI5Yu4pb9usgAiqyPmEONaALg==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "~0.27.0", - "get-tsconfig": "^4.7.5" + "esbuild": "~0.28.0" }, "bin": { "tsx": "dist/cli.mjs" From 7ddfc358fd0e891ad5922729f0d738a7b6603929 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 24 May 2026 08:07:31 +0000 Subject: [PATCH 373/415] Update dependency tsx to v4.22.1 (#460) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 95e96418..e19315ec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4688,9 +4688,9 @@ "license": "0BSD" }, "node_modules/tsx": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.22.0.tgz", - "integrity": "sha512-8ccZMPD69s1AbKXx0C5ddTNZfNjwV04iIKgjZmKfKxMynEtSYcK0Lh7iQFh53fI5Yu4pb9usgAiqyPmEONaALg==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.22.1.tgz", + "integrity": "sha512-TvncJykhxAzFCk0VQZKBTClall4Pm7qXDSodb6uxi8QFa8X8mT6ABjxxsQ2opDRYxG7AzcRWXaFtruz5HJKuWg==", "dev": true, "license": "MIT", "dependencies": { From 1040ce290a6af3f20f46820846497aabc5c57d57 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 25 May 2026 14:30:35 +0000 Subject: [PATCH 374/415] Update dependency tsx to v4.22.2 (#461) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index e19315ec..dcc303d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4688,9 +4688,9 @@ "license": "0BSD" }, "node_modules/tsx": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.22.1.tgz", - "integrity": "sha512-TvncJykhxAzFCk0VQZKBTClall4Pm7qXDSodb6uxi8QFa8X8mT6ABjxxsQ2opDRYxG7AzcRWXaFtruz5HJKuWg==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.22.2.tgz", + "integrity": "sha512-6w9FwtT8WQqRAyTNR+Z+86kghRqpmOLjXUrBlBT6T+CQGDuIMm0VmAqaFUFBIeKDTGobE6/YSigZYLeomzBaRg==", "dev": true, "license": "MIT", "dependencies": { From 723243315bc310a02a9fa08fe59550e847e6707e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 May 2026 15:59:38 +0000 Subject: [PATCH 375/415] Update dependency tsx to v4.22.3 (#463) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index dcc303d8..8bb8f7a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4688,9 +4688,9 @@ "license": "0BSD" }, "node_modules/tsx": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.22.2.tgz", - "integrity": "sha512-6w9FwtT8WQqRAyTNR+Z+86kghRqpmOLjXUrBlBT6T+CQGDuIMm0VmAqaFUFBIeKDTGobE6/YSigZYLeomzBaRg==", + "version": "4.22.3", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.22.3.tgz", + "integrity": "sha512-mdoNxBC/cSQObGGVQ5Bpn5i+yv7j68gk3Nfm3wFjcJg3Z0Mix9jzAFfP12prmm5eVGmDKtp0yyArrs0Q+8gZHg==", "dev": true, "license": "MIT", "dependencies": { From d0d41fed8586dc40e4f539119d6752c643345e16 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 28 May 2026 00:00:03 +0900 Subject: [PATCH 376/415] Update dependency vitest to v4.1.7 (#465) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 88 +++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8bb8f7a2..ac2beaf1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1198,16 +1198,16 @@ } }, "node_modules/@vitest/expect": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.6.tgz", - "integrity": "sha512-7EHDquPthALSV0jhhjgEW8FXaviMx7rSqu8W6oqCoAuOhKov814P99QDV1pxMA3QPv21YudvJngIhjrNI4opLg==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.7.tgz", + "integrity": "sha512-1R+tw0ortHEbZDGMymm+pN7/AFQ/RkFFdtd7EN+VBpynKmLbP8A3rpEXdshBJ7+8hQ9zBJh/i1s0yKNtxAnU7w==", "dev": true, "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.1.6", - "@vitest/utils": "4.1.6", + "@vitest/spy": "4.1.7", + "@vitest/utils": "4.1.7", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" }, @@ -1216,13 +1216,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.6.tgz", - "integrity": "sha512-MCFc63czMjEInOlcY2cpQCvCN+KgbAn+60xu9cMgP4sKaLC5JNAKw7JH8QdAnoAC88hW1IiSNZ+GgVXlN1UcMQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.7.tgz", + "integrity": "sha512-vY7nuamKgfvpA1Koa3oYIw/k7D6kZnpGyNMZW8loow2bsBYla1TFdqTaXncWdRn4pgwNs+90RhnXhJScDwQeJA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.1.6", + "@vitest/spy": "4.1.7", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -1243,9 +1243,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.6.tgz", - "integrity": "sha512-h5SxD/IzNhZYnrSZRsUZQIC+vD0GY8cUvq0iwsmkFKixRCKLLWqCXa/FIQ4S1R+sI+PGoojkHsdNrbZiM9Qpgw==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.7.tgz", + "integrity": "sha512-umgCarTOYQWIaDMvGDRZij+6b9oVeLIyJzfN+AS88e0ZOU3QTgNNSTtjQOpcvWr3np1N0j4WgZj+sb3oYBDscw==", "dev": true, "license": "MIT", "dependencies": { @@ -1256,13 +1256,13 @@ } }, "node_modules/@vitest/runner": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.6.tgz", - "integrity": "sha512-nOPCmn2+yD0ZNmKdsXGv/UxMMWbMuKeD6GyYncNwdkYDxpQvrPSKYj2rWuDjC2Y4b6w6hjip5dBKFzEUuZe3vA==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.7.tgz", + "integrity": "sha512-BapjmAQ2aI78WdMEfeUWivnfVzB+VPGwWRQcJE0OUq7qEeEcBsCSf+0T5iREBNE5nBb4wA5Ya0W6IA+sghdEFw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.1.6", + "@vitest/utils": "4.1.7", "pathe": "^2.0.3" }, "funding": { @@ -1270,14 +1270,14 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.6.tgz", - "integrity": "sha512-YhsdE6xAVfTDmzjxL2ZDUvjj+ZsgyOKe+TdQzqkD72wIOmHka8NuGQ6NpTNZv9D2Z63fbwWKJPeVpEw4EQgYxw==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.7.tgz", + "integrity": "sha512-ZacLzja+TmJeZ1h14xW2FB/WpeimUD3haBXQPyJqxvo8jQTmfeA8zv58mtjN2C7EHXZDYVcVYdYmAxjkWVvKCw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.6", - "@vitest/utils": "4.1.6", + "@vitest/pretty-format": "4.1.7", + "@vitest/utils": "4.1.7", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -1286,9 +1286,9 @@ } }, "node_modules/@vitest/spy": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.6.tgz", - "integrity": "sha512-JFKxMx6udhwKh/Ldo270e17QX710vgunMkuPAvXjHSvC6oqLWAHhVhjg/I71q0u0CBSErIODV1Kjv0FQNSWjdg==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.7.tgz", + "integrity": "sha512-kbkI5LMWakyuTIvs6fUJ5qdIVb1XVKsYJAT4OJ938cHMROYMSfmoQdZy0aaAnjbbc8F61vkoTqz/Az+/HiIu5Q==", "dev": true, "license": "MIT", "funding": { @@ -1296,13 +1296,13 @@ } }, "node_modules/@vitest/utils": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.6.tgz", - "integrity": "sha512-FxIY+U81R3LGKCxaHHFRQ5+g6/iRgGLmeHWdp2Amj4ljQRrEIWHmZyDfDYBRZlpyqA7qKxtS9DD1dhk8RnRIVQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.7.tgz", + "integrity": "sha512-T532WBu791cBxJlCl6SO+J14l81DQx6uQHm1bQbmCDY7nqlEIgkza/UFnSBNaUtSf41unldDFjdOBYEQC4b5Hw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.6", + "@vitest/pretty-format": "4.1.7", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" }, @@ -4867,19 +4867,19 @@ } }, "node_modules/vitest": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.6.tgz", - "integrity": "sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.7.tgz", + "integrity": "sha512-flYyaFd2CgoCoU+0UKt3pxksgC+S02iTDN0n3LtqaMeXsI9SBcdNujc2k0DeFLzUn/0k538yNjOSdwgCqcrwJA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "4.1.6", - "@vitest/mocker": "4.1.6", - "@vitest/pretty-format": "4.1.6", - "@vitest/runner": "4.1.6", - "@vitest/snapshot": "4.1.6", - "@vitest/spy": "4.1.6", - "@vitest/utils": "4.1.6", + "@vitest/expect": "4.1.7", + "@vitest/mocker": "4.1.7", + "@vitest/pretty-format": "4.1.7", + "@vitest/runner": "4.1.7", + "@vitest/snapshot": "4.1.7", + "@vitest/spy": "4.1.7", + "@vitest/utils": "4.1.7", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", @@ -4907,12 +4907,12 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.1.6", - "@vitest/browser-preview": "4.1.6", - "@vitest/browser-webdriverio": "4.1.6", - "@vitest/coverage-istanbul": "4.1.6", - "@vitest/coverage-v8": "4.1.6", - "@vitest/ui": "4.1.6", + "@vitest/browser-playwright": "4.1.7", + "@vitest/browser-preview": "4.1.7", + "@vitest/browser-webdriverio": "4.1.7", + "@vitest/coverage-istanbul": "4.1.7", + "@vitest/coverage-v8": "4.1.7", + "@vitest/ui": "4.1.7", "happy-dom": "*", "jsdom": "*", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" From c224f8efc6fb7afed50e0c4ed389e59cd5b1b269 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 27 May 2026 22:28:54 +0000 Subject: [PATCH 377/415] Update npm tool constraint to v11.15.0 (#466) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- renovate.json5 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/renovate.json5 b/renovate.json5 index a62c48bf..c7319970 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -16,6 +16,6 @@ ], // To prevent libraries in optionalDependencies from being removed from the lock file constraints: { - npm: "11.14.1" + npm: "11.15.0" } } From fb9306fb34df429d1035f8106e7375cd80429984 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 28 May 2026 04:19:47 +0000 Subject: [PATCH 378/415] Update actions/stale action to v10.3.0 (#467) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/close-issue.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/close-issue.yml b/.github/workflows/close-issue.yml index 55e77b63..6624be22 100644 --- a/.github/workflows/close-issue.yml +++ b/.github/workflows/close-issue.yml @@ -14,7 +14,7 @@ jobs: pull-requests: write if: github.repository == 'line/line-bot-mcp-server' steps: - - uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0 + - uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v10.3.0 with: days-before-issue-stale: 28 # 4 weeks days-before-issue-close: 0 From 93bbf30a4f3f58b9e7b0d5cb93d9de2ed055e570 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 29 May 2026 00:08:49 +0000 Subject: [PATCH 379/415] Update Node.js to v24.16.0 (#469) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 99ed8351..7a9ed9ce 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:24.15-alpine AS builder +FROM node:24.16-alpine AS builder COPY . /app From 6d181d0a63e35bae404855a2d141d767b33f25ff Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Fri, 29 May 2026 13:06:55 +0900 Subject: [PATCH 380/415] Upgrade @line/bot-sdk to v11.0.1 to prevent path traversal (#468) * NO-ISSUE Upgrade @line/bot-sdk to v11.0.1 to prevent path traversal * NO-ISSUE Resolve #464 --- package-lock.json | 28 ++++++++++++++-------------- package.json | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index ac2beaf1..efbe62a9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.1-local", "license": "Apache-2.0", "dependencies": { - "@line/bot-sdk": "^11.0.0", + "@line/bot-sdk": "^11.0.1", "@marp-team/marp-cli": "^4.2.3", "@marp-team/marp-core": "^4.1.0", "@modelcontextprotocol/sdk": "^1.8.0", @@ -616,15 +616,15 @@ "license": "MIT" }, "node_modules/@line/bot-sdk": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-11.0.0.tgz", - "integrity": "sha512-3NZJjeFm2BikwVRgA8osIVbgKhuL0CzphQOdrB8okXIC40qMRE4RRfHFN3G8/qTb/34RtB95mD4J/KW5MD+b8g==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-11.0.1.tgz", + "integrity": "sha512-De9gBX2JfZs78nDSyzfetHJw0R6hncPVVy3tzPMwYZzgwK06C/tcijGy7Vq28K8uYKGVTSthbtMIoYKNhXISzw==", "license": "Apache-2.0", "dependencies": { "@types/node": "^24.0.0" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@marp-team/marp-cli": { @@ -3825,9 +3825,9 @@ } }, "node_modules/qs": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", + "version": "6.15.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz", + "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -4651,9 +4651,9 @@ } }, "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz", + "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==", "license": "MIT", "engines": { "node": ">=14.14" @@ -5035,9 +5035,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", - "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", + "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", "license": "MIT", "engines": { "node": ">=10.0.0" diff --git a/package.json b/package.json index 90c11a98..2ba48311 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "homepage": "https://github.com/line/line-bot-mcp-server", "bugs": "https://github.com/line/line-bot-mcp-server/issues", "dependencies": { - "@line/bot-sdk": "^11.0.0", + "@line/bot-sdk": "^11.0.1", "@marp-team/marp-cli": "^4.2.3", "@marp-team/marp-core": "^4.1.0", "@modelcontextprotocol/sdk": "^1.8.0", From fe3aff5b57ffd64c96b069e98efe9befa5796aed Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Mon, 1 Jun 2026 15:55:06 +0900 Subject: [PATCH 381/415] Use lock file maintenance by renovate to automate npm audit without PAT (#470) * NO-ISSUE Use lock file maintenance by renovate, to automate npm audit without PAT * NO-ISSUE a --- .github/workflows/npm-audit.yml | 31 +++++++++++++++++++++++++++++-- renovate.json5 | 11 +++++------ 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index 2a72f523..8809fe54 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -20,14 +20,41 @@ jobs: - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: '24' - # Enable this when setup-node v5 is released - # package-manager-cache: false + package-manager-cache: false - name: Run npm audit and check diff id: audit run: .github/scripts/npm-audit.sh continue-on-error: true + - name: Close reminder issue when audit passes + if: steps.audit.outcome == 'success' + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + with: + script: | + const { owner, repo } = context.repo; + const title = 'Reminder: run npm audit'; + + const { data: result } = await github.rest.search.issuesAndPullRequests({ + q: `repo:${owner}/${repo} is:issue is:open in:title "${title}"` + }); + + for (const issue of result.items) { + await github.rest.issues.createComment({ + owner, + repo, + issue_number: issue.number, + body: 'Auto-closed because npm audit is now passing.' + }); + await github.rest.issues.update({ + owner, + repo, + issue_number: issue.number, + state: 'closed', + state_reason: 'completed' + }); + } + - name: Create or update reminder issue if: steps.audit.outcome == 'failure' uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 diff --git a/renovate.json5 b/renovate.json5 index c7319970..5dec17ee 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -11,11 +11,10 @@ labels: [ "dependency upgrade" ], - ignoreDeps: [ - "zod" - ], - // To prevent libraries in optionalDependencies from being removed from the lock file - constraints: { - npm: "11.15.0" + lockFileMaintenance: { + enabled: true, + schedule: [ + "after 1am and before 4am every day" + ] } } From 63403b59a895c82c581da4e6cc700da69786bac7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 1 Jun 2026 16:22:08 +0900 Subject: [PATCH 382/415] Migrate Renovate config (#472) Migrate config renovate.json5 Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- renovate.json5 | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/renovate.json5 b/renovate.json5 index 5dec17ee..2cbee925 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -1,20 +1,13 @@ { $schema: "https://docs.renovatebot.com/renovate-schema.json", - extends: [ - "config:recommended", - "helpers:pinGitHubActionDigestsToSemver" - ], + extends: ["config:recommended", "helpers:pinGitHubActionDigestsToSemver"], timezone: "Asia/Tokyo", automerge: true, platformAutomerge: true, - minimumReleaseAge : "7 days", - labels: [ - "dependency upgrade" - ], + minimumReleaseAge: "7 days", + labels: ["dependency upgrade"], lockFileMaintenance: { enabled: true, - schedule: [ - "after 1am and before 4am every day" - ] - } + schedule: ["after 1am and before 4am"], + }, } From 7b183d66b072972502bf759460cc3e52c7c19ca5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 1 Jun 2026 23:06:29 +0000 Subject: [PATCH 383/415] Update suzuki-shunsuke/pinact-action action to v3 (#475) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3d366d80..96010baf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -59,6 +59,6 @@ jobs: steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Run pinact - uses: suzuki-shunsuke/pinact-action@cf51507d80d4d6522a07348e3d58790290eaf0b6 # v2.0.0 + uses: suzuki-shunsuke/pinact-action@896d595f299e71d65b9d28349d6956abe144390a # v3.0.0 with: skip_push: "true" From 2d0cacfe1d84a96151e9872be7ae26e2a715e7aa Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Tue, 2 Jun 2026 10:50:45 +0900 Subject: [PATCH 384/415] Drop dependencies (#474) * NO-ISSUE Drop shx, and support build in non linux * NO-ISSUE Drop tsx, @marp-team/marp-cli --- package-lock.json | 1224 +---------------------------------------- package.json | 7 +- scripts/chmod-bin.mjs | 5 + scripts/clean.mjs | 3 + 4 files changed, 14 insertions(+), 1225 deletions(-) create mode 100644 scripts/chmod-bin.mjs create mode 100644 scripts/clean.mjs diff --git a/package-lock.json b/package-lock.json index efbe62a9..81356029 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,6 @@ "license": "Apache-2.0", "dependencies": { "@line/bot-sdk": "^11.0.1", - "@marp-team/marp-cli": "^4.2.3", "@marp-team/marp-core": "^4.1.0", "@modelcontextprotocol/sdk": "^1.8.0", "puppeteer": "^24.27.0", @@ -23,8 +22,6 @@ "@types/node": "^24.9.2", "prettier": "3.8.3", "publint": "0.3.21", - "shx": "^0.4.0", - "tsx": "^4.19.3", "typescript": "^6.0.2", "vitest": "^4.0.0" }, @@ -154,448 +151,6 @@ "tslib": "^2.4.0" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.0.tgz", - "integrity": "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.0.tgz", - "integrity": "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.0.tgz", - "integrity": "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.0.tgz", - "integrity": "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.0.tgz", - "integrity": "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.0.tgz", - "integrity": "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.0.tgz", - "integrity": "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.0.tgz", - "integrity": "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.0.tgz", - "integrity": "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.0.tgz", - "integrity": "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.0.tgz", - "integrity": "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.0.tgz", - "integrity": "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.0.tgz", - "integrity": "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.0.tgz", - "integrity": "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.0.tgz", - "integrity": "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.0.tgz", - "integrity": "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.0.tgz", - "integrity": "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.0.tgz", - "integrity": "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.0.tgz", - "integrity": "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.0.tgz", - "integrity": "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.0.tgz", - "integrity": "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.0.tgz", - "integrity": "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.0.tgz", - "integrity": "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.0.tgz", - "integrity": "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.0.tgz", - "integrity": "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.0.tgz", - "integrity": "sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@hono/node-server": { "version": "1.19.14", "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.14.tgz", @@ -627,28 +182,6 @@ "node": ">=22" } }, - "node_modules/@marp-team/marp-cli": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@marp-team/marp-cli/-/marp-cli-4.4.0.tgz", - "integrity": "sha512-fLBOZpi0mi7IoN+fXiCyGklbdROSE40DKv7LZa7en1mBd1XlQe5O7mE9KEzuYRKVbUMK4swrQqgcQ9WNNNoY6Q==", - "license": "MIT", - "dependencies": { - "@marp-team/marp-core": "^4.3.0", - "@marp-team/marpit": "^3.2.1", - "chokidar": "^4.0.3", - "cosmiconfig": "^9.0.1", - "puppeteer-core": "^24.39.1", - "serve-index": "^1.9.2", - "tmp": "^0.2.5", - "ws": "^8.19.0" - }, - "bin": { - "marp": "marp-cli.js" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/@marp-team/marp-core": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/@marp-team/marp-core/-/marp-core-4.3.0.tgz", @@ -753,44 +286,6 @@ "@emnapi/runtime": "^1.7.1" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/@oxc-project/types": { "version": "0.129.0", "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.129.0.tgz", @@ -1537,11 +1032,6 @@ "node": ">=10.0.0" } }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" - }, "node_modules/body-parser": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", @@ -1566,19 +1056,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -1644,20 +1121,6 @@ "node": ">=18" } }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/chromium-bidi": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-14.0.0.tgz", @@ -1996,48 +1459,6 @@ "node": ">= 0.4" } }, - "node_modules/esbuild": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.0.tgz", - "integrity": "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.28.0", - "@esbuild/android-arm": "0.28.0", - "@esbuild/android-arm64": "0.28.0", - "@esbuild/android-x64": "0.28.0", - "@esbuild/darwin-arm64": "0.28.0", - "@esbuild/darwin-x64": "0.28.0", - "@esbuild/freebsd-arm64": "0.28.0", - "@esbuild/freebsd-x64": "0.28.0", - "@esbuild/linux-arm": "0.28.0", - "@esbuild/linux-arm64": "0.28.0", - "@esbuild/linux-ia32": "0.28.0", - "@esbuild/linux-loong64": "0.28.0", - "@esbuild/linux-mips64el": "0.28.0", - "@esbuild/linux-ppc64": "0.28.0", - "@esbuild/linux-riscv64": "0.28.0", - "@esbuild/linux-s390x": "0.28.0", - "@esbuild/linux-x64": "0.28.0", - "@esbuild/netbsd-arm64": "0.28.0", - "@esbuild/netbsd-x64": "0.28.0", - "@esbuild/openbsd-arm64": "0.28.0", - "@esbuild/openbsd-x64": "0.28.0", - "@esbuild/openharmony-arm64": "0.28.0", - "@esbuild/sunos-x64": "0.28.0", - "@esbuild/win32-arm64": "0.28.0", - "@esbuild/win32-ia32": "0.28.0", - "@esbuild/win32-x64": "0.28.0" - } - }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -2161,88 +1582,6 @@ "node": ">=18.0.0" } }, - "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", - "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", - "dev": true, - "license": "MIT", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/execa/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/execa/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, "node_modules/expect-type": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", @@ -2361,23 +1700,6 @@ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", "license": "MIT" }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, "node_modules/fast-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", @@ -2394,16 +1716,6 @@ ], "license": "BSD-3-Clause" }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -2413,19 +1725,6 @@ "pend": "~1.2.0" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/finalhandler": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", @@ -2530,19 +1829,6 @@ "node": ">= 0.4" } }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/get-uri": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", @@ -2557,19 +1843,6 @@ "node": ">= 14" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -2706,16 +1979,6 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/ip-address": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz", @@ -2739,32 +2002,6 @@ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -2773,44 +2010,11 @@ "node": ">=8" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "license": "MIT" - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", @@ -3257,35 +2461,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, "node_modules/mhchemparser": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz", "integrity": "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==" }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/mime-db": { "version": "1.54.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", @@ -3307,16 +2487,6 @@ "node": ">= 0.6" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/mitt": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", @@ -3379,36 +2549,6 @@ "node": ">= 0.4.0" } }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -3462,16 +2602,6 @@ "wrappy": "1" } }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/pac-proxy-agent": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", @@ -3557,13 +2687,6 @@ "node": ">=8" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, "node_modules/path-to-regexp": { "version": "8.4.1", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.1.tgz", @@ -3592,19 +2715,6 @@ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, - "node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/pkce-challenge": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz", @@ -3839,27 +2949,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -3884,30 +2973,6 @@ "node": ">= 0.10" } }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -3925,27 +2990,6 @@ "node": ">=0.10.0" } }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -3954,17 +2998,6 @@ "node": ">=4" } }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, "node_modules/rolldown": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0.tgz", @@ -4015,30 +3048,6 @@ "node": ">= 18" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, "node_modules/sade": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", @@ -4078,16 +3087,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, - "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, "node_modules/send": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", @@ -4110,114 +3109,6 @@ "node": ">= 18" } }, - "node_modules/serve-index": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.2.tgz", - "integrity": "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==", - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.8.0", - "mime-types": "~2.1.35", - "parseurl": "~1.3.3" - }, - "engines": { - "node": ">= 0.8.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/serve-index/node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-index/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "license": "MIT", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/serve-index/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/serve-static": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", @@ -4260,42 +3151,6 @@ "node": ">=8" } }, - "node_modules/shelljs": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.9.2.tgz", - "integrity": "sha512-S3I64fEiKgTZzKCC46zT/Ib9meqofLrQVbpSswtjFfAVDW+AZ54WTnAM/3/yENoxz/V1Cy6u3kiiEbQ4DNphvw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "execa": "^1.0.0", - "fast-glob": "^3.3.2", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/shx": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/shx/-/shx-0.4.0.tgz", - "integrity": "sha512-Z0KixSIlGPpijKgcH6oCMCbltPImvaKy0sGH8AkLRXw1KyzpKtaCTizP2xen+hNDqVF4xxgvA0KXSb9o4Q6hnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.8", - "shelljs": "^0.9.2" - }, - "bin": { - "shx": "lib/cli.js" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/side-channel": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", @@ -4375,13 +3230,6 @@ "dev": true, "license": "ISC" }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -4518,29 +3366,6 @@ "node": ">=8" } }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/tar-fs": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", @@ -4650,28 +3475,6 @@ "node": ">=14.0.0" } }, - "node_modules/tmp": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz", - "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -4687,25 +3490,6 @@ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, - "node_modules/tsx": { - "version": "4.22.3", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.22.3.tgz", - "integrity": "sha512-mdoNxBC/cSQObGGVQ5Bpn5i+yv7j68gk3Nfm3wFjcJg3Z0Mix9jzAFfP12prmm5eVGmDKtp0yyArrs0Q+8gZHg==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "~0.28.0" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, "node_modules/type-is": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", diff --git a/package.json b/package.json index 2ba48311..ece50867 100644 --- a/package.json +++ b/package.json @@ -15,11 +15,11 @@ "richmenu-template" ], "scripts": { - "build": "npm run format:check && npm run typecheck:test && npm run clean && tsc && shx chmod +x dist/*.js", + "build": "npm run format:check && npm run typecheck:test && npm run clean && tsc && node scripts/chmod-bin.mjs", "prettier": "prettier \"src/**/*.ts\" \"test/**/*.ts\"", "format": "npm run prettier -- --write", "format:check": "npm run prettier -- -l", - "clean": "rm -rf dist/*", + "clean": "node scripts/clean.mjs", "typecheck:test": "tsc --project tsconfig.test.json", "release": "npm run build && npm publish --provenance --access public", "check:publint": "publint", @@ -39,7 +39,6 @@ "bugs": "https://github.com/line/line-bot-mcp-server/issues", "dependencies": { "@line/bot-sdk": "^11.0.1", - "@marp-team/marp-cli": "^4.2.3", "@marp-team/marp-core": "^4.1.0", "@modelcontextprotocol/sdk": "^1.8.0", "puppeteer": "^24.27.0", @@ -49,8 +48,6 @@ "@types/node": "^24.9.2", "prettier": "3.8.3", "publint": "0.3.21", - "shx": "^0.4.0", - "tsx": "^4.19.3", "typescript": "^6.0.2", "vitest": "^4.0.0" }, diff --git a/scripts/chmod-bin.mjs b/scripts/chmod-bin.mjs new file mode 100644 index 00000000..f10eaf39 --- /dev/null +++ b/scripts/chmod-bin.mjs @@ -0,0 +1,5 @@ +import { chmodSync, statSync } from "node:fs"; + +const file = "dist/index.js"; + +chmodSync(file, (statSync(file).mode & 0o777) | 0o111); diff --git a/scripts/clean.mjs b/scripts/clean.mjs new file mode 100644 index 00000000..920bd39b --- /dev/null +++ b/scripts/clean.mjs @@ -0,0 +1,3 @@ +import { rmSync } from "node:fs"; + +rmSync("dist", { recursive: true, force: true }); From a06a7658e84ad802a615a74bf8ade0477d3f9c20 Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Tue, 2 Jun 2026 10:52:26 +0900 Subject: [PATCH 385/415] Upgrade zod v3 to v4 (#473) * Update dependency zod to v4 * NO-ISSUE Drop unnecessary default * NO-ISSUE Remove deprecated way, Call url directly --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 17 ++++++++--- package.json | 2 +- src/common/schema/flexMessage.ts | 50 +++++++++++++++++--------------- 3 files changed, 40 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index 81356029..d125f1e6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@marp-team/marp-core": "^4.1.0", "@modelcontextprotocol/sdk": "^1.8.0", "puppeteer": "^24.27.0", - "zod": "^3.25.76" + "zod": "^4.0.0" }, "bin": { "line-bot-mcp-server": "dist/index.js" @@ -1134,6 +1134,15 @@ "devtools-protocol": "*" } }, + "node_modules/chromium-bidi/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -3903,9 +3912,9 @@ } }, "node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/package.json b/package.json index ece50867..3aac315f 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "@marp-team/marp-core": "^4.1.0", "@modelcontextprotocol/sdk": "^1.8.0", "puppeteer": "^24.27.0", - "zod": "^3.25.76" + "zod": "^4.0.0" }, "devDependencies": { "@types/node": "^24.9.2", diff --git a/src/common/schema/flexMessage.ts b/src/common/schema/flexMessage.ts index f41fa22b..b606ff93 100644 --- a/src/common/schema/flexMessage.ts +++ b/src/common/schema/flexMessage.ts @@ -1,24 +1,30 @@ import { z } from "zod"; -const sizeSchema = z - .enum(["xxs", "xs", "sm", "md", "lg", "xl", "xxl", "3xl", "4xl", "5xl"]) - .default("md"); -const imageSizeSchema = z - .enum([ - "xxs", - "xs", - "sm", - "md", - "lg", - "xl", - "xxl", - "3xl", - "4xl", - "5xl", - "full", - ]) - .default("md"); -const spacerSizeSchema = z.enum(["xs", "sm", "md", "lg", "xl", "xxl"]); +const sizeSchema = z.enum([ + "xxs", + "xs", + "sm", + "md", + "lg", + "xl", + "xxl", + "3xl", + "4xl", + "5xl", +]); +const imageSizeSchema = z.enum([ + "xxs", + "xs", + "sm", + "md", + "lg", + "xl", + "xxl", + "3xl", + "4xl", + "5xl", + "full", +]); const marginSchema = z.enum(["none", "xs", "sm", "md", "lg", "xl", "xxl"]); const spacingSchema = z.enum(["none", "xs", "sm", "md", "lg", "xl", "xxl"]); const positionSchema = z.enum(["relative", "absolute"]); @@ -109,7 +115,7 @@ const flexActionSchema = z.discriminatedUnion("type", [ ), altUri: z .object({ - desktop: z.string().url(), + desktop: z.url(), }) .optional(), }), @@ -185,7 +191,6 @@ const flexComponentSchema: z.ZodType = z.lazy(() => z.object({ type: z.literal("icon"), url: z - .string() .url() .min(1) .max(2000) @@ -204,7 +209,6 @@ const flexComponentSchema: z.ZodType = z.lazy(() => z.object({ type: z.literal("image"), url: z - .string() .url() .min(1) .max(2000) @@ -230,13 +234,11 @@ const flexComponentSchema: z.ZodType = z.lazy(() => z.object({ type: z.literal("video"), url: z - .string() .url() .min(1) .max(2000) .refine(url => url.startsWith("https://"), "Must use HTTPS protocol"), previewUrl: z - .string() .url() .min(1) .max(2000) From 1dd5fc34b18169f0593f1aa9b4a958bb1b7ef7db Mon Sep 17 00:00:00 2001 From: Motoi Okuzono Date: Tue, 2 Jun 2026 11:18:15 +0900 Subject: [PATCH 386/415] Update puppeteer to v25 (with npm 10 lockfile) (#478) NO-ISSUE Update puppeteer to v25 and regenerate package-lock with npm 10 Combines the puppeteer v25 bump (renovate #459) and the npm 10 lockfile regeneration (#476) on top of the current main. Generating package-lock.json with npm 10 keeps puppeteer v25's proxy-agent dependency tree in the lock, so `npm ci` passes on Node 22 (bundled npm 10) as well as Node 24 / 26 (npm 11). --- package-lock.json | 860 +++++----------------------------------------- package.json | 2 +- 2 files changed, 88 insertions(+), 774 deletions(-) diff --git a/package-lock.json b/package-lock.json index d125f1e6..e67c297e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@line/bot-sdk": "^11.0.1", "@marp-team/marp-core": "^4.1.0", "@modelcontextprotocol/sdk": "^1.8.0", - "puppeteer": "^24.27.0", + "puppeteer": "^25.0.0", "zod": "^4.0.0" }, "bin": { @@ -29,27 +29,6 @@ "node": ">=22" } }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@csstools/postcss-is-pseudo-class": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.3.tgz", @@ -310,36 +289,27 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.13.2.tgz", - "integrity": "sha512-5EUZSUIc37H6aIXyWO0Z4y8NlF8NnjgmqeQgOGiswAU7pY0HOo16ho4+alIWmSfdZnjqBRawMsP3I5YqLSn6kw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-3.0.4.tgz", + "integrity": "sha512-HGM8iAmGTf+Y7t0373szVbTmt3d7vPkYL/1bpOkOFO0YUYLgSeuYBCzESklogNPvOBnZ/MRD5f07OkpqH1trtA==", "license": "Apache-2.0", "dependencies": { - "debug": "^4.4.3", - "extract-zip": "^2.0.1", - "progress": "^2.0.3", - "proxy-agent": "^6.5.0", - "semver": "^7.7.4", - "tar-fs": "^3.1.1", + "modern-tar": "^0.7.6", "yargs": "^17.7.2" }, "bin": { - "browsers": "lib/cjs/main-cli.js" + "browsers": "lib/main-cli.js" }, "engines": { - "node": ">=18" - } - }, - "node_modules/@puppeteer/browsers/node_modules/semver": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", - "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": ">=22.12.0" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "proxy-agent": ">=8.0.1" + }, + "peerDependenciesMeta": { + "proxy-agent": { + "optional": true + } } }, "node_modules/@rolldown/binding-android-arm64": { @@ -435,9 +405,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -455,9 +422,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -475,9 +439,6 @@ "ppc64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -495,9 +456,6 @@ "s390x" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -515,9 +473,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -535,9 +490,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -631,12 +583,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@tootallnate/quickjs-emscripten": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", - "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", - "license": "MIT" - }, "node_modules/@tybys/wasm-util": { "version": "0.10.2", "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", @@ -682,16 +628,6 @@ "undici-types": "~7.16.0" } }, - "node_modules/@types/yauzl": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", - "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", - "license": "MIT", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@vitest/expect": { "version": "4.1.7", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.7.tgz", @@ -827,15 +763,6 @@ "node": ">= 0.6" } }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, "node_modules/ajv": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", @@ -873,6 +800,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -881,6 +809,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -906,132 +835,6 @@ "node": ">=12" } }, - "node_modules/ast-types": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/b4a": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", - "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", - "license": "Apache-2.0", - "peerDependencies": { - "react-native-b4a": "*" - }, - "peerDependenciesMeta": { - "react-native-b4a": { - "optional": true - } - } - }, - "node_modules/bare-events": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", - "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", - "license": "Apache-2.0", - "peerDependencies": { - "bare-abort-controller": "*" - }, - "peerDependenciesMeta": { - "bare-abort-controller": { - "optional": true - } - } - }, - "node_modules/bare-fs": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.0.tgz", - "integrity": "sha512-GljgCjeupKZJNetTqxKaQArLK10vpmK28or0+RwWjEl5Rk+/xG3wkpmkv+WrcBm3q1BwHKlnhXzR8O37kcvkXQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "bare-events": "^2.5.4", - "bare-path": "^3.0.0", - "bare-stream": "^2.6.4", - "bare-url": "^2.2.2", - "fast-fifo": "^1.3.2" - }, - "engines": { - "bare": ">=1.16.0" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-os": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz", - "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==", - "license": "Apache-2.0", - "optional": true, - "engines": { - "bare": ">=1.14.0" - } - }, - "node_modules/bare-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", - "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/bare-stream": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.7.0.tgz", - "integrity": "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "streamx": "^2.21.0" - }, - "peerDependencies": { - "bare-buffer": "*", - "bare-events": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - }, - "bare-events": { - "optional": true - } - } - }, - "node_modules/bare-url": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", - "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "bare-path": "^3.0.0" - } - }, - "node_modules/basic-ftp": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.3.1.tgz", - "integrity": "sha512-bopVNp6ugyA150DDuZfPFdt1KZ5a94ZDiwX4hMgZDzF+GttD80lEy8kj98kbyhLXnPvhtIo93mdnLIjpCAeeOw==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/body-parser": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", @@ -1056,15 +859,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -1103,14 +897,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, "node_modules/chai": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", @@ -1122,14 +908,17 @@ } }, "node_modules/chromium-bidi": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-14.0.0.tgz", - "integrity": "sha512-9gYlLtS6tStdRWzrtXaTMnqcM4dudNegMXJxkR0I/CXObHalYeYcAMPrL19eroNZHtJ8DQmu1E+ZNOYu/IXMXw==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-16.0.1.tgz", + "integrity": "sha512-J63PGu/9PpeCwLIcKYyzWP6yaVL5pxuBc0shlYCYM8BaAkmlwiQboXO1iNbOgSDbVklEyYFfNEcHD8oOAWacUA==", "license": "Apache-2.0", "dependencies": { "mitt": "^3.0.1", "zod": "^3.24.1" }, + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0" + }, "peerDependencies": { "devtools-protocol": "*" } @@ -1147,6 +936,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -1160,6 +950,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1170,7 +961,8 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" }, "node_modules/commander": { "version": "8.3.0", @@ -1239,32 +1031,6 @@ "node": ">= 0.10" } }, - "node_modules/cosmiconfig": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", - "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -1295,15 +1061,6 @@ "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" }, - "node_modules/data-uri-to-buffer": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", - "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -1321,20 +1078,6 @@ } } }, - "node_modules/degenerator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", - "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", - "license": "MIT", - "dependencies": { - "ast-types": "^0.13.4", - "escodegen": "^2.1.0", - "esprima": "^4.0.1" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -1355,9 +1098,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1608973", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1608973.tgz", - "integrity": "sha512-Tpm17fxYzt+J7VrGdc1k8YdRqS3YV7se/M6KeemEqvUbq/n7At1rWVuXMxQgpWkdwSdIEKYbU//Bve+Shm4YNQ==", + "version": "0.0.1624250", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1624250.tgz", + "integrity": "sha512-YFAat/lOiIk0ARmBweG+ygrEcbZrq5B9urRyUoeQKp53MlidHXE2TmTbxKcaXoQj7u/aX+jebDO4BW55rs0WwA==", "license": "BSD-3-Clause" }, "node_modules/dunder-proto": { @@ -1383,7 +1126,8 @@ "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, "node_modules/encodeurl": { "version": "2.0.0", @@ -1394,15 +1138,6 @@ "node": ">= 0.8" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -1415,22 +1150,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -1472,6 +1191,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -1482,27 +1202,6 @@ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "license": "MIT" }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, "node_modules/esm": { "version": "3.2.25", "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", @@ -1511,28 +1210,6 @@ "node": ">=6" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, "node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", @@ -1543,15 +1220,6 @@ "@types/estree": "^1.0.0" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -1561,15 +1229,6 @@ "node": ">= 0.6" } }, - "node_modules/events-universal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", - "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.7.0" - } - }, "node_modules/eventsource": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.6.tgz", @@ -1662,53 +1321,12 @@ "express": ">= 4.11" } }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "license": "BSD-2-Clause", - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/extract-zip/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "license": "MIT" }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "license": "MIT" - }, "node_modules/fast-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", @@ -1725,15 +1343,6 @@ ], "license": "BSD-3-Clause" }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "license": "MIT", - "dependencies": { - "pend": "~1.2.0" - } - }, "node_modules/finalhandler": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", @@ -1797,6 +1406,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -1838,20 +1448,6 @@ "node": ">= 0.4" } }, - "node_modules/get-uri": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", - "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", - "license": "MIT", - "dependencies": { - "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^6.0.2", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -1925,32 +1521,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/iconv-lite": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", @@ -1967,21 +1537,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -2006,15 +1561,11 @@ "node": ">= 0.10" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { "node": ">=8" } @@ -2040,11 +1591,6 @@ "url": "https://github.com/sponsors/panva" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, "node_modules/js-yaml": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", @@ -2057,11 +1603,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -2233,9 +1774,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -2257,9 +1795,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -2281,9 +1816,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -2305,9 +1837,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MPL-2.0", "optional": true, "os": [ @@ -2363,10 +1892,17 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } }, "node_modules/linkify-it": { "version": "5.0.0", @@ -2382,15 +1918,6 @@ "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==" }, - "node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, "node_modules/magic-string": { "version": "0.30.21", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", @@ -2507,6 +2034,15 @@ "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz", "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==" }, + "node_modules/modern-tar": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/modern-tar/-/modern-tar-0.7.6.tgz", + "integrity": "sha512-sweCIVXzx1aIGTCdzcMlSZt1h8k5Tmk08VNAuRk3IU28XamGiOH5ypi11g6De2CH7PhYqSSnGy2A/EFhbWnVKg==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", @@ -2549,15 +2085,6 @@ "node": ">= 0.6" } }, - "node_modules/netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -2611,38 +2138,6 @@ "wrappy": "1" } }, - "node_modules/pac-proxy-agent": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", - "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", - "license": "MIT", - "dependencies": { - "@tootallnate/quickjs-emscripten": "^0.23.0", - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "get-uri": "^6.0.1", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.6", - "pac-resolver": "^7.0.1", - "socks-proxy-agent": "^8.0.5" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/pac-resolver": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", - "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", - "license": "MIT", - "dependencies": { - "degenerator": "^5.0.0", - "netmask": "^2.0.2" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/package-manager-detector": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.6.0.tgz", @@ -2650,34 +2145,6 @@ "dev": true, "license": "MIT" }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -2713,12 +2180,6 @@ "dev": true, "license": "MIT" }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "license": "MIT" - }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -2816,15 +2277,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -2838,31 +2290,6 @@ "node": ">= 0.10" } }, - "node_modules/proxy-agent": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", - "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.1", - "https-proxy-agent": "^7.0.6", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.1.0", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.5" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" - }, "node_modules/publint": { "version": "0.3.21", "resolved": "https://registry.npmjs.org/publint/-/publint-0.3.21.tgz", @@ -2885,16 +2312,6 @@ "url": "https://bjornlu.com/sponsor" } }, - "node_modules/pump": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", - "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode.js": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", @@ -2905,42 +2322,41 @@ } }, "node_modules/puppeteer": { - "version": "24.43.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.43.1.tgz", - "integrity": "sha512-/FSOViCrqRdb1HDocpsM9Z1giA71gTQPUt3SpHGVRALKAy/rJr1fLFYZW9F23qPxqVxTHQnbh/5B5opJST3kAw==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-25.1.0.tgz", + "integrity": "sha512-7L6/0JM7XStK99lIL4xQySyNEXNfII6pk0BxkI5kKBTOhR7AsoQiv067YTsE/rIXxQiq9ajlO4WcqBjS/FWK1A==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.13.2", - "chromium-bidi": "14.0.0", - "cosmiconfig": "^9.0.0", - "devtools-protocol": "0.0.1608973", - "puppeteer-core": "24.43.1", + "@puppeteer/browsers": "3.0.4", + "chromium-bidi": "16.0.1", + "devtools-protocol": "0.0.1624250", + "lilconfig": "^3.1.3", + "puppeteer-core": "25.1.0", "typed-query-selector": "^2.12.2" }, "bin": { - "puppeteer": "lib/cjs/puppeteer/node/cli.js" + "puppeteer": "lib/puppeteer/node/cli.js" }, "engines": { - "node": ">=18" + "node": ">=22.12.0" } }, "node_modules/puppeteer-core": { - "version": "24.43.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.43.1.tgz", - "integrity": "sha512-T5ScUMAsmhdNbgDR41AGESYeS6V9MSgetkSnVhhW+gXvzC42VesKCn5ld87gAZDJ6vLHL9GkRvY9WtQWSnwFbw==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-25.1.0.tgz", + "integrity": "sha512-jKzy5y4WG6uNuFbTWgW1D7mqoT9o0nllc/6a1DGF775T1mPmgw3scdFEtEq67yVFikavQmbYq6NLfbTfxHSlqQ==", "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.13.2", - "chromium-bidi": "14.0.0", - "debug": "^4.4.3", - "devtools-protocol": "0.0.1608973", + "@puppeteer/browsers": "3.0.4", + "chromium-bidi": "16.0.1", + "devtools-protocol": "0.0.1624250", "typed-query-selector": "^2.12.2", - "webdriver-bidi-protocol": "0.4.1", - "ws": "^8.20.0" + "webdriver-bidi-protocol": "0.4.2", + "ws": "^8.21.0" }, "engines": { - "node": ">=18" + "node": ">=22.12.0" } }, "node_modules/qs": { @@ -2986,6 +2402,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2999,14 +2416,6 @@ "node": ">=0.10.0" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, "node_modules/rolldown": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0.tgz", @@ -3239,54 +2648,6 @@ "dev": true, "license": "ISC" }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "license": "MIT", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", - "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", - "license": "MIT", - "dependencies": { - "ip-address": "^10.0.1", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", - "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "socks": "^2.8.3" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -3340,21 +2701,11 @@ "dev": true, "license": "MIT" }, - "node_modules/streamx": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", - "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", - "license": "MIT", - "dependencies": { - "events-universal": "^1.0.0", - "fast-fifo": "^1.3.2", - "text-decoder": "^1.1.0" - } - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -3368,6 +2719,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -3375,40 +2727,6 @@ "node": ">=8" } }, - "node_modules/tar-fs": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", - "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==", - "license": "MIT", - "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - }, - "optionalDependencies": { - "bare-fs": "^4.0.1", - "bare-path": "^3.0.0" - } - }, - "node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "license": "MIT", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "node_modules/text-decoder": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", - "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.4" - } - }, "node_modules/tinybench": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", @@ -3497,7 +2815,9 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" + "dev": true, + "license": "0BSD", + "optional": true }, "node_modules/type-is": { "version": "2.0.1", @@ -3523,7 +2843,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -3763,9 +3083,9 @@ } }, "node_modules/webdriver-bidi-protocol": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.1.tgz", - "integrity": "sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.2.tgz", + "integrity": "sha512-VSV+fzfChirL3e7jay2yUC7B4HQCGtEWEg/MSSQbK+qWbqeGlRLlXTzPpYr3XGUvbpDHumWZBJxgesg4N7dbtA==", "license": "Apache-2.0" }, "node_modules/which": { @@ -3809,6 +3129,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -3872,6 +3193,7 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", "engines": { "node": ">=10" } @@ -3880,6 +3202,7 @@ "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -3897,20 +3220,11 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", "engines": { "node": ">=12" } }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "license": "MIT", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, "node_modules/zod": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", diff --git a/package.json b/package.json index 3aac315f..e2146ed1 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "@line/bot-sdk": "^11.0.1", "@marp-team/marp-core": "^4.1.0", "@modelcontextprotocol/sdk": "^1.8.0", - "puppeteer": "^24.27.0", + "puppeteer": "^25.0.0", "zod": "^4.0.0" }, "devDependencies": { From c5d36b251a02bf9b6648ff6c8be93f1ae8c89815 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 5 Jun 2026 07:39:52 +0000 Subject: [PATCH 387/415] Lock file maintenance (#483) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 603 ++++++++++++++++++++++++++-------------------- 1 file changed, 339 insertions(+), 264 deletions(-) diff --git a/package-lock.json b/package-lock.json index e67c297e..5700dd20 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,6 +43,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT-0", "dependencies": { "@csstools/selector-specificity": "^5.0.0", "postcss-selector-parser": "^7.0.0" @@ -68,6 +69,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT-0", "engines": { "node": ">=18" }, @@ -89,6 +91,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT-0", "engines": { "node": ">=18" }, @@ -202,8 +205,17 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/@marp-team/marpit-svg-polyfill/-/marpit-svg-polyfill-2.1.0.tgz", "integrity": "sha512-VqCoAKwv1HJdzZp36dDPxznz2JZgRjkVSSPHpCzk72G2N753F0HPKXjevdjxmzN6gir9bUGBgMD1SguWJIi11A==", + "license": "MIT", "engines": { - "node": ">=18" + "node": ">=10" + }, + "peerDependencies": { + "@marp-team/marpit": ">=0.5.0" + }, + "peerDependenciesMeta": { + "@marp-team/marpit": { + "optional": true + } } }, "node_modules/@modelcontextprotocol/sdk": { @@ -266,9 +278,9 @@ } }, "node_modules/@oxc-project/types": { - "version": "0.129.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.129.0.tgz", - "integrity": "sha512-3oz8m3FGdr2nDXVqmFUw7jolKliC4MoyXYIG2c7gpjBnzUWQpUGIYcXYKxTdTi+N2jusvt610ckTMkxdwHkYEg==", + "version": "0.132.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.132.0.tgz", + "integrity": "sha512-FESMOxil5Se014ui/Eq8fT5uHJo6nIRwH0PfJrZJXs6Gek3ZVFOrpUv3YIZT20m+extU98Hg1Ym72U58rlsxUQ==", "dev": true, "license": "MIT", "funding": { @@ -313,9 +325,9 @@ } }, "node_modules/@rolldown/binding-android-arm64": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0.tgz", - "integrity": "sha512-TWMZnRLMe63C2Lhyicviu7ZHaU4kxa6PS3rofvc9GmcvptzNN11BcfQ4Sl7MwTOsisQoa2keB/EBdNCAnUo8vA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.2.tgz", + "integrity": "sha512-ZS4D1JPGn/MYQN/SYDWftIE/nVsM8j/AFOYEzAoOE2O3NktQOZru+/vYXGbR/qtdLdIfGCP0lcoJiYVzsEz+iQ==", "cpu": [ "arm64" ], @@ -330,9 +342,9 @@ } }, "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0.tgz", - "integrity": "sha512-6XcD+8k0gPVItNagEw78/qqcBDwKcwDYS8V2hRmVsfUSIrd8cWe/CBvRDI5toqFyPfj+FJr6t8U6Xj2P2prEew==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.2.tgz", + "integrity": "sha512-vdFA9+C/rekyGce7WqHs/xoT0ioZEWaOFyZLIV1mEeNFaFDUQrPIo8Vs2GvJ6eetb3rzDUtUBgzto3ExpXJB3w==", "cpu": [ "arm64" ], @@ -347,9 +359,9 @@ } }, "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0.tgz", - "integrity": "sha512-iN/tWVXRQDWvmZlKdceP1Dwug9GDpEymhb9p4xnEe6zvCg5lFmzVljl+1qR1NVx3yfGpr2Na+CuLmv5IU8uzfQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.2.tgz", + "integrity": "sha512-BewSOwTHazv77DTYiAZXSqqKZ4KP/KonFisDMVU7PImxoWfB2aepnPhd2E4SWz3zDzYgDNbs6jBmTdgNnF02GA==", "cpu": [ "x64" ], @@ -364,9 +376,9 @@ } }, "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0.tgz", - "integrity": "sha512-jjQMDvvwSOuhOwMszD/klSOjyWMM3zI64hWTj9KT5x4MxRbZAf+7vLQ6qouRhtsLVFHr3f0ILaJAfgENPiQdAQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.2.tgz", + "integrity": "sha512-m41o7M0YWtUdqk61Tb+jnKb2rN++iRdIASlExkUoKfIAH30DOHCB8fVLzSUpbWHHU8esmEioY62PxzexE8MBuA==", "cpu": [ "x64" ], @@ -381,9 +393,9 @@ } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0.tgz", - "integrity": "sha512-d//Dtg2x6/m3mbV64yUGNnDGNZaDGRpDLLNGerHQUVObuNaIQaaDp25yUiqGXtHEXX+NP2d0wAlmKgpYgIAJ2A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.2.tgz", + "integrity": "sha512-jcojB9H7W/jS29pMKWAK1N+fU99vXodHDTatS3b3y/XSOCiHo0kkA74pL3jJmkoQtYpOCxDvaKs1fo2Ij/1X5w==", "cpu": [ "arm" ], @@ -398,13 +410,16 @@ } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0.tgz", - "integrity": "sha512-n7Ofp0mx+aB2cC+Sdy5YtMnXtY9lchnHbY+3Yt0uq9JsWQExf4f5Whu0tK0R8Jdc9S6RchTHjIFY7uc92puOVQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.2.tgz", + "integrity": "sha512-1jn6qDU5iiOgFgygDzKUuKP0maTi0/f1+sBLgvij/76C77Nm3ts6ufz9Bjg5q5dduxiUIxtq86JIoBvo1xQ4Ig==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -415,13 +430,16 @@ } }, "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0.tgz", - "integrity": "sha512-EIVjy2cgd7uuMMo94FVkBp7F6DhcZAUwNURkSG3RwUmvAXR6s0ISxM81U+IydcZByPG0pZIHsf1b6kTxoFDgJA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.2.tgz", + "integrity": "sha512-QVLO/czFMdoMFSqlX3bcswcJNm/23r+qoa/jgtmFc/qEp6/jXmIkDjF/XIo8dPfGaiwy1xfQn8o77L79GeXFgw==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -432,13 +450,16 @@ } }, "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0.tgz", - "integrity": "sha512-JEwwOPcwTLAcpDQlqSmjEmfs63xJnSiUNIGvLcDLUHCWK4XowpS/7c7tUsUH6uT/ct6bMUTdXKfI8967FYj6mg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.2.tgz", + "integrity": "sha512-hgO5Abm0w5UL6FEa2iFnZqo2KlK7TQ5QhV5x09hujBf7t5KzHQ1VmfPuTpqRy/rNlSxua3eWH374xxiVrP+lcA==", "cpu": [ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -449,13 +470,16 @@ } }, "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0.tgz", - "integrity": "sha512-0wjCFhLrihtAubnT9iA0N++0pSV0z5Hg7tNGdNJ4RFaINceHadoF+kiFGyY1qSSNVIAZtLotG8Ju1bgDPkjnFA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.2.tgz", + "integrity": "sha512-fy8rXxuYEu602abC8MUNaPjYLIFzReOaEIEMKMUa0rFEUxNpVXhs15KSSQ4qlqSaM7B6rcj9rDZgADh/IGDzLQ==", "cpu": [ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -466,13 +490,16 @@ } }, "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0.tgz", - "integrity": "sha512-Dfn7iak9BcMMePxcoJfpSbWqnEyrp/dRF63/8qW/eHBdOZov6x5aShLLEYGYdIeSJ6vMLK/XCVB+lGIxm41bQA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.2.tgz", + "integrity": "sha512-0+bOkiQ779+r1WpoHOWHqncvyySci0vKph+myNDYb+im6meJAzHQXay6oEgnkHuUGouM1LKTZwqKpBow6Kj7CQ==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -483,13 +510,16 @@ } }, "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0.tgz", - "integrity": "sha512-5/utzzDmD/pD/bmuaUcbTf/sZYy0aztwIVlfpoW1fTjCZ0BaPOMVWGZL1zvgxyi7ZIVYWlxKONHmSbHuiOh8Jw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.2.tgz", + "integrity": "sha512-mjSkrzZK5Qsl0a9d1JgILOiuZOSDTVdKENcSXBoqbzSrspLR/4/IRVDo5wd2GgZjNss/viBFJdeq+j7qH2nypw==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -500,9 +530,9 @@ } }, "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0.tgz", - "integrity": "sha512-ouJs8VcUomfLfpbUECqFMRqdV4x6aeAK3MA4m6vTrJJjKyWTV5KnxZx7Jd9G+GlDaQQxubcba00x16OyJ1meig==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.2.tgz", + "integrity": "sha512-1v5vHasdfQAZoEHakBV72LIFAC9JjnymsiKxp+GEr/ma3+NJCPSaYK+qavInOovJkgwFrs7GccX2d6IgDA3Z5w==", "cpu": [ "arm64" ], @@ -517,9 +547,9 @@ } }, "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0.tgz", - "integrity": "sha512-E+oHKGiDA+lsKMmFtffDDw91EryDT7uJocrIuCHqhm6bCTM6xFK+3gaCkYOHfPwQr0cCNarSM2xaELoQDz9jJg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.2.tgz", + "integrity": "sha512-mb1VobWn6NheziTk5/WEaR6AKVbrwT5sOi6C7zk3gy/pD1qtJfU1j4PgTo2NJnOtbL9Dl3Aeei8w9jJ7qC2jZQ==", "cpu": [ "wasm32" ], @@ -536,9 +566,9 @@ } }, "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0.tgz", - "integrity": "sha512-yYK02n8Rngo+gbm1y6G0+7jk1sJ/2Wt7K0me0Y7k/ErBpyf+LJ2gFpqWVTcRV1rUepBlQRmpgWkTQCiiwrK0Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.2.tgz", + "integrity": "sha512-SqKonF56vA/L2yHwHYcEp2P34URpOZ7d1fS635cTkpDnUtEGdUbhI6NzsPdqeSWvAAeGDrxjWjNmibDIdFf9/A==", "cpu": [ "arm64" ], @@ -553,9 +583,9 @@ } }, "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0.tgz", - "integrity": "sha512-14bpChMahXRRXiTwahSl+zzHPW6qQTXtkMuJBFlbo+pqSAews2d4BdCSHfrJ/MBsCZtpmTafsY+1QhBzitcmdg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.2.tgz", + "integrity": "sha512-v7qRI7gXLRINcOGXt+7YmAZ6iFuyZVMIoXAxhd8oP+DR9dLfL9GfNIx7PLMxmhZdvq8waUJBQiWN9EKNy+TRBQ==", "cpu": [ "x64" ], @@ -570,9 +600,9 @@ } }, "node_modules/@rolldown/pluginutils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0.tgz", - "integrity": "sha512-aKs/3GSWyV0mrhNmt/96/Z3yczC3yvrzYATCiCXQebBsGyYzjNdUphRVLeJQ67ySKVXRfMxt2lm12pmXvbPFQQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", "dev": true, "license": "MIT" }, @@ -613,9 +643,9 @@ "license": "MIT" }, "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", "dev": true, "license": "MIT" }, @@ -764,9 +794,9 @@ } }, "node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", @@ -823,7 +853,8 @@ "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" }, "node_modules/assertion-error": { "version": "2.0.1", @@ -968,20 +999,22 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", "engines": { "node": ">= 12" } }, "node_modules/content-disposition": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", + "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/content-type": { @@ -1019,9 +1052,9 @@ } }, "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", "license": "MIT", "dependencies": { "object-assign": "^4", @@ -1029,6 +1062,10 @@ }, "engines": { "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/cross-spawn": { @@ -1049,6 +1086,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -1059,7 +1097,8 @@ "node_modules/cssfilter": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", - "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" + "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==", + "license": "MIT" }, "node_modules/debug": { "version": "4.4.3", @@ -1169,16 +1208,16 @@ } }, "node_modules/es-module-lexer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", - "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", + "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", "dev": true, "license": "MIT" }, "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -1206,6 +1245,7 @@ "version": "3.2.25", "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -1230,9 +1270,9 @@ } }, "node_modules/eventsource": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.6.tgz", - "integrity": "sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", "license": "MIT", "dependencies": { "eventsource-parser": "^3.0.1" @@ -1242,9 +1282,9 @@ } }, "node_modules/eventsource-parser": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.1.tgz", - "integrity": "sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.1.0.tgz", + "integrity": "sha512-kJezFj9YFAMLeORyi7aCLxLbD5/qWMQnoMVlVPyHIll7lgRJCc3JVln9Vgl9nwQi0YkMnhdGTMNn7CkRRAptMg==", "license": "MIT", "engines": { "node": ">=18.0.0" @@ -1304,9 +1344,9 @@ } }, "node_modules/express-rate-limit": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.5.1.tgz", - "integrity": "sha512-5O6KYmyJEpuPJV5hNTXKbAHWRqrzyu+OI3vUnSd2kXFubIVpG7ezpgxQy76Zo5GQZtrQBg86hF+CM/NX+cioiQ==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.5.2.tgz", + "integrity": "sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A==", "license": "MIT", "dependencies": { "ip-address": "^10.2.0" @@ -1343,10 +1383,28 @@ ], "license": "BSD-3-Clause" }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/finalhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", - "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", "license": "MIT", "dependencies": { "debug": "^4.4.0", @@ -1357,7 +1415,11 @@ "statuses": "^2.0.1" }, "engines": { - "node": ">= 0.8" + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/forwarded": { @@ -1473,9 +1535,9 @@ } }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -1488,14 +1550,15 @@ "version": "11.11.1", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", + "license": "BSD-3-Clause", "engines": { "node": ">=12.0.0" } }, "node_modules/hono": { - "version": "4.12.18", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.18.tgz", - "integrity": "sha512-RWzP96k/yv0PQfyXnWjs6zot20TqfpfsNXhOnev8d1InAxubW93L11/oNUc3tQqn2G0bSdAOBpX+2uDFHV7kdQ==", + "version": "4.12.23", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.23.tgz", + "integrity": "sha512-eIaZ9qDgu7XV0pxOCrg7/WhnQ6Ivm22UcxhXx/A3dcbqbbYgBEkc6e/J/s7j2tS96zoB0S9VBdLwQNCWwUo4LA==", "license": "MIT", "engines": { "node": ">=16.9.0" @@ -1583,9 +1646,9 @@ "license": "ISC" }, "node_modules/jose": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/jose/-/jose-6.1.3.tgz", - "integrity": "sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.3.tgz", + "integrity": "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/panva" @@ -1616,9 +1679,9 @@ "license": "BSD-2-Clause" }, "node_modules/katex": { - "version": "0.16.37", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.37.tgz", - "integrity": "sha512-TIGjO2cCGYono+uUzgkE7RFF329mLLWGuHUlSr6cwIVj9O8f0VQZ783rsanmJpFUo32vvtj7XT04NGRPh+SZFg==", + "version": "0.16.47", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.47.tgz", + "integrity": "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" @@ -1774,6 +1837,9 @@ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -1795,6 +1861,9 @@ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -1816,6 +1885,9 @@ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -1837,6 +1909,9 @@ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -1905,9 +1980,19 @@ } }, "node_modules/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.1.tgz", + "integrity": "sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/markdown-it" + } + ], "license": "MIT", "dependencies": { "uc.micro": "^2.0.0" @@ -1916,7 +2001,8 @@ "node_modules/lodash.kebabcase": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", - "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==" + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "license": "MIT" }, "node_modules/magic-string": { "version": "0.30.21", @@ -1929,14 +2015,24 @@ } }, "node_modules/markdown-it": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz", - "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.2.0.tgz", + "integrity": "sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/markdown-it" + } + ], "license": "MIT", "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", - "linkify-it": "^5.0.0", + "linkify-it": "^5.0.1", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" @@ -1948,7 +2044,8 @@ "node_modules/markdown-it-front-matter": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/markdown-it-front-matter/-/markdown-it-front-matter-0.2.4.tgz", - "integrity": "sha512-25GUs0yjS2hLl8zAemVndeEzThB1p42yxuDEKbd4JlL3jiz+jsm6e56Ya8B0VREOkNxLYB4TTwaoPJ3ElMmW+w==" + "integrity": "sha512-25GUs0yjS2hLl8zAemVndeEzThB1p42yxuDEKbd4JlL3jiz+jsm6e56Ya8B0VREOkNxLYB4TTwaoPJ3ElMmW+w==", + "license": "MIT" }, "node_modules/math-intrinsics": { "version": "1.1.0", @@ -1963,6 +2060,8 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.2.tgz", "integrity": "sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==", + "deprecated": "Version 4 replaces this package with the scoped package @mathjax/src", + "license": "Apache-2.0", "dependencies": { "esm": "^3.2.25", "mhchemparser": "^4.1.0", @@ -2000,7 +2099,8 @@ "node_modules/mhchemparser": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz", - "integrity": "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==" + "integrity": "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==", + "license": "Apache-2.0" }, "node_modules/mime-db": { "version": "1.54.0", @@ -2012,15 +2112,19 @@ } }, "node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "license": "MIT", "dependencies": { "mime-db": "^1.54.0" }, "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/mitt": { @@ -2032,7 +2136,8 @@ "node_modules/mj-context-menu": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz", - "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==" + "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==", + "license": "Apache-2.0" }, "node_modules/modern-tar": { "version": "0.7.6", @@ -2060,15 +2165,16 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -2164,9 +2270,9 @@ } }, "node_modules/path-to-regexp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.1.tgz", - "integrity": "sha512-fvU78fIjZ+SBM9YwCknCvKOUKkLVqtWDVctl0s7xIqfmfb38t2TT4ZU2gHm+Z8xGwgW+QWEU3oQSAzIbo89Ggw==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", "license": "MIT", "funding": { "type": "opencollective", @@ -2183,21 +2289,35 @@ "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, "node_modules/pkce-challenge": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz", - "integrity": "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", + "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==", "license": "MIT", "engines": { "node": ">=16.20.0" } }, "node_modules/postcss": { - "version": "8.5.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", - "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", + "version": "8.5.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz", + "integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==", "funding": [ { "type": "opencollective", @@ -2214,7 +2334,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.11", + "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -2236,6 +2356,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT-0", "dependencies": { "@csstools/selector-resolve-nested": "^3.1.0", "@csstools/selector-specificity": "^5.0.0", @@ -2417,14 +2538,14 @@ } }, "node_modules/rolldown": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0.tgz", - "integrity": "sha512-yD986aXDESFGS95spT1LAv0jssywP4npMEjmMHyN2/5+eE8qQJUype2AaKkRiLgBgyD0LFlubwAht7VmY8rGoA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.2.tgz", + "integrity": "sha512-oZx5zVDtVB44AW3eaifgDml1gWRDZGvjcfdxonE4swNPG98PrrXjaO/KrnUjzlMnztCCRVlUueA1kCXhARGk6g==", "dev": true, "license": "MIT", "dependencies": { - "@oxc-project/types": "=0.129.0", - "@rolldown/pluginutils": "1.0.0" + "@oxc-project/types": "=0.132.0", + "@rolldown/pluginutils": "^1.0.0" }, "bin": { "rolldown": "bin/cli.mjs" @@ -2433,21 +2554,21 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.0.0", - "@rolldown/binding-darwin-arm64": "1.0.0", - "@rolldown/binding-darwin-x64": "1.0.0", - "@rolldown/binding-freebsd-x64": "1.0.0", - "@rolldown/binding-linux-arm-gnueabihf": "1.0.0", - "@rolldown/binding-linux-arm64-gnu": "1.0.0", - "@rolldown/binding-linux-arm64-musl": "1.0.0", - "@rolldown/binding-linux-ppc64-gnu": "1.0.0", - "@rolldown/binding-linux-s390x-gnu": "1.0.0", - "@rolldown/binding-linux-x64-gnu": "1.0.0", - "@rolldown/binding-linux-x64-musl": "1.0.0", - "@rolldown/binding-openharmony-arm64": "1.0.0", - "@rolldown/binding-wasm32-wasi": "1.0.0", - "@rolldown/binding-win32-arm64-msvc": "1.0.0", - "@rolldown/binding-win32-x64-msvc": "1.0.0" + "@rolldown/binding-android-arm64": "1.0.2", + "@rolldown/binding-darwin-arm64": "1.0.2", + "@rolldown/binding-darwin-x64": "1.0.2", + "@rolldown/binding-freebsd-x64": "1.0.2", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.2", + "@rolldown/binding-linux-arm64-gnu": "1.0.2", + "@rolldown/binding-linux-arm64-musl": "1.0.2", + "@rolldown/binding-linux-ppc64-gnu": "1.0.2", + "@rolldown/binding-linux-s390x-gnu": "1.0.2", + "@rolldown/binding-linux-x64-gnu": "1.0.2", + "@rolldown/binding-linux-x64-musl": "1.0.2", + "@rolldown/binding-openharmony-arm64": "1.0.2", + "@rolldown/binding-wasm32-wasi": "1.0.2", + "@rolldown/binding-win32-arm64-msvc": "1.0.2", + "@rolldown/binding-win32-x64-msvc": "1.0.2" } }, "node_modules/router": { @@ -2479,26 +2600,6 @@ "node": ">=6" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -2506,31 +2607,35 @@ "license": "MIT" }, "node_modules/send": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", - "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", "license": "MIT", "dependencies": { - "debug": "^4.3.5", + "debug": "^4.4.3", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "mime-types": "^3.0.1", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", - "statuses": "^2.0.1" + "statuses": "^2.0.2" }, "engines": { "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/serve-static": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", - "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", "license": "MIT", "dependencies": { "encodeurl": "^2.0.0", @@ -2540,6 +2645,10 @@ }, "engines": { "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/setprototypeof": { @@ -2589,13 +2698,13 @@ } }, "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" + "object-inspect": "^1.13.4" }, "engines": { "node": ">= 0.4" @@ -2652,6 +2761,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -2674,6 +2784,7 @@ "version": "13.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "license": "MIT", "engines": { "node": ">=18" } @@ -2695,9 +2806,9 @@ } }, "node_modules/std-env": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.0.0.tgz", - "integrity": "sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.1.0.tgz", + "integrity": "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==", "dev": true, "license": "MIT" }, @@ -2735,9 +2846,9 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", - "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.2.tgz", + "integrity": "sha512-M/Q0B2cp4K7kynaT/vnED1j8TlLY+Pp7C6Wl2bl/7u/F0mUVwdyOpwomQb8JpYLitHUssAJRmLZdMCGsrx7i+g==", "dev": true, "license": "MIT", "engines": { @@ -2761,37 +2872,6 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/tinyrainbow": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", @@ -2820,17 +2900,34 @@ "optional": true }, "node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz", + "integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==", "license": "MIT", "dependencies": { - "content-type": "^1.0.5", + "content-type": "^2.0.0", "media-typer": "^1.1.0", "mime-types": "^3.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/type-is/node_modules/content-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", + "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/typed-query-selector": { @@ -2877,7 +2974,8 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" }, "node_modules/vary": { "version": "1.1.2", @@ -2889,16 +2987,16 @@ } }, "node_modules/vite": { - "version": "8.0.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.12.tgz", - "integrity": "sha512-w2dDofOWv2QB09ZITZBsvKTVAlYvPR4IAmrY/v0ir9KvLs0xybR7i48wxhM1/oyBWO34wPns+bPGw5ZrZqDpZg==", + "version": "8.0.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.14.tgz", + "integrity": "sha512-s4BJJ+5y1pYL6Otw51FHhVJQhPnuRinKig64g/1+EUNaJsd3gCKdD31IPFvswUgW9/60QT9oFHbZHbQK5imcxw==", "dev": true, "license": "MIT", "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", - "postcss": "^8.5.14", - "rolldown": "1.0.0", + "postcss": "^8.5.15", + "rolldown": "1.0.2", "tinyglobby": "^0.2.16" }, "bin": { @@ -2966,19 +3064,6 @@ } } }, - "node_modules/vite/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/vitest": { "version": "4.1.7", "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.7.tgz", @@ -3069,19 +3154,6 @@ } } }, - "node_modules/vitest/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/webdriver-bidi-protocol": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.2.tgz", @@ -3123,7 +3195,8 @@ "node_modules/wicked-good-xpath": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", - "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==" + "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==", + "license": "MIT" }, "node_modules/wrap-ansi": { "version": "7.0.0", @@ -3173,6 +3246,7 @@ "version": "1.0.15", "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.15.tgz", "integrity": "sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==", + "license": "MIT", "dependencies": { "commander": "^2.20.3", "cssfilter": "0.0.10" @@ -3187,7 +3261,8 @@ "node_modules/xss/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" }, "node_modules/y18n": { "version": "5.0.8", @@ -3235,12 +3310,12 @@ } }, "node_modules/zod-to-json-schema": { - "version": "3.25.1", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.1.tgz", - "integrity": "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==", + "version": "3.25.2", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", + "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==", "license": "ISC", "peerDependencies": { - "zod": "^3.25 || ^4" + "zod": "^3.25.28 || ^4" } } } From eecc0f132ed23c628ca67d75d8d366871a64c8f9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 6 Jun 2026 16:35:02 +0000 Subject: [PATCH 388/415] Lock file maintenance (#484) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5700dd20..14a0f525 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2846,9 +2846,9 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.2.tgz", - "integrity": "sha512-M/Q0B2cp4K7kynaT/vnED1j8TlLY+Pp7C6Wl2bl/7u/F0mUVwdyOpwomQb8JpYLitHUssAJRmLZdMCGsrx7i+g==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.3.tgz", + "integrity": "sha512-g62dB+w1/OEFnPvmX0yd/HnetYITOL+1nJW7kitOycOeAvmbWC/nu0fwmmQ/kupNojqExzyC/T++pST/jRJ2mQ==", "dev": true, "license": "MIT", "engines": { From b73fe2b288f8ac089f75965784d00d7c27718894 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 7 Jun 2026 17:18:19 +0000 Subject: [PATCH 389/415] Lock file maintenance (#485) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 14a0f525..7e64fb2b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2846,9 +2846,9 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.3.tgz", - "integrity": "sha512-g62dB+w1/OEFnPvmX0yd/HnetYITOL+1nJW7kitOycOeAvmbWC/nu0fwmmQ/kupNojqExzyC/T++pST/jRJ2mQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.4.tgz", + "integrity": "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==", "dev": true, "license": "MIT", "engines": { @@ -2856,9 +2856,9 @@ } }, "node_modules/tinyglobby": { - "version": "0.2.16", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", - "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", "dev": true, "license": "MIT", "dependencies": { From 246c8a9881325d79e9513ca911d9c752598f4f33 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 8 Jun 2026 12:10:44 +0000 Subject: [PATCH 390/415] Update vitest monorepo to v4.1.8 (#486) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 88 +++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7e64fb2b..254e603b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -659,16 +659,16 @@ } }, "node_modules/@vitest/expect": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.7.tgz", - "integrity": "sha512-1R+tw0ortHEbZDGMymm+pN7/AFQ/RkFFdtd7EN+VBpynKmLbP8A3rpEXdshBJ7+8hQ9zBJh/i1s0yKNtxAnU7w==", + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.8.tgz", + "integrity": "sha512-h3nDO677RDLEGlBxyQ5CW8RlMThSKSRLUePLOx09gNIWRL40edgA1GCZSZgf1W55MFAG6/Sw14KeaAnqv0NKdQ==", "dev": true, "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.1.7", - "@vitest/utils": "4.1.7", + "@vitest/spy": "4.1.8", + "@vitest/utils": "4.1.8", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" }, @@ -677,13 +677,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.7.tgz", - "integrity": "sha512-vY7nuamKgfvpA1Koa3oYIw/k7D6kZnpGyNMZW8loow2bsBYla1TFdqTaXncWdRn4pgwNs+90RhnXhJScDwQeJA==", + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.8.tgz", + "integrity": "sha512-LEiN/xe4OSIbKe9HQIp5OC24agGD9J5CnmMgsLohVVoOPWL9a2sBoR6VBx43jQZb7Kr1l4RCuyCJzcAa0+dojw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.1.7", + "@vitest/spy": "4.1.8", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -704,9 +704,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.7.tgz", - "integrity": "sha512-umgCarTOYQWIaDMvGDRZij+6b9oVeLIyJzfN+AS88e0ZOU3QTgNNSTtjQOpcvWr3np1N0j4WgZj+sb3oYBDscw==", + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.8.tgz", + "integrity": "sha512-9GasEBxpZ1VYIpqHf/0+YGg121uSNwCKOJqIrTwWP/TB7DmFCiaBpNl3aPZzoLWfWkuqhbH8vJIVobZkvdo2cA==", "dev": true, "license": "MIT", "dependencies": { @@ -717,13 +717,13 @@ } }, "node_modules/@vitest/runner": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.7.tgz", - "integrity": "sha512-BapjmAQ2aI78WdMEfeUWivnfVzB+VPGwWRQcJE0OUq7qEeEcBsCSf+0T5iREBNE5nBb4wA5Ya0W6IA+sghdEFw==", + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.8.tgz", + "integrity": "sha512-EmVxeBAfMJvycdjd6Hm+RbFBbA9fKvo0Kx37hNpBYoYeavH3RNsBXWDooR1mgD52dCrxIIuP7UotpfiwOikvcg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.1.7", + "@vitest/utils": "4.1.8", "pathe": "^2.0.3" }, "funding": { @@ -731,14 +731,14 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.7.tgz", - "integrity": "sha512-ZacLzja+TmJeZ1h14xW2FB/WpeimUD3haBXQPyJqxvo8jQTmfeA8zv58mtjN2C7EHXZDYVcVYdYmAxjkWVvKCw==", + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.8.tgz", + "integrity": "sha512-acfZboRmAIf05DEKcBQy33VXojFJjtUdLyo7oOmV9kebb2xdU01UknNiPuPZoJZQyO7DF0gZdTGTpeAzET9QPQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.7", - "@vitest/utils": "4.1.7", + "@vitest/pretty-format": "4.1.8", + "@vitest/utils": "4.1.8", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -747,9 +747,9 @@ } }, "node_modules/@vitest/spy": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.7.tgz", - "integrity": "sha512-kbkI5LMWakyuTIvs6fUJ5qdIVb1XVKsYJAT4OJ938cHMROYMSfmoQdZy0aaAnjbbc8F61vkoTqz/Az+/HiIu5Q==", + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.8.tgz", + "integrity": "sha512-6EevtBp6OZOPF7bmz36HrGMeP3txgVSrgebWxHOafDXGkhIzfXK14f8KF6MuFfgXXUeHxmpD3BQxkV00/3s5mA==", "dev": true, "license": "MIT", "funding": { @@ -757,13 +757,13 @@ } }, "node_modules/@vitest/utils": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.7.tgz", - "integrity": "sha512-T532WBu791cBxJlCl6SO+J14l81DQx6uQHm1bQbmCDY7nqlEIgkza/UFnSBNaUtSf41unldDFjdOBYEQC4b5Hw==", + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.8.tgz", + "integrity": "sha512-uOJamYALNhfJ6iolExyQM40yIQwDqYnkKtQ5VCiSe17E33H0aQ/u+1GlRuz4LZBk6Mm3sg90G9hEbmEt37C1Zg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.7", + "@vitest/pretty-format": "4.1.8", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" }, @@ -3065,19 +3065,19 @@ } }, "node_modules/vitest": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.7.tgz", - "integrity": "sha512-flYyaFd2CgoCoU+0UKt3pxksgC+S02iTDN0n3LtqaMeXsI9SBcdNujc2k0DeFLzUn/0k538yNjOSdwgCqcrwJA==", + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.8.tgz", + "integrity": "sha512-flY6ScbCIt9HThs+C5HS7jvGOB560DJtk/Z15IQROTA6zEy49Nh8T/dofWTQL+n3vswqn87sbJNiuqw1SDp5Ig==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "4.1.7", - "@vitest/mocker": "4.1.7", - "@vitest/pretty-format": "4.1.7", - "@vitest/runner": "4.1.7", - "@vitest/snapshot": "4.1.7", - "@vitest/spy": "4.1.7", - "@vitest/utils": "4.1.7", + "@vitest/expect": "4.1.8", + "@vitest/mocker": "4.1.8", + "@vitest/pretty-format": "4.1.8", + "@vitest/runner": "4.1.8", + "@vitest/snapshot": "4.1.8", + "@vitest/spy": "4.1.8", + "@vitest/utils": "4.1.8", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", @@ -3105,12 +3105,12 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.1.7", - "@vitest/browser-preview": "4.1.7", - "@vitest/browser-webdriverio": "4.1.7", - "@vitest/coverage-istanbul": "4.1.7", - "@vitest/coverage-v8": "4.1.7", - "@vitest/ui": "4.1.7", + "@vitest/browser-playwright": "4.1.8", + "@vitest/browser-preview": "4.1.8", + "@vitest/browser-webdriverio": "4.1.8", + "@vitest/coverage-istanbul": "4.1.8", + "@vitest/coverage-v8": "4.1.8", + "@vitest/ui": "4.1.8", "happy-dom": "*", "jsdom": "*", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" From f0b08cf0b3229de4e40024dd7217c6c347753efd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 9 Jun 2026 19:46:37 +0000 Subject: [PATCH 391/415] Update actions/checkout action to v6.0.3 (#490) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/check-eol-newrelease.yml | 2 +- .github/workflows/create-draft-release.yml | 2 +- .github/workflows/label-issue.yml | 2 +- .github/workflows/npm-audit.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 6 +++--- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/check-eol-newrelease.yml b/.github/workflows/check-eol-newrelease.yml index 5b827e73..4505bcf1 100644 --- a/.github/workflows/check-eol-newrelease.yml +++ b/.github/workflows/check-eol-newrelease.yml @@ -15,7 +15,7 @@ jobs: if: github.repository == 'line/line-bot-mcp-server' steps: - name: Check out code - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Run EoL & NewRelease check uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 diff --git a/.github/workflows/create-draft-release.yml b/.github/workflows/create-draft-release.yml index 27639d5d..260862ff 100644 --- a/.github/workflows/create-draft-release.yml +++ b/.github/workflows/create-draft-release.yml @@ -45,7 +45,7 @@ jobs: permissions: contents: write steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Fetch Latest Release id: get-latest-release uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 diff --git a/.github/workflows/label-issue.yml b/.github/workflows/label-issue.yml index 247c91aa..f840cf92 100644 --- a/.github/workflows/label-issue.yml +++ b/.github/workflows/label-issue.yml @@ -13,7 +13,7 @@ jobs: permissions: issues: write steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Add label on issue open if: github.event.action == 'opened' || github.event.action == 'reopened' diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index 8809fe54..ab93cf34 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -16,7 +16,7 @@ jobs: issues: write if: github.repository == 'line/line-bot-mcp-server' steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: '24' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 88821eef..9f84468a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ jobs: id-token: write issues: write steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 # Setup .npmrc file to publish to GitHub Packages - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 96010baf..f9d699af 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,7 +22,7 @@ jobs: name: Node.js ${{ matrix.node }} steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: submodules: true - name: Setup Node.js @@ -46,7 +46,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: submodules: true - name: Build Docker image @@ -57,7 +57,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Run pinact uses: suzuki-shunsuke/pinact-action@896d595f299e71d65b9d28349d6956abe144390a # v3.0.0 with: From 91ffecbc5b4dc45d8a3b0fa44e25c4c63cd842db Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 10 Jun 2026 18:32:58 +0000 Subject: [PATCH 392/415] Lock file maintenance (#491) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 160 ++++++++++++++++++++++++---------------------- 1 file changed, 85 insertions(+), 75 deletions(-) diff --git a/package-lock.json b/package-lock.json index 254e603b..71cf3c56 100644 --- a/package-lock.json +++ b/package-lock.json @@ -278,9 +278,9 @@ } }, "node_modules/@oxc-project/types": { - "version": "0.132.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.132.0.tgz", - "integrity": "sha512-FESMOxil5Se014ui/Eq8fT5uHJo6nIRwH0PfJrZJXs6Gek3ZVFOrpUv3YIZT20m+extU98Hg1Ym72U58rlsxUQ==", + "version": "0.133.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.133.0.tgz", + "integrity": "sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==", "dev": true, "license": "MIT", "funding": { @@ -325,9 +325,9 @@ } }, "node_modules/@rolldown/binding-android-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.2.tgz", - "integrity": "sha512-ZS4D1JPGn/MYQN/SYDWftIE/nVsM8j/AFOYEzAoOE2O3NktQOZru+/vYXGbR/qtdLdIfGCP0lcoJiYVzsEz+iQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.3.tgz", + "integrity": "sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==", "cpu": [ "arm64" ], @@ -342,9 +342,9 @@ } }, "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.2.tgz", - "integrity": "sha512-vdFA9+C/rekyGce7WqHs/xoT0ioZEWaOFyZLIV1mEeNFaFDUQrPIo8Vs2GvJ6eetb3rzDUtUBgzto3ExpXJB3w==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.3.tgz", + "integrity": "sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==", "cpu": [ "arm64" ], @@ -359,9 +359,9 @@ } }, "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.2.tgz", - "integrity": "sha512-BewSOwTHazv77DTYiAZXSqqKZ4KP/KonFisDMVU7PImxoWfB2aepnPhd2E4SWz3zDzYgDNbs6jBmTdgNnF02GA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.3.tgz", + "integrity": "sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==", "cpu": [ "x64" ], @@ -376,9 +376,9 @@ } }, "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.2.tgz", - "integrity": "sha512-m41o7M0YWtUdqk61Tb+jnKb2rN++iRdIASlExkUoKfIAH30DOHCB8fVLzSUpbWHHU8esmEioY62PxzexE8MBuA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.3.tgz", + "integrity": "sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==", "cpu": [ "x64" ], @@ -393,9 +393,9 @@ } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.2.tgz", - "integrity": "sha512-jcojB9H7W/jS29pMKWAK1N+fU99vXodHDTatS3b3y/XSOCiHo0kkA74pL3jJmkoQtYpOCxDvaKs1fo2Ij/1X5w==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.3.tgz", + "integrity": "sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==", "cpu": [ "arm" ], @@ -410,9 +410,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.2.tgz", - "integrity": "sha512-1jn6qDU5iiOgFgygDzKUuKP0maTi0/f1+sBLgvij/76C77Nm3ts6ufz9Bjg5q5dduxiUIxtq86JIoBvo1xQ4Ig==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.3.tgz", + "integrity": "sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==", "cpu": [ "arm64" ], @@ -430,9 +430,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.2.tgz", - "integrity": "sha512-QVLO/czFMdoMFSqlX3bcswcJNm/23r+qoa/jgtmFc/qEp6/jXmIkDjF/XIo8dPfGaiwy1xfQn8o77L79GeXFgw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.3.tgz", + "integrity": "sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==", "cpu": [ "arm64" ], @@ -450,9 +450,9 @@ } }, "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.2.tgz", - "integrity": "sha512-hgO5Abm0w5UL6FEa2iFnZqo2KlK7TQ5QhV5x09hujBf7t5KzHQ1VmfPuTpqRy/rNlSxua3eWH374xxiVrP+lcA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.3.tgz", + "integrity": "sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==", "cpu": [ "ppc64" ], @@ -470,9 +470,9 @@ } }, "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.2.tgz", - "integrity": "sha512-fy8rXxuYEu602abC8MUNaPjYLIFzReOaEIEMKMUa0rFEUxNpVXhs15KSSQ4qlqSaM7B6rcj9rDZgADh/IGDzLQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.3.tgz", + "integrity": "sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==", "cpu": [ "s390x" ], @@ -490,9 +490,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.2.tgz", - "integrity": "sha512-0+bOkiQ779+r1WpoHOWHqncvyySci0vKph+myNDYb+im6meJAzHQXay6oEgnkHuUGouM1LKTZwqKpBow6Kj7CQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.3.tgz", + "integrity": "sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==", "cpu": [ "x64" ], @@ -510,9 +510,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.2.tgz", - "integrity": "sha512-mjSkrzZK5Qsl0a9d1JgILOiuZOSDTVdKENcSXBoqbzSrspLR/4/IRVDo5wd2GgZjNss/viBFJdeq+j7qH2nypw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.3.tgz", + "integrity": "sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==", "cpu": [ "x64" ], @@ -530,9 +530,9 @@ } }, "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.2.tgz", - "integrity": "sha512-1v5vHasdfQAZoEHakBV72LIFAC9JjnymsiKxp+GEr/ma3+NJCPSaYK+qavInOovJkgwFrs7GccX2d6IgDA3Z5w==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.3.tgz", + "integrity": "sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==", "cpu": [ "arm64" ], @@ -547,9 +547,9 @@ } }, "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.2.tgz", - "integrity": "sha512-mb1VobWn6NheziTk5/WEaR6AKVbrwT5sOi6C7zk3gy/pD1qtJfU1j4PgTo2NJnOtbL9Dl3Aeei8w9jJ7qC2jZQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.3.tgz", + "integrity": "sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==", "cpu": [ "wasm32" ], @@ -566,9 +566,9 @@ } }, "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.2.tgz", - "integrity": "sha512-SqKonF56vA/L2yHwHYcEp2P34URpOZ7d1fS635cTkpDnUtEGdUbhI6NzsPdqeSWvAAeGDrxjWjNmibDIdFf9/A==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.3.tgz", + "integrity": "sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==", "cpu": [ "arm64" ], @@ -583,9 +583,9 @@ } }, "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.2.tgz", - "integrity": "sha512-v7qRI7gXLRINcOGXt+7YmAZ6iFuyZVMIoXAxhd8oP+DR9dLfL9GfNIx7PLMxmhZdvq8waUJBQiWN9EKNy+TRBQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.3.tgz", + "integrity": "sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==", "cpu": [ "x64" ], @@ -1655,9 +1655,19 @@ } }, "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz", + "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -2538,13 +2548,13 @@ } }, "node_modules/rolldown": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.2.tgz", - "integrity": "sha512-oZx5zVDtVB44AW3eaifgDml1gWRDZGvjcfdxonE4swNPG98PrrXjaO/KrnUjzlMnztCCRVlUueA1kCXhARGk6g==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.3.tgz", + "integrity": "sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g==", "dev": true, "license": "MIT", "dependencies": { - "@oxc-project/types": "=0.132.0", + "@oxc-project/types": "=0.133.0", "@rolldown/pluginutils": "^1.0.0" }, "bin": { @@ -2554,21 +2564,21 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.0.2", - "@rolldown/binding-darwin-arm64": "1.0.2", - "@rolldown/binding-darwin-x64": "1.0.2", - "@rolldown/binding-freebsd-x64": "1.0.2", - "@rolldown/binding-linux-arm-gnueabihf": "1.0.2", - "@rolldown/binding-linux-arm64-gnu": "1.0.2", - "@rolldown/binding-linux-arm64-musl": "1.0.2", - "@rolldown/binding-linux-ppc64-gnu": "1.0.2", - "@rolldown/binding-linux-s390x-gnu": "1.0.2", - "@rolldown/binding-linux-x64-gnu": "1.0.2", - "@rolldown/binding-linux-x64-musl": "1.0.2", - "@rolldown/binding-openharmony-arm64": "1.0.2", - "@rolldown/binding-wasm32-wasi": "1.0.2", - "@rolldown/binding-win32-arm64-msvc": "1.0.2", - "@rolldown/binding-win32-x64-msvc": "1.0.2" + "@rolldown/binding-android-arm64": "1.0.3", + "@rolldown/binding-darwin-arm64": "1.0.3", + "@rolldown/binding-darwin-x64": "1.0.3", + "@rolldown/binding-freebsd-x64": "1.0.3", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.3", + "@rolldown/binding-linux-arm64-gnu": "1.0.3", + "@rolldown/binding-linux-arm64-musl": "1.0.3", + "@rolldown/binding-linux-ppc64-gnu": "1.0.3", + "@rolldown/binding-linux-s390x-gnu": "1.0.3", + "@rolldown/binding-linux-x64-gnu": "1.0.3", + "@rolldown/binding-linux-x64-musl": "1.0.3", + "@rolldown/binding-openharmony-arm64": "1.0.3", + "@rolldown/binding-wasm32-wasi": "1.0.3", + "@rolldown/binding-win32-arm64-msvc": "1.0.3", + "@rolldown/binding-win32-x64-msvc": "1.0.3" } }, "node_modules/router": { @@ -2987,17 +2997,17 @@ } }, "node_modules/vite": { - "version": "8.0.14", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.14.tgz", - "integrity": "sha512-s4BJJ+5y1pYL6Otw51FHhVJQhPnuRinKig64g/1+EUNaJsd3gCKdD31IPFvswUgW9/60QT9oFHbZHbQK5imcxw==", + "version": "8.0.16", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.16.tgz", + "integrity": "sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==", "dev": true, "license": "MIT", "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", "postcss": "^8.5.15", - "rolldown": "1.0.2", - "tinyglobby": "^0.2.16" + "rolldown": "1.0.3", + "tinyglobby": "^0.2.17" }, "bin": { "vite": "bin/vite.js" From 7180f211ac98c93a27b607262aadd12f6497a763 Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Thu, 11 Jun 2026 12:16:22 +0900 Subject: [PATCH 393/415] Use unified client of @line/bot-sdk (#479) NO-ISSUE Use unified client of @line/bot-sdk --- package-lock.json | 4 +- package.json | 4 +- src/index.ts | 35 ++++---- src/tools/broadcastFlexMessage.ts | 6 +- src/tools/broadcastTextMessage.ts | 6 +- src/tools/cancelRichMenuDefault.ts | 6 +- src/tools/createRichMenu.ts | 13 +-- src/tools/deleteRichMenu.ts | 6 +- src/tools/getFollowerIds.ts | 6 +- src/tools/getMessageQuota.ts | 6 +- src/tools/getProfile.ts | 6 +- src/tools/getRichMenuList.ts | 6 +- src/tools/pushFlexMessage.ts | 6 +- src/tools/pushTextMessage.ts | 6 +- src/tools/setRichMenuDefault.ts | 6 +- test/common/schema/flexMessage.test.ts | 101 +++++++++++++++++++++++ test/helpers/mock-line-clients.ts | 11 +-- test/tools/broadcastFlexMessage.test.ts | 6 +- test/tools/broadcastTextMessage.test.ts | 6 +- test/tools/cancelRichMenuDefault.test.ts | 6 +- test/tools/createRichMenu.test.ts | 19 ++--- test/tools/deleteRichMenu.test.ts | 6 +- test/tools/getFollowerIds.test.ts | 6 +- test/tools/getMessageQuota.test.ts | 6 +- test/tools/getProfile.test.ts | 6 +- test/tools/getRichMenuList.test.ts | 6 +- test/tools/pushFlexMessage.test.ts | 6 +- test/tools/pushTextMessage.test.ts | 6 +- test/tools/setRichMenuDefault.test.ts | 6 +- 29 files changed, 199 insertions(+), 120 deletions(-) create mode 100644 test/common/schema/flexMessage.test.ts diff --git a/package-lock.json b/package-lock.json index 71cf3c56..e230ae5f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,8 +20,8 @@ }, "devDependencies": { "@types/node": "^24.9.2", - "prettier": "3.8.3", - "publint": "0.3.21", + "prettier": "^3.8.3", + "publint": "^0.3.21", "typescript": "^6.0.2", "vitest": "^4.0.0" }, diff --git a/package.json b/package.json index e2146ed1..6f87f0a4 100644 --- a/package.json +++ b/package.json @@ -46,8 +46,8 @@ }, "devDependencies": { "@types/node": "^24.9.2", - "prettier": "3.8.3", - "publint": "0.3.21", + "prettier": "^3.8.3", + "publint": "^0.3.21", "typescript": "^6.0.2", "vitest": "^4.0.0" }, diff --git a/src/index.ts b/src/index.ts index 7efcbbe5..4e2dde25 100644 --- a/src/index.ts +++ b/src/index.ts @@ -42,33 +42,26 @@ const channelAccessToken = process.env.CHANNEL_ACCESS_TOKEN || ""; const destinationId = process.env.DESTINATION_USER_ID || ""; const messagingApiBaseUrl = process.env.LINE_MESSAGING_API_BASE_URL; -const messagingApiClient = new line.messagingApi.MessagingApiClient({ +const lineBotClient = line.LineBotClient.fromChannelAccessToken({ channelAccessToken: channelAccessToken, - baseURL: messagingApiBaseUrl, + apiBaseURL: messagingApiBaseUrl, defaultHeaders: { "User-Agent": USER_AGENT, }, }); -const lineBlobClient = new line.messagingApi.MessagingApiBlobClient({ - channelAccessToken: channelAccessToken, - defaultHeaders: { - "User-Agent": USER_AGENT, - }, -}); - -new PushTextMessage(messagingApiClient, destinationId).register(server); -new PushFlexMessage(messagingApiClient, destinationId).register(server); -new BroadcastTextMessage(messagingApiClient).register(server); -new BroadcastFlexMessage(messagingApiClient).register(server); -new GetProfile(messagingApiClient, destinationId).register(server); -new GetMessageQuota(messagingApiClient).register(server); -new GetRichMenuList(messagingApiClient).register(server); -new DeleteRichMenu(messagingApiClient).register(server); -new SetRichMenuDefault(messagingApiClient).register(server); -new CancelRichMenuDefault(messagingApiClient).register(server); -new CreateRichMenu(messagingApiClient, lineBlobClient).register(server); -new GetFollowerIds(messagingApiClient).register(server); +new PushTextMessage(lineBotClient, destinationId).register(server); +new PushFlexMessage(lineBotClient, destinationId).register(server); +new BroadcastTextMessage(lineBotClient).register(server); +new BroadcastFlexMessage(lineBotClient).register(server); +new GetProfile(lineBotClient, destinationId).register(server); +new GetMessageQuota(lineBotClient).register(server); +new GetRichMenuList(lineBotClient).register(server); +new DeleteRichMenu(lineBotClient).register(server); +new SetRichMenuDefault(lineBotClient).register(server); +new CancelRichMenuDefault(lineBotClient).register(server); +new CreateRichMenu(lineBotClient).register(server); +new GetFollowerIds(lineBotClient).register(server); async function main() { if (!process.env.CHANNEL_ACCESS_TOKEN) { diff --git a/src/tools/broadcastFlexMessage.ts b/src/tools/broadcastFlexMessage.ts index 1dcb0dae..d1747a36 100644 --- a/src/tools/broadcastFlexMessage.ts +++ b/src/tools/broadcastFlexMessage.ts @@ -1,5 +1,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { messagingApi } from "@line/bot-sdk"; +import { LineBotClient, messagingApi } from "@line/bot-sdk"; import { createErrorResponse, createSuccessResponse, @@ -8,9 +8,9 @@ import { AbstractTool } from "./AbstractTool.js"; import { flexMessageSchema } from "../common/schema/flexMessage.js"; export default class BroadcastFlexMessage extends AbstractTool { - private client: messagingApi.MessagingApiClient; + private client: LineBotClient; - constructor(client: messagingApi.MessagingApiClient) { + constructor(client: LineBotClient) { super(); this.client = client; } diff --git a/src/tools/broadcastTextMessage.ts b/src/tools/broadcastTextMessage.ts index bb6be223..994354dc 100644 --- a/src/tools/broadcastTextMessage.ts +++ b/src/tools/broadcastTextMessage.ts @@ -1,5 +1,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { messagingApi } from "@line/bot-sdk"; +import { LineBotClient, messagingApi } from "@line/bot-sdk"; import { createErrorResponse, createSuccessResponse, @@ -8,9 +8,9 @@ import { AbstractTool } from "./AbstractTool.js"; import { textMessageSchema } from "../common/schema/textMessage.js"; export default class BroadcastTextMessage extends AbstractTool { - private client: messagingApi.MessagingApiClient; + private client: LineBotClient; - constructor(client: messagingApi.MessagingApiClient) { + constructor(client: LineBotClient) { super(); this.client = client; } diff --git a/src/tools/cancelRichMenuDefault.ts b/src/tools/cancelRichMenuDefault.ts index 5edcb142..033c3dc7 100644 --- a/src/tools/cancelRichMenuDefault.ts +++ b/src/tools/cancelRichMenuDefault.ts @@ -1,5 +1,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { messagingApi } from "@line/bot-sdk"; +import { LineBotClient } from "@line/bot-sdk"; import { createErrorResponse, createSuccessResponse, @@ -7,9 +7,9 @@ import { import { AbstractTool } from "./AbstractTool.js"; export default class CancelRichMenuDefault extends AbstractTool { - private client: messagingApi.MessagingApiClient; + private client: LineBotClient; - constructor(client: messagingApi.MessagingApiClient) { + constructor(client: LineBotClient) { super(); this.client = client; } diff --git a/src/tools/createRichMenu.ts b/src/tools/createRichMenu.ts index e9db0086..50e85c72 100644 --- a/src/tools/createRichMenu.ts +++ b/src/tools/createRichMenu.ts @@ -1,5 +1,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { messagingApi } from "@line/bot-sdk"; +import { LineBotClient, messagingApi } from "@line/bot-sdk"; import { createErrorResponse, createSuccessResponse, @@ -19,16 +19,11 @@ const RICHMENU_HEIGHT = 910; const RICHMENU_WIDTH = 1600; export default class CreateRichMenu extends AbstractTool { - private client: messagingApi.MessagingApiClient; - private lineBlobClient: messagingApi.MessagingApiBlobClient; + private client: LineBotClient; - constructor( - client: messagingApi.MessagingApiClient, - lineBlobClient: messagingApi.MessagingApiBlobClient, - ) { + constructor(client: LineBotClient) { super(); this.client = client; - this.lineBlobClient = lineBlobClient; } register(server: McpServer) { @@ -95,7 +90,7 @@ export default class CreateRichMenu extends AbstractTool { const imageBuffer = fs.readFileSync(richMenuImagePath); const imageType = "image/png"; const imageBlob = new Blob([imageBuffer], { type: imageType }); - setImageResponse = await this.lineBlobClient.setRichMenuImage( + setImageResponse = await this.client.setRichMenuImage( richMenuId, imageBlob, ); diff --git a/src/tools/deleteRichMenu.ts b/src/tools/deleteRichMenu.ts index 58e94287..38df0406 100644 --- a/src/tools/deleteRichMenu.ts +++ b/src/tools/deleteRichMenu.ts @@ -1,5 +1,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { messagingApi } from "@line/bot-sdk"; +import { LineBotClient } from "@line/bot-sdk"; import { createErrorResponse, createSuccessResponse, @@ -8,9 +8,9 @@ import { AbstractTool } from "./AbstractTool.js"; import { z } from "zod"; export default class DeleteRichMenu extends AbstractTool { - private client: messagingApi.MessagingApiClient; + private client: LineBotClient; - constructor(client: messagingApi.MessagingApiClient) { + constructor(client: LineBotClient) { super(); this.client = client; } diff --git a/src/tools/getFollowerIds.ts b/src/tools/getFollowerIds.ts index ca418578..da49b9bc 100644 --- a/src/tools/getFollowerIds.ts +++ b/src/tools/getFollowerIds.ts @@ -1,5 +1,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { messagingApi } from "@line/bot-sdk"; +import { LineBotClient } from "@line/bot-sdk"; import { z } from "zod"; import { createErrorResponse, @@ -8,9 +8,9 @@ import { import { AbstractTool } from "./AbstractTool.js"; export default class GetFollowerIds extends AbstractTool { - private client: messagingApi.MessagingApiClient; + private client: LineBotClient; - constructor(client: messagingApi.MessagingApiClient) { + constructor(client: LineBotClient) { super(); this.client = client; } diff --git a/src/tools/getMessageQuota.ts b/src/tools/getMessageQuota.ts index 376ae7c5..a41ba055 100644 --- a/src/tools/getMessageQuota.ts +++ b/src/tools/getMessageQuota.ts @@ -1,5 +1,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { messagingApi } from "@line/bot-sdk"; +import { LineBotClient } from "@line/bot-sdk"; import { createErrorResponse, createSuccessResponse, @@ -7,9 +7,9 @@ import { import { AbstractTool } from "./AbstractTool.js"; export default class GetMessageQuota extends AbstractTool { - private client: messagingApi.MessagingApiClient; + private client: LineBotClient; - constructor(client: messagingApi.MessagingApiClient) { + constructor(client: LineBotClient) { super(); this.client = client; } diff --git a/src/tools/getProfile.ts b/src/tools/getProfile.ts index ae79cc72..7dd6f52c 100644 --- a/src/tools/getProfile.ts +++ b/src/tools/getProfile.ts @@ -1,5 +1,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { messagingApi } from "@line/bot-sdk"; +import { LineBotClient } from "@line/bot-sdk"; import { z } from "zod"; import { createErrorResponse, @@ -9,10 +9,10 @@ import { AbstractTool } from "./AbstractTool.js"; import { NO_USER_ID_ERROR } from "../common/schema/constants.js"; export default class GetProfile extends AbstractTool { - private client: messagingApi.MessagingApiClient; + private client: LineBotClient; private destinationId: string; - constructor(client: messagingApi.MessagingApiClient, destinationId: string) { + constructor(client: LineBotClient, destinationId: string) { super(); this.client = client; this.destinationId = destinationId; diff --git a/src/tools/getRichMenuList.ts b/src/tools/getRichMenuList.ts index 267c58e4..b3a4ab8e 100644 --- a/src/tools/getRichMenuList.ts +++ b/src/tools/getRichMenuList.ts @@ -1,5 +1,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { messagingApi } from "@line/bot-sdk"; +import { LineBotClient } from "@line/bot-sdk"; import { createErrorResponse, createSuccessResponse, @@ -7,9 +7,9 @@ import { import { AbstractTool } from "./AbstractTool.js"; export default class GetRichMenuList extends AbstractTool { - private client: messagingApi.MessagingApiClient; + private client: LineBotClient; - constructor(client: messagingApi.MessagingApiClient) { + constructor(client: LineBotClient) { super(); this.client = client; } diff --git a/src/tools/pushFlexMessage.ts b/src/tools/pushFlexMessage.ts index eda8e98f..062a16fc 100644 --- a/src/tools/pushFlexMessage.ts +++ b/src/tools/pushFlexMessage.ts @@ -1,5 +1,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { messagingApi } from "@line/bot-sdk"; +import { LineBotClient, messagingApi } from "@line/bot-sdk"; import { z } from "zod"; import { createErrorResponse, @@ -10,10 +10,10 @@ import { NO_USER_ID_ERROR } from "../common/schema/constants.js"; import { flexMessageSchema } from "../common/schema/flexMessage.js"; export default class PushFlexMessage extends AbstractTool { - private client: messagingApi.MessagingApiClient; + private client: LineBotClient; private destinationId: string; - constructor(client: messagingApi.MessagingApiClient, destinationId: string) { + constructor(client: LineBotClient, destinationId: string) { super(); this.client = client; this.destinationId = destinationId; diff --git a/src/tools/pushTextMessage.ts b/src/tools/pushTextMessage.ts index a6c4bd1f..7b837996 100644 --- a/src/tools/pushTextMessage.ts +++ b/src/tools/pushTextMessage.ts @@ -1,5 +1,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { messagingApi } from "@line/bot-sdk"; +import { LineBotClient, messagingApi } from "@line/bot-sdk"; import { z } from "zod"; import { createErrorResponse, @@ -10,10 +10,10 @@ import { NO_USER_ID_ERROR } from "../common/schema/constants.js"; import { textMessageSchema } from "../common/schema/textMessage.js"; export default class PushTextMessage extends AbstractTool { - private client: messagingApi.MessagingApiClient; + private client: LineBotClient; private destinationId: string; - constructor(client: messagingApi.MessagingApiClient, destinationId: string) { + constructor(client: LineBotClient, destinationId: string) { super(); this.client = client; this.destinationId = destinationId; diff --git a/src/tools/setRichMenuDefault.ts b/src/tools/setRichMenuDefault.ts index 3844121c..6caffa65 100644 --- a/src/tools/setRichMenuDefault.ts +++ b/src/tools/setRichMenuDefault.ts @@ -1,5 +1,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; -import { messagingApi } from "@line/bot-sdk"; +import { LineBotClient } from "@line/bot-sdk"; import { createErrorResponse, createSuccessResponse, @@ -8,9 +8,9 @@ import { AbstractTool } from "./AbstractTool.js"; import { z } from "zod"; export default class SetRichMenuDefault extends AbstractTool { - private client: messagingApi.MessagingApiClient; + private client: LineBotClient; - constructor(client: messagingApi.MessagingApiClient) { + constructor(client: LineBotClient) { super(); this.client = client; } diff --git a/test/common/schema/flexMessage.test.ts b/test/common/schema/flexMessage.test.ts new file mode 100644 index 00000000..47b49a93 --- /dev/null +++ b/test/common/schema/flexMessage.test.ts @@ -0,0 +1,101 @@ +import { describe, expect, it } from "vitest"; +import { flexMessageSchema } from "../../../src/common/schema/flexMessage.js"; + +const toFlexMessage = (component: unknown) => ({ + type: "flex" as const, + altText: "Test message", + contents: { + type: "bubble" as const, + body: { + type: "box" as const, + layout: "vertical" as const, + contents: [component], + }, + }, +}); + +describe("flexMessageSchema URL validation", () => { + it("accepts valid URL values for image and altUri.desktop", () => { + const imageResult = flexMessageSchema.safeParse( + toFlexMessage({ + type: "image", + url: "https://example.com/image.png", + }), + ); + expect(imageResult.success).toBe(true); + + const altUriResult = flexMessageSchema.safeParse( + toFlexMessage({ + type: "button", + action: { + type: "uri", + label: "Open", + uri: "https://example.com/page", + altUri: { + desktop: "https://example.com/desktop", + }, + }, + }), + ); + expect(altUriResult.success).toBe(true); + }); + + it("rejects malformed URL in image.url", () => { + const result = flexMessageSchema.safeParse( + toFlexMessage({ + type: "image", + url: "not-a-url", + }), + ); + + expect(result.success).toBe(false); + if (!result.success) { + expect( + result.error.issues.some(issue => issue.path.includes("url")), + ).toBe(true); + } + }); + + it("rejects non-https URL in icon.url", () => { + const result = flexMessageSchema.safeParse( + toFlexMessage({ + type: "icon", + url: "http://example.com/icon.png", + }), + ); + + expect(result.success).toBe(false); + if (!result.success) { + expect( + result.error.issues.some( + issue => + issue.path.includes("url") && + issue.message.includes("Must use HTTPS protocol"), + ), + ).toBe(true); + } + }); + + it("rejects malformed URL in uri action altUri.desktop", () => { + const result = flexMessageSchema.safeParse( + toFlexMessage({ + type: "button", + action: { + type: "uri", + label: "Open", + uri: "https://example.com/page", + altUri: { + desktop: "invalid-desktop-url", + }, + }, + }), + ); + + expect(result.success).toBe(false); + if (!result.success) { + expect( + result.error.issues.some(issue => issue.path.includes("desktop")), + ).toBe(true); + } + }); +}); diff --git a/test/helpers/mock-line-clients.ts b/test/helpers/mock-line-clients.ts index 4252cb9d..28113b6c 100644 --- a/test/helpers/mock-line-clients.ts +++ b/test/helpers/mock-line-clients.ts @@ -1,7 +1,7 @@ import { vi } from "vitest"; -import type { messagingApi } from "@line/bot-sdk"; +import type { LineBotClient } from "@line/bot-sdk"; -export function createMockMessagingApiClient() { +export function createMockLineBotClient() { return { pushMessage: vi.fn(), broadcast: vi.fn(), @@ -14,11 +14,6 @@ export function createMockMessagingApiClient() { cancelDefaultRichMenu: vi.fn(), createRichMenu: vi.fn(), getFollowers: vi.fn(), - } as unknown as messagingApi.MessagingApiClient; -} - -export function createMockBlobClient() { - return { setRichMenuImage: vi.fn(), - } as unknown as messagingApi.MessagingApiBlobClient; + } as unknown as LineBotClient; } diff --git a/test/tools/broadcastFlexMessage.test.ts b/test/tools/broadcastFlexMessage.test.ts index 4cf8256d..a2b2d679 100644 --- a/test/tools/broadcastFlexMessage.test.ts +++ b/test/tools/broadcastFlexMessage.test.ts @@ -2,7 +2,7 @@ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; -import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import { createMockLineBotClient } from "../helpers/mock-line-clients.js"; import BroadcastFlexMessage from "../../src/tools/broadcastFlexMessage.js"; const SAMPLE_FLEX_MESSAGE = { @@ -35,10 +35,10 @@ const EXPECTED_FLEX_MESSAGE = { describe("broadcast_flex_message tool", () => { let client: Client; let server: McpServer; - let mockLineClient: ReturnType; + let mockLineClient: ReturnType; beforeEach(async () => { - mockLineClient = createMockMessagingApiClient(); + mockLineClient = createMockLineBotClient(); server = new McpServer({ name: "test", version: "0.0.1" }); new BroadcastFlexMessage(mockLineClient).register(server); diff --git a/test/tools/broadcastTextMessage.test.ts b/test/tools/broadcastTextMessage.test.ts index 4e6490b6..ae202492 100644 --- a/test/tools/broadcastTextMessage.test.ts +++ b/test/tools/broadcastTextMessage.test.ts @@ -2,16 +2,16 @@ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; -import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import { createMockLineBotClient } from "../helpers/mock-line-clients.js"; import BroadcastTextMessage from "../../src/tools/broadcastTextMessage.js"; describe("broadcast_text_message tool", () => { let client: Client; let server: McpServer; - let mockLineClient: ReturnType; + let mockLineClient: ReturnType; beforeEach(async () => { - mockLineClient = createMockMessagingApiClient(); + mockLineClient = createMockLineBotClient(); server = new McpServer({ name: "test", version: "0.0.1" }); new BroadcastTextMessage(mockLineClient).register(server); diff --git a/test/tools/cancelRichMenuDefault.test.ts b/test/tools/cancelRichMenuDefault.test.ts index c6b34897..c3ea701f 100644 --- a/test/tools/cancelRichMenuDefault.test.ts +++ b/test/tools/cancelRichMenuDefault.test.ts @@ -2,16 +2,16 @@ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; -import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import { createMockLineBotClient } from "../helpers/mock-line-clients.js"; import CancelRichMenuDefault from "../../src/tools/cancelRichMenuDefault.js"; describe("cancel_rich_menu_default tool", () => { let client: Client; let server: McpServer; - let mockLineClient: ReturnType; + let mockLineClient: ReturnType; beforeEach(async () => { - mockLineClient = createMockMessagingApiClient(); + mockLineClient = createMockLineBotClient(); server = new McpServer({ name: "test", version: "0.0.1" }); new CancelRichMenuDefault(mockLineClient).register(server); diff --git a/test/tools/createRichMenu.test.ts b/test/tools/createRichMenu.test.ts index c81276c1..1a28559d 100644 --- a/test/tools/createRichMenu.test.ts +++ b/test/tools/createRichMenu.test.ts @@ -2,10 +2,7 @@ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; -import { - createMockMessagingApiClient, - createMockBlobClient, -} from "../helpers/mock-line-clients.js"; +import { createMockLineBotClient } from "../helpers/mock-line-clients.js"; // Mock external dependencies before importing the tool. // vi.mock factories are hoisted, so all values must be created inline. @@ -57,14 +54,12 @@ import CreateRichMenu from "../../src/tools/createRichMenu.js"; describe("create_rich_menu tool", () => { let client: Client; let server: McpServer; - let mockLineClient: ReturnType; - let mockBlobClient: ReturnType; + let mockLineClient: ReturnType; beforeEach(async () => { - mockLineClient = createMockMessagingApiClient(); - mockBlobClient = createMockBlobClient(); + mockLineClient = createMockLineBotClient(); server = new McpServer({ name: "test", version: "0.0.1" }); - new CreateRichMenu(mockLineClient, mockBlobClient).register(server); + new CreateRichMenu(mockLineClient).register(server); const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair(); @@ -87,7 +82,7 @@ describe("create_rich_menu tool", () => { vi.mocked(mockLineClient.createRichMenu).mockResolvedValue({ richMenuId: "richmenu-new-123", } as never); - vi.mocked(mockBlobClient.setRichMenuImage).mockResolvedValue({} as never); + vi.mocked(mockLineClient.setRichMenuImage).mockResolvedValue({} as never); vi.mocked(mockLineClient.setDefaultRichMenu).mockResolvedValue( {} as never, ); @@ -111,7 +106,7 @@ describe("create_rich_menu tool", () => { size: { width: 1600, height: 910 }, }), ); - expect(mockBlobClient.setRichMenuImage).toHaveBeenCalledWith( + expect(mockLineClient.setRichMenuImage).toHaveBeenCalledWith( "richmenu-new-123", expect.any(Blob), ); @@ -220,7 +215,7 @@ describe("create_rich_menu tool", () => { vi.mocked(mockLineClient.createRichMenu).mockResolvedValue({ richMenuId: "richmenu-new-123", } as never); - vi.mocked(mockBlobClient.setRichMenuImage).mockResolvedValue({} as never); + vi.mocked(mockLineClient.setRichMenuImage).mockResolvedValue({} as never); vi.mocked(mockLineClient.setDefaultRichMenu).mockResolvedValue( {} as never, ); diff --git a/test/tools/deleteRichMenu.test.ts b/test/tools/deleteRichMenu.test.ts index 955fcd0f..71c56775 100644 --- a/test/tools/deleteRichMenu.test.ts +++ b/test/tools/deleteRichMenu.test.ts @@ -2,16 +2,16 @@ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; -import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import { createMockLineBotClient } from "../helpers/mock-line-clients.js"; import DeleteRichMenu from "../../src/tools/deleteRichMenu.js"; describe("delete_rich_menu tool", () => { let client: Client; let server: McpServer; - let mockLineClient: ReturnType; + let mockLineClient: ReturnType; beforeEach(async () => { - mockLineClient = createMockMessagingApiClient(); + mockLineClient = createMockLineBotClient(); server = new McpServer({ name: "test", version: "0.0.1" }); new DeleteRichMenu(mockLineClient).register(server); diff --git a/test/tools/getFollowerIds.test.ts b/test/tools/getFollowerIds.test.ts index 8faa25fd..cde960d2 100644 --- a/test/tools/getFollowerIds.test.ts +++ b/test/tools/getFollowerIds.test.ts @@ -2,16 +2,16 @@ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; -import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import { createMockLineBotClient } from "../helpers/mock-line-clients.js"; import GetFollowerIds from "../../src/tools/getFollowerIds.js"; describe("get_follower_ids tool", () => { let client: Client; let server: McpServer; - let mockLineClient: ReturnType; + let mockLineClient: ReturnType; beforeEach(async () => { - mockLineClient = createMockMessagingApiClient(); + mockLineClient = createMockLineBotClient(); server = new McpServer({ name: "test", version: "0.0.1" }); new GetFollowerIds(mockLineClient).register(server); diff --git a/test/tools/getMessageQuota.test.ts b/test/tools/getMessageQuota.test.ts index c1049527..d4d36abd 100644 --- a/test/tools/getMessageQuota.test.ts +++ b/test/tools/getMessageQuota.test.ts @@ -2,16 +2,16 @@ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; -import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import { createMockLineBotClient } from "../helpers/mock-line-clients.js"; import GetMessageQuota from "../../src/tools/getMessageQuota.js"; describe("get_message_quota tool", () => { let client: Client; let server: McpServer; - let mockLineClient: ReturnType; + let mockLineClient: ReturnType; beforeEach(async () => { - mockLineClient = createMockMessagingApiClient(); + mockLineClient = createMockLineBotClient(); server = new McpServer({ name: "test", version: "0.0.1" }); new GetMessageQuota(mockLineClient).register(server); diff --git a/test/tools/getProfile.test.ts b/test/tools/getProfile.test.ts index e0d63169..9bdda998 100644 --- a/test/tools/getProfile.test.ts +++ b/test/tools/getProfile.test.ts @@ -2,7 +2,7 @@ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; -import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import { createMockLineBotClient } from "../helpers/mock-line-clients.js"; import GetProfile from "../../src/tools/getProfile.js"; const DESTINATION_ID = "U_DEFAULT_USER"; @@ -10,10 +10,10 @@ const DESTINATION_ID = "U_DEFAULT_USER"; describe("get_profile tool", () => { let client: Client; let server: McpServer; - let mockLineClient: ReturnType; + let mockLineClient: ReturnType; beforeEach(async () => { - mockLineClient = createMockMessagingApiClient(); + mockLineClient = createMockLineBotClient(); server = new McpServer({ name: "test", version: "0.0.1" }); new GetProfile(mockLineClient, DESTINATION_ID).register(server); diff --git a/test/tools/getRichMenuList.test.ts b/test/tools/getRichMenuList.test.ts index 390960fb..4154c9de 100644 --- a/test/tools/getRichMenuList.test.ts +++ b/test/tools/getRichMenuList.test.ts @@ -2,16 +2,16 @@ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; -import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import { createMockLineBotClient } from "../helpers/mock-line-clients.js"; import GetRichMenuList from "../../src/tools/getRichMenuList.js"; describe("get_rich_menu_list tool", () => { let client: Client; let server: McpServer; - let mockLineClient: ReturnType; + let mockLineClient: ReturnType; beforeEach(async () => { - mockLineClient = createMockMessagingApiClient(); + mockLineClient = createMockLineBotClient(); server = new McpServer({ name: "test", version: "0.0.1" }); new GetRichMenuList(mockLineClient).register(server); diff --git a/test/tools/pushFlexMessage.test.ts b/test/tools/pushFlexMessage.test.ts index 04168a10..e0ecd4e5 100644 --- a/test/tools/pushFlexMessage.test.ts +++ b/test/tools/pushFlexMessage.test.ts @@ -2,7 +2,7 @@ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; -import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import { createMockLineBotClient } from "../helpers/mock-line-clients.js"; import PushFlexMessage from "../../src/tools/pushFlexMessage.js"; const DESTINATION_ID = "U_DEFAULT_USER"; @@ -37,10 +37,10 @@ const EXPECTED_FLEX_MESSAGE = { describe("push_flex_message tool", () => { let client: Client; let server: McpServer; - let mockLineClient: ReturnType; + let mockLineClient: ReturnType; beforeEach(async () => { - mockLineClient = createMockMessagingApiClient(); + mockLineClient = createMockLineBotClient(); server = new McpServer({ name: "test", version: "0.0.1" }); new PushFlexMessage(mockLineClient, DESTINATION_ID).register(server); diff --git a/test/tools/pushTextMessage.test.ts b/test/tools/pushTextMessage.test.ts index 9b408d23..54685e84 100644 --- a/test/tools/pushTextMessage.test.ts +++ b/test/tools/pushTextMessage.test.ts @@ -2,7 +2,7 @@ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; -import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import { createMockLineBotClient } from "../helpers/mock-line-clients.js"; import PushTextMessage from "../../src/tools/pushTextMessage.js"; const DESTINATION_ID = "U_DEFAULT_USER"; @@ -10,10 +10,10 @@ const DESTINATION_ID = "U_DEFAULT_USER"; describe("push_text_message tool", () => { let client: Client; let server: McpServer; - let mockLineClient: ReturnType; + let mockLineClient: ReturnType; beforeEach(async () => { - mockLineClient = createMockMessagingApiClient(); + mockLineClient = createMockLineBotClient(); server = new McpServer({ name: "test", version: "0.0.1" }); new PushTextMessage(mockLineClient, DESTINATION_ID).register(server); diff --git a/test/tools/setRichMenuDefault.test.ts b/test/tools/setRichMenuDefault.test.ts index f9316e91..8e153f8f 100644 --- a/test/tools/setRichMenuDefault.test.ts +++ b/test/tools/setRichMenuDefault.test.ts @@ -2,16 +2,16 @@ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; -import { createMockMessagingApiClient } from "../helpers/mock-line-clients.js"; +import { createMockLineBotClient } from "../helpers/mock-line-clients.js"; import SetRichMenuDefault from "../../src/tools/setRichMenuDefault.js"; describe("set_rich_menu_default tool", () => { let client: Client; let server: McpServer; - let mockLineClient: ReturnType; + let mockLineClient: ReturnType; beforeEach(async () => { - mockLineClient = createMockMessagingApiClient(); + mockLineClient = createMockLineBotClient(); server = new McpServer({ name: "test", version: "0.0.1" }); new SetRichMenuDefault(mockLineClient).register(server); From 6b2560671b3414d546268493760a9c1db11d10e4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 11 Jun 2026 07:15:02 +0000 Subject: [PATCH 394/415] Update dependency @types/node to v24.13.0 (#492) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index e230ae5f..c374cb43 100644 --- a/package-lock.json +++ b/package-lock.json @@ -650,12 +650,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.12.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.4.tgz", - "integrity": "sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==", + "version": "24.13.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.0.tgz", + "integrity": "sha512-5vtOqGQr4NJKeEzV441FcOi2MeG9UTWq9LqVLGneDdu4vlX17H8kQ2PA2UmNwCUGPVDj4oBjNhS7ReVEIWJJrg==", "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/@vitest/expect": { @@ -2967,9 +2967,9 @@ "license": "MIT" }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "license": "MIT" }, "node_modules/unpipe": { From 7b62d88d24b5a46f9a16e8f72f501938aa63d957 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 12 Jun 2026 17:41:20 +0000 Subject: [PATCH 395/415] Lock file maintenance (#493) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index c374cb43..1953f1ac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2223,15 +2223,18 @@ } }, "node_modules/obug": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", - "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.2.tgz", + "integrity": "sha512-AWGB9WFcRXOQs48Z/udjI5ZcZMHXwX8XPByNpOydgcGsDLIzjGizhoMWJyKAWze7AVW/2W1i+/gPX4YtKe5cyg==", "dev": true, "funding": [ "https://github.com/sponsors/sxzz", "https://opencollective.com/debug" ], - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=12.20.0" + } }, "node_modules/on-finished": { "version": "2.4.1", From dffc5802d5dc2eac24cfcd77ccc588dbff85b12c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 12 Jun 2026 23:13:35 +0000 Subject: [PATCH 396/415] Update dependency @types/node to v24.13.1 (#494) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1953f1ac..d4ab910d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -650,9 +650,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.13.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.0.tgz", - "integrity": "sha512-5vtOqGQr4NJKeEzV441FcOi2MeG9UTWq9LqVLGneDdu4vlX17H8kQ2PA2UmNwCUGPVDj4oBjNhS7ReVEIWJJrg==", + "version": "24.13.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.1.tgz", + "integrity": "sha512-RSpUJGmvsJ1ZeBehQZFhIdpsz+bIpES0nIQXko4Ybq+N+kX6XvOq3Jo+iJ82FWLdblFq85AsMikd3m35jgezYg==", "license": "MIT", "dependencies": { "undici-types": "~7.18.0" From e82722047825193d3de8a36c0b86ebf7f6348e77 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 19:42:50 +0000 Subject: [PATCH 397/415] Update dependency prettier to v3.8.4 (#495) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index d4ab910d..1b7d326b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2396,9 +2396,9 @@ } }, "node_modules/prettier": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", - "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.4.tgz", + "integrity": "sha512-N2MylSdi48+5N/6S5j+maeHbUSIzzZ5uOcX5Hm4QpV8Dkb1HFjfAKTKX6yNPJQD9AhcT3ifHNB66tWTTJDi11Q==", "dev": true, "license": "MIT", "bin": { From bfbbdabcc295e5f05759394c939924267ec04914 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 17 Jun 2026 17:53:14 +0000 Subject: [PATCH 398/415] Lock file maintenance (#497) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1b7d326b..f78843e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -259,14 +259,14 @@ } }, "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", - "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.5.tgz", + "integrity": "sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==", "dev": true, "license": "MIT", "optional": true, "dependencies": { - "@tybys/wasm-util": "^0.10.1" + "@tybys/wasm-util": "^0.10.2" }, "funding": { "type": "github", @@ -1556,9 +1556,9 @@ } }, "node_modules/hono": { - "version": "4.12.23", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.23.tgz", - "integrity": "sha512-eIaZ9qDgu7XV0pxOCrg7/WhnQ6Ivm22UcxhXx/A3dcbqbbYgBEkc6e/J/s7j2tS96zoB0S9VBdLwQNCWwUo4LA==", + "version": "4.12.25", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.25.tgz", + "integrity": "sha512-2NFaIyNVgJmBs/ecmtGzlmluTFs5cHEWGTdu0t1HBwYzoGXOL5nUQBRMXsXWla5i4KkG//QMzVP88m1+I3fdAQ==", "license": "MIT", "engines": { "node": ">=16.9.0" @@ -2383,9 +2383,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", - "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.2.tgz", + "integrity": "sha512-Wjvt4scRFouioIInHf51IFNP4ltJ2EngJM+cZPGiqbKetBfmP3vpdPV8ID2S6JS6/jdo74N8+aEYH9lQr2C6sA==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -2692,14 +2692,14 @@ } }, "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" }, From 1fb37d76769571a2703f4797e8883ba17fbd2c77 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2026 00:15:35 +0000 Subject: [PATCH 399/415] Update dependency @types/node to v24.13.2 (#498) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f78843e2..5619d247 100644 --- a/package-lock.json +++ b/package-lock.json @@ -650,9 +650,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.13.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.1.tgz", - "integrity": "sha512-RSpUJGmvsJ1ZeBehQZFhIdpsz+bIpES0nIQXko4Ybq+N+kX6XvOq3Jo+iJ82FWLdblFq85AsMikd3m35jgezYg==", + "version": "24.13.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.2.tgz", + "integrity": "sha512-fRa09kZTgu8o71KFcDjUFuc7F+dEbZYZmkI0mg5YBTRs0yMKjYHsq/c0urDKeDb+D5qVgXOdFcuu+DZPKOITwA==", "license": "MIT", "dependencies": { "undici-types": "~7.18.0" From 0ca439c2580c12887aca5911dc451f784613604b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 19 Jun 2026 18:45:15 +0000 Subject: [PATCH 400/415] Lock file maintenance (#501) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5619d247..724234e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2223,9 +2223,9 @@ } }, "node_modules/obug": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.2.tgz", - "integrity": "sha512-AWGB9WFcRXOQs48Z/udjI5ZcZMHXwX8XPByNpOydgcGsDLIzjGizhoMWJyKAWze7AVW/2W1i+/gPX4YtKe5cyg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.3.tgz", + "integrity": "sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==", "dev": true, "funding": [ "https://github.com/sponsors/sxzz", @@ -2383,9 +2383,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.2.tgz", - "integrity": "sha512-Wjvt4scRFouioIInHf51IFNP4ltJ2EngJM+cZPGiqbKetBfmP3vpdPV8ID2S6JS6/jdo74N8+aEYH9lQr2C6sA==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz", + "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", From badc775bfc6ead49d8c4b6297d18a3318c288780 Mon Sep 17 00:00:00 2001 From: Yuta Kasai Date: Mon, 22 Jun 2026 16:06:42 +0900 Subject: [PATCH 401/415] Use same config for stale action (#499) NO-ISSUE Use same config for stale action --- .github/workflows/close-issue.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/close-issue.yml b/.github/workflows/close-issue.yml index 6624be22..f0e824df 100644 --- a/.github/workflows/close-issue.yml +++ b/.github/workflows/close-issue.yml @@ -3,8 +3,8 @@ name: Close inactive issues on: schedule: - # Every day at 1:30 UTC -> 10:30 JST - - cron: "30 1 * * *" + - cron: "30 10 * * *" + timezone: "Asia/Tokyo" jobs: close-issues: @@ -16,13 +16,13 @@ jobs: steps: - uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v10.3.0 with: - days-before-issue-stale: 28 # 4 weeks + days-before-issue-stale: 14 days-before-issue-close: 0 stale-issue-label: "no-activity" - close-issue-message: "This issue was closed because it has been inactive for 28 days." + close-issue-message: "This issue was closed because it has been inactive for 14 days." exempt-issue-labels: "bug,enhancement,keep,untriaged" days-before-pr-stale: -1 - days-before-pr-close: 28 + days-before-pr-close: 14 stale-pr-label: "no-activity" - close-pr-message: "This pull request was closed because it has been inactive for 28 days. Please reopen if you still intend to submit this pull request." + close-pr-message: "This pull request was closed because it has been inactive for 14 days. Please reopen if you still intend to submit this pull request." repo-token: ${{ secrets.GITHUB_TOKEN }} From f38c45b444a461acbdf05df7d7dbcd1ed4bee980 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 11:40:50 +0000 Subject: [PATCH 402/415] Update vitest monorepo to v4.1.9 (#502) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 88 +++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/package-lock.json b/package-lock.json index 724234e0..160892f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -659,16 +659,16 @@ } }, "node_modules/@vitest/expect": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.8.tgz", - "integrity": "sha512-h3nDO677RDLEGlBxyQ5CW8RlMThSKSRLUePLOx09gNIWRL40edgA1GCZSZgf1W55MFAG6/Sw14KeaAnqv0NKdQ==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.9.tgz", + "integrity": "sha512-vl/rYsUKcBr3SnQn166+XR5ZQcgMx3DQhFWdfli/cWpLnLUmbxZvyrJZotLFUryib+LtArYMSTJ5RbQ57ZqrlA==", "dev": true, "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.1.8", - "@vitest/utils": "4.1.8", + "@vitest/spy": "4.1.9", + "@vitest/utils": "4.1.9", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" }, @@ -677,13 +677,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.8.tgz", - "integrity": "sha512-LEiN/xe4OSIbKe9HQIp5OC24agGD9J5CnmMgsLohVVoOPWL9a2sBoR6VBx43jQZb7Kr1l4RCuyCJzcAa0+dojw==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.9.tgz", + "integrity": "sha512-EVkXzBjrPGM+cK8/ANWgBrkUCfJfb38/EfTSO8h7pWvKkyPkpWxvR7BkD2MyItMF62C97zAEoqdpUixwR/e+Rw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.1.8", + "@vitest/spy": "4.1.9", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -704,9 +704,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.8.tgz", - "integrity": "sha512-9GasEBxpZ1VYIpqHf/0+YGg121uSNwCKOJqIrTwWP/TB7DmFCiaBpNl3aPZzoLWfWkuqhbH8vJIVobZkvdo2cA==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.9.tgz", + "integrity": "sha512-s0iufns3iIFitdgm+YR7g1whCAaGtXz459VS9/PqyKDEEFgYIhsHOQmXgIgDuYCt7DeQmiZT0Qe2OA2p4ZPu5A==", "dev": true, "license": "MIT", "dependencies": { @@ -717,13 +717,13 @@ } }, "node_modules/@vitest/runner": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.8.tgz", - "integrity": "sha512-EmVxeBAfMJvycdjd6Hm+RbFBbA9fKvo0Kx37hNpBYoYeavH3RNsBXWDooR1mgD52dCrxIIuP7UotpfiwOikvcg==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.9.tgz", + "integrity": "sha512-KXLMDtc7oe70+3mJfGrPUWPesswH+3sTxAMAMl8DG7I8IUQT4XW718dY5ID3vPUcmlu27CcKfY4P3h3I29SLJg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.1.8", + "@vitest/utils": "4.1.9", "pathe": "^2.0.3" }, "funding": { @@ -731,14 +731,14 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.8.tgz", - "integrity": "sha512-acfZboRmAIf05DEKcBQy33VXojFJjtUdLyo7oOmV9kebb2xdU01UknNiPuPZoJZQyO7DF0gZdTGTpeAzET9QPQ==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.9.tgz", + "integrity": "sha512-Jc7RKGNBo8Z28WYIm0Niej4xdSPByRf6mU58VpHQkd6Zh05rlnA+twjbK5HyeIGHxrzsc3mJgS43uM0CZKzaIA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.8", - "@vitest/utils": "4.1.8", + "@vitest/pretty-format": "4.1.9", + "@vitest/utils": "4.1.9", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -747,9 +747,9 @@ } }, "node_modules/@vitest/spy": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.8.tgz", - "integrity": "sha512-6EevtBp6OZOPF7bmz36HrGMeP3txgVSrgebWxHOafDXGkhIzfXK14f8KF6MuFfgXXUeHxmpD3BQxkV00/3s5mA==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.9.tgz", + "integrity": "sha512-fHpsS6mIi+PiEW+vcRVOMkX1oSaPKne3VOclSFICPcGOmfKgXPU5iAah+wcNcj2xPrCCmfq99IDGf+EojhhvhA==", "dev": true, "license": "MIT", "funding": { @@ -757,13 +757,13 @@ } }, "node_modules/@vitest/utils": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.8.tgz", - "integrity": "sha512-uOJamYALNhfJ6iolExyQM40yIQwDqYnkKtQ5VCiSe17E33H0aQ/u+1GlRuz4LZBk6Mm3sg90G9hEbmEt37C1Zg==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.9.tgz", + "integrity": "sha512-A51o8ymO5PpqlWNnBP9ZHPXDIpuMtTLlGSjN7la4US+LJzoUMyhwjA5QXlm39JexgwHKW4Xjs8Z2d3dLCXOeuA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.8", + "@vitest/pretty-format": "4.1.9", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" }, @@ -3078,19 +3078,19 @@ } }, "node_modules/vitest": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.8.tgz", - "integrity": "sha512-flY6ScbCIt9HThs+C5HS7jvGOB560DJtk/Z15IQROTA6zEy49Nh8T/dofWTQL+n3vswqn87sbJNiuqw1SDp5Ig==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.9.tgz", + "integrity": "sha512-nE3/LEyc0z87uHYLZebqCUOaJr2hdtuPp7BQ4BosVFnfltxgAvMG08NyrSGlPpOUWvR27c5flSmYFTNr78L9GQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "4.1.8", - "@vitest/mocker": "4.1.8", - "@vitest/pretty-format": "4.1.8", - "@vitest/runner": "4.1.8", - "@vitest/snapshot": "4.1.8", - "@vitest/spy": "4.1.8", - "@vitest/utils": "4.1.8", + "@vitest/expect": "4.1.9", + "@vitest/mocker": "4.1.9", + "@vitest/pretty-format": "4.1.9", + "@vitest/runner": "4.1.9", + "@vitest/snapshot": "4.1.9", + "@vitest/spy": "4.1.9", + "@vitest/utils": "4.1.9", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", @@ -3118,12 +3118,12 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.1.8", - "@vitest/browser-preview": "4.1.8", - "@vitest/browser-webdriverio": "4.1.8", - "@vitest/coverage-istanbul": "4.1.8", - "@vitest/coverage-v8": "4.1.8", - "@vitest/ui": "4.1.8", + "@vitest/browser-playwright": "4.1.9", + "@vitest/browser-preview": "4.1.9", + "@vitest/browser-webdriverio": "4.1.9", + "@vitest/coverage-istanbul": "4.1.9", + "@vitest/coverage-v8": "4.1.9", + "@vitest/ui": "4.1.9", "happy-dom": "*", "jsdom": "*", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" From e823fa3fa1b21c172326181d54faee865c8ef7e4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 17:42:12 +0000 Subject: [PATCH 403/415] Lock file maintenance (#503) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 160892f0..9afcc126 100644 --- a/package-lock.json +++ b/package-lock.json @@ -867,20 +867,20 @@ } }, "node_modules/body-parser": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", - "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz", + "integrity": "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==", "license": "MIT", "dependencies": { "bytes": "^3.1.2", - "content-type": "^1.0.5", + "content-type": "^2.0.0", "debug": "^4.4.3", - "http-errors": "^2.0.0", - "iconv-lite": "^0.7.0", + "http-errors": "^2.0.1", + "iconv-lite": "^0.7.2", "on-finished": "^2.4.1", - "qs": "^6.14.1", - "raw-body": "^3.0.1", - "type-is": "^2.0.1" + "qs": "^6.15.2", + "raw-body": "^3.0.2", + "type-is": "^2.1.0" }, "engines": { "node": ">=18" @@ -890,6 +890,19 @@ "url": "https://opencollective.com/express" } }, + "node_modules/body-parser/node_modules/content-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", + "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", From 1021794108a97925f2b154bbcab75cd0b65b87b1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 24 Jun 2026 18:50:05 +0000 Subject: [PATCH 404/415] Lock file maintenance (#504) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9afcc126..0b450be8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -288,11 +288,14 @@ } }, "node_modules/@publint/pack": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@publint/pack/-/pack-0.1.4.tgz", - "integrity": "sha512-HDVTWq3H0uTXiU0eeSQntcVUTPP3GamzeXI41+x7uU9J65JgWQh3qWZHblR1i0npXfFtF+mxBiU2nJH8znxWnQ==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@publint/pack/-/pack-0.1.5.tgz", + "integrity": "sha512-edgyN2pP07uXiP4tJs0s8KVmU8M8i60YPbbI0/WDeok1mIJHRXz+CgD8I0nelwDkoCh3EWL/G5kGfbuHjsdbvw==", "dev": true, "license": "MIT", + "dependencies": { + "tinyexec": "^1.2.4" + }, "engines": { "node": ">=18" }, From a75be5d8f6dbff34ecb62c2e3ab285332043072c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 25 Jun 2026 06:55:58 +0000 Subject: [PATCH 405/415] Update dependency @line/bot-sdk to v11.0.2 (#505) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0b450be8..f9775ac4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -153,9 +153,9 @@ "license": "MIT" }, "node_modules/@line/bot-sdk": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-11.0.1.tgz", - "integrity": "sha512-De9gBX2JfZs78nDSyzfetHJw0R6hncPVVy3tzPMwYZzgwK06C/tcijGy7Vq28K8uYKGVTSthbtMIoYKNhXISzw==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-11.0.2.tgz", + "integrity": "sha512-Y2PCEIlKw5ytu56HhrZt0Wfb8ZxBjrpKTlsmaZ4nWkbHKV2F0T7ZpwFfT7FqXryyqOrl8+RdvFYBBXE4B464SA==", "license": "Apache-2.0", "dependencies": { "@types/node": "^24.0.0" From c82da79cd694b163fc4ea9c193242de388ceb9be Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 25 Jun 2026 16:13:25 +0000 Subject: [PATCH 406/415] Update actions/checkout action to v7 (#506) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/check-eol-newrelease.yml | 2 +- .github/workflows/create-draft-release.yml | 2 +- .github/workflows/label-issue.yml | 2 +- .github/workflows/npm-audit.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 6 +++--- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/check-eol-newrelease.yml b/.github/workflows/check-eol-newrelease.yml index 4505bcf1..8813803f 100644 --- a/.github/workflows/check-eol-newrelease.yml +++ b/.github/workflows/check-eol-newrelease.yml @@ -15,7 +15,7 @@ jobs: if: github.repository == 'line/line-bot-mcp-server' steps: - name: Check out code - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Run EoL & NewRelease check uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 diff --git a/.github/workflows/create-draft-release.yml b/.github/workflows/create-draft-release.yml index 260862ff..59b8bc23 100644 --- a/.github/workflows/create-draft-release.yml +++ b/.github/workflows/create-draft-release.yml @@ -45,7 +45,7 @@ jobs: permissions: contents: write steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Fetch Latest Release id: get-latest-release uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 diff --git a/.github/workflows/label-issue.yml b/.github/workflows/label-issue.yml index f840cf92..6ecb8606 100644 --- a/.github/workflows/label-issue.yml +++ b/.github/workflows/label-issue.yml @@ -13,7 +13,7 @@ jobs: permissions: issues: write steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Add label on issue open if: github.event.action == 'opened' || github.event.action == 'reopened' diff --git a/.github/workflows/npm-audit.yml b/.github/workflows/npm-audit.yml index ab93cf34..44613a59 100644 --- a/.github/workflows/npm-audit.yml +++ b/.github/workflows/npm-audit.yml @@ -16,7 +16,7 @@ jobs: issues: write if: github.repository == 'line/line-bot-mcp-server' steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: '24' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9f84468a..2a86100c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ jobs: id-token: write issues: write steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 # Setup .npmrc file to publish to GitHub Packages - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f9d699af..8b9efa7c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,7 +22,7 @@ jobs: name: Node.js ${{ matrix.node }} steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: submodules: true - name: Setup Node.js @@ -46,7 +46,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: submodules: true - name: Build Docker image @@ -57,7 +57,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Run pinact uses: suzuki-shunsuke/pinact-action@896d595f299e71d65b9d28349d6956abe144390a # v3.0.0 with: From e59d7fff5526752c366b8b9c8fa1a8a624d5cbad Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 25 Jun 2026 16:13:58 +0000 Subject: [PATCH 407/415] Lock file maintenance (#507) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f9775ac4..4a7e6bf1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1572,9 +1572,9 @@ } }, "node_modules/hono": { - "version": "4.12.25", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.25.tgz", - "integrity": "sha512-2NFaIyNVgJmBs/ecmtGzlmluTFs5cHEWGTdu0t1HBwYzoGXOL5nUQBRMXsXWla5i4KkG//QMzVP88m1+I3fdAQ==", + "version": "4.12.26", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.26.tgz", + "integrity": "sha512-uyZtpnYxM9CmQ7QsQknM4zN8EftNqhON1qYeIKM0Se67CCEe2c44xyGURwB0axX2fBDu1dqHrHAc1hmNT8ITkw==", "license": "MIT", "engines": { "node": ">=16.9.0" From 93b90e3b5c8e19f932afce99f5da48c888a352de Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 25 Jun 2026 19:00:45 +0000 Subject: [PATCH 408/415] Update Node.js to v24.17.0 (#508) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7a9ed9ce..25fb85fc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:24.16-alpine AS builder +FROM node:24.17-alpine AS builder COPY . /app From 7fcd4223c1f7048ff5e1c964a7c0a47317386867 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 25 Jun 2026 19:01:11 +0000 Subject: [PATCH 409/415] Lock file maintenance (#509) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4a7e6bf1..f369d611 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2191,9 +2191,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.12", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", - "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.13.tgz", + "integrity": "sha512-sPdqC6ByMVVGvF1ynvvMo0/o+oD1VX7DaHhijt1bFgjvBkHBib4t49GoNDhf2NDta4oeUNlaGbSt5K7qjZ955Q==", "funding": [ { "type": "github", From ecdb80c4b3e5d3e65f64288c3e552cda5b23b077 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 27 Jun 2026 17:00:31 +0000 Subject: [PATCH 410/415] Lock file maintenance (#510) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index f369d611..5d3df88a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2191,9 +2191,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.13.tgz", - "integrity": "sha512-sPdqC6ByMVVGvF1ynvvMo0/o+oD1VX7DaHhijt1bFgjvBkHBib4t49GoNDhf2NDta4oeUNlaGbSt5K7qjZ955Q==", + "version": "3.3.14", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.14.tgz", + "integrity": "sha512-U9kYi5bpVMEI31yC8iw4bJJp0avcHXA0W8/wNfLfnvJYzihQo2ZRPYPvpAAd570HAcCBjCTN7vnr+v4StKl1IQ==", "funding": [ { "type": "github", @@ -3303,9 +3303,9 @@ } }, "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "version": "17.7.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz", + "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==", "license": "MIT", "dependencies": { "cliui": "^8.0.1", From 51556bab67e666290874da46d5a1f5d0daf2e78b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 Jun 2026 17:59:14 +0000 Subject: [PATCH 411/415] Update dependency puppeteer to v25.2.0 (#511) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 193 +++++++++++++++++++++------------------------- 1 file changed, 87 insertions(+), 106 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5d3df88a..fef35b76 100644 --- a/package-lock.json +++ b/package-lock.json @@ -304,13 +304,13 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-3.0.4.tgz", - "integrity": "sha512-HGM8iAmGTf+Y7t0373szVbTmt3d7vPkYL/1bpOkOFO0YUYLgSeuYBCzESklogNPvOBnZ/MRD5f07OkpqH1trtA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-3.0.5.tgz", + "integrity": "sha512-xYXNuEQmHNIPWWcbL/skf2KF7seyp7c1xmKFRk3wmdFx7VwBsKVrtOLKs8ecaezsKPsWeF1YsgwIiElAscaryA==", "license": "Apache-2.0", "dependencies": { "modern-tar": "^0.7.6", - "yargs": "^17.7.2" + "yargs": "^18.0.0" }, "bin": { "browsers": "lib/main-cli.js" @@ -830,24 +830,24 @@ } }, "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" @@ -980,37 +980,19 @@ } }, "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", "license": "ISC", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=20" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, "node_modules/commander": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", @@ -1153,9 +1135,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1624250", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1624250.tgz", - "integrity": "sha512-YFAat/lOiIk0ARmBweG+ygrEcbZrq5B9urRyUoeQKp53MlidHXE2TmTbxKcaXoQj7u/aX+jebDO4BW55rs0WwA==", + "version": "0.0.1638949", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1638949.tgz", + "integrity": "sha512-mXwg4Fqnv0WR4iuAT/gYUmctNkjILwXFHyZ+m7Ty1dfr0ezZt2U3gnrrJTfRobJTHoXf+IbuFvFITzLrLFjwJA==", "license": "BSD-3-Clause" }, "node_modules/dunder-proto": { @@ -1179,9 +1161,9 @@ "license": "MIT" }, "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", "license": "MIT" }, "node_modules/encodeurl": { @@ -1489,6 +1471,18 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-east-asian-width": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", + "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", @@ -1640,15 +1634,6 @@ "node": ">= 0.10" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-promise": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", @@ -2472,17 +2457,17 @@ } }, "node_modules/puppeteer": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-25.1.0.tgz", - "integrity": "sha512-7L6/0JM7XStK99lIL4xQySyNEXNfII6pk0BxkI5kKBTOhR7AsoQiv067YTsE/rIXxQiq9ajlO4WcqBjS/FWK1A==", + "version": "25.2.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-25.2.0.tgz", + "integrity": "sha512-JPMPd/2+lgdkLhEyPqH895oR3ccMt1wSra6oewgjjTuLmo2s9zPZpKXQTFEIiA/fMKpiL01kjU3+2zPEReRWNg==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "3.0.4", + "@puppeteer/browsers": "3.0.5", "chromium-bidi": "16.0.1", - "devtools-protocol": "0.0.1624250", + "devtools-protocol": "0.0.1638949", "lilconfig": "^3.1.3", - "puppeteer-core": "25.1.0", + "puppeteer-core": "25.2.0", "typed-query-selector": "^2.12.2" }, "bin": { @@ -2493,14 +2478,14 @@ } }, "node_modules/puppeteer-core": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-25.1.0.tgz", - "integrity": "sha512-jKzy5y4WG6uNuFbTWgW1D7mqoT9o0nllc/6a1DGF775T1mPmgw3scdFEtEq67yVFikavQmbYq6NLfbTfxHSlqQ==", + "version": "25.2.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-25.2.0.tgz", + "integrity": "sha512-jGhuGAlkgOcbyGRc0Cm9b/y4vvqoxhyAyl6a1diVe8F3sHsgTaQ60QQT5F3rGegTZV3prysgHVc+0LsvPZo3GA==", "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "3.0.4", + "@puppeteer/browsers": "3.0.5", "chromium-bidi": "16.0.1", - "devtools-protocol": "0.0.1624250", + "devtools-protocol": "0.0.1638949", "typed-query-selector": "^2.12.2", "webdriver-bidi-protocol": "0.4.2", "ws": "^8.21.0" @@ -2548,15 +2533,6 @@ "node": ">= 0.10" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -2842,29 +2818,35 @@ "license": "MIT" }, "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^6.2.2" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/tinybench": { @@ -3228,17 +3210,17 @@ "license": "MIT" }, "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" @@ -3303,30 +3285,29 @@ } }, "node_modules/yargs": { - "version": "17.7.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz", - "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", + "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", "license": "MIT", "dependencies": { - "cliui": "^8.0.1", + "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", + "string-width": "^7.2.0", "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "yargs-parser": "^22.0.0" }, "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=23" } }, "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", "license": "ISC", "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=23" } }, "node_modules/zod": { From 83dcae1a655fb942fa68a7d980b297edfb45dce7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 Jun 2026 17:59:43 +0000 Subject: [PATCH 412/415] Lock file maintenance (#512) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index fef35b76..8b6a4a06 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2176,9 +2176,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.14", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.14.tgz", - "integrity": "sha512-U9kYi5bpVMEI31yC8iw4bJJp0avcHXA0W8/wNfLfnvJYzihQo2ZRPYPvpAAd570HAcCBjCTN7vnr+v4StKl1IQ==", + "version": "3.3.15", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz", + "integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==", "funding": [ { "type": "github", From 1b49f3ed4e0e4bcc95d46ae10acdbd495cd761fe Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 1 Jul 2026 23:51:04 +0000 Subject: [PATCH 413/415] Update dependency puppeteer to v25.2.1 (#513) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8b6a4a06..d5f6f302 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2457,9 +2457,9 @@ } }, "node_modules/puppeteer": { - "version": "25.2.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-25.2.0.tgz", - "integrity": "sha512-JPMPd/2+lgdkLhEyPqH895oR3ccMt1wSra6oewgjjTuLmo2s9zPZpKXQTFEIiA/fMKpiL01kjU3+2zPEReRWNg==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-25.2.1.tgz", + "integrity": "sha512-2D5RMkQH9FRhDU57a1/jV9xWoxqZvUjaZOYjAAPdRCEY8A01V5sxzyGOMs8XiKU9fPF91SOSwNYpHRu5SD958g==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -2467,7 +2467,7 @@ "chromium-bidi": "16.0.1", "devtools-protocol": "0.0.1638949", "lilconfig": "^3.1.3", - "puppeteer-core": "25.2.0", + "puppeteer-core": "25.2.1", "typed-query-selector": "^2.12.2" }, "bin": { @@ -2478,9 +2478,9 @@ } }, "node_modules/puppeteer-core": { - "version": "25.2.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-25.2.0.tgz", - "integrity": "sha512-jGhuGAlkgOcbyGRc0Cm9b/y4vvqoxhyAyl6a1diVe8F3sHsgTaQ60QQT5F3rGegTZV3prysgHVc+0LsvPZo3GA==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-25.2.1.tgz", + "integrity": "sha512-MwEZ4FFGJ1ZLOmu/04eISxoEMKtCnHyJBRFfgpwPPSYNG6gT6Xw1laNziFSV7uwDcx3jK+ATYIo9SfOd8Uhc3w==", "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "3.0.5", From 1f53eae7f56421257c00ebb4c7bae3ae33dc966c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 1 Jul 2026 23:51:05 +0000 Subject: [PATCH 414/415] Update Node.js to v24.18.0 (#514) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 25fb85fc..1a85f52e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:24.17-alpine AS builder +FROM node:24.18-alpine AS builder COPY . /app From 5701bb8fcf8bb8a52a3b6c37ad16cbc11b0d2f99 Mon Sep 17 00:00:00 2001 From: 4geru Date: Fri, 3 Jul 2026 07:19:20 +0900 Subject: [PATCH 415/415] Add get_rich_menu and update_rich_menu_image tools update_rich_menu_image replaces a rich menu image via clone-and-replace, since the LINE API does not allow overwriting an uploaded image. --- README.ja.md | 21 +- README.md | 21 +- src/index.ts | 4 + src/tools/getRichMenu.ts | 44 ++++ src/tools/updateRichMenuImage.ts | 290 +++++++++++++++++++++++++ test/helpers/mock-line-clients.ts | 2 + test/tools/getRichMenu.test.ts | 68 ++++++ test/tools/updateRichMenuImage.test.ts | 266 +++++++++++++++++++++++ 8 files changed, 706 insertions(+), 10 deletions(-) create mode 100644 src/tools/getRichMenu.ts create mode 100644 src/tools/updateRichMenuImage.ts create mode 100644 test/tools/getRichMenu.test.ts create mode 100644 test/tools/updateRichMenuImage.test.ts diff --git a/README.ja.md b/README.ja.md index a37dffd3..32e27a0b 100644 --- a/README.ja.md +++ b/README.ja.md @@ -45,19 +45,23 @@ LINE公式アカウントとAI Agentを接続するために、LINE Messaging AP - LINE公式アカウントに登録されているリッチメニューの一覧を取得する。 - **入力:** - なし -8. **delete_rich_menu** +8. **get_rich_menu** + - IDを指定してリッチメニューを取得する。サイズ、チャットバーのテキスト、タップ領域を含む。 + - **入力:** + - `richMenuId` (string): 取得するリッチメニューのID。 +9. **delete_rich_menu** - LINE公式アカウントからリッチメニューを削除する。 - **入力:** - `richMenuId` (string): 削除するリッチメニューのID。 -9. **set_rich_menu_default** +10. **set_rich_menu_default** - リッチメニューをデフォルトとして設定する。 - **入力:** - `richMenuId` (string): デフォルトとして設定するリッチメニューのID。 -10. **cancel_rich_menu_default** +11. **cancel_rich_menu_default** - デフォルトのリッチメニューを解除する。 - **入力:** - なし -11. **create_rich_menu** +12. **create_rich_menu** - 指定されたアクションに基づいてリッチメニューを作成。画像を生成してアップロード。デフォルトとして設定する。 - **入力:** - `chatBarText` (string): チャットバー表示、リッチメニュー名にされるテキスト。 @@ -72,7 +76,14 @@ LINE公式アカウントとAI Agentを接続するために、LINE Messaging AP - `richmenuswitch`: 別のリッチメニューに切り替える - `clipboard`: テキストをクリップボードにコピーする -12. **get_follower_ids** +13. **update_rich_menu_image** + - 既存リッチメニューの画像を差し替える。LINEでは一度アップロードしたリッチメニュー画像の上書きができないため、clone-and-replace方式を採用する: 同一定義の新しいリッチメニューを作成し、新しい画像をアップロードし、旧メニューがデフォルトの場合はデフォルトを引き継ぎ、旧メニューを削除する。この結果、**新しい`richMenuId`が発行され**、旧`richMenuId`は無効になる。 + - **入力:** + - `richMenuId` (string): 画像を更新するリッチメニューのID。 + - `imagePath` (string): 新しい画像のローカルファイルパス。PNGまたはJPEG、幅800-2500px、高さ250px以上、アスペクト比1.45以上、最大1MB。寸法は既存のリッチメニューサイズ(例: 1600x910)と一致する必要がある。 + - `deleteOldRichMenu` (boolean?): 差し替え後に旧リッチメニューを削除するかどうか。デフォルトはtrue。 + +14. **get_follower_ids** - LINE公式アカウントを友だち追加しているユーザーのユーザーIDリストを取得する。これにより、DESTINATION_USER_IDを手動で準備せずにユーザーIDを取得できる。 - **入力:** - `start` (string?): 次のユーザーID配列を取得するための継続トークン。前回のレスポンスの`next`プロパティから取得できる。 diff --git a/README.md b/README.md index d4112e52..696919f9 100644 --- a/README.md +++ b/README.md @@ -47,19 +47,23 @@ - Get the list of rich menus associated with your LINE Official Account. - **Inputs:** - None -8. **delete_rich_menu** +8. **get_rich_menu** + - Get a rich menu by ID, including its size, chat bar text, and tap areas. + - **Inputs:** + - `richMenuId` (string): The ID of the rich menu to get. +9. **delete_rich_menu** - Delete a rich menu from your LINE Official Account. - **Inputs:** - `richMenuId` (string): The ID of the rich menu to delete. -9. **set_rich_menu_default** +10. **set_rich_menu_default** - Set a rich menu as the default rich menu. - **Inputs:** - `richMenuId` (string): The ID of the rich menu to set as default. -10. **cancel_rich_menu_default** +11. **cancel_rich_menu_default** - Cancel the default rich menu. - **Inputs:** - None -11. **create_rich_menu** +12. **create_rich_menu** - Create a rich menu based on the given actions. Generate and upload an image. Set as default. - **Inputs:** - `chatBarText` (string): Text displayed in chat bar, also used as rich menu name. @@ -74,7 +78,14 @@ - `richmenuswitch`: For switching to another rich menu - `clipboard`: For copying text to clipboard -12. **get_follower_ids** +13. **update_rich_menu_image** + - Replace the image of an existing rich menu. LINE does not allow overwriting an already uploaded rich menu image, so this tool uses a clone-and-replace strategy: it creates a new rich menu with the same definition, uploads the new image, takes over the default assignment if the old menu was the default, and deletes the old menu. As a result, a **new `richMenuId` is issued** and the old one is no longer valid. + - **Inputs:** + - `richMenuId` (string): The ID of the rich menu whose image to update. + - `imagePath` (string): Local file path to the new image. PNG or JPEG, width 800-2500px, height >= 250px, aspect ratio >= 1.45, max 1MB. Dimensions must match the existing rich menu size (e.g. 1600x910). + - `deleteOldRichMenu` (boolean?): Whether to delete the old rich menu after replacement. Defaults to true. + +14. **get_follower_ids** - Get a list of user IDs of users who have added the LINE Official Account as a friend. This allows you to obtain user IDs for sending messages without manually preparing them. - **Inputs:** - `start` (string?): Continuation token to get the next array of user IDs. Returned in the `next` property of a previous response. diff --git a/src/index.ts b/src/index.ts index 4e2dde25..b24868fb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -28,9 +28,11 @@ import BroadcastFlexMessage from "./tools/broadcastFlexMessage.js"; import GetProfile from "./tools/getProfile.js"; import GetMessageQuota from "./tools/getMessageQuota.js"; import GetRichMenuList from "./tools/getRichMenuList.js"; +import GetRichMenu from "./tools/getRichMenu.js"; import DeleteRichMenu from "./tools/deleteRichMenu.js"; import SetRichMenuDefault from "./tools/setRichMenuDefault.js"; import CreateRichMenu from "./tools/createRichMenu.js"; +import UpdateRichMenuImage from "./tools/updateRichMenuImage.js"; import GetFollowerIds from "./tools/getFollowerIds.js"; const server = new McpServer({ @@ -57,10 +59,12 @@ new BroadcastFlexMessage(lineBotClient).register(server); new GetProfile(lineBotClient, destinationId).register(server); new GetMessageQuota(lineBotClient).register(server); new GetRichMenuList(lineBotClient).register(server); +new GetRichMenu(lineBotClient).register(server); new DeleteRichMenu(lineBotClient).register(server); new SetRichMenuDefault(lineBotClient).register(server); new CancelRichMenuDefault(lineBotClient).register(server); new CreateRichMenu(lineBotClient).register(server); +new UpdateRichMenuImage(lineBotClient).register(server); new GetFollowerIds(lineBotClient).register(server); async function main() { diff --git a/src/tools/getRichMenu.ts b/src/tools/getRichMenu.ts new file mode 100644 index 00000000..2127c3a5 --- /dev/null +++ b/src/tools/getRichMenu.ts @@ -0,0 +1,44 @@ +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { LineBotClient } from "@line/bot-sdk"; +import { + createErrorResponse, + createSuccessResponse, +} from "../common/response.js"; +import { AbstractTool } from "./AbstractTool.js"; +import { z } from "zod"; + +export default class GetRichMenu extends AbstractTool { + private client: LineBotClient; + + constructor(client: LineBotClient) { + super(); + this.client = client; + } + + register(server: McpServer) { + server.registerTool( + "get_rich_menu", + { + title: "Get Rich Menu", + description: + "Get a rich menu by ID, including its size, chat bar text, and tap areas.", + inputSchema: { + richMenuId: z.string().describe("The ID of the rich menu to get."), + }, + annotations: { + readOnlyHint: true, + }, + }, + async ({ richMenuId }) => { + try { + const response = await this.client.getRichMenu(richMenuId); + return createSuccessResponse(response); + } catch (error: unknown) { + return createErrorResponse( + `Failed to get rich menu: ${error instanceof Error ? error.message : String(error)}`, + ); + } + }, + ); + } +} diff --git a/src/tools/updateRichMenuImage.ts b/src/tools/updateRichMenuImage.ts new file mode 100644 index 00000000..55b659d5 --- /dev/null +++ b/src/tools/updateRichMenuImage.ts @@ -0,0 +1,290 @@ +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { LineBotClient, messagingApi } from "@line/bot-sdk"; +import { + createErrorResponse, + createSuccessResponse, +} from "../common/response.js"; +import { AbstractTool } from "./AbstractTool.js"; +import { z } from "zod"; +import fs from "fs"; +import path from "path"; + +const MIN_WIDTH = 800; +const MAX_WIDTH = 2500; +const MIN_HEIGHT = 250; +const MIN_ASPECT_RATIO = 1.45; +const MAX_FILE_SIZE = 1_048_576; // 1MB + +export type ImageDimensions = { width: number; height: number }; + +/** + * Parse the width/height of a PNG or JPEG file by reading its binary header only. + * No image decoding is performed. + */ +export function readImageDimensions( + buffer: Buffer, + ext: string, +): ImageDimensions { + if (ext === ".png") { + // PNG signature (8 bytes) + IHDR chunk. width at offset 16, height at offset 20. + if (buffer.length < 24) { + throw new Error("Invalid PNG file: header is too short."); + } + const width = buffer.readUInt32BE(16); + const height = buffer.readUInt32BE(20); + return { width, height }; + } + + // JPEG: scan markers until a Start Of Frame (SOF) marker is found. + // SOF markers are 0xC0-0xCF, excluding DHT (0xC4), DAC (0xCC) and RSTn (0xD0-0xD7). + let offset = 2; // skip the 0xFFD8 SOI marker + while (offset < buffer.length) { + if (buffer[offset] !== 0xff) { + offset++; + continue; + } + const marker = buffer[offset + 1]; + if ( + marker >= 0xc0 && + marker <= 0xcf && + marker !== 0xc4 && + marker !== 0xc8 && + marker !== 0xcc + ) { + // SOF marker: height at marker+5 (u16 BE), width at marker+7 (u16 BE). + const height = buffer.readUInt16BE(offset + 5); + const width = buffer.readUInt16BE(offset + 7); + return { width, height }; + } + // Skip this segment using its length field. + const segmentLength = buffer.readUInt16BE(offset + 2); + offset += 2 + segmentLength; + } + throw new Error( + "Invalid JPEG file: no Start Of Frame marker found; cannot read image dimensions.", + ); +} + +/** + * Validate the new image against LINE rich menu image constraints and against + * the existing rich menu size. Throws an actionable Error on any violation. + */ +export function validateRichMenuImage( + imagePath: string, + richMenuSize: messagingApi.RichMenuSize, +): { dimensions: ImageDimensions; contentType: string } { + if (!fs.existsSync(imagePath)) { + throw new Error( + `Image file not found at "${imagePath}". Provide a valid local file path to an existing PNG or JPEG image.`, + ); + } + + const ext = path.extname(imagePath).toLowerCase(); + if (ext !== ".png" && ext !== ".jpg" && ext !== ".jpeg") { + throw new Error( + `Unsupported image extension "${ext || "(none)"}". Provide a PNG or JPEG file with a .png, .jpg or .jpeg extension.`, + ); + } + const contentType = ext === ".png" ? "image/png" : "image/jpeg"; + + const stats = fs.statSync(imagePath); + if (stats.size > MAX_FILE_SIZE) { + throw new Error( + `Image file is ${stats.size} bytes but the maximum allowed is ${MAX_FILE_SIZE} bytes (1MB). Compress or re-export the image to be at most 1MB.`, + ); + } + + const buffer = fs.readFileSync(imagePath); + const dimensions = readImageDimensions(buffer, ext); + const { width, height } = dimensions; + + if (width < MIN_WIDTH || width > MAX_WIDTH) { + throw new Error( + `Image width is ${width}px but must be between ${MIN_WIDTH} and ${MAX_WIDTH}px. Regenerate the image with a width in that range (ideally ${richMenuSize.width}px to match the rich menu).`, + ); + } + if (height < MIN_HEIGHT) { + throw new Error( + `Image height is ${height}px but must be at least ${MIN_HEIGHT}px. Regenerate the image taller (ideally ${richMenuSize.height}px to match the rich menu).`, + ); + } + const aspectRatio = width / height; + if (aspectRatio < MIN_ASPECT_RATIO) { + throw new Error( + `Image aspect ratio (width/height) is ${aspectRatio.toFixed(3)} but must be at least ${MIN_ASPECT_RATIO}. Regenerate the image wider relative to its height (e.g. ${richMenuSize.width}x${richMenuSize.height}).`, + ); + } + + if (width !== richMenuSize.width || height !== richMenuSize.height) { + throw new Error( + `Image is ${width}x${height} but the rich menu size is ${richMenuSize.width}x${richMenuSize.height}. Regenerate the image at exactly ${richMenuSize.width}x${richMenuSize.height} px.`, + ); + } + + return { dimensions, contentType }; +} + +export default class UpdateRichMenuImage extends AbstractTool { + private client: LineBotClient; + + constructor(client: LineBotClient) { + super(); + this.client = client; + } + + register(server: McpServer) { + server.registerTool( + "update_rich_menu_image", + { + title: "Update Rich Menu Image", + description: + "Replace the image of an existing rich menu. LINE does not allow overwriting an already uploaded rich menu image, so this tool uses a clone-and-replace strategy: it creates a new rich menu with the same definition as the old one, uploads the new image, takes over the default assignment if the old menu was the default, and deletes the old menu. As a result, a NEW richMenuId is issued and returned; the old richMenuId will no longer be valid. Image constraints: PNG or JPEG, width 800-2500px, height >= 250px, aspect ratio (width/height) >= 1.45, max 1MB. The image dimensions must match the size of the existing rich menu.", + inputSchema: { + richMenuId: z + .string() + .describe("The ID of the rich menu whose image to update."), + imagePath: z + .string() + .describe( + "Local file path to the new image. PNG or JPEG, width 800-2500px, height >= 250px, aspect ratio >= 1.45, max 1MB. Dimensions must match the existing rich menu size (e.g. 1600x910).", + ), + deleteOldRichMenu: z + .boolean() + .default(true) + .describe( + "Whether to delete the old rich menu after replacement. Defaults to true.", + ), + }, + annotations: { + destructiveHint: true, + }, + }, + async ({ richMenuId, imagePath, deleteOldRichMenu }) => { + try { + // 1. Fetch the old rich menu definition. + let oldRichMenu: messagingApi.RichMenuResponse; + try { + oldRichMenu = await this.client.getRichMenu(richMenuId); + } catch (error: unknown) { + return createErrorResponse( + `Failed to get the rich menu "${richMenuId}": ${error instanceof Error ? error.message : String(error)}`, + ); + } + + // 2. Validate the new image (before any API calls that mutate state). + let contentType: string; + try { + ({ contentType } = validateRichMenuImage( + imagePath, + oldRichMenu.size, + )); + } catch (error: unknown) { + return createErrorResponse( + error instanceof Error ? error.message : String(error), + ); + } + + // 3. Create a new rich menu with the same definition as the old one. + const richMenuRequest: messagingApi.RichMenuRequest = { + size: oldRichMenu.size, + selected: oldRichMenu.selected, + name: oldRichMenu.name, + chatBarText: oldRichMenu.chatBarText, + areas: oldRichMenu.areas, + }; + const createResponse = + await this.client.createRichMenu(richMenuRequest); + const newRichMenuId = createResponse.richMenuId; + + // 4. Upload the new image. Roll back the new menu on failure. + try { + const imageBuffer = fs.readFileSync(imagePath); + const imageBlob = new Blob([imageBuffer], { type: contentType }); + await this.client.setRichMenuImage(newRichMenuId, imageBlob); + } catch (uploadError: unknown) { + let rollbackError: unknown = null; + try { + await this.client.deleteRichMenu(newRichMenuId); + } catch (error: unknown) { + rollbackError = error; + } + return createErrorResponse( + JSON.stringify({ + error: `Failed to upload the new rich menu image: ${uploadError instanceof Error ? uploadError.message : String(uploadError)}`, + newRichMenuId, + rolledBack: rollbackError === null, + rollbackError: + rollbackError === null + ? undefined + : `Failed to delete the newly created rich menu "${newRichMenuId}" during rollback: ${rollbackError instanceof Error ? rollbackError.message : String(rollbackError)}`, + }), + ); + } + + // 5. Determine whether the old menu was the default and take it over. + let oldWasDefault = false; + try { + const defaultResponse = await this.client.getDefaultRichMenuId(); + oldWasDefault = defaultResponse.richMenuId === richMenuId; + } catch { + // No default rich menu is set (LINE returns 404). Treat as "no default". + oldWasDefault = false; + } + + let defaultSwitched = false; + let defaultSwitchError: string | undefined; + if (oldWasDefault) { + try { + await this.client.setDefaultRichMenu(newRichMenuId); + defaultSwitched = true; + } catch (error: unknown) { + defaultSwitchError = `Failed to switch the default rich menu to "${newRichMenuId}": ${error instanceof Error ? error.message : String(error)}`; + } + } + + // 6. Delete the old rich menu (unless the default switch failed). + let oldRichMenuDeleted = false; + let deleteError: string | undefined; + if (oldWasDefault && !defaultSwitched) { + // Do not delete the old menu; it is still the active default. + return createErrorResponse( + JSON.stringify({ + error: defaultSwitchError, + oldRichMenuId: richMenuId, + newRichMenuId, + defaultSwitched, + oldRichMenuDeleted, + message: + "The new rich menu and image were created, but switching the default failed. The old rich menu was kept as the active default. Retry setting the default to the new rich menu manually, then delete the old one.", + }), + ); + } + + if (deleteOldRichMenu) { + try { + await this.client.deleteRichMenu(richMenuId); + oldRichMenuDeleted = true; + } catch (error: unknown) { + deleteError = `Failed to delete the old rich menu "${richMenuId}": ${error instanceof Error ? error.message : String(error)}`; + } + } + + return createSuccessResponse({ + message: + "Rich menu image updated via clone-and-replace. A new richMenuId was issued; the old richMenuId is no longer valid." + + (deleteError ? ` Warning: ${deleteError}` : ""), + oldRichMenuId: richMenuId, + newRichMenuId, + defaultSwitched, + oldRichMenuDeleted, + ...(deleteError ? { deleteError } : {}), + }); + } catch (error: unknown) { + return createErrorResponse( + `Failed to update rich menu image: ${error instanceof Error ? error.message : String(error)}`, + ); + } + }, + ); + } +} diff --git a/test/helpers/mock-line-clients.ts b/test/helpers/mock-line-clients.ts index 28113b6c..5b18a29e 100644 --- a/test/helpers/mock-line-clients.ts +++ b/test/helpers/mock-line-clients.ts @@ -9,11 +9,13 @@ export function createMockLineBotClient() { getMessageQuota: vi.fn(), getMessageQuotaConsumption: vi.fn(), getRichMenuList: vi.fn(), + getRichMenu: vi.fn(), deleteRichMenu: vi.fn(), setDefaultRichMenu: vi.fn(), cancelDefaultRichMenu: vi.fn(), createRichMenu: vi.fn(), getFollowers: vi.fn(), setRichMenuImage: vi.fn(), + getDefaultRichMenuId: vi.fn(), } as unknown as LineBotClient; } diff --git a/test/tools/getRichMenu.test.ts b/test/tools/getRichMenu.test.ts new file mode 100644 index 00000000..7d9baf0f --- /dev/null +++ b/test/tools/getRichMenu.test.ts @@ -0,0 +1,68 @@ +import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { Client } from "@modelcontextprotocol/sdk/client/index.js"; +import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; +import { createMockLineBotClient } from "../helpers/mock-line-clients.js"; +import GetRichMenu from "../../src/tools/getRichMenu.js"; + +describe("get_rich_menu tool", () => { + let client: Client; + let server: McpServer; + let mockLineClient: ReturnType; + + beforeEach(async () => { + mockLineClient = createMockLineBotClient(); + server = new McpServer({ name: "test", version: "0.0.1" }); + new GetRichMenu(mockLineClient).register(server); + + const [clientTransport, serverTransport] = + InMemoryTransport.createLinkedPair(); + client = new Client({ name: "test-client", version: "0.0.1" }); + await Promise.all([ + client.connect(clientTransport), + server.connect(serverTransport), + ]); + }); + + afterEach(async () => { + await client?.close(); + await server?.close(); + }); + + it("calls getRichMenu with the correct richMenuId and returns the rich menu", async () => { + const richMenu = { + richMenuId: "richmenu-123", + size: { width: 2500, height: 1686 }, + chatBarText: "Menu", + areas: [], + }; + vi.mocked(mockLineClient.getRichMenu).mockResolvedValue(richMenu as never); + + const result = await client.callTool({ + name: "get_rich_menu", + arguments: { richMenuId: "richmenu-123" }, + }); + + expect(mockLineClient.getRichMenu).toHaveBeenCalledWith("richmenu-123"); + expect(result.isError).toBeFalsy(); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + expect(JSON.parse(text)).toEqual(richMenu); + }); + + it("returns an error response when LINE API fails", async () => { + vi.mocked(mockLineClient.getRichMenu).mockRejectedValue( + new Error("Not found"), + ); + + const result = await client.callTool({ + name: "get_rich_menu", + arguments: { richMenuId: "richmenu-unknown" }, + }); + + expect(result.isError).toBe(true); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + expect(text).toContain("Failed to get rich menu"); + }); +}); diff --git a/test/tools/updateRichMenuImage.test.ts b/test/tools/updateRichMenuImage.test.ts new file mode 100644 index 00000000..5cb87ff7 --- /dev/null +++ b/test/tools/updateRichMenuImage.test.ts @@ -0,0 +1,266 @@ +import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { Client } from "@modelcontextprotocol/sdk/client/index.js"; +import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; +import { createMockLineBotClient } from "../helpers/mock-line-clients.js"; +import fs from "fs"; +import os from "os"; +import path from "path"; +import UpdateRichMenuImage from "../../src/tools/updateRichMenuImage.js"; + +// Build a minimal PNG buffer whose IHDR header advertises the given dimensions. +// The pixel data is not real; only the header bytes are read by the tool. +function makePngBuffer(width: number, height: number): Buffer { + const buffer = Buffer.alloc(33); + // PNG signature + Buffer.from([137, 80, 78, 71, 13, 10, 26, 10]).copy(buffer, 0); + // IHDR length + type (not strictly parsed, kept for realism) + buffer.writeUInt32BE(13, 8); + buffer.write("IHDR", 12, "ascii"); + buffer.writeUInt32BE(width, 16); + buffer.writeUInt32BE(height, 20); + return buffer; +} + +function writeTempPng(width: number, height: number): string { + const filePath = path.join( + os.tmpdir(), + `update-rich-menu-image-test-${Date.now()}-${Math.random().toString(36).slice(2)}.png`, + ); + fs.writeFileSync(filePath, makePngBuffer(width, height)); + return filePath; +} + +const OLD_RICH_MENU = { + richMenuId: "richmenu-old-123", + size: { width: 1600, height: 910 }, + selected: true, + name: "My Menu", + chatBarText: "Menu", + areas: [ + { + bounds: { x: 0, y: 0, width: 1600, height: 910 }, + action: { type: "message", text: "hi" }, + }, + ], +}; + +describe("update_rich_menu_image tool", () => { + let client: Client; + let server: McpServer; + let mockLineClient: ReturnType; + const tempFiles: string[] = []; + + function tempPng(width: number, height: number): string { + const p = writeTempPng(width, height); + tempFiles.push(p); + return p; + } + + beforeEach(async () => { + mockLineClient = createMockLineBotClient(); + server = new McpServer({ name: "test", version: "0.0.1" }); + new UpdateRichMenuImage(mockLineClient).register(server); + + const [clientTransport, serverTransport] = + InMemoryTransport.createLinkedPair(); + client = new Client({ name: "test-client", version: "0.0.1" }); + await Promise.all([ + client.connect(clientTransport), + server.connect(serverTransport), + ]); + }); + + afterEach(async () => { + await client?.close(); + await server?.close(); + for (const f of tempFiles.splice(0)) { + try { + fs.unlinkSync(f); + } catch { + // ignore + } + } + }); + + function parseResult(result: Awaited>) { + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + return JSON.parse(text); + } + + it("clones the menu, uploads the image, switches default and deletes the old menu", async () => { + vi.mocked(mockLineClient.getRichMenu).mockResolvedValue( + OLD_RICH_MENU as never, + ); + vi.mocked(mockLineClient.createRichMenu).mockResolvedValue({ + richMenuId: "richmenu-new-456", + } as never); + vi.mocked(mockLineClient.setRichMenuImage).mockResolvedValue({} as never); + vi.mocked(mockLineClient.getDefaultRichMenuId).mockResolvedValue({ + richMenuId: "richmenu-old-123", + } as never); + vi.mocked(mockLineClient.setDefaultRichMenu).mockResolvedValue({} as never); + vi.mocked(mockLineClient.deleteRichMenu).mockResolvedValue({} as never); + + const imagePath = tempPng(1600, 910); + const result = await client.callTool({ + name: "update_rich_menu_image", + arguments: { richMenuId: "richmenu-old-123", imagePath }, + }); + + expect(result.isError).toBeFalsy(); + expect(mockLineClient.createRichMenu).toHaveBeenCalledWith( + expect.objectContaining({ + name: "My Menu", + chatBarText: "Menu", + selected: true, + size: { width: 1600, height: 910 }, + }), + ); + expect(mockLineClient.setRichMenuImage).toHaveBeenCalledWith( + "richmenu-new-456", + expect.any(Blob), + ); + expect(mockLineClient.setDefaultRichMenu).toHaveBeenCalledWith( + "richmenu-new-456", + ); + expect(mockLineClient.deleteRichMenu).toHaveBeenCalledWith( + "richmenu-old-123", + ); + + const parsed = parseResult(result); + expect(parsed.oldRichMenuId).toBe("richmenu-old-123"); + expect(parsed.newRichMenuId).toBe("richmenu-new-456"); + expect(parsed.defaultSwitched).toBe(true); + expect(parsed.oldRichMenuDeleted).toBe(true); + }); + + it("does not switch the default when the old menu was not the default", async () => { + vi.mocked(mockLineClient.getRichMenu).mockResolvedValue( + OLD_RICH_MENU as never, + ); + vi.mocked(mockLineClient.createRichMenu).mockResolvedValue({ + richMenuId: "richmenu-new-456", + } as never); + vi.mocked(mockLineClient.setRichMenuImage).mockResolvedValue({} as never); + vi.mocked(mockLineClient.getDefaultRichMenuId).mockResolvedValue({ + richMenuId: "richmenu-other-999", + } as never); + vi.mocked(mockLineClient.deleteRichMenu).mockResolvedValue({} as never); + + const imagePath = tempPng(1600, 910); + const result = await client.callTool({ + name: "update_rich_menu_image", + arguments: { richMenuId: "richmenu-old-123", imagePath }, + }); + + expect(result.isError).toBeFalsy(); + expect(mockLineClient.setDefaultRichMenu).not.toHaveBeenCalled(); + const parsed = parseResult(result); + expect(parsed.defaultSwitched).toBe(false); + expect(parsed.oldRichMenuDeleted).toBe(true); + }); + + it("does not delete the old menu when deleteOldRichMenu is false", async () => { + vi.mocked(mockLineClient.getRichMenu).mockResolvedValue( + OLD_RICH_MENU as never, + ); + vi.mocked(mockLineClient.createRichMenu).mockResolvedValue({ + richMenuId: "richmenu-new-456", + } as never); + vi.mocked(mockLineClient.setRichMenuImage).mockResolvedValue({} as never); + vi.mocked(mockLineClient.getDefaultRichMenuId).mockResolvedValue({ + richMenuId: "richmenu-other-999", + } as never); + + const imagePath = tempPng(1600, 910); + const result = await client.callTool({ + name: "update_rich_menu_image", + arguments: { + richMenuId: "richmenu-old-123", + imagePath, + deleteOldRichMenu: false, + }, + }); + + expect(result.isError).toBeFalsy(); + expect(mockLineClient.deleteRichMenu).not.toHaveBeenCalled(); + const parsed = parseResult(result); + expect(parsed.oldRichMenuDeleted).toBe(false); + }); + + it("returns an actionable error and does not create a menu when image size mismatches", async () => { + vi.mocked(mockLineClient.getRichMenu).mockResolvedValue( + OLD_RICH_MENU as never, + ); + + // Passes width/height/aspect-ratio checks but does not match the 1600x910 menu. + const imagePath = tempPng(2000, 910); + const result = await client.callTool({ + name: "update_rich_menu_image", + arguments: { richMenuId: "richmenu-old-123", imagePath }, + }); + + expect(result.isError).toBe(true); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + expect(text).toContain("2000x910"); + expect(text).toContain("1600x910"); + expect(mockLineClient.createRichMenu).not.toHaveBeenCalled(); + }); + + it("rolls back the newly created menu when the image upload fails", async () => { + vi.mocked(mockLineClient.getRichMenu).mockResolvedValue( + OLD_RICH_MENU as never, + ); + vi.mocked(mockLineClient.createRichMenu).mockResolvedValue({ + richMenuId: "richmenu-new-456", + } as never); + vi.mocked(mockLineClient.setRichMenuImage).mockRejectedValue( + new Error("upload failed"), + ); + vi.mocked(mockLineClient.deleteRichMenu).mockResolvedValue({} as never); + + const imagePath = tempPng(1600, 910); + const result = await client.callTool({ + name: "update_rich_menu_image", + arguments: { richMenuId: "richmenu-old-123", imagePath }, + }); + + expect(result.isError).toBe(true); + expect(mockLineClient.deleteRichMenu).toHaveBeenCalledWith( + "richmenu-new-456", + ); + const text = (result.content as Array<{ type: string; text: string }>)[0] + .text; + expect(text).toContain("upload failed"); + expect(JSON.parse(text).rolledBack).toBe(true); + }); + + it("continues when getDefaultRichMenuId throws (no default set)", async () => { + vi.mocked(mockLineClient.getRichMenu).mockResolvedValue( + OLD_RICH_MENU as never, + ); + vi.mocked(mockLineClient.createRichMenu).mockResolvedValue({ + richMenuId: "richmenu-new-456", + } as never); + vi.mocked(mockLineClient.setRichMenuImage).mockResolvedValue({} as never); + vi.mocked(mockLineClient.getDefaultRichMenuId).mockRejectedValue( + new Error("404 not found"), + ); + vi.mocked(mockLineClient.deleteRichMenu).mockResolvedValue({} as never); + + const imagePath = tempPng(1600, 910); + const result = await client.callTool({ + name: "update_rich_menu_image", + arguments: { richMenuId: "richmenu-old-123", imagePath }, + }); + + expect(result.isError).toBeFalsy(); + expect(mockLineClient.setDefaultRichMenu).not.toHaveBeenCalled(); + const parsed = parseResult(result); + expect(parsed.defaultSwitched).toBe(false); + expect(parsed.oldRichMenuDeleted).toBe(true); + }); +});