integrate-sdk 0.8.28 → 0.8.30-dev.0

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 (55) hide show
  1. package/dist/adapters/auto-routes.js +397 -0
  2. package/dist/adapters/index.js +397 -0
  3. package/dist/adapters/nextjs.js +397 -0
  4. package/dist/adapters/node.js +397 -0
  5. package/dist/adapters/svelte-kit.js +397 -0
  6. package/dist/adapters/tanstack-start.js +397 -0
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +434 -1
  10. package/dist/oauth.js +397 -0
  11. package/dist/server.js +406 -0
  12. package/dist/src/client.d.ts +10 -1
  13. package/dist/src/client.d.ts.map +1 -1
  14. package/dist/src/index.d.ts +18 -0
  15. package/dist/src/index.d.ts.map +1 -1
  16. package/dist/src/integrations/airtable-client.d.ts +260 -0
  17. package/dist/src/integrations/airtable-client.d.ts.map +1 -0
  18. package/dist/src/integrations/airtable.d.ts +37 -0
  19. package/dist/src/integrations/airtable.d.ts.map +1 -0
  20. package/dist/src/integrations/gcal-client.d.ts +370 -0
  21. package/dist/src/integrations/gcal-client.d.ts.map +1 -0
  22. package/dist/src/integrations/gcal.d.ts +37 -0
  23. package/dist/src/integrations/gcal.d.ts.map +1 -0
  24. package/dist/src/integrations/linear-client.d.ts +309 -0
  25. package/dist/src/integrations/linear-client.d.ts.map +1 -0
  26. package/dist/src/integrations/linear.d.ts +37 -0
  27. package/dist/src/integrations/linear.d.ts.map +1 -0
  28. package/dist/src/integrations/outlook-client.d.ts +433 -0
  29. package/dist/src/integrations/outlook-client.d.ts.map +1 -0
  30. package/dist/src/integrations/outlook.d.ts +37 -0
  31. package/dist/src/integrations/outlook.d.ts.map +1 -0
  32. package/dist/src/integrations/slack-client.d.ts +271 -0
  33. package/dist/src/integrations/slack-client.d.ts.map +1 -0
  34. package/dist/src/integrations/slack.d.ts +37 -0
  35. package/dist/src/integrations/slack.d.ts.map +1 -0
  36. package/dist/src/integrations/stripe-client.d.ts +412 -0
  37. package/dist/src/integrations/stripe-client.d.ts.map +1 -0
  38. package/dist/src/integrations/stripe.d.ts +37 -0
  39. package/dist/src/integrations/stripe.d.ts.map +1 -0
  40. package/dist/src/integrations/todoist-client.d.ts +253 -0
  41. package/dist/src/integrations/todoist-client.d.ts.map +1 -0
  42. package/dist/src/integrations/todoist.d.ts +37 -0
  43. package/dist/src/integrations/todoist.d.ts.map +1 -0
  44. package/dist/src/integrations/vercel-client.d.ts +278 -0
  45. package/dist/src/integrations/vercel-client.d.ts.map +1 -0
  46. package/dist/src/integrations/vercel.d.ts +37 -0
  47. package/dist/src/integrations/vercel.d.ts.map +1 -0
  48. package/dist/src/integrations/zendesk-client.d.ts +395 -0
  49. package/dist/src/integrations/zendesk-client.d.ts.map +1 -0
  50. package/dist/src/integrations/zendesk.d.ts +39 -0
  51. package/dist/src/integrations/zendesk.d.ts.map +1 -0
  52. package/dist/src/server.d.ts +9 -0
  53. package/dist/src/server.d.ts.map +1 -1
  54. package/index.ts +18 -0
  55. package/package.json +2 -2
