@opentabs-dev/opentabs-plugin-discord 0.0.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +138 -0
- package/dist/adapter.iife.js +15389 -0
- package/dist/adapter.iife.js.map +7 -0
- package/dist/discord-api.d.ts +16 -0
- package/dist/discord-api.d.ts.map +1 -0
- package/dist/discord-api.js +232 -0
- package/dist/discord-api.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +78 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/add-reaction.d.ts +7 -0
- package/dist/tools/add-reaction.d.ts.map +1 -0
- package/dist/tools/add-reaction.js +28 -0
- package/dist/tools/add-reaction.js.map +1 -0
- package/dist/tools/create-channel.d.ts +21 -0
- package/dist/tools/create-channel.d.ts.map +1 -0
- package/dist/tools/create-channel.js +40 -0
- package/dist/tools/create-channel.js.map +1 -0
- package/dist/tools/create-thread.d.ts +19 -0
- package/dist/tools/create-thread.d.ts.map +1 -0
- package/dist/tools/create-thread.js +47 -0
- package/dist/tools/create-thread.js.map +1 -0
- package/dist/tools/delete-channel.d.ts +16 -0
- package/dist/tools/delete-channel.d.ts.map +1 -0
- package/dist/tools/delete-channel.js +25 -0
- package/dist/tools/delete-channel.js.map +1 -0
- package/dist/tools/delete-message.d.ts +6 -0
- package/dist/tools/delete-message.d.ts.map +1 -0
- package/dist/tools/delete-message.js +23 -0
- package/dist/tools/delete-message.js.map +1 -0
- package/dist/tools/edit-channel.d.ts +20 -0
- package/dist/tools/edit-channel.d.ts.map +1 -0
- package/dist/tools/edit-channel.js +39 -0
- package/dist/tools/edit-channel.js.map +1 -0
- package/dist/tools/edit-message.d.ts +23 -0
- package/dist/tools/edit-message.d.ts.map +1 -0
- package/dist/tools/edit-message.js +25 -0
- package/dist/tools/edit-message.js.map +1 -0
- package/dist/tools/get-channel-info.d.ts +16 -0
- package/dist/tools/get-channel-info.d.ts.map +1 -0
- package/dist/tools/get-channel-info.js +23 -0
- package/dist/tools/get-channel-info.js.map +1 -0
- package/dist/tools/get-guild-info.d.ts +18 -0
- package/dist/tools/get-guild-info.d.ts.map +1 -0
- package/dist/tools/get-guild-info.js +48 -0
- package/dist/tools/get-guild-info.js.map +1 -0
- package/dist/tools/get-message.d.ts +22 -0
- package/dist/tools/get-message.d.ts.map +1 -0
- package/dist/tools/get-message.js +33 -0
- package/dist/tools/get-message.js.map +1 -0
- package/dist/tools/get-user-profile.d.ts +19 -0
- package/dist/tools/get-user-profile.d.ts.map +1 -0
- package/dist/tools/get-user-profile.js +49 -0
- package/dist/tools/get-user-profile.js.map +1 -0
- package/dist/tools/list-channels.d.ts +16 -0
- package/dist/tools/list-channels.d.ts.map +1 -0
- package/dist/tools/list-channels.js +24 -0
- package/dist/tools/list-channels.js.map +1 -0
- package/dist/tools/list-dms.d.ts +16 -0
- package/dist/tools/list-dms.d.ts.map +1 -0
- package/dist/tools/list-dms.js +36 -0
- package/dist/tools/list-dms.js.map +1 -0
- package/dist/tools/list-guilds.d.ts +16 -0
- package/dist/tools/list-guilds.d.ts.map +1 -0
- package/dist/tools/list-guilds.js +34 -0
- package/dist/tools/list-guilds.js.map +1 -0
- package/dist/tools/list-members.d.ts +20 -0
- package/dist/tools/list-members.d.ts.map +1 -0
- package/dist/tools/list-members.js +45 -0
- package/dist/tools/list-members.js.map +1 -0
- package/dist/tools/list-pinned-messages.d.ts +21 -0
- package/dist/tools/list-pinned-messages.d.ts.map +1 -0
- package/dist/tools/list-pinned-messages.js +24 -0
- package/dist/tools/list-pinned-messages.js.map +1 -0
- package/dist/tools/list-roles.d.ts +15 -0
- package/dist/tools/list-roles.d.ts.map +1 -0
- package/dist/tools/list-roles.js +41 -0
- package/dist/tools/list-roles.js.map +1 -0
- package/dist/tools/open-dm.d.ts +15 -0
- package/dist/tools/open-dm.d.ts.map +1 -0
- package/dist/tools/open-dm.js +35 -0
- package/dist/tools/open-dm.js.map +1 -0
- package/dist/tools/pin-message.d.ts +6 -0
- package/dist/tools/pin-message.d.ts.map +1 -0
- package/dist/tools/pin-message.js +23 -0
- package/dist/tools/pin-message.js.map +1 -0
- package/dist/tools/read-messages.d.ts +25 -0
- package/dist/tools/read-messages.d.ts.map +1 -0
- package/dist/tools/read-messages.js +37 -0
- package/dist/tools/read-messages.js.map +1 -0
- package/dist/tools/read-thread.d.ts +24 -0
- package/dist/tools/read-thread.d.ts.map +1 -0
- package/dist/tools/read-thread.js +34 -0
- package/dist/tools/read-thread.js.map +1 -0
- package/dist/tools/remove-reaction.d.ts +7 -0
- package/dist/tools/remove-reaction.d.ts.map +1 -0
- package/dist/tools/remove-reaction.js +28 -0
- package/dist/tools/remove-reaction.js.map +1 -0
- package/dist/tools/schemas.d.ts +89 -0
- package/dist/tools/schemas.d.ts.map +1 -0
- package/dist/tools/schemas.js +72 -0
- package/dist/tools/schemas.js.map +1 -0
- package/dist/tools/search-messages.d.ts +28 -0
- package/dist/tools/search-messages.d.ts.map +1 -0
- package/dist/tools/search-messages.js +46 -0
- package/dist/tools/search-messages.js.map +1 -0
- package/dist/tools/send-message.d.ts +23 -0
- package/dist/tools/send-message.d.ts.map +1 -0
- package/dist/tools/send-message.js +32 -0
- package/dist/tools/send-message.js.map +1 -0
- package/dist/tools/unpin-message.d.ts +6 -0
- package/dist/tools/unpin-message.d.ts.map +1 -0
- package/dist/tools/unpin-message.js +23 -0
- package/dist/tools/unpin-message.js.map +1 -0
- package/dist/tools/upload-file.d.ts +25 -0
- package/dist/tools/upload-file.d.ts.map +1 -0
- package/dist/tools/upload-file.js +53 -0
- package/dist/tools/upload-file.js.map +1 -0
- package/dist/tools.json +2681 -0
- package/package.json +55 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { defineTool } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { discordApi } from '../discord-api.js';
|
|
4
|
+
export const deleteMessage = defineTool({
|
|
5
|
+
name: 'delete_message',
|
|
6
|
+
displayName: 'Delete Message',
|
|
7
|
+
description: 'Delete a message from a channel',
|
|
8
|
+
summary: 'Delete a message from a channel',
|
|
9
|
+
icon: 'trash-2',
|
|
10
|
+
group: 'Messages',
|
|
11
|
+
input: z.object({
|
|
12
|
+
channel: z.string().min(1).describe('Channel ID where the message is located'),
|
|
13
|
+
message_id: z.string().min(1).describe('ID of the message to delete'),
|
|
14
|
+
}),
|
|
15
|
+
output: z.object({}),
|
|
16
|
+
handle: async (params) => {
|
|
17
|
+
await discordApi(`/channels/${params.channel}/messages/${params.message_id}`, {
|
|
18
|
+
method: 'DELETE',
|
|
19
|
+
});
|
|
20
|
+
return {};
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=delete-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-message.js","sourceRoot":"","sources":["../../src/tools/delete-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;IACtC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,iCAAiC;IAC9C,OAAO,EAAE,iCAAiC;IAC1C,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QAC9E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KACtE,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACpB,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,UAAU,CAAC,aAAa,MAAM,CAAC,OAAO,aAAa,MAAM,CAAC,UAAU,EAAE,EAAE;YAC5E,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const editChannel: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
channel: z.ZodString;
|
|
4
|
+
name: z.ZodOptional<z.ZodString>;
|
|
5
|
+
topic: z.ZodOptional<z.ZodString>;
|
|
6
|
+
nsfw: z.ZodOptional<z.ZodBoolean>;
|
|
7
|
+
parent_id: z.ZodOptional<z.ZodString>;
|
|
8
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
9
|
+
channel: z.ZodObject<{
|
|
10
|
+
id: z.ZodString;
|
|
11
|
+
type: z.ZodNumber;
|
|
12
|
+
guild_id: z.ZodString;
|
|
13
|
+
name: z.ZodString;
|
|
14
|
+
topic: z.ZodNullable<z.ZodString>;
|
|
15
|
+
position: z.ZodNumber;
|
|
16
|
+
parent_id: z.ZodNullable<z.ZodString>;
|
|
17
|
+
nsfw: z.ZodBoolean;
|
|
18
|
+
}, z.core.$strip>;
|
|
19
|
+
}, z.core.$strip>>;
|
|
20
|
+
//# sourceMappingURL=edit-channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-channel.d.ts","sourceRoot":"","sources":["../../src/tools/edit-channel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;kBA8BtB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { defineTool } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { discordApi } from '../discord-api.js';
|
|
4
|
+
import { channelSchema, mapChannel } from './schemas.js';
|
|
5
|
+
export const editChannel = defineTool({
|
|
6
|
+
name: 'edit_channel',
|
|
7
|
+
displayName: 'Edit Channel',
|
|
8
|
+
description: 'Edit a Discord channel. Update name, topic, NSFW flag, or move to a different category.',
|
|
9
|
+
summary: "Edit a channel's name, topic, or settings",
|
|
10
|
+
icon: 'edit',
|
|
11
|
+
group: 'Channels',
|
|
12
|
+
input: z.object({
|
|
13
|
+
channel: z.string().min(1).describe('Channel ID to edit'),
|
|
14
|
+
name: z.string().optional().describe('New channel name (lowercase, hyphens, max 100 chars)'),
|
|
15
|
+
topic: z.string().optional().describe('New channel topic (max 1024 chars for text channels)'),
|
|
16
|
+
nsfw: z.boolean().optional().describe('Whether the channel is NSFW'),
|
|
17
|
+
parent_id: z.string().optional().describe('Parent category ID to move the channel under'),
|
|
18
|
+
}),
|
|
19
|
+
output: z.object({
|
|
20
|
+
channel: channelSchema.describe('The updated channel'),
|
|
21
|
+
}),
|
|
22
|
+
handle: async (params) => {
|
|
23
|
+
const body = {};
|
|
24
|
+
if (params.name !== undefined)
|
|
25
|
+
body.name = params.name;
|
|
26
|
+
if (params.topic !== undefined)
|
|
27
|
+
body.topic = params.topic;
|
|
28
|
+
if (params.nsfw !== undefined)
|
|
29
|
+
body.nsfw = params.nsfw;
|
|
30
|
+
if (params.parent_id !== undefined)
|
|
31
|
+
body.parent_id = params.parent_id;
|
|
32
|
+
const data = await discordApi(`/channels/${params.channel}`, {
|
|
33
|
+
method: 'PATCH',
|
|
34
|
+
body,
|
|
35
|
+
});
|
|
36
|
+
return { channel: mapChannel(data) };
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=edit-channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-channel.js","sourceRoot":"","sources":["../../src/tools/edit-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,yFAAyF;IACtG,OAAO,EAAE,2CAA2C;IACpD,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACzD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;QAC5F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;QAC7F,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QACpE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;KAC1F,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC;KACvD,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACvD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1D,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACvD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAEtE,MAAM,IAAI,GAAG,MAAM,UAAU,CAA0B,aAAa,MAAM,CAAC,OAAO,EAAE,EAAE;YACpF,MAAM,EAAE,OAAO;YACf,IAAI;SACL,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACvC,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const editMessage: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
channel: z.ZodString;
|
|
4
|
+
message_id: z.ZodString;
|
|
5
|
+
content: z.ZodString;
|
|
6
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
7
|
+
message: z.ZodObject<{
|
|
8
|
+
id: z.ZodString;
|
|
9
|
+
channel_id: z.ZodString;
|
|
10
|
+
author: z.ZodObject<{
|
|
11
|
+
id: z.ZodString;
|
|
12
|
+
username: z.ZodString;
|
|
13
|
+
global_name: z.ZodNullable<z.ZodString>;
|
|
14
|
+
avatar: z.ZodNullable<z.ZodString>;
|
|
15
|
+
bot: z.ZodBoolean;
|
|
16
|
+
}, z.core.$strip>;
|
|
17
|
+
content: z.ZodString;
|
|
18
|
+
timestamp: z.ZodString;
|
|
19
|
+
edited_timestamp: z.ZodNullable<z.ZodString>;
|
|
20
|
+
pinned: z.ZodBoolean;
|
|
21
|
+
}, z.core.$strip>;
|
|
22
|
+
}, z.core.$strip>>;
|
|
23
|
+
//# sourceMappingURL=edit-message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-message.d.ts","sourceRoot":"","sources":["../../src/tools/edit-message.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;kBAsBtB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { defineTool } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { discordApi } from '../discord-api.js';
|
|
4
|
+
import { mapMessage, messageSchema } from './schemas.js';
|
|
5
|
+
export const editMessage = defineTool({
|
|
6
|
+
name: 'edit_message',
|
|
7
|
+
displayName: 'Edit Message',
|
|
8
|
+
description: 'Edit an existing message. Only messages sent by the authenticated user can be edited.',
|
|
9
|
+
summary: 'Edit an existing message',
|
|
10
|
+
icon: 'pencil',
|
|
11
|
+
group: 'Messages',
|
|
12
|
+
input: z.object({
|
|
13
|
+
channel: z.string().min(1).describe('Channel ID where the message is located'),
|
|
14
|
+
message_id: z.string().min(1).describe('ID of the message to edit'),
|
|
15
|
+
content: z.string().min(1).describe('New message text content'),
|
|
16
|
+
}),
|
|
17
|
+
output: z.object({
|
|
18
|
+
message: messageSchema.describe('The edited message'),
|
|
19
|
+
}),
|
|
20
|
+
handle: async (params) => {
|
|
21
|
+
const data = await discordApi(`/channels/${params.channel}/messages/${params.message_id}`, { method: 'PATCH', body: { content: params.content } });
|
|
22
|
+
return { message: mapMessage(data) };
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=edit-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-message.js","sourceRoot":"","sources":["../../src/tools/edit-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,uFAAuF;IACpG,OAAO,EAAE,0BAA0B;IACnC,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QAC9E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QACnE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAChE,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KACtD,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,UAAU,CAC3B,aAAa,MAAM,CAAC,OAAO,aAAa,MAAM,CAAC,UAAU,EAAE,EAC3D,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,CACvD,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACvC,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const getChannelInfo: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
channel: z.ZodString;
|
|
4
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
5
|
+
channel: z.ZodObject<{
|
|
6
|
+
id: z.ZodString;
|
|
7
|
+
type: z.ZodNumber;
|
|
8
|
+
guild_id: z.ZodString;
|
|
9
|
+
name: z.ZodString;
|
|
10
|
+
topic: z.ZodNullable<z.ZodString>;
|
|
11
|
+
position: z.ZodNumber;
|
|
12
|
+
parent_id: z.ZodNullable<z.ZodString>;
|
|
13
|
+
nsfw: z.ZodBoolean;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
}, z.core.$strip>>;
|
|
16
|
+
//# sourceMappingURL=get-channel-info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-channel-info.d.ts","sourceRoot":"","sources":["../../src/tools/get-channel-info.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,cAAc;;;;;;;;;;;;;kBAiBzB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { defineTool } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { discordApi } from '../discord-api.js';
|
|
4
|
+
import { channelSchema, mapChannel } from './schemas.js';
|
|
5
|
+
export const getChannelInfo = defineTool({
|
|
6
|
+
name: 'get_channel_info',
|
|
7
|
+
displayName: 'Get Channel Info',
|
|
8
|
+
description: 'Get detailed information about a specific Discord channel',
|
|
9
|
+
summary: 'Get detailed information about a channel',
|
|
10
|
+
icon: 'info',
|
|
11
|
+
group: 'Channels',
|
|
12
|
+
input: z.object({
|
|
13
|
+
channel: z.string().min(1).describe('Channel ID to get info for'),
|
|
14
|
+
}),
|
|
15
|
+
output: z.object({
|
|
16
|
+
channel: channelSchema.describe('Channel details'),
|
|
17
|
+
}),
|
|
18
|
+
handle: async (params) => {
|
|
19
|
+
const data = await discordApi(`/channels/${params.channel}`);
|
|
20
|
+
return { channel: mapChannel(data) };
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=get-channel-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-channel-info.js","sourceRoot":"","sources":["../../src/tools/get-channel-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;IACvC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EAAE,2DAA2D;IACxE,OAAO,EAAE,0CAA0C;IACnD,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;KAClE,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KACnD,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,UAAU,CAA0B,aAAa,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACtF,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACvC,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const getGuildInfo: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
guild_id: z.ZodString;
|
|
4
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
5
|
+
guild: z.ZodObject<{
|
|
6
|
+
id: z.ZodString;
|
|
7
|
+
name: z.ZodString;
|
|
8
|
+
description: z.ZodNullable<z.ZodString>;
|
|
9
|
+
icon: z.ZodNullable<z.ZodString>;
|
|
10
|
+
owner_id: z.ZodString;
|
|
11
|
+
member_count: z.ZodNumber;
|
|
12
|
+
features: z.ZodArray<z.ZodString>;
|
|
13
|
+
premium_tier: z.ZodNumber;
|
|
14
|
+
premium_subscription_count: z.ZodNumber;
|
|
15
|
+
verification_level: z.ZodNumber;
|
|
16
|
+
}, z.core.$strip>;
|
|
17
|
+
}, z.core.$strip>>;
|
|
18
|
+
//# sourceMappingURL=get-guild-info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-guild-info.d.ts","sourceRoot":"","sources":["../../src/tools/get-guild-info.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;kBA4CvB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { defineTool } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { discordApi } from '../discord-api.js';
|
|
4
|
+
export const getGuildInfo = defineTool({
|
|
5
|
+
name: 'get_guild_info',
|
|
6
|
+
displayName: 'Get Guild Info',
|
|
7
|
+
description: 'Get detailed information about a Discord guild (server) including description, member count, features, and boost status.',
|
|
8
|
+
summary: 'Get detailed info about a server',
|
|
9
|
+
icon: 'shield',
|
|
10
|
+
group: 'Servers',
|
|
11
|
+
input: z.object({
|
|
12
|
+
guild_id: z.string().min(1).describe('Guild (server) ID to get information for'),
|
|
13
|
+
}),
|
|
14
|
+
output: z.object({
|
|
15
|
+
guild: z.object({
|
|
16
|
+
id: z.string().describe('Guild ID'),
|
|
17
|
+
name: z.string().describe('Guild name'),
|
|
18
|
+
description: z.string().nullable().describe('Guild description'),
|
|
19
|
+
icon: z.string().nullable().describe('Icon hash'),
|
|
20
|
+
owner_id: z.string().describe('User ID of the guild owner'),
|
|
21
|
+
member_count: z.number().describe('Approximate member count'),
|
|
22
|
+
features: z.array(z.string()).describe('Enabled guild features'),
|
|
23
|
+
premium_tier: z.number().describe('Server boost level (0-3)'),
|
|
24
|
+
premium_subscription_count: z.number().describe('Number of active boosts'),
|
|
25
|
+
verification_level: z.number().describe('Verification level (0-4)'),
|
|
26
|
+
}),
|
|
27
|
+
}),
|
|
28
|
+
handle: async (params) => {
|
|
29
|
+
const data = await discordApi(`/guilds/${params.guild_id}`, {
|
|
30
|
+
query: { with_counts: true },
|
|
31
|
+
});
|
|
32
|
+
return {
|
|
33
|
+
guild: {
|
|
34
|
+
id: data.id ?? '',
|
|
35
|
+
name: data.name ?? '',
|
|
36
|
+
description: data.description ?? null,
|
|
37
|
+
icon: data.icon ?? null,
|
|
38
|
+
owner_id: data.owner_id ?? '',
|
|
39
|
+
member_count: data.approximate_member_count ?? 0,
|
|
40
|
+
features: Array.isArray(data.features) ? data.features : [],
|
|
41
|
+
premium_tier: data.premium_tier ?? 0,
|
|
42
|
+
premium_subscription_count: data.premium_subscription_count ?? 0,
|
|
43
|
+
verification_level: data.verification_level ?? 0,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=get-guild-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-guild-info.js","sourceRoot":"","sources":["../../src/tools/get-guild-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;IACrC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EACT,0HAA0H;IAC5H,OAAO,EAAE,kCAAkC;IAC3C,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KACjF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YACvC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YAChE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;YACjD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YAC3D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YAC7D,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YAChE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YAC7D,0BAA0B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YAC1E,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;SACpE,CAAC;KACH,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,UAAU,CAA0B,WAAW,MAAM,CAAC,QAAQ,EAAE,EAAE;YACnF,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;SAC7B,CAAC,CAAC;QACH,OAAO;YACL,KAAK,EAAE;gBACL,EAAE,EAAG,IAAI,CAAC,EAAyB,IAAI,EAAE;gBACzC,IAAI,EAAG,IAAI,CAAC,IAA2B,IAAI,EAAE;gBAC7C,WAAW,EAAG,IAAI,CAAC,WAAyC,IAAI,IAAI;gBACpE,IAAI,EAAG,IAAI,CAAC,IAAkC,IAAI,IAAI;gBACtD,QAAQ,EAAG,IAAI,CAAC,QAA+B,IAAI,EAAE;gBACrD,YAAY,EAAG,IAAI,CAAC,wBAA+C,IAAI,CAAC;gBACxE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,QAAqB,CAAC,CAAC,CAAC,EAAE;gBACzE,YAAY,EAAG,IAAI,CAAC,YAAmC,IAAI,CAAC;gBAC5D,0BAA0B,EAAG,IAAI,CAAC,0BAAiD,IAAI,CAAC;gBACxF,kBAAkB,EAAG,IAAI,CAAC,kBAAyC,IAAI,CAAC;aACzE;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const getMessage: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
channel: z.ZodString;
|
|
4
|
+
message_id: z.ZodString;
|
|
5
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
6
|
+
message: z.ZodObject<{
|
|
7
|
+
id: z.ZodString;
|
|
8
|
+
channel_id: z.ZodString;
|
|
9
|
+
author: z.ZodObject<{
|
|
10
|
+
id: z.ZodString;
|
|
11
|
+
username: z.ZodString;
|
|
12
|
+
global_name: z.ZodNullable<z.ZodString>;
|
|
13
|
+
avatar: z.ZodNullable<z.ZodString>;
|
|
14
|
+
bot: z.ZodBoolean;
|
|
15
|
+
}, z.core.$strip>;
|
|
16
|
+
content: z.ZodString;
|
|
17
|
+
timestamp: z.ZodString;
|
|
18
|
+
edited_timestamp: z.ZodNullable<z.ZodString>;
|
|
19
|
+
pinned: z.ZodBoolean;
|
|
20
|
+
}, z.core.$strip>;
|
|
21
|
+
}, z.core.$strip>>;
|
|
22
|
+
//# sourceMappingURL=get-message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-message.d.ts","sourceRoot":"","sources":["../../src/tools/get-message.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;kBA2BrB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ToolError, defineTool } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { discordApi } from '../discord-api.js';
|
|
4
|
+
import { mapMessage, messageSchema } from './schemas.js';
|
|
5
|
+
export const getMessage = defineTool({
|
|
6
|
+
name: 'get_message',
|
|
7
|
+
displayName: 'Get Message',
|
|
8
|
+
description: 'Get a specific message by its ID from a Discord channel.',
|
|
9
|
+
summary: 'Get a message by ID',
|
|
10
|
+
icon: 'message-square',
|
|
11
|
+
group: 'Messages',
|
|
12
|
+
input: z.object({
|
|
13
|
+
channel: z.string().min(1).describe('Channel ID where the message is located'),
|
|
14
|
+
message_id: z.string().min(1).describe('ID of the message to retrieve'),
|
|
15
|
+
}),
|
|
16
|
+
output: z.object({
|
|
17
|
+
message: messageSchema.describe('The requested message'),
|
|
18
|
+
}),
|
|
19
|
+
handle: async (params) => {
|
|
20
|
+
// The single-message endpoint (GET /channels/{id}/messages/{id}) is bot-only.
|
|
21
|
+
// Use the list-messages endpoint with around + limit=1 to fetch a specific message.
|
|
22
|
+
const data = await discordApi(`/channels/${params.channel}/messages`, {
|
|
23
|
+
query: { around: params.message_id, limit: 3 },
|
|
24
|
+
});
|
|
25
|
+
const arr = Array.isArray(data) ? data : [];
|
|
26
|
+
const target = arr.find((m) => m.id === params.message_id);
|
|
27
|
+
if (!target) {
|
|
28
|
+
throw ToolError.notFound(`Message ${params.message_id} not found in channel ${params.channel}`);
|
|
29
|
+
}
|
|
30
|
+
return { message: mapMessage(target) };
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=get-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-message.js","sourceRoot":"","sources":["../../src/tools/get-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;IACnC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,0DAA0D;IACvE,OAAO,EAAE,qBAAqB;IAC9B,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QAC9E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;KACxE,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KACzD,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,8EAA8E;QAC9E,oFAAoF;QACpF,MAAM,IAAI,GAAG,MAAM,UAAU,CAA0B,aAAa,MAAM,CAAC,OAAO,WAAW,EAAE;YAC7F,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE;SAC/C,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC;QACpF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,SAAS,CAAC,QAAQ,CAAC,WAAW,MAAM,CAAC,UAAU,yBAAyB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAClG,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;IACzC,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const getUserProfile: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
user_id: z.ZodString;
|
|
4
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
5
|
+
user: z.ZodObject<{
|
|
6
|
+
id: z.ZodString;
|
|
7
|
+
username: z.ZodString;
|
|
8
|
+
global_name: z.ZodNullable<z.ZodString>;
|
|
9
|
+
avatar: z.ZodNullable<z.ZodString>;
|
|
10
|
+
banner: z.ZodNullable<z.ZodString>;
|
|
11
|
+
bio: z.ZodString;
|
|
12
|
+
bot: z.ZodBoolean;
|
|
13
|
+
email: z.ZodNullable<z.ZodString>;
|
|
14
|
+
verified: z.ZodBoolean;
|
|
15
|
+
mfa_enabled: z.ZodBoolean;
|
|
16
|
+
locale: z.ZodNullable<z.ZodString>;
|
|
17
|
+
}, z.core.$strip>;
|
|
18
|
+
}, z.core.$strip>>;
|
|
19
|
+
//# sourceMappingURL=get-user-profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-user-profile.d.ts","sourceRoot":"","sources":["../../src/tools/get-user-profile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;kBA6CzB,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { defineTool } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { discordApi } from '../discord-api.js';
|
|
4
|
+
export const getUserProfile = defineTool({
|
|
5
|
+
name: 'get_user_profile',
|
|
6
|
+
displayName: 'Get User Profile',
|
|
7
|
+
description: 'Get a Discord user\'s profile by their user ID. Use "@me" for the authenticated user.',
|
|
8
|
+
summary: "Get a user's profile information",
|
|
9
|
+
icon: 'user',
|
|
10
|
+
group: 'Users',
|
|
11
|
+
input: z.object({
|
|
12
|
+
user_id: z.string().min(1).describe('User ID to look up, or "@me" for the authenticated user'),
|
|
13
|
+
}),
|
|
14
|
+
output: z.object({
|
|
15
|
+
user: z.object({
|
|
16
|
+
id: z.string().describe('User ID'),
|
|
17
|
+
username: z.string().describe('Username'),
|
|
18
|
+
global_name: z.string().nullable().describe('Display name'),
|
|
19
|
+
avatar: z.string().nullable().describe('Avatar hash'),
|
|
20
|
+
banner: z.string().nullable().describe('Banner hash'),
|
|
21
|
+
bio: z.string().describe('User bio'),
|
|
22
|
+
bot: z.boolean().describe('Whether the user is a bot'),
|
|
23
|
+
email: z.string().nullable().describe('Email (only available for @me)'),
|
|
24
|
+
verified: z.boolean().describe('Whether the email is verified'),
|
|
25
|
+
mfa_enabled: z.boolean().describe('Whether 2FA is enabled'),
|
|
26
|
+
locale: z.string().nullable().describe('User locale'),
|
|
27
|
+
}),
|
|
28
|
+
}),
|
|
29
|
+
handle: async (params) => {
|
|
30
|
+
const endpoint = params.user_id === '@me' ? '/users/@me' : `/users/${params.user_id}`;
|
|
31
|
+
const data = await discordApi(endpoint);
|
|
32
|
+
return {
|
|
33
|
+
user: {
|
|
34
|
+
id: data.id ?? '',
|
|
35
|
+
username: data.username ?? '',
|
|
36
|
+
global_name: data.global_name ?? null,
|
|
37
|
+
avatar: data.avatar ?? null,
|
|
38
|
+
banner: data.banner ?? null,
|
|
39
|
+
bio: data.bio ?? '',
|
|
40
|
+
bot: data.bot ?? false,
|
|
41
|
+
email: data.email ?? null,
|
|
42
|
+
verified: data.verified ?? false,
|
|
43
|
+
mfa_enabled: data.mfa_enabled ?? false,
|
|
44
|
+
locale: data.locale ?? null,
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=get-user-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-user-profile.js","sourceRoot":"","sources":["../../src/tools/get-user-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;IACvC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EAAE,uFAAuF;IACpG,OAAO,EAAE,kCAAkC;IAC3C,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yDAAyD,CAAC;KAC/F,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACb,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;YAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YACzC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC3D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YACrD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YACrD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YACpC,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YACvE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YAC/D,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YAC3D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;SACtD,CAAC;KACH,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC;QACtF,MAAM,IAAI,GAAG,MAAM,UAAU,CAA0B,QAAQ,CAAC,CAAC;QAEjE,OAAO;YACL,IAAI,EAAE;gBACJ,EAAE,EAAG,IAAI,CAAC,EAAa,IAAI,EAAE;gBAC7B,QAAQ,EAAG,IAAI,CAAC,QAAmB,IAAI,EAAE;gBACzC,WAAW,EAAG,IAAI,CAAC,WAA6B,IAAI,IAAI;gBACxD,MAAM,EAAG,IAAI,CAAC,MAAwB,IAAI,IAAI;gBAC9C,MAAM,EAAG,IAAI,CAAC,MAAwB,IAAI,IAAI;gBAC9C,GAAG,EAAG,IAAI,CAAC,GAAc,IAAI,EAAE;gBAC/B,GAAG,EAAG,IAAI,CAAC,GAAe,IAAI,KAAK;gBACnC,KAAK,EAAG,IAAI,CAAC,KAAuB,IAAI,IAAI;gBAC5C,QAAQ,EAAG,IAAI,CAAC,QAAoB,IAAI,KAAK;gBAC7C,WAAW,EAAG,IAAI,CAAC,WAAuB,IAAI,KAAK;gBACnD,MAAM,EAAG,IAAI,CAAC,MAAwB,IAAI,IAAI;aAC/C;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const listChannels: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
guild_id: z.ZodString;
|
|
4
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
5
|
+
channels: z.ZodArray<z.ZodObject<{
|
|
6
|
+
id: z.ZodString;
|
|
7
|
+
type: z.ZodNumber;
|
|
8
|
+
guild_id: z.ZodString;
|
|
9
|
+
name: z.ZodString;
|
|
10
|
+
topic: z.ZodNullable<z.ZodString>;
|
|
11
|
+
position: z.ZodNumber;
|
|
12
|
+
parent_id: z.ZodNullable<z.ZodString>;
|
|
13
|
+
nsfw: z.ZodBoolean;
|
|
14
|
+
}, z.core.$strip>>;
|
|
15
|
+
}, z.core.$strip>>;
|
|
16
|
+
//# sourceMappingURL=list-channels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-channels.d.ts","sourceRoot":"","sources":["../../src/tools/list-channels.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;kBAkBvB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { defineTool } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { discordApi } from '../discord-api.js';
|
|
4
|
+
import { channelSchema, mapChannel } from './schemas.js';
|
|
5
|
+
export const listChannels = defineTool({
|
|
6
|
+
name: 'list_channels',
|
|
7
|
+
displayName: 'List Channels',
|
|
8
|
+
description: 'List all channels in a Discord guild (server)',
|
|
9
|
+
summary: 'List channels in a server',
|
|
10
|
+
icon: 'hash',
|
|
11
|
+
group: 'Channels',
|
|
12
|
+
input: z.object({
|
|
13
|
+
guild_id: z.string().min(1).describe('Guild (server) ID to list channels for'),
|
|
14
|
+
}),
|
|
15
|
+
output: z.object({
|
|
16
|
+
channels: z.array(channelSchema).describe('List of channels'),
|
|
17
|
+
}),
|
|
18
|
+
handle: async (params) => {
|
|
19
|
+
const data = await discordApi(`/guilds/${params.guild_id}/channels`);
|
|
20
|
+
const channels = Array.isArray(data) ? data.map(c => mapChannel(c)) : [];
|
|
21
|
+
return { channels };
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=list-channels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-channels.js","sourceRoot":"","sources":["../../src/tools/list-channels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;IACrC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,+CAA+C;IAC5D,OAAO,EAAE,2BAA2B;IACpC,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,wCAAwC,CAAC;KAC/E,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KAC9D,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,UAAU,CAA0B,WAAW,MAAM,CAAC,QAAQ,WAAW,CAAC,CAAC;QAC9F,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,IAAkC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxG,OAAO,EAAE,QAAQ,EAAE,CAAC;IACtB,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const listDms: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{}, z.core.$strip>, z.ZodObject<{
|
|
3
|
+
channels: z.ZodArray<z.ZodObject<{
|
|
4
|
+
id: z.ZodString;
|
|
5
|
+
type: z.ZodNumber;
|
|
6
|
+
recipients: z.ZodArray<z.ZodObject<{
|
|
7
|
+
id: z.ZodString;
|
|
8
|
+
username: z.ZodString;
|
|
9
|
+
global_name: z.ZodNullable<z.ZodString>;
|
|
10
|
+
avatar: z.ZodNullable<z.ZodString>;
|
|
11
|
+
bot: z.ZodBoolean;
|
|
12
|
+
}, z.core.$strip>>;
|
|
13
|
+
last_message_id: z.ZodNullable<z.ZodString>;
|
|
14
|
+
}, z.core.$strip>>;
|
|
15
|
+
}, z.core.$strip>>;
|
|
16
|
+
//# sourceMappingURL=list-dms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-dms.d.ts","sourceRoot":"","sources":["../../src/tools/list-dms.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,OAAO;;;;;;;;;;;;;kBAwClB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { defineTool } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { discordApi } from '../discord-api.js';
|
|
4
|
+
import { mapUser, userSchema } from './schemas.js';
|
|
5
|
+
export const listDms = defineTool({
|
|
6
|
+
name: 'list_dms',
|
|
7
|
+
displayName: 'List DMs',
|
|
8
|
+
description: 'List all open direct message channels for the authenticated user',
|
|
9
|
+
summary: 'List open direct message channels',
|
|
10
|
+
icon: 'mail',
|
|
11
|
+
group: 'DMs',
|
|
12
|
+
input: z.object({}),
|
|
13
|
+
output: z.object({
|
|
14
|
+
channels: z
|
|
15
|
+
.array(z.object({
|
|
16
|
+
id: z.string().describe('DM channel ID'),
|
|
17
|
+
type: z.number().describe('Channel type (1=DM, 3=group DM)'),
|
|
18
|
+
recipients: z.array(userSchema).describe('Users in the DM'),
|
|
19
|
+
last_message_id: z.string().nullable().describe('ID of the last message'),
|
|
20
|
+
}))
|
|
21
|
+
.describe('List of DM channels'),
|
|
22
|
+
}),
|
|
23
|
+
handle: async () => {
|
|
24
|
+
const data = await discordApi('/users/@me/channels');
|
|
25
|
+
const channels = Array.isArray(data)
|
|
26
|
+
? data.map(c => ({
|
|
27
|
+
id: c.id ?? '',
|
|
28
|
+
type: c.type ?? 1,
|
|
29
|
+
recipients: (c.recipients ?? []).map(r => mapUser(r)),
|
|
30
|
+
last_message_id: c.last_message_id ?? null,
|
|
31
|
+
}))
|
|
32
|
+
: [];
|
|
33
|
+
return { channels };
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=list-dms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-dms.js","sourceRoot":"","sources":["../../src/tools/list-dms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAAC;IAChC,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,UAAU;IACvB,WAAW,EAAE,kEAAkE;IAC/E,OAAO,EAAE,mCAAmC;IAC5C,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC;aACR,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;YACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YAC5D,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAC3D,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;SAC1E,CAAC,CACH;aACA,QAAQ,CAAC,qBAAqB,CAAC;KACnC,CAAC;IACF,MAAM,EAAE,KAAK,IAAI,EAAE;QACjB,MAAM,IAAI,GAAG,MAAM,UAAU,CAA0B,qBAAqB,CAAC,CAAC;QAS9E,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAClC,CAAC,CAAE,IAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1B,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE;gBACd,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;gBACjB,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACrD,eAAe,EAAE,CAAC,CAAC,eAAe,IAAI,IAAI;aAC3C,CAAC,CAAC;YACL,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,EAAE,QAAQ,EAAE,CAAC;IACtB,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const listGuilds: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
4
|
+
before: z.ZodOptional<z.ZodString>;
|
|
5
|
+
after: z.ZodOptional<z.ZodString>;
|
|
6
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
7
|
+
guilds: z.ZodArray<z.ZodObject<{
|
|
8
|
+
id: z.ZodString;
|
|
9
|
+
name: z.ZodString;
|
|
10
|
+
icon: z.ZodNullable<z.ZodString>;
|
|
11
|
+
owner: z.ZodBoolean;
|
|
12
|
+
description: z.ZodNullable<z.ZodString>;
|
|
13
|
+
approximate_member_count: z.ZodNumber;
|
|
14
|
+
}, z.core.$strip>>;
|
|
15
|
+
}, z.core.$strip>>;
|
|
16
|
+
//# sourceMappingURL=list-guilds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-guilds.d.ts","sourceRoot":"","sources":["../../src/tools/list-guilds.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,UAAU;;;;;;;;;;;;;kBA2BrB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { defineTool } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { discordApi } from '../discord-api.js';
|
|
4
|
+
import { guildSchema, mapGuild } from './schemas.js';
|
|
5
|
+
export const listGuilds = defineTool({
|
|
6
|
+
name: 'list_guilds',
|
|
7
|
+
displayName: 'List Guilds',
|
|
8
|
+
description: 'List all Discord guilds (servers) the authenticated user is a member of',
|
|
9
|
+
summary: 'List servers the user belongs to',
|
|
10
|
+
icon: 'server',
|
|
11
|
+
group: 'Servers',
|
|
12
|
+
input: z.object({
|
|
13
|
+
limit: z.number().int().min(1).max(200).optional().describe('Max guilds to return (default 200)'),
|
|
14
|
+
before: z.string().optional().describe('Get guilds before this guild ID (for pagination)'),
|
|
15
|
+
after: z.string().optional().describe('Get guilds after this guild ID'),
|
|
16
|
+
}),
|
|
17
|
+
output: z.object({
|
|
18
|
+
guilds: z.array(guildSchema).describe('List of guilds'),
|
|
19
|
+
}),
|
|
20
|
+
handle: async (params) => {
|
|
21
|
+
const query = {
|
|
22
|
+
limit: params.limit ?? 200,
|
|
23
|
+
with_counts: true,
|
|
24
|
+
};
|
|
25
|
+
if (params.before)
|
|
26
|
+
query.before = params.before;
|
|
27
|
+
if (params.after)
|
|
28
|
+
query.after = params.after;
|
|
29
|
+
const data = await discordApi('/users/@me/guilds', { query });
|
|
30
|
+
const guilds = Array.isArray(data) ? data.map(g => mapGuild(g)) : [];
|
|
31
|
+
return { guilds };
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=list-guilds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-guilds.js","sourceRoot":"","sources":["../../src/tools/list-guilds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;IACnC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,yEAAyE;IACtF,OAAO,EAAE,kCAAkC;IAC3C,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QACjG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QAC1F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KACxE,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;KACxD,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,KAAK,GAA0D;YACnE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG;YAC1B,WAAW,EAAE,IAAI;SAClB,CAAC;QACF,IAAI,MAAM,CAAC,MAAM;YAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAChD,IAAI,MAAM,CAAC,KAAK;YAAE,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAE7C,MAAM,IAAI,GAAG,MAAM,UAAU,CAA0B,mBAAmB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACvF,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,IAAkC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpG,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF,CAAC,CAAC"}
|