@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.
Files changed (121) hide show
  1. package/README.md +138 -0
  2. package/dist/adapter.iife.js +15389 -0
  3. package/dist/adapter.iife.js.map +7 -0
  4. package/dist/discord-api.d.ts +16 -0
  5. package/dist/discord-api.d.ts.map +1 -0
  6. package/dist/discord-api.js +232 -0
  7. package/dist/discord-api.js.map +1 -0
  8. package/dist/index.d.ts +14 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +78 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/tools/add-reaction.d.ts +7 -0
  13. package/dist/tools/add-reaction.d.ts.map +1 -0
  14. package/dist/tools/add-reaction.js +28 -0
  15. package/dist/tools/add-reaction.js.map +1 -0
  16. package/dist/tools/create-channel.d.ts +21 -0
  17. package/dist/tools/create-channel.d.ts.map +1 -0
  18. package/dist/tools/create-channel.js +40 -0
  19. package/dist/tools/create-channel.js.map +1 -0
  20. package/dist/tools/create-thread.d.ts +19 -0
  21. package/dist/tools/create-thread.d.ts.map +1 -0
  22. package/dist/tools/create-thread.js +47 -0
  23. package/dist/tools/create-thread.js.map +1 -0
  24. package/dist/tools/delete-channel.d.ts +16 -0
  25. package/dist/tools/delete-channel.d.ts.map +1 -0
  26. package/dist/tools/delete-channel.js +25 -0
  27. package/dist/tools/delete-channel.js.map +1 -0
  28. package/dist/tools/delete-message.d.ts +6 -0
  29. package/dist/tools/delete-message.d.ts.map +1 -0
  30. package/dist/tools/delete-message.js +23 -0
  31. package/dist/tools/delete-message.js.map +1 -0
  32. package/dist/tools/edit-channel.d.ts +20 -0
  33. package/dist/tools/edit-channel.d.ts.map +1 -0
  34. package/dist/tools/edit-channel.js +39 -0
  35. package/dist/tools/edit-channel.js.map +1 -0
  36. package/dist/tools/edit-message.d.ts +23 -0
  37. package/dist/tools/edit-message.d.ts.map +1 -0
  38. package/dist/tools/edit-message.js +25 -0
  39. package/dist/tools/edit-message.js.map +1 -0
  40. package/dist/tools/get-channel-info.d.ts +16 -0
  41. package/dist/tools/get-channel-info.d.ts.map +1 -0
  42. package/dist/tools/get-channel-info.js +23 -0
  43. package/dist/tools/get-channel-info.js.map +1 -0
  44. package/dist/tools/get-guild-info.d.ts +18 -0
  45. package/dist/tools/get-guild-info.d.ts.map +1 -0
  46. package/dist/tools/get-guild-info.js +48 -0
  47. package/dist/tools/get-guild-info.js.map +1 -0
  48. package/dist/tools/get-message.d.ts +22 -0
  49. package/dist/tools/get-message.d.ts.map +1 -0
  50. package/dist/tools/get-message.js +33 -0
  51. package/dist/tools/get-message.js.map +1 -0
  52. package/dist/tools/get-user-profile.d.ts +19 -0
  53. package/dist/tools/get-user-profile.d.ts.map +1 -0
  54. package/dist/tools/get-user-profile.js +49 -0
  55. package/dist/tools/get-user-profile.js.map +1 -0
  56. package/dist/tools/list-channels.d.ts +16 -0
  57. package/dist/tools/list-channels.d.ts.map +1 -0
  58. package/dist/tools/list-channels.js +24 -0
  59. package/dist/tools/list-channels.js.map +1 -0
  60. package/dist/tools/list-dms.d.ts +16 -0
  61. package/dist/tools/list-dms.d.ts.map +1 -0
  62. package/dist/tools/list-dms.js +36 -0
  63. package/dist/tools/list-dms.js.map +1 -0
  64. package/dist/tools/list-guilds.d.ts +16 -0
  65. package/dist/tools/list-guilds.d.ts.map +1 -0
  66. package/dist/tools/list-guilds.js +34 -0
  67. package/dist/tools/list-guilds.js.map +1 -0
  68. package/dist/tools/list-members.d.ts +20 -0
  69. package/dist/tools/list-members.d.ts.map +1 -0
  70. package/dist/tools/list-members.js +45 -0
  71. package/dist/tools/list-members.js.map +1 -0
  72. package/dist/tools/list-pinned-messages.d.ts +21 -0
  73. package/dist/tools/list-pinned-messages.d.ts.map +1 -0
  74. package/dist/tools/list-pinned-messages.js +24 -0
  75. package/dist/tools/list-pinned-messages.js.map +1 -0
  76. package/dist/tools/list-roles.d.ts +15 -0
  77. package/dist/tools/list-roles.d.ts.map +1 -0
  78. package/dist/tools/list-roles.js +41 -0
  79. package/dist/tools/list-roles.js.map +1 -0
  80. package/dist/tools/open-dm.d.ts +15 -0
  81. package/dist/tools/open-dm.d.ts.map +1 -0
  82. package/dist/tools/open-dm.js +35 -0
  83. package/dist/tools/open-dm.js.map +1 -0
  84. package/dist/tools/pin-message.d.ts +6 -0
  85. package/dist/tools/pin-message.d.ts.map +1 -0
  86. package/dist/tools/pin-message.js +23 -0
  87. package/dist/tools/pin-message.js.map +1 -0
  88. package/dist/tools/read-messages.d.ts +25 -0
  89. package/dist/tools/read-messages.d.ts.map +1 -0
  90. package/dist/tools/read-messages.js +37 -0
  91. package/dist/tools/read-messages.js.map +1 -0
  92. package/dist/tools/read-thread.d.ts +24 -0
  93. package/dist/tools/read-thread.d.ts.map +1 -0
  94. package/dist/tools/read-thread.js +34 -0
  95. package/dist/tools/read-thread.js.map +1 -0
  96. package/dist/tools/remove-reaction.d.ts +7 -0
  97. package/dist/tools/remove-reaction.d.ts.map +1 -0
  98. package/dist/tools/remove-reaction.js +28 -0
  99. package/dist/tools/remove-reaction.js.map +1 -0
  100. package/dist/tools/schemas.d.ts +89 -0
  101. package/dist/tools/schemas.d.ts.map +1 -0
  102. package/dist/tools/schemas.js +72 -0
  103. package/dist/tools/schemas.js.map +1 -0
  104. package/dist/tools/search-messages.d.ts +28 -0
  105. package/dist/tools/search-messages.d.ts.map +1 -0
  106. package/dist/tools/search-messages.js +46 -0
  107. package/dist/tools/search-messages.js.map +1 -0
  108. package/dist/tools/send-message.d.ts +23 -0
  109. package/dist/tools/send-message.d.ts.map +1 -0
  110. package/dist/tools/send-message.js +32 -0
  111. package/dist/tools/send-message.js.map +1 -0
  112. package/dist/tools/unpin-message.d.ts +6 -0
  113. package/dist/tools/unpin-message.d.ts.map +1 -0
  114. package/dist/tools/unpin-message.js +23 -0
  115. package/dist/tools/unpin-message.js.map +1 -0
  116. package/dist/tools/upload-file.d.ts +25 -0
  117. package/dist/tools/upload-file.d.ts.map +1 -0
  118. package/dist/tools/upload-file.js +53 -0
  119. package/dist/tools/upload-file.js.map +1 -0
  120. package/dist/tools.json +2681 -0
  121. 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":"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"}
@@ -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"}