@rnsk/toolkits 0.0.8 → 0.0.9
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 +9 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +17 -1
- package/dist/toolkits/bitbucket/icon.d.ts +5 -0
- package/dist/toolkits/bitbucket/icon.js +6 -0
- package/dist/toolkits/bitbucket/manifest.d.ts +3 -0
- package/dist/toolkits/bitbucket/manifest.js +56 -0
- package/dist/toolkits/bitbucket/tools/client.d.ts +38 -0
- package/dist/toolkits/bitbucket/tools/client.js +87 -0
- package/dist/toolkits/bitbucket/tools/commits.d.ts +149 -0
- package/dist/toolkits/bitbucket/tools/commits.js +444 -0
- package/dist/toolkits/bitbucket/tools/index.d.ts +1093 -0
- package/dist/toolkits/bitbucket/tools/index.js +770 -0
- package/dist/toolkits/bitbucket/tools/issues.d.ts +73 -0
- package/dist/toolkits/bitbucket/tools/issues.js +234 -0
- package/dist/toolkits/bitbucket/tools/pipelines.d.ts +124 -0
- package/dist/toolkits/bitbucket/tools/pipelines.js +446 -0
- package/dist/toolkits/bitbucket/tools/pull-requests.d.ts +174 -0
- package/dist/toolkits/bitbucket/tools/pull-requests.js +541 -0
- package/dist/toolkits/bitbucket/tools/reports.d.ts +84 -0
- package/dist/toolkits/bitbucket/tools/reports.js +213 -0
- package/dist/toolkits/bitbucket/tools/repositories.d.ts +156 -0
- package/dist/toolkits/bitbucket/tools/repositories.js +531 -0
- package/dist/toolkits/bitbucket/tools/search.d.ts +17 -0
- package/dist/toolkits/bitbucket/tools/search.js +67 -0
- package/dist/toolkits/bitbucket/tools/snippets.d.ts +34 -0
- package/dist/toolkits/bitbucket/tools/snippets.js +122 -0
- package/dist/toolkits/bitbucket/tools/users-workspaces.d.ts +65 -0
- package/dist/toolkits/bitbucket/tools/users-workspaces.js +294 -0
- package/dist/toolkits/discord/icon.d.ts +5 -0
- package/dist/toolkits/discord/icon.js +12 -0
- package/dist/toolkits/discord/manifest.d.ts +3 -0
- package/dist/toolkits/discord/manifest.js +52 -0
- package/dist/toolkits/discord/tools/applications.d.ts +79 -0
- package/dist/toolkits/discord/tools/applications.js +216 -0
- package/dist/toolkits/discord/tools/client.d.ts +22 -0
- package/dist/toolkits/discord/tools/client.js +69 -0
- package/dist/toolkits/discord/tools/guilds.d.ts +39 -0
- package/dist/toolkits/discord/tools/guilds.js +123 -0
- package/dist/toolkits/discord/tools/index.d.ts +222 -0
- package/dist/toolkits/discord/tools/index.js +170 -0
- package/dist/toolkits/discord/tools/misc.d.ts +7 -0
- package/dist/toolkits/discord/tools/misc.js +40 -0
- package/dist/toolkits/discord/tools/users.d.ts +28 -0
- package/dist/toolkits/discord/tools/users.js +128 -0
- package/dist/toolkits/figma/tools/index.d.ts +1 -1
- package/dist/toolkits/figma/tools/render-images-of-file-nodes.d.ts +1 -1
- package/dist/toolkits/gitlab/icon.d.ts +5 -0
- package/dist/toolkits/gitlab/icon.js +6 -0
- package/dist/toolkits/gitlab/manifest.d.ts +3 -0
- package/dist/toolkits/gitlab/manifest.js +36 -0
- package/dist/toolkits/gitlab/tools/client.d.ts +7 -0
- package/dist/toolkits/gitlab/tools/client.js +45 -0
- package/dist/toolkits/gitlab/tools/index.d.ts +306 -0
- package/dist/toolkits/gitlab/tools/index.js +36 -0
- package/dist/toolkits/gitlab/tools/issues.d.ts +45 -0
- package/dist/toolkits/gitlab/tools/issues.js +103 -0
- package/dist/toolkits/gitlab/tools/merge-requests.d.ts +35 -0
- package/dist/toolkits/gitlab/tools/merge-requests.js +91 -0
- package/dist/toolkits/gitlab/tools/pipelines.d.ts +30 -0
- package/dist/toolkits/gitlab/tools/pipelines.js +66 -0
- package/dist/toolkits/gitlab/tools/projects.d.ts +36 -0
- package/dist/toolkits/gitlab/tools/projects.js +94 -0
- package/dist/toolkits/gitlab/tools/repository.d.ts +21 -0
- package/dist/toolkits/gitlab/tools/repository.js +53 -0
- package/dist/toolkits/gitlab/tools/users-groups.d.ts +11 -0
- package/dist/toolkits/gitlab/tools/users-groups.js +30 -0
- package/dist/toolkits/google-ads/tools/get-rmf-report.d.ts +2 -2
- package/dist/toolkits/google-ads/tools/index.d.ts +2 -2
- package/dist/toolkits/google-analytics/icon.d.ts +5 -0
- package/dist/toolkits/google-analytics/icon.js +11 -0
- package/dist/toolkits/google-analytics/manifest.d.ts +3 -0
- package/dist/toolkits/google-analytics/manifest.js +48 -0
- package/dist/toolkits/google-analytics/tools/admin.d.ts +73 -0
- package/dist/toolkits/google-analytics/tools/admin.js +238 -0
- package/dist/toolkits/google-analytics/tools/audiences.d.ts +81 -0
- package/dist/toolkits/google-analytics/tools/audiences.js +190 -0
- package/dist/toolkits/google-analytics/tools/client.d.ts +47 -0
- package/dist/toolkits/google-analytics/tools/client.js +74 -0
- package/dist/toolkits/google-analytics/tools/custom-definitions.d.ts +62 -0
- package/dist/toolkits/google-analytics/tools/custom-definitions.js +106 -0
- package/dist/toolkits/google-analytics/tools/index.d.ts +16 -0
- package/dist/toolkits/google-analytics/tools/index.js +88 -0
- package/dist/toolkits/google-analytics/tools/links.d.ts +22 -0
- package/dist/toolkits/google-analytics/tools/links.js +56 -0
- package/dist/toolkits/google-analytics/tools/measurement.d.ts +3 -0
- package/dist/toolkits/google-analytics/tools/measurement.js +55 -0
- package/dist/toolkits/google-analytics/tools/reports.d.ts +136 -0
- package/dist/toolkits/google-analytics/tools/reports.js +200 -0
- package/dist/toolkits/google-contacts/icon.d.ts +5 -0
- package/dist/toolkits/google-contacts/icon.js +6 -0
- package/dist/toolkits/google-contacts/manifest.d.ts +3 -0
- package/dist/toolkits/google-contacts/manifest.js +48 -0
- package/dist/toolkits/google-contacts/tools/client.d.ts +19 -0
- package/dist/toolkits/google-contacts/tools/client.js +44 -0
- package/dist/toolkits/google-contacts/tools/contacts.d.ts +94 -0
- package/dist/toolkits/google-contacts/tools/contacts.js +273 -0
- package/dist/toolkits/google-contacts/tools/directory.d.ts +36 -0
- package/dist/toolkits/google-contacts/tools/directory.js +99 -0
- package/dist/toolkits/google-contacts/tools/groups.d.ts +68 -0
- package/dist/toolkits/google-contacts/tools/groups.js +169 -0
- package/dist/toolkits/google-contacts/tools/index.d.ts +347 -0
- package/dist/toolkits/google-contacts/tools/index.js +34 -0
- package/dist/toolkits/google-contacts/tools/photos.d.ts +26 -0
- package/dist/toolkits/google-contacts/tools/photos.js +52 -0
- package/dist/toolkits/google-maps/icon.d.ts +5 -0
- package/dist/toolkits/google-maps/icon.js +39 -0
- package/dist/toolkits/google-maps/manifest.d.ts +3 -0
- package/dist/toolkits/google-maps/manifest.js +55 -0
- package/dist/toolkits/google-maps/tools/client.d.ts +27 -0
- package/dist/toolkits/google-maps/tools/client.js +72 -0
- package/dist/toolkits/google-maps/tools/geocode.d.ts +49 -0
- package/dist/toolkits/google-maps/tools/geocode.js +168 -0
- package/dist/toolkits/google-maps/tools/index.d.ts +432 -0
- package/dist/toolkits/google-maps/tools/index.js +31 -0
- package/dist/toolkits/google-maps/tools/misc.d.ts +70 -0
- package/dist/toolkits/google-maps/tools/misc.js +158 -0
- package/dist/toolkits/google-maps/tools/places.d.ts +112 -0
- package/dist/toolkits/google-maps/tools/places.js +185 -0
- package/dist/toolkits/google-maps/tools/routes.d.ts +48 -0
- package/dist/toolkits/google-maps/tools/routes.js +97 -0
- package/dist/toolkits/google-maps/tools/tiles.d.ts +51 -0
- package/dist/toolkits/google-maps/tools/tiles.js +84 -0
- package/dist/toolkits/google-photos/icon.d.ts +5 -0
- package/dist/toolkits/google-photos/icon.js +6 -0
- package/dist/toolkits/google-photos/manifest.d.ts +3 -0
- package/dist/toolkits/google-photos/manifest.js +47 -0
- package/dist/toolkits/google-photos/tools/albums.d.ts +83 -0
- package/dist/toolkits/google-photos/tools/albums.js +180 -0
- package/dist/toolkits/google-photos/tools/client.d.ts +24 -0
- package/dist/toolkits/google-photos/tools/client.js +77 -0
- package/dist/toolkits/google-photos/tools/index.d.ts +261 -0
- package/dist/toolkits/google-photos/tools/index.js +22 -0
- package/dist/toolkits/google-photos/tools/media.d.ts +52 -0
- package/dist/toolkits/google-photos/tools/media.js +142 -0
- package/dist/toolkits/google-photos/tools/uploads.d.ts +58 -0
- package/dist/toolkits/google-photos/tools/uploads.js +107 -0
- package/dist/toolkits/google-tasks/tools/index.d.ts +1 -1
- package/dist/toolkits/google-tasks/tools/update-task-full.d.ts +1 -1
- package/dist/toolkits/groww/tools/index.d.ts +1 -1
- package/dist/toolkits/groww/tools/instruments.d.ts +1 -1
- package/dist/toolkits/reddit/tools/index.d.ts +1 -1
- package/dist/toolkits/reddit/tools/search-across-subreddits.d.ts +1 -1
- package/dist/toolkits/slack/icon.d.ts +5 -0
- package/dist/toolkits/slack/icon.js +20 -0
- package/dist/toolkits/slack/manifest.d.ts +3 -0
- package/dist/toolkits/slack/manifest.js +93 -0
- package/dist/toolkits/slack/tools/admin-apps.d.ts +32 -0
- package/dist/toolkits/slack/tools/admin-apps.js +116 -0
- package/dist/toolkits/slack/tools/admin-conversations.d.ts +62 -0
- package/dist/toolkits/slack/tools/admin-conversations.js +246 -0
- package/dist/toolkits/slack/tools/admin-invites.d.ts +19 -0
- package/dist/toolkits/slack/tools/admin-invites.js +75 -0
- package/dist/toolkits/slack/tools/admin-users.d.ts +52 -0
- package/dist/toolkits/slack/tools/admin-users.js +182 -0
- package/dist/toolkits/slack/tools/audit.d.ts +20 -0
- package/dist/toolkits/slack/tools/audit.js +81 -0
- package/dist/toolkits/slack/tools/calls.d.ts +38 -0
- package/dist/toolkits/slack/tools/calls.js +141 -0
- package/dist/toolkits/slack/tools/canvas.d.ts +24 -0
- package/dist/toolkits/slack/tools/canvas.js +102 -0
- package/dist/toolkits/slack/tools/client.d.ts +22 -0
- package/dist/toolkits/slack/tools/client.js +73 -0
- package/dist/toolkits/slack/tools/conversations.d.ts +131 -0
- package/dist/toolkits/slack/tools/conversations.js +463 -0
- package/dist/toolkits/slack/tools/emoji.d.ts +29 -0
- package/dist/toolkits/slack/tools/emoji.js +118 -0
- package/dist/toolkits/slack/tools/files.d.ts +113 -0
- package/dist/toolkits/slack/tools/files.js +368 -0
- package/dist/toolkits/slack/tools/index.d.ts +28 -0
- package/dist/toolkits/slack/tools/index.js +187 -0
- package/dist/toolkits/slack/tools/messages.d.ts +106 -0
- package/dist/toolkits/slack/tools/messages.js +340 -0
- package/dist/toolkits/slack/tools/misc.d.ts +42 -0
- package/dist/toolkits/slack/tools/misc.js +127 -0
- package/dist/toolkits/slack/tools/reactions-stars-pins.d.ts +69 -0
- package/dist/toolkits/slack/tools/reactions-stars-pins.js +236 -0
- package/dist/toolkits/slack/tools/reminders.d.ts +22 -0
- package/dist/toolkits/slack/tools/reminders.js +83 -0
- package/dist/toolkits/slack/tools/search.d.ts +49 -0
- package/dist/toolkits/slack/tools/search.js +155 -0
- package/dist/toolkits/slack/tools/slack-lists.d.ts +65 -0
- package/dist/toolkits/slack/tools/slack-lists.js +282 -0
- package/dist/toolkits/slack/tools/teams.d.ts +75 -0
- package/dist/toolkits/slack/tools/teams.js +285 -0
- package/dist/toolkits/slack/tools/usergroups.d.ts +56 -0
- package/dist/toolkits/slack/tools/usergroups.js +194 -0
- package/dist/toolkits/slack/tools/users.d.ts +87 -0
- package/dist/toolkits/slack/tools/users.js +396 -0
- package/dist/toolkits/youtube/tools/add-video-to-playlist.d.ts +1 -1
- package/dist/toolkits/youtube/tools/delete-video.d.ts +1 -1
- package/dist/toolkits/youtube/tools/index.d.ts +10 -10
- package/dist/toolkits/youtube/tools/list-caption-track.d.ts +1 -1
- package/dist/toolkits/youtube/tools/list-playlist-items.d.ts +1 -1
- package/dist/toolkits/youtube/tools/list-video-categories.d.ts +1 -1
- package/dist/toolkits/youtube/tools/post-comment.d.ts +1 -1
- package/dist/toolkits/youtube/tools/report-video-abuse.d.ts +1 -1
- package/dist/toolkits/youtube/tools/search-youtube.d.ts +1 -1
- package/dist/toolkits/youtube/tools/update-thumbnail.d.ts +1 -1
- package/dist/toolkits/youtube/tools/update-video.d.ts +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { slackSendMessage, slackUpdateMessage, slackDeleteMessage, slackScheduleMessage, slackListScheduledMessages, slackDeleteScheduledMessage, slackGetMessagePermalink, slackSendMeMessage, slackSendEphemeralMessage, slackListUnreadChannelMessages, slackGetUnreadMessagesFromUser, } from './messages.js';
|
|
3
|
+
import { slackListAllChannels, slackFindChannels, slackListConversations, slackGetConversationInfo, slackGetConversationMembers, slackGetConversationHistory, slackGetConversationReplies, slackCreateChannel, slackArchiveChannel, slackUnarchiveChannel, slackCloseDm, slackJoinConversation, slackLeaveConversation, slackRenameConversation, slackSetConversationTopic, slackSetConversationPurpose, slackMarkConversationRead, slackInviteUsersToChannel, slackRemoveUserFromConversation, slackOpenDm, } from './conversations.js';
|
|
4
|
+
import { slackAdminSearchConversations, slackAdminCreateConversation, slackDeleteChannel, slackConvertChannelToPrivate, slackInviteUserToChannelAdmin, slackGetConversationPrefs, slackSetConversationPrefs, slackGetChannelWorkspaces, slackSetChannelWorkspaces, slackListChannelIdpGroups, } from './admin-conversations.js';
|
|
5
|
+
import { slackListUsers, slackFindUsers, slackFindUserByEmail, slackGetUserInfo, slackGetUserProfile, slackSetUserProfile, slackGetUserPresence, slackSetUserPresence, slackEndDnd, slackEndSnooze, slackSetDndDuration, slackGetDndStatus, slackGetTeamDndStatus, slackDeleteUserPhoto, slackSetUserPhoto, slackGetUserIdentity, slackGetBotInfo, } from './users.js';
|
|
6
|
+
import { slackAddEnterpriseUserToWorkspace, slackInviteUserToWorkspace, slackRemoveUserFromWorkspace, slackSetAdminUser, slackSetWorkspaceOwner, slackResetUserSessions, slackListWorkspaceUsers, } from './admin-users.js';
|
|
7
|
+
import { slackGetTeamInfo, slackGetTeamProfile, slackListAuthTeams, slackListAvailableWorkspaces, slackCreateEnterpriseTeam, slackListEnterpriseTeams, slackListWorkspaceAdmins, slackListWorkspaceOwners, slackGetWorkspaceSettings, slackSetWorkspaceName, slackSetWorkspaceDescription, slackSetWorkspaceIcon, slackSetWorkspaceDefaultChannels, } from './teams.js';
|
|
8
|
+
import { slackListFiles, slackGetFileInfo, slackDeleteFile, slackDeleteFileComment, slackShareFilePublicUrl, slackRevokeFilePublicUrl, slackDownloadFile, slackUploadFile, slackAddRemoteFile, slackGetRemoteFile, slackUpdateRemoteFile, slackRemoveRemoteFile, slackShareRemoteFile, slackListRemoteFiles, } from './files.js';
|
|
9
|
+
import { slackAddReaction, slackRemoveReaction, slackGetReactions, slackListUserReactions, slackAddStar, slackRemoveStar, slackListStarredItems, slackPinItem, slackUnpinItem, slackListPinnedItems, } from './reactions-stars-pins.js';
|
|
10
|
+
import { slackCreateReminder, slackGetReminder, slackListReminders, slackDeleteReminder, } from './reminders.js';
|
|
11
|
+
import { slackSearchAll, slackSearchMessages, slackAssistantSearch, slackGetSearchInfo, } from './search.js';
|
|
12
|
+
import { slackStartCall, slackGetCallInfo, slackUpdateCallInfo, slackEndCall, slackAddCallParticipants, slackRemoveCallParticipants, } from './calls.js';
|
|
13
|
+
import { slackCreateCanvas, slackEditCanvas, slackDeleteCanvas, slackLookupCanvasSections, } from './canvas.js';
|
|
14
|
+
import { slackCreateList, slackCreateListItem, slackGetListItem, slackListListItems, slackUpdateList, slackUpdateListItem, slackDeleteListItem, slackDeleteListItems, slackSetListAccess, slackDeleteListAccess, } from './slack-lists.js';
|
|
15
|
+
import { slackCreateUserGroup, slackUpdateUserGroup, slackUpdateUserGroupMembers, slackListUserGroups, slackListUserGroupMembers, slackEnableUserGroup, slackDisableUserGroup, } from './usergroups.js';
|
|
16
|
+
import { slackAddEmoji, slackAddEmojiAlias, slackRenameEmoji, slackRemoveEmoji, slackListCustomEmojis, slackListAdminEmoji, } from './emoji.js';
|
|
17
|
+
import { slackListApprovedApps, slackListAppRequests, slackListRestrictedApps, slackRestrictApp, } from './admin-apps.js';
|
|
18
|
+
import { slackListApprovedInvites, slackListDeniedInvites, slackListPendingInvites, } from './admin-invites.js';
|
|
19
|
+
import { slackReadAuditLogs, slackGetAuditActions, slackGetAuditSchemas, slackGetScimConfig, } from './audit.js';
|
|
20
|
+
import { slackCustomizeUnfurl, slackApiTest, slackTestAuth, slackWhoAmI, slackRtmConnect, } from './misc.js';
|
|
21
|
+
export { slackSendMessage, slackUpdateMessage, slackDeleteMessage, slackScheduleMessage, slackListScheduledMessages, slackDeleteScheduledMessage, slackGetMessagePermalink, slackSendMeMessage, slackSendEphemeralMessage, slackListUnreadChannelMessages, slackGetUnreadMessagesFromUser, slackListAllChannels, slackFindChannels, slackListConversations, slackGetConversationInfo, slackGetConversationMembers, slackGetConversationHistory, slackGetConversationReplies, slackCreateChannel, slackArchiveChannel, slackUnarchiveChannel, slackCloseDm, slackJoinConversation, slackLeaveConversation, slackRenameConversation, slackSetConversationTopic, slackSetConversationPurpose, slackMarkConversationRead, slackInviteUsersToChannel, slackRemoveUserFromConversation, slackOpenDm, slackAdminSearchConversations, slackAdminCreateConversation, slackDeleteChannel, slackConvertChannelToPrivate, slackInviteUserToChannelAdmin, slackGetConversationPrefs, slackSetConversationPrefs, slackGetChannelWorkspaces, slackSetChannelWorkspaces, slackListChannelIdpGroups, slackListUsers, slackFindUsers, slackFindUserByEmail, slackGetUserInfo, slackGetUserProfile, slackSetUserProfile, slackGetUserPresence, slackSetUserPresence, slackEndDnd, slackEndSnooze, slackSetDndDuration, slackGetDndStatus, slackGetTeamDndStatus, slackDeleteUserPhoto, slackSetUserPhoto, slackGetUserIdentity, slackGetBotInfo, slackAddEnterpriseUserToWorkspace, slackInviteUserToWorkspace, slackRemoveUserFromWorkspace, slackSetAdminUser, slackSetWorkspaceOwner, slackResetUserSessions, slackListWorkspaceUsers, slackGetTeamInfo, slackGetTeamProfile, slackListAuthTeams, slackListAvailableWorkspaces, slackCreateEnterpriseTeam, slackListEnterpriseTeams, slackListWorkspaceAdmins, slackListWorkspaceOwners, slackGetWorkspaceSettings, slackSetWorkspaceName, slackSetWorkspaceDescription, slackSetWorkspaceIcon, slackSetWorkspaceDefaultChannels, slackListFiles, slackGetFileInfo, slackDeleteFile, slackDeleteFileComment, slackShareFilePublicUrl, slackRevokeFilePublicUrl, slackDownloadFile, slackUploadFile, slackAddRemoteFile, slackGetRemoteFile, slackUpdateRemoteFile, slackRemoveRemoteFile, slackShareRemoteFile, slackListRemoteFiles, slackAddReaction, slackRemoveReaction, slackGetReactions, slackListUserReactions, slackAddStar, slackRemoveStar, slackListStarredItems, slackPinItem, slackUnpinItem, slackListPinnedItems, slackCreateReminder, slackGetReminder, slackListReminders, slackDeleteReminder, slackSearchAll, slackSearchMessages, slackAssistantSearch, slackGetSearchInfo, slackStartCall, slackGetCallInfo, slackUpdateCallInfo, slackEndCall, slackAddCallParticipants, slackRemoveCallParticipants, slackCreateCanvas, slackEditCanvas, slackDeleteCanvas, slackLookupCanvasSections, slackCreateList, slackCreateListItem, slackGetListItem, slackListListItems, slackUpdateList, slackUpdateListItem, slackDeleteListItem, slackDeleteListItems, slackSetListAccess, slackDeleteListAccess, slackCreateUserGroup, slackUpdateUserGroup, slackUpdateUserGroupMembers, slackListUserGroups, slackListUserGroupMembers, slackEnableUserGroup, slackDisableUserGroup, slackAddEmoji, slackAddEmojiAlias, slackRenameEmoji, slackRemoveEmoji, slackListCustomEmojis, slackListAdminEmoji, slackListApprovedApps, slackListAppRequests, slackListRestrictedApps, slackRestrictApp, slackListApprovedInvites, slackListDeniedInvites, slackListPendingInvites, slackReadAuditLogs, slackGetAuditActions, slackGetAuditSchemas, slackGetScimConfig, slackCustomizeUnfurl, slackApiTest, slackTestAuth, slackWhoAmI, slackRtmConnect, };
|
|
22
|
+
const R = 'slackToken';
|
|
23
|
+
function t(tool, scope, name) {
|
|
24
|
+
return { name: name ?? tool?.name ?? 'unknown', description: tool?.description ?? '', tool, requiredAuth: R, scope };
|
|
25
|
+
}
|
|
26
|
+
export const slackTools = [
|
|
27
|
+
t(slackSendMessage, 'write', 'slackSendMessage'),
|
|
28
|
+
t(slackUpdateMessage, 'write', 'slackUpdateMessage'),
|
|
29
|
+
t(slackDeleteMessage, 'delete', 'slackDeleteMessage'),
|
|
30
|
+
t(slackScheduleMessage, 'write', 'slackScheduleMessage'),
|
|
31
|
+
t(slackListScheduledMessages, 'read', 'slackListScheduledMessages'),
|
|
32
|
+
t(slackDeleteScheduledMessage, 'delete', 'slackDeleteScheduledMessage'),
|
|
33
|
+
t(slackGetMessagePermalink, 'read', 'slackGetMessagePermalink'),
|
|
34
|
+
t(slackSendMeMessage, 'write', 'slackSendMeMessage'),
|
|
35
|
+
t(slackSendEphemeralMessage, 'write', 'slackSendEphemeralMessage'),
|
|
36
|
+
t(slackListUnreadChannelMessages, 'read', 'slackListUnreadChannelMessages'),
|
|
37
|
+
t(slackGetUnreadMessagesFromUser, 'read', 'slackGetUnreadMessagesFromUser'),
|
|
38
|
+
t(slackListAllChannels, 'read', 'slackListAllChannels'),
|
|
39
|
+
t(slackFindChannels, 'read', 'slackFindChannels'),
|
|
40
|
+
t(slackListConversations, 'read', 'slackListConversations'),
|
|
41
|
+
t(slackGetConversationInfo, 'read', 'slackGetConversationInfo'),
|
|
42
|
+
t(slackGetConversationMembers, 'read', 'slackGetConversationMembers'),
|
|
43
|
+
t(slackGetConversationHistory, 'read', 'slackGetConversationHistory'),
|
|
44
|
+
t(slackGetConversationReplies, 'read', 'slackGetConversationReplies'),
|
|
45
|
+
t(slackCreateChannel, 'write', 'slackCreateChannel'),
|
|
46
|
+
t(slackArchiveChannel, 'write', 'slackArchiveChannel'),
|
|
47
|
+
t(slackUnarchiveChannel, 'write', 'slackUnarchiveChannel'),
|
|
48
|
+
t(slackCloseDm, 'write', 'slackCloseDm'),
|
|
49
|
+
t(slackJoinConversation, 'write', 'slackJoinConversation'),
|
|
50
|
+
t(slackLeaveConversation, 'write', 'slackLeaveConversation'),
|
|
51
|
+
t(slackRenameConversation, 'write', 'slackRenameConversation'),
|
|
52
|
+
t(slackSetConversationTopic, 'write', 'slackSetConversationTopic'),
|
|
53
|
+
t(slackSetConversationPurpose, 'write', 'slackSetConversationPurpose'),
|
|
54
|
+
t(slackMarkConversationRead, 'write', 'slackMarkConversationRead'),
|
|
55
|
+
t(slackInviteUsersToChannel, 'write', 'slackInviteUsersToChannel'),
|
|
56
|
+
t(slackRemoveUserFromConversation, 'delete', 'slackRemoveUserFromConversation'),
|
|
57
|
+
t(slackOpenDm, 'write', 'slackOpenDm'),
|
|
58
|
+
t(slackAdminSearchConversations, 'read', 'slackAdminSearchConversations'),
|
|
59
|
+
t(slackAdminCreateConversation, 'write', 'slackAdminCreateConversation'),
|
|
60
|
+
t(slackDeleteChannel, 'delete', 'slackDeleteChannel'),
|
|
61
|
+
t(slackConvertChannelToPrivate, 'write', 'slackConvertChannelToPrivate'),
|
|
62
|
+
t(slackInviteUserToChannelAdmin, 'write', 'slackInviteUserToChannelAdmin'),
|
|
63
|
+
t(slackGetConversationPrefs, 'read', 'slackGetConversationPrefs'),
|
|
64
|
+
t(slackSetConversationPrefs, 'write', 'slackSetConversationPrefs'),
|
|
65
|
+
t(slackGetChannelWorkspaces, 'read', 'slackGetChannelWorkspaces'),
|
|
66
|
+
t(slackSetChannelWorkspaces, 'write', 'slackSetChannelWorkspaces'),
|
|
67
|
+
t(slackListChannelIdpGroups, 'read', 'slackListChannelIdpGroups'),
|
|
68
|
+
t(slackListUsers, 'read', 'slackListUsers'),
|
|
69
|
+
t(slackFindUsers, 'read', 'slackFindUsers'),
|
|
70
|
+
t(slackFindUserByEmail, 'read', 'slackFindUserByEmail'),
|
|
71
|
+
t(slackGetUserInfo, 'read', 'slackGetUserInfo'),
|
|
72
|
+
t(slackGetUserProfile, 'read', 'slackGetUserProfile'),
|
|
73
|
+
t(slackSetUserProfile, 'write', 'slackSetUserProfile'),
|
|
74
|
+
t(slackGetUserPresence, 'read', 'slackGetUserPresence'),
|
|
75
|
+
t(slackSetUserPresence, 'write', 'slackSetUserPresence'),
|
|
76
|
+
t(slackEndDnd, 'write', 'slackEndDnd'),
|
|
77
|
+
t(slackEndSnooze, 'write', 'slackEndSnooze'),
|
|
78
|
+
t(slackSetDndDuration, 'write', 'slackSetDndDuration'),
|
|
79
|
+
t(slackGetDndStatus, 'read', 'slackGetDndStatus'),
|
|
80
|
+
t(slackGetTeamDndStatus, 'read', 'slackGetTeamDndStatus'),
|
|
81
|
+
t(slackDeleteUserPhoto, 'delete', 'slackDeleteUserPhoto'),
|
|
82
|
+
t(slackSetUserPhoto, 'write', 'slackSetUserPhoto'),
|
|
83
|
+
t(slackGetUserIdentity, 'read', 'slackGetUserIdentity'),
|
|
84
|
+
t(slackGetBotInfo, 'read', 'slackGetBotInfo'),
|
|
85
|
+
t(slackAddEnterpriseUserToWorkspace, 'write', 'slackAddEnterpriseUserToWorkspace'),
|
|
86
|
+
t(slackInviteUserToWorkspace, 'write', 'slackInviteUserToWorkspace'),
|
|
87
|
+
t(slackRemoveUserFromWorkspace, 'delete', 'slackRemoveUserFromWorkspace'),
|
|
88
|
+
t(slackSetAdminUser, 'write', 'slackSetAdminUser'),
|
|
89
|
+
t(slackSetWorkspaceOwner, 'write', 'slackSetWorkspaceOwner'),
|
|
90
|
+
t(slackResetUserSessions, 'write', 'slackResetUserSessions'),
|
|
91
|
+
t(slackListWorkspaceUsers, 'read', 'slackListWorkspaceUsers'),
|
|
92
|
+
t(slackGetTeamInfo, 'read', 'slackGetTeamInfo'),
|
|
93
|
+
t(slackGetTeamProfile, 'read', 'slackGetTeamProfile'),
|
|
94
|
+
t(slackListAuthTeams, 'read', 'slackListAuthTeams'),
|
|
95
|
+
t(slackListAvailableWorkspaces, 'read', 'slackListAvailableWorkspaces'),
|
|
96
|
+
t(slackCreateEnterpriseTeam, 'write', 'slackCreateEnterpriseTeam'),
|
|
97
|
+
t(slackListEnterpriseTeams, 'read', 'slackListEnterpriseTeams'),
|
|
98
|
+
t(slackListWorkspaceAdmins, 'read', 'slackListWorkspaceAdmins'),
|
|
99
|
+
t(slackListWorkspaceOwners, 'read', 'slackListWorkspaceOwners'),
|
|
100
|
+
t(slackGetWorkspaceSettings, 'read', 'slackGetWorkspaceSettings'),
|
|
101
|
+
t(slackSetWorkspaceName, 'write', 'slackSetWorkspaceName'),
|
|
102
|
+
t(slackSetWorkspaceDescription, 'write', 'slackSetWorkspaceDescription'),
|
|
103
|
+
t(slackSetWorkspaceIcon, 'write', 'slackSetWorkspaceIcon'),
|
|
104
|
+
t(slackSetWorkspaceDefaultChannels, 'write', 'slackSetWorkspaceDefaultChannels'),
|
|
105
|
+
t(slackListFiles, 'read', 'slackListFiles'),
|
|
106
|
+
t(slackGetFileInfo, 'read', 'slackGetFileInfo'),
|
|
107
|
+
t(slackDeleteFile, 'delete', 'slackDeleteFile'),
|
|
108
|
+
t(slackDeleteFileComment, 'delete', 'slackDeleteFileComment'),
|
|
109
|
+
t(slackShareFilePublicUrl, 'write', 'slackShareFilePublicUrl'),
|
|
110
|
+
t(slackRevokeFilePublicUrl, 'write', 'slackRevokeFilePublicUrl'),
|
|
111
|
+
t(slackDownloadFile, 'read', 'slackDownloadFile'),
|
|
112
|
+
t(slackUploadFile, 'write', 'slackUploadFile'),
|
|
113
|
+
t(slackAddRemoteFile, 'write', 'slackAddRemoteFile'),
|
|
114
|
+
t(slackGetRemoteFile, 'read', 'slackGetRemoteFile'),
|
|
115
|
+
t(slackUpdateRemoteFile, 'write', 'slackUpdateRemoteFile'),
|
|
116
|
+
t(slackRemoveRemoteFile, 'delete', 'slackRemoveRemoteFile'),
|
|
117
|
+
t(slackShareRemoteFile, 'write', 'slackShareRemoteFile'),
|
|
118
|
+
t(slackListRemoteFiles, 'read', 'slackListRemoteFiles'),
|
|
119
|
+
t(slackAddReaction, 'write', 'slackAddReaction'),
|
|
120
|
+
t(slackRemoveReaction, 'delete', 'slackRemoveReaction'),
|
|
121
|
+
t(slackGetReactions, 'read', 'slackGetReactions'),
|
|
122
|
+
t(slackListUserReactions, 'read', 'slackListUserReactions'),
|
|
123
|
+
t(slackAddStar, 'write', 'slackAddStar'),
|
|
124
|
+
t(slackRemoveStar, 'delete', 'slackRemoveStar'),
|
|
125
|
+
t(slackListStarredItems, 'read', 'slackListStarredItems'),
|
|
126
|
+
t(slackPinItem, 'write', 'slackPinItem'),
|
|
127
|
+
t(slackUnpinItem, 'delete', 'slackUnpinItem'),
|
|
128
|
+
t(slackListPinnedItems, 'read', 'slackListPinnedItems'),
|
|
129
|
+
t(slackCreateReminder, 'write', 'slackCreateReminder'),
|
|
130
|
+
t(slackGetReminder, 'read', 'slackGetReminder'),
|
|
131
|
+
t(slackListReminders, 'read', 'slackListReminders'),
|
|
132
|
+
t(slackDeleteReminder, 'delete', 'slackDeleteReminder'),
|
|
133
|
+
t(slackSearchAll, 'read', 'slackSearchAll'),
|
|
134
|
+
t(slackSearchMessages, 'read', 'slackSearchMessages'),
|
|
135
|
+
t(slackAssistantSearch, 'read', 'slackAssistantSearch'),
|
|
136
|
+
t(slackGetSearchInfo, 'read', 'slackGetSearchInfo'),
|
|
137
|
+
t(slackStartCall, 'write', 'slackStartCall'),
|
|
138
|
+
t(slackGetCallInfo, 'read', 'slackGetCallInfo'),
|
|
139
|
+
t(slackUpdateCallInfo, 'write', 'slackUpdateCallInfo'),
|
|
140
|
+
t(slackEndCall, 'write', 'slackEndCall'),
|
|
141
|
+
t(slackAddCallParticipants, 'write', 'slackAddCallParticipants'),
|
|
142
|
+
t(slackRemoveCallParticipants, 'delete', 'slackRemoveCallParticipants'),
|
|
143
|
+
t(slackCreateCanvas, 'write', 'slackCreateCanvas'),
|
|
144
|
+
t(slackEditCanvas, 'write', 'slackEditCanvas'),
|
|
145
|
+
t(slackDeleteCanvas, 'delete', 'slackDeleteCanvas'),
|
|
146
|
+
t(slackLookupCanvasSections, 'read', 'slackLookupCanvasSections'),
|
|
147
|
+
t(slackCreateList, 'write', 'slackCreateList'),
|
|
148
|
+
t(slackCreateListItem, 'write', 'slackCreateListItem'),
|
|
149
|
+
t(slackGetListItem, 'read', 'slackGetListItem'),
|
|
150
|
+
t(slackListListItems, 'read', 'slackListListItems'),
|
|
151
|
+
t(slackUpdateList, 'write', 'slackUpdateList'),
|
|
152
|
+
t(slackUpdateListItem, 'write', 'slackUpdateListItem'),
|
|
153
|
+
t(slackDeleteListItem, 'delete', 'slackDeleteListItem'),
|
|
154
|
+
t(slackDeleteListItems, 'delete', 'slackDeleteListItems'),
|
|
155
|
+
t(slackSetListAccess, 'write', 'slackSetListAccess'),
|
|
156
|
+
t(slackDeleteListAccess, 'delete', 'slackDeleteListAccess'),
|
|
157
|
+
t(slackCreateUserGroup, 'write', 'slackCreateUserGroup'),
|
|
158
|
+
t(slackUpdateUserGroup, 'write', 'slackUpdateUserGroup'),
|
|
159
|
+
t(slackUpdateUserGroupMembers, 'write', 'slackUpdateUserGroupMembers'),
|
|
160
|
+
t(slackListUserGroups, 'read', 'slackListUserGroups'),
|
|
161
|
+
t(slackListUserGroupMembers, 'read', 'slackListUserGroupMembers'),
|
|
162
|
+
t(slackEnableUserGroup, 'write', 'slackEnableUserGroup'),
|
|
163
|
+
t(slackDisableUserGroup, 'write', 'slackDisableUserGroup'),
|
|
164
|
+
t(slackAddEmoji, 'write', 'slackAddEmoji'),
|
|
165
|
+
t(slackAddEmojiAlias, 'write', 'slackAddEmojiAlias'),
|
|
166
|
+
t(slackRenameEmoji, 'write', 'slackRenameEmoji'),
|
|
167
|
+
t(slackRemoveEmoji, 'delete', 'slackRemoveEmoji'),
|
|
168
|
+
t(slackListCustomEmojis, 'read', 'slackListCustomEmojis'),
|
|
169
|
+
t(slackListAdminEmoji, 'read', 'slackListAdminEmoji'),
|
|
170
|
+
t(slackListApprovedApps, 'read', 'slackListApprovedApps'),
|
|
171
|
+
t(slackListAppRequests, 'read', 'slackListAppRequests'),
|
|
172
|
+
t(slackListRestrictedApps, 'read', 'slackListRestrictedApps'),
|
|
173
|
+
t(slackRestrictApp, 'write', 'slackRestrictApp'),
|
|
174
|
+
t(slackListApprovedInvites, 'read', 'slackListApprovedInvites'),
|
|
175
|
+
t(slackListDeniedInvites, 'read', 'slackListDeniedInvites'),
|
|
176
|
+
t(slackListPendingInvites, 'read', 'slackListPendingInvites'),
|
|
177
|
+
t(slackReadAuditLogs, 'read', 'slackReadAuditLogs'),
|
|
178
|
+
t(slackGetAuditActions, 'read', 'slackGetAuditActions'),
|
|
179
|
+
t(slackGetAuditSchemas, 'read', 'slackGetAuditSchemas'),
|
|
180
|
+
t(slackGetScimConfig, 'read', 'slackGetScimConfig'),
|
|
181
|
+
t(slackCustomizeUnfurl, 'write', 'slackCustomizeUnfurl'),
|
|
182
|
+
t(slackApiTest, 'read', 'slackApiTest'),
|
|
183
|
+
t(slackTestAuth, 'read', 'slackTestAuth'),
|
|
184
|
+
t(slackWhoAmI, 'read', 'slackWhoAmI'),
|
|
185
|
+
t(slackRtmConnect, 'write', 'slackRtmConnect'),
|
|
186
|
+
];
|
|
187
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
export declare const slackSendMessage: import("ai").Tool<{
|
|
2
|
+
channel: string;
|
|
3
|
+
blocks?: Record<string, any>[] | undefined;
|
|
4
|
+
slackToken?: string | undefined;
|
|
5
|
+
markdownText?: string | undefined;
|
|
6
|
+
fallbackText?: string | undefined;
|
|
7
|
+
threadTs?: string | undefined;
|
|
8
|
+
replyBroadcast?: boolean | undefined;
|
|
9
|
+
unfurlLinks?: boolean | undefined;
|
|
10
|
+
unfurlMedia?: boolean | undefined;
|
|
11
|
+
}, any>;
|
|
12
|
+
export declare const slackUpdateMessage: import("ai").Tool<{
|
|
13
|
+
channel: string;
|
|
14
|
+
ts: string;
|
|
15
|
+
blocks?: Record<string, any>[] | undefined;
|
|
16
|
+
slackToken?: string | undefined;
|
|
17
|
+
markdownText?: string | undefined;
|
|
18
|
+
fallbackText?: string | undefined;
|
|
19
|
+
replyBroadcast?: boolean | undefined;
|
|
20
|
+
asUser?: boolean | undefined;
|
|
21
|
+
fileIds?: string[] | undefined;
|
|
22
|
+
}, any>;
|
|
23
|
+
export declare const slackDeleteMessage: import("ai").Tool<{
|
|
24
|
+
channel: string;
|
|
25
|
+
ts?: string | undefined;
|
|
26
|
+
slackToken?: string | undefined;
|
|
27
|
+
asUser?: boolean | undefined;
|
|
28
|
+
}, any>;
|
|
29
|
+
export declare const slackScheduleMessage: import("ai").Tool<{
|
|
30
|
+
channel: string;
|
|
31
|
+
postAt: string;
|
|
32
|
+
blocks?: string | undefined;
|
|
33
|
+
text?: string | undefined;
|
|
34
|
+
parse?: string | undefined;
|
|
35
|
+
slackToken?: string | undefined;
|
|
36
|
+
markdownText?: string | undefined;
|
|
37
|
+
threadTs?: string | undefined;
|
|
38
|
+
replyBroadcast?: boolean | undefined;
|
|
39
|
+
unfurlLinks?: boolean | undefined;
|
|
40
|
+
unfurlMedia?: boolean | undefined;
|
|
41
|
+
attachments?: string | undefined;
|
|
42
|
+
linkNames?: boolean | undefined;
|
|
43
|
+
}, any>;
|
|
44
|
+
export declare const slackListScheduledMessages: import("ai").Tool<{
|
|
45
|
+
teamId?: string | undefined;
|
|
46
|
+
limit?: number | undefined;
|
|
47
|
+
latest?: string | undefined;
|
|
48
|
+
channel?: string | undefined;
|
|
49
|
+
cursor?: string | undefined;
|
|
50
|
+
slackToken?: string | undefined;
|
|
51
|
+
oldest?: string | undefined;
|
|
52
|
+
}, any>;
|
|
53
|
+
export declare const slackDeleteScheduledMessage: import("ai").Tool<{
|
|
54
|
+
channel: string;
|
|
55
|
+
scheduledMessageId: string;
|
|
56
|
+
slackToken?: string | undefined;
|
|
57
|
+
asUser?: boolean | undefined;
|
|
58
|
+
}, any>;
|
|
59
|
+
export declare const slackGetMessagePermalink: import("ai").Tool<{
|
|
60
|
+
channel: string;
|
|
61
|
+
messageTs: string;
|
|
62
|
+
slackToken?: string | undefined;
|
|
63
|
+
}, any>;
|
|
64
|
+
export declare const slackSendMeMessage: import("ai").Tool<{
|
|
65
|
+
text: string;
|
|
66
|
+
channel: string;
|
|
67
|
+
slackToken?: string | undefined;
|
|
68
|
+
}, any>;
|
|
69
|
+
export declare const slackSendEphemeralMessage: import("ai").Tool<{
|
|
70
|
+
user: string;
|
|
71
|
+
channel: string;
|
|
72
|
+
blocks?: string | undefined;
|
|
73
|
+
username?: string | undefined;
|
|
74
|
+
text?: string | undefined;
|
|
75
|
+
parse?: string | undefined;
|
|
76
|
+
slackToken?: string | undefined;
|
|
77
|
+
markdownText?: string | undefined;
|
|
78
|
+
threadTs?: string | undefined;
|
|
79
|
+
asUser?: boolean | undefined;
|
|
80
|
+
attachments?: string | undefined;
|
|
81
|
+
linkNames?: boolean | undefined;
|
|
82
|
+
iconUrl?: string | undefined;
|
|
83
|
+
iconEmoji?: string | undefined;
|
|
84
|
+
}, any>;
|
|
85
|
+
export declare const slackListUnreadChannelMessages: import("ai").Tool<{
|
|
86
|
+
limit: number;
|
|
87
|
+
channel: string;
|
|
88
|
+
cursor?: string | undefined;
|
|
89
|
+
slackToken?: string | undefined;
|
|
90
|
+
includeAllMetadata?: boolean | undefined;
|
|
91
|
+
}, any>;
|
|
92
|
+
export declare const slackGetUnreadMessagesFromUser: import("ai").Tool<{
|
|
93
|
+
limit: number;
|
|
94
|
+
userId: string;
|
|
95
|
+
slackToken?: string | undefined;
|
|
96
|
+
}, {
|
|
97
|
+
error: string;
|
|
98
|
+
} | {
|
|
99
|
+
ok: boolean;
|
|
100
|
+
channel_id: any;
|
|
101
|
+
user_id: string;
|
|
102
|
+
unread_count: any;
|
|
103
|
+
messages: any;
|
|
104
|
+
has_more: any;
|
|
105
|
+
}>;
|
|
106
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { tool } from 'ai';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { slackApi, toSlackError, requireToken } from './client.js';
|
|
5
|
+
const tokenField = z.string().optional().describe('Injected by system; do not provide');
|
|
6
|
+
export const slackSendMessage = tool({
|
|
7
|
+
description: 'Post a message to a channel, DM, or private group. Provide exactly one of markdownText (normal Markdown) or blocks (raw Block Kit for interactive layouts). For DMs, resolve the user to a channel ID with slackOpenDm first. Not idempotent — duplicate calls post duplicates.',
|
|
8
|
+
inputSchema: z.object({
|
|
9
|
+
slackToken: tokenField,
|
|
10
|
+
channel: z.string().describe("Channel ID or name (no '#' prefix). For DMs use the ID from slackOpenDm"),
|
|
11
|
+
markdownText: z.string().optional().describe('Message in standard Markdown. Do not combine with blocks'),
|
|
12
|
+
blocks: z.array(z.record(z.any())).optional().describe('Raw Block Kit JSON for interactive layouts'),
|
|
13
|
+
fallbackText: z.string().optional().describe('Plain-text notification fallback, only with blocks'),
|
|
14
|
+
threadTs: z.string().optional().describe('Parent message ts to reply in a thread'),
|
|
15
|
+
replyBroadcast: z.boolean().optional().describe('Also post a thread reply to the main channel'),
|
|
16
|
+
unfurlLinks: z.boolean().optional().describe('Unfurl text URLs'),
|
|
17
|
+
unfurlMedia: z.boolean().optional().describe('Show media previews from URLs'),
|
|
18
|
+
}),
|
|
19
|
+
execute: async ({ slackToken, channel, markdownText, blocks, fallbackText, ...rest }) => {
|
|
20
|
+
try {
|
|
21
|
+
const missing = requireToken(slackToken);
|
|
22
|
+
if (missing)
|
|
23
|
+
return missing;
|
|
24
|
+
if ((markdownText && blocks) || (!markdownText && !blocks)) {
|
|
25
|
+
return { error: 'Provide exactly one of markdownText or blocks.' };
|
|
26
|
+
}
|
|
27
|
+
return await slackApi(slackToken, 'chat.postMessage', {
|
|
28
|
+
channel: channel.startsWith('#') ? channel.slice(1) : channel,
|
|
29
|
+
markdown_text: markdownText,
|
|
30
|
+
blocks,
|
|
31
|
+
text: fallbackText,
|
|
32
|
+
thread_ts: rest.threadTs,
|
|
33
|
+
reply_broadcast: rest.replyBroadcast,
|
|
34
|
+
unfurl_links: rest.unfurlLinks,
|
|
35
|
+
unfurl_media: rest.unfurlMedia,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
return toSlackError(error, 'Failed to send message');
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
export const slackUpdateMessage = tool({
|
|
44
|
+
description: 'Update a message by channel and timestamp. Provide exactly one of markdownText or blocks (raw Block Kit). Only messages posted by the caller can be edited.',
|
|
45
|
+
inputSchema: z.object({
|
|
46
|
+
slackToken: tokenField,
|
|
47
|
+
channel: z.string().describe('Channel ID or name containing the message'),
|
|
48
|
+
ts: z.string().describe('Timestamp of the message to update'),
|
|
49
|
+
markdownText: z.string().optional().describe('Updated message in standard Markdown'),
|
|
50
|
+
blocks: z.array(z.record(z.any())).optional().describe('Raw Block Kit JSON for the updated message'),
|
|
51
|
+
fallbackText: z.string().optional().describe('Plain-text fallback, only with blocks'),
|
|
52
|
+
asUser: z.boolean().optional().describe('Update as the authenticated user'),
|
|
53
|
+
fileIds: z.array(z.string()).optional().describe('File IDs to attach (must already be uploaded)'),
|
|
54
|
+
replyBroadcast: z.boolean().optional().describe('Broadcast an updated thread reply to the channel'),
|
|
55
|
+
}),
|
|
56
|
+
execute: async ({ slackToken, channel, ts, markdownText, blocks, fallbackText, asUser, fileIds, replyBroadcast }) => {
|
|
57
|
+
try {
|
|
58
|
+
const missing = requireToken(slackToken);
|
|
59
|
+
if (missing)
|
|
60
|
+
return missing;
|
|
61
|
+
if ((markdownText && blocks) || (!markdownText && !blocks)) {
|
|
62
|
+
return { error: 'Provide exactly one of markdownText or blocks.' };
|
|
63
|
+
}
|
|
64
|
+
return await slackApi(slackToken, 'chat.update', {
|
|
65
|
+
channel,
|
|
66
|
+
ts,
|
|
67
|
+
markdown_text: markdownText,
|
|
68
|
+
blocks,
|
|
69
|
+
text: fallbackText,
|
|
70
|
+
as_user: asUser,
|
|
71
|
+
file_ids: fileIds?.join(','),
|
|
72
|
+
reply_broadcast: replyBroadcast,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
return toSlackError(error, 'Failed to update message');
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
export const slackDeleteMessage = tool({
|
|
81
|
+
description: 'Delete a message by channel and timestamp. The authenticated user or bot must be the original poster. Confirm with the user first.',
|
|
82
|
+
inputSchema: z.object({
|
|
83
|
+
slackToken: tokenField,
|
|
84
|
+
channel: z.string().describe('Channel, group, or DM ID containing the message'),
|
|
85
|
+
ts: z.string().optional().describe('Exact timestamp of the message to delete'),
|
|
86
|
+
asUser: z.boolean().optional().describe('Legacy: delete as the authed user (classic apps only)'),
|
|
87
|
+
}),
|
|
88
|
+
execute: async ({ slackToken, channel, ts, asUser }) => {
|
|
89
|
+
try {
|
|
90
|
+
const missing = requireToken(slackToken);
|
|
91
|
+
if (missing)
|
|
92
|
+
return missing;
|
|
93
|
+
return await slackApi(slackToken, 'chat.delete', { channel, ts, as_user: asUser });
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
return toSlackError(error, 'Failed to delete message');
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
export const slackScheduleMessage = tool({
|
|
101
|
+
description: 'Schedule a message for a future time (Unix epoch seconds, max 120 days ahead). Provide markdownText, text, blocks (JSON string), or attachments (JSON string). Use slackListScheduledMessages to find the scheduled_message_id afterwards.',
|
|
102
|
+
inputSchema: z.object({
|
|
103
|
+
slackToken: tokenField,
|
|
104
|
+
channel: z.string().describe('Channel ID or name to send to'),
|
|
105
|
+
postAt: z.string().describe('Future send time as Unix epoch seconds'),
|
|
106
|
+
markdownText: z.string().optional().describe('Message in Markdown'),
|
|
107
|
+
text: z.string().optional().describe('Plain-text message content'),
|
|
108
|
+
blocks: z.string().optional().describe('Block Kit layout as a JSON string'),
|
|
109
|
+
attachments: z.string().optional().describe('Legacy attachments as a JSON string'),
|
|
110
|
+
threadTs: z.string().optional().describe('Parent message ts for a scheduled thread reply'),
|
|
111
|
+
replyBroadcast: z.boolean().optional().describe('Broadcast a scheduled thread reply to the channel'),
|
|
112
|
+
parse: z.string().optional().describe("Text parsing: 'full' to auto-link mentions, 'none' otherwise"),
|
|
113
|
+
linkNames: z.boolean().optional().describe('Auto-link channel and user names (deprecated, prefer parse)'),
|
|
114
|
+
unfurlLinks: z.boolean().optional().describe('Unfurl text URLs (may be ignored for scheduled messages)'),
|
|
115
|
+
unfurlMedia: z.boolean().optional().describe('Show media previews (may be ignored for scheduled messages)'),
|
|
116
|
+
}),
|
|
117
|
+
execute: async ({ slackToken, channel, postAt, ...rest }) => {
|
|
118
|
+
try {
|
|
119
|
+
const missing = requireToken(slackToken);
|
|
120
|
+
if (missing)
|
|
121
|
+
return missing;
|
|
122
|
+
return await slackApi(slackToken, 'chat.scheduleMessage', {
|
|
123
|
+
channel,
|
|
124
|
+
post_at: postAt,
|
|
125
|
+
markdown_text: rest.markdownText,
|
|
126
|
+
text: rest.text,
|
|
127
|
+
blocks: rest.blocks,
|
|
128
|
+
attachments: rest.attachments,
|
|
129
|
+
thread_ts: rest.threadTs,
|
|
130
|
+
reply_broadcast: rest.replyBroadcast,
|
|
131
|
+
parse: rest.parse,
|
|
132
|
+
link_names: rest.linkNames,
|
|
133
|
+
unfurl_links: rest.unfurlLinks,
|
|
134
|
+
unfurl_media: rest.unfurlMedia,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
return toSlackError(error, 'Failed to schedule message');
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
});
|
|
142
|
+
export const slackListScheduledMessages = tool({
|
|
143
|
+
description: 'List pending scheduled messages for a channel (or all accessible channels when omitted), optionally filtered by time range. Paginate with cursor.',
|
|
144
|
+
inputSchema: z.object({
|
|
145
|
+
slackToken: tokenField,
|
|
146
|
+
channel: z.string().optional().describe('Channel ID or name; omit for all accessible channels'),
|
|
147
|
+
oldest: z.string().optional().describe('Earliest Unix timestamp (inclusive)'),
|
|
148
|
+
latest: z.string().optional().describe('Latest Unix timestamp (exclusive)'),
|
|
149
|
+
limit: z.number().min(1).max(1000).optional().describe('Messages per page'),
|
|
150
|
+
cursor: z.string().optional().describe('Pagination cursor from a previous response'),
|
|
151
|
+
teamId: z.string().optional().describe('Workspace ID (org-level tokens only)'),
|
|
152
|
+
}),
|
|
153
|
+
execute: async ({ slackToken, teamId, ...rest }) => {
|
|
154
|
+
try {
|
|
155
|
+
const missing = requireToken(slackToken);
|
|
156
|
+
if (missing)
|
|
157
|
+
return missing;
|
|
158
|
+
return await slackApi(slackToken, 'chat.scheduledMessages.list', { ...rest, team_id: teamId });
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
return toSlackError(error, 'Failed to list scheduled messages');
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
});
|
|
165
|
+
export const slackDeleteScheduledMessage = tool({
|
|
166
|
+
description: 'Delete a pending scheduled message by channel and scheduled_message_id. Get the ID from slackListScheduledMessages.',
|
|
167
|
+
inputSchema: z.object({
|
|
168
|
+
slackToken: tokenField,
|
|
169
|
+
channel: z.string().describe('Channel, group, or DM ID where the message is scheduled'),
|
|
170
|
+
scheduledMessageId: z.string().describe('ID from the chat.scheduleMessage response'),
|
|
171
|
+
asUser: z.boolean().optional().describe('Delete as the authed user (requires chat:write:user)'),
|
|
172
|
+
}),
|
|
173
|
+
execute: async ({ slackToken, channel, scheduledMessageId, asUser }) => {
|
|
174
|
+
try {
|
|
175
|
+
const missing = requireToken(slackToken);
|
|
176
|
+
if (missing)
|
|
177
|
+
return missing;
|
|
178
|
+
return await slackApi(slackToken, 'chat.deleteScheduledMessage', {
|
|
179
|
+
channel,
|
|
180
|
+
scheduled_message_id: scheduledMessageId,
|
|
181
|
+
as_user: asUser,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
return toSlackError(error, 'Failed to delete scheduled message');
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
});
|
|
189
|
+
export const slackGetMessagePermalink = tool({
|
|
190
|
+
description: 'Get a permalink URL for a message by channel ID and timestamp. Resolve channel names to IDs with slackFindChannels first.',
|
|
191
|
+
inputSchema: z.object({
|
|
192
|
+
slackToken: tokenField,
|
|
193
|
+
channel: z.string().describe('Channel ID containing the message'),
|
|
194
|
+
messageTs: z.string().describe('Message ts value'),
|
|
195
|
+
}),
|
|
196
|
+
execute: async ({ slackToken, channel, messageTs }) => {
|
|
197
|
+
try {
|
|
198
|
+
const missing = requireToken(slackToken);
|
|
199
|
+
if (missing)
|
|
200
|
+
return missing;
|
|
201
|
+
return await slackApi(slackToken, 'chat.getPermalink', { channel, message_ts: messageTs });
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
return toSlackError(error, 'Failed to get message permalink');
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
});
|
|
208
|
+
export const slackSendMeMessage = tool({
|
|
209
|
+
description: "Send a '/me' action message to a channel, shown in third person (e.g. '*user is preparing for a meeting*'). Plain text only.",
|
|
210
|
+
inputSchema: z.object({
|
|
211
|
+
slackToken: tokenField,
|
|
212
|
+
channel: z.string().describe('Channel ID, name, or @username for a DM'),
|
|
213
|
+
text: z.string().describe("Action text, e.g. 'is preparing for a meeting'"),
|
|
214
|
+
}),
|
|
215
|
+
execute: async ({ slackToken, channel, text }) => {
|
|
216
|
+
try {
|
|
217
|
+
const missing = requireToken(slackToken);
|
|
218
|
+
if (missing)
|
|
219
|
+
return missing;
|
|
220
|
+
return await slackApi(slackToken, 'chat.meMessage', { channel, text });
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
return toSlackError(error, 'Failed to send me message');
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
});
|
|
227
|
+
export const slackSendEphemeralMessage = tool({
|
|
228
|
+
description: 'Send an ephemeral message visible only to one user in a channel. Both the bot and the target user must be channel members. Provide markdownText, text, blocks (JSON string), or attachments (JSON string).',
|
|
229
|
+
inputSchema: z.object({
|
|
230
|
+
slackToken: tokenField,
|
|
231
|
+
channel: z.string().describe('Channel ID or name'),
|
|
232
|
+
user: z.string().describe('User ID who will see the message'),
|
|
233
|
+
markdownText: z.string().optional().describe('Message in Markdown'),
|
|
234
|
+
text: z.string().optional().describe('Plain-text message (fallback for notifications)'),
|
|
235
|
+
blocks: z.string().optional().describe('Block Kit layout as a JSON string'),
|
|
236
|
+
attachments: z.string().optional().describe('Legacy attachments as a JSON string'),
|
|
237
|
+
threadTs: z.string().optional().describe('Parent message ts for a threaded ephemeral reply'),
|
|
238
|
+
parse: z.string().optional().describe("Use 'full' to auto-link mentions and channels"),
|
|
239
|
+
linkNames: z.boolean().optional().describe('Auto-link @mentions and #channels'),
|
|
240
|
+
asUser: z.boolean().optional().describe('Legacy: post as the authed user'),
|
|
241
|
+
username: z.string().optional().describe('Custom sender name (only when not posting as user)'),
|
|
242
|
+
iconUrl: z.string().optional().describe('Custom sender icon URL (only when not posting as user)'),
|
|
243
|
+
iconEmoji: z.string().optional().describe('Custom sender emoji (only when not posting as user)'),
|
|
244
|
+
}),
|
|
245
|
+
execute: async ({ slackToken, channel, user, markdownText, ...rest }) => {
|
|
246
|
+
try {
|
|
247
|
+
const missing = requireToken(slackToken);
|
|
248
|
+
if (missing)
|
|
249
|
+
return missing;
|
|
250
|
+
return await slackApi(slackToken, 'chat.postEphemeral', {
|
|
251
|
+
channel,
|
|
252
|
+
user,
|
|
253
|
+
markdown_text: markdownText,
|
|
254
|
+
text: rest.text,
|
|
255
|
+
blocks: rest.blocks,
|
|
256
|
+
attachments: rest.attachments,
|
|
257
|
+
thread_ts: rest.threadTs,
|
|
258
|
+
parse: rest.parse,
|
|
259
|
+
link_names: rest.linkNames,
|
|
260
|
+
as_user: rest.asUser,
|
|
261
|
+
username: rest.username,
|
|
262
|
+
icon_url: rest.iconUrl,
|
|
263
|
+
icon_emoji: rest.iconEmoji,
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
catch (error) {
|
|
267
|
+
return toSlackError(error, 'Failed to send ephemeral message');
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
});
|
|
271
|
+
export const slackListUnreadChannelMessages = tool({
|
|
272
|
+
description: 'List unread messages in a channel for the authenticated user (main timeline only, not thread replies). Paginate with cursor.',
|
|
273
|
+
inputSchema: z.object({
|
|
274
|
+
slackToken: tokenField,
|
|
275
|
+
channel: z.string().describe('Channel ID to fetch unread messages from'),
|
|
276
|
+
limit: z.number().min(1).max(1000).optional().default(25).describe('Max messages to return'),
|
|
277
|
+
cursor: z.string().optional().describe('Pagination cursor from a previous response'),
|
|
278
|
+
includeAllMetadata: z.boolean().optional().describe('Return all message metadata'),
|
|
279
|
+
}),
|
|
280
|
+
execute: async ({ slackToken, channel, limit = 25, cursor, includeAllMetadata }) => {
|
|
281
|
+
try {
|
|
282
|
+
const missing = requireToken(slackToken);
|
|
283
|
+
if (missing)
|
|
284
|
+
return missing;
|
|
285
|
+
const info = await slackApi(slackToken, 'conversations.info', { channel });
|
|
286
|
+
const lastRead = info?.channel?.last_read;
|
|
287
|
+
const history = await slackApi(slackToken, 'conversations.history', {
|
|
288
|
+
channel,
|
|
289
|
+
oldest: lastRead,
|
|
290
|
+
limit,
|
|
291
|
+
cursor,
|
|
292
|
+
include_all_metadata: includeAllMetadata,
|
|
293
|
+
});
|
|
294
|
+
return { ...history, last_read: lastRead };
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
return toSlackError(error, 'Failed to list unread channel messages');
|
|
298
|
+
}
|
|
299
|
+
},
|
|
300
|
+
});
|
|
301
|
+
export const slackGetUnreadMessagesFromUser = tool({
|
|
302
|
+
description: 'Get unread DMs from a specific user. Opens the DM, reads the read position, and fetches messages since then. Returns an empty messages array when nothing is unread. DMs only.',
|
|
303
|
+
inputSchema: z.object({
|
|
304
|
+
slackToken: tokenField,
|
|
305
|
+
userId: z.string().describe('User ID to check unread DMs from'),
|
|
306
|
+
limit: z.number().min(1).max(999).optional().default(25).describe('Max unread messages to return'),
|
|
307
|
+
}),
|
|
308
|
+
execute: async ({ slackToken, userId, limit = 25 }) => {
|
|
309
|
+
try {
|
|
310
|
+
const missing = requireToken(slackToken);
|
|
311
|
+
if (missing)
|
|
312
|
+
return missing;
|
|
313
|
+
const opened = await slackApi(slackToken, 'conversations.open', { users: userId });
|
|
314
|
+
const channelId = opened?.channel?.id;
|
|
315
|
+
if (!channelId) {
|
|
316
|
+
return { error: 'Could not open DM with user', details: opened };
|
|
317
|
+
}
|
|
318
|
+
const info = await slackApi(slackToken, 'conversations.info', { channel: channelId });
|
|
319
|
+
const lastRead = info?.channel?.last_read ?? '0';
|
|
320
|
+
const history = await slackApi(slackToken, 'conversations.history', {
|
|
321
|
+
channel: channelId,
|
|
322
|
+
oldest: lastRead,
|
|
323
|
+
limit,
|
|
324
|
+
});
|
|
325
|
+
const messages = (history?.messages ?? []).filter((m) => m.ts !== lastRead);
|
|
326
|
+
return {
|
|
327
|
+
ok: true,
|
|
328
|
+
channel_id: channelId,
|
|
329
|
+
user_id: userId,
|
|
330
|
+
unread_count: messages.length,
|
|
331
|
+
messages,
|
|
332
|
+
has_more: history?.has_more ?? false,
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
catch (error) {
|
|
336
|
+
return toSlackError(error, 'Failed to get unread messages from user');
|
|
337
|
+
}
|
|
338
|
+
},
|
|
339
|
+
});
|
|
340
|
+
//# sourceMappingURL=messages.js.map
|