@@ -0,0 +1,271 @@
1
+ /**
2
+ * Slack Integration Client Types
3
+ * Fully typed interface for Slack integration methods
4
+ */
5
+ import type { MCPToolCallResponse } from "../protocol/messages.js";
6
+ /**
7
+ * Slack Channel
8
+ */
9
+ export interface SlackChannel {
10
+ id: string;
11
+ name: string;
12
+ is_channel: boolean;
13
+ is_group: boolean;
14
+ is_im: boolean;
15
+ is_mpim: boolean;
16
+ is_private: boolean;
17
+ created: number;
18
+ creator: string;
19
+ is_archived: boolean;
20
+ is_general: boolean;
21
+ name_normalized: string;
22
+ is_member: boolean;
23
+ topic?: {
24
+ value: string;
25
+ creator: string;
26
+ last_set: number;
27
+ };
28
+ purpose?: {
29
+ value: string;
30
+ creator: string;
31
+ last_set: number;
32
+ };
33
+ num_members?: number;
34
+ }
35
+ /**
36
+ * Slack User
37
+ */
38
+ export interface SlackUser {
39
+ id: string;
40
+ team_id: string;
41
+ name: string;
42
+ deleted: boolean;
43
+ real_name?: string;
44
+ tz?: string;
45
+ tz_label?: string;
46
+ tz_offset?: number;
47
+ profile: {
48
+ avatar_hash?: string;
49
+ status_text?: string;
50
+ status_emoji?: string;
51
+ real_name?: string;
52
+ display_name?: string;
53
+ email?: string;
54
+ image_24?: string;
55
+ image_32?: string;
56
+ image_48?: string;
57
+ image_72?: string;
58
+ image_192?: string;
59
+ image_512?: string;
60
+ };
61
+ is_admin?: boolean;
62
+ is_owner?: boolean;
63
+ is_primary_owner?: boolean;
64
+ is_bot?: boolean;
65
+ updated?: number;
66
+ }
67
+ /**
68
+ * Slack Message
69
+ */
70
+ export interface SlackMessage {
71
+ type: string;
72
+ user?: string;
73
+ text: string;
74
+ ts: string;
75
+ thread_ts?: string;
76
+ reply_count?: number;
77
+ reply_users_count?: number;
78
+ latest_reply?: string;
79
+ reactions?: Array<{
80
+ name: string;
81
+ count: number;
82
+ users: string[];
83
+ }>;
84
+ attachments?: Array<Record<string, unknown>>;
85
+ blocks?: Array<Record<string, unknown>>;
86
+ }
87
+ /**
88
+ * Slack Integration Client Interface
89
+ * Provides type-safe methods for all Slack operations
90
+ */
91
+ export interface SlackIntegrationClient {
92
+ /**
93
+ * Send a message to a Slack channel
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * const result = await client.slack.sendMessage({
98
+ * channel: "C1234567890",
99
+ * text: "Hello, World!"
100
+ * });
101
+ * ```
102
+ */
103
+ sendMessage(params: {
104
+ /** Channel, private group, or IM channel to send message to */
105
+ channel: string;
106
+ /** Text of the message to send */
107
+ text: string;
108
+ /** Thread timestamp to reply in a thread */
109
+ thread_ts?: string;
110
+ /** Disable link previews */
111
+ unfurl_links?: boolean;
112
+ /** Disable media previews */
113
+ unfurl_media?: boolean;
114
+ }): Promise<MCPToolCallResponse>;
115
+ /**
116
+ * List channels in the workspace
117
+ *
118
+ * @example
119
+ * ```typescript
120
+ * const channels = await client.slack.listChannels({
121
+ * types: "public_channel,private_channel"
122
+ * });
123
+ * ```
124
+ */
125
+ listChannels(params?: {
126
+ /** Mix and match channel types */
127
+ types?: string;
128
+ /** Exclude archived channels */
129
+ exclude_archived?: boolean;
130
+ /** Limit results */
131
+ limit?: number;
132
+ /** Pagination cursor */
133
+ cursor?: string;
134
+ }): Promise<MCPToolCallResponse>;
135
+ /**
136
+ * Get information about a channel
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * const channel = await client.slack.getChannel({
141
+ * channel: "C1234567890"
142
+ * });
143
+ * ```
144
+ */
145
+ getChannel(params: {
146
+ /** Channel to get info for */
147
+ channel: string;
148
+ }): Promise<MCPToolCallResponse>;
149
+ /**
150
+ * List users in the workspace
151
+ *
152
+ * @example
153
+ * ```typescript
154
+ * const users = await client.slack.listUsers({
155
+ * limit: 100
156
+ * });
157
+ * ```
158
+ */
159
+ listUsers(params?: {
160
+ /** Limit results */
161
+ limit?: number;
162
+ /** Pagination cursor */
163
+ cursor?: string;
164
+ }): Promise<MCPToolCallResponse>;
165
+ /**
166
+ * Get information about a user
167
+ *
168
+ * @example
169
+ * ```typescript
170
+ * const user = await client.slack.getUser({
171
+ * user: "U1234567890"
172
+ * });
173
+ * ```
174
+ */
175
+ getUser(params: {
176
+ /** User to get info for */
177
+ user: string;
178
+ }): Promise<MCPToolCallResponse>;
179
+ /**
180
+ * List messages in a channel
181
+ *
182
+ * @example
183
+ * ```typescript
184
+ * const messages = await client.slack.listMessages({
185
+ * channel: "C1234567890",
186
+ * limit: 50
187
+ * });
188
+ * ```
189
+ */
190
+ listMessages(params: {
191
+ /** Channel to fetch messages from */
192
+ channel: string;
193
+ /** Number of messages to return */
194
+ limit?: number;
195
+ /** Start of time range */
196
+ oldest?: string;
197
+ /** End of time range */
198
+ latest?: string;
199
+ /** Pagination cursor */
200
+ cursor?: string;
201
+ }): Promise<MCPToolCallResponse>;
202
+ /**
203
+ * Add a reaction to a message
204
+ *
205
+ * @example
206
+ * ```typescript
207
+ * await client.slack.addReaction({
208
+ * channel: "C1234567890",
209
+ * timestamp: "1234567890.123456",
210
+ * name: "thumbsup"
211
+ * });
212
+ * ```
213
+ */
214
+ addReaction(params: {
215
+ /** Channel where the message is */
216
+ channel: string;
217
+ /** Timestamp of the message */
218
+ timestamp: string;
219
+ /** Reaction emoji name (without colons) */
220
+ name: string;
221
+ }): Promise<MCPToolCallResponse>;
222
+ /**
223
+ * Search for messages
224
+ *
225
+ * @example
226
+ * ```typescript
227
+ * const results = await client.slack.searchMessages({
228
+ * query: "important announcement"
229
+ * });
230
+ * ```
231
+ */
232
+ searchMessages(params: {
233
+ /** Search query */
234
+ query: string;
235
+ /** Sort order (score or timestamp) */
236
+ sort?: "score" | "timestamp";
237
+ /** Sort direction */
238
+ sort_dir?: "asc" | "desc";
239
+ /** Number of results per page */
240
+ count?: number;
241
+ /** Page number */
242
+ page?: number;
243
+ }): Promise<MCPToolCallResponse>;
244
+ /**
245
+ * Upload a file to Slack
246
+ *
247
+ * @example
248
+ * ```typescript
249
+ * await client.slack.uploadFile({
250
+ * channels: "C1234567890",
251
+ * content: "file content here",
252
+ * filename: "example.txt"
253
+ * });
254
+ * ```
255
+ */
256
+ uploadFile(params: {
257
+ /** Comma-separated list of channel IDs */
258
+ channels?: string;
259
+ /** File contents */
260
+ content?: string;
261
+ /** Filename */
262
+ filename?: string;
263
+ /** File type identifier */
264
+ filetype?: string;
265
+ /** Initial comment */
266
+ initial_comment?: string;
267
+ /** Title of file */
268
+ title?: string;
269
+ }): Promise<MCPToolCallResponse>;
270
+ }
271
+ //# sourceMappingURL=slack-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack-client.d.ts","sourceRoot":"","sources":["../../../src/integrations/slack-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Slack Integration
3
+ * Enables Slack tools with OAuth configuration
4
+ */
5
+ import type { MCPIntegration } from "./types.js";
6
+ /**
7
+ * Slack integration configuration
8
+ *
9
+ * SERVER-SIDE: Automatically reads SLACK_CLIENT_ID and SLACK_CLIENT_SECRET from environment.
10
+ * You can override by providing explicit clientId and clientSecret values.
11
+ * CLIENT-SIDE: Omit clientId and clientSecret when using createMCPClient()
12
+ */
13
+ export interface SlackIntegrationConfig {
14
+ /** Slack OAuth client ID (defaults to SLACK_CLIENT_ID env var) */
15
+ clientId?: string;
16
+ /** Slack OAuth client secret (defaults to SLACK_CLIENT_SECRET env var) */
17
+ clientSecret?: string;
18
+ /** Additional OAuth scopes (default: ['chat:write', 'channels:read', 'users:read']) */
19
+ scopes?: string[];
20
+ /** OAuth redirect URI */
21
+ redirectUri?: string;
22
+ }
23
+ /**
24
+ * Default Slack tools that this integration enables
25
+ * These should match the tool names exposed by your MCP server
26
+ */
27
+ declare const SLACK_TOOLS: readonly ["slack_send_message", "slack_list_channels", "slack_get_channel", "slack_list_users", "slack_get_user", "slack_list_messages", "slack_add_reaction", "slack_search_messages", "slack_upload_file"];
28
+ export declare function slackIntegration(config?: SlackIntegrationConfig): MCPIntegration<"slack">;
29
+ /**
30
+ * Export tool names for type inference
31
+ */
32
+ export type SlackTools = typeof SLACK_TOOLS[number];
33
+ /**
34
+ * Export Slack client types
35
+ */
36
+ export type { SlackIntegrationClient } from "./slack-client.js";
37
+ //# sourceMappingURL=slack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../../src/integrations/slack.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,YAAY,CAAC;AAG9D;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,QAAA,MAAM,WAAW,8MAUP,CAAC;AAGX,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,sBAA2B,GAAG,cAAc,CAAC,OAAO,CAAC,CAyB7F;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAEpD;;GAEG;AACH,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}