airbyte-agent-slack 0.1.0__py3-none-any.whl

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 (57) hide show
  1. airbyte_agent_slack/__init__.py +87 -0
  2. airbyte_agent_slack/_vendored/__init__.py +1 -0
  3. airbyte_agent_slack/_vendored/connector_sdk/__init__.py +82 -0
  4. airbyte_agent_slack/_vendored/connector_sdk/auth_strategies.py +1120 -0
  5. airbyte_agent_slack/_vendored/connector_sdk/auth_template.py +135 -0
  6. airbyte_agent_slack/_vendored/connector_sdk/cloud_utils/__init__.py +5 -0
  7. airbyte_agent_slack/_vendored/connector_sdk/cloud_utils/client.py +213 -0
  8. airbyte_agent_slack/_vendored/connector_sdk/connector_model_loader.py +964 -0
  9. airbyte_agent_slack/_vendored/connector_sdk/constants.py +78 -0
  10. airbyte_agent_slack/_vendored/connector_sdk/exceptions.py +23 -0
  11. airbyte_agent_slack/_vendored/connector_sdk/executor/__init__.py +31 -0
  12. airbyte_agent_slack/_vendored/connector_sdk/executor/hosted_executor.py +196 -0
  13. airbyte_agent_slack/_vendored/connector_sdk/executor/local_executor.py +1633 -0
  14. airbyte_agent_slack/_vendored/connector_sdk/executor/models.py +190 -0
  15. airbyte_agent_slack/_vendored/connector_sdk/extensions.py +693 -0
  16. airbyte_agent_slack/_vendored/connector_sdk/http/__init__.py +37 -0
  17. airbyte_agent_slack/_vendored/connector_sdk/http/adapters/__init__.py +9 -0
  18. airbyte_agent_slack/_vendored/connector_sdk/http/adapters/httpx_adapter.py +251 -0
  19. airbyte_agent_slack/_vendored/connector_sdk/http/config.py +98 -0
  20. airbyte_agent_slack/_vendored/connector_sdk/http/exceptions.py +119 -0
  21. airbyte_agent_slack/_vendored/connector_sdk/http/protocols.py +114 -0
  22. airbyte_agent_slack/_vendored/connector_sdk/http/response.py +104 -0
  23. airbyte_agent_slack/_vendored/connector_sdk/http_client.py +686 -0
  24. airbyte_agent_slack/_vendored/connector_sdk/introspection.py +262 -0
  25. airbyte_agent_slack/_vendored/connector_sdk/logging/__init__.py +11 -0
  26. airbyte_agent_slack/_vendored/connector_sdk/logging/logger.py +264 -0
  27. airbyte_agent_slack/_vendored/connector_sdk/logging/types.py +92 -0
  28. airbyte_agent_slack/_vendored/connector_sdk/observability/__init__.py +11 -0
  29. airbyte_agent_slack/_vendored/connector_sdk/observability/config.py +179 -0
  30. airbyte_agent_slack/_vendored/connector_sdk/observability/models.py +19 -0
  31. airbyte_agent_slack/_vendored/connector_sdk/observability/redactor.py +81 -0
  32. airbyte_agent_slack/_vendored/connector_sdk/observability/session.py +103 -0
  33. airbyte_agent_slack/_vendored/connector_sdk/performance/__init__.py +6 -0
  34. airbyte_agent_slack/_vendored/connector_sdk/performance/instrumentation.py +57 -0
  35. airbyte_agent_slack/_vendored/connector_sdk/performance/metrics.py +93 -0
  36. airbyte_agent_slack/_vendored/connector_sdk/schema/__init__.py +75 -0
  37. airbyte_agent_slack/_vendored/connector_sdk/schema/base.py +161 -0
  38. airbyte_agent_slack/_vendored/connector_sdk/schema/components.py +239 -0
  39. airbyte_agent_slack/_vendored/connector_sdk/schema/connector.py +120 -0
  40. airbyte_agent_slack/_vendored/connector_sdk/schema/extensions.py +109 -0
  41. airbyte_agent_slack/_vendored/connector_sdk/schema/operations.py +146 -0
  42. airbyte_agent_slack/_vendored/connector_sdk/schema/security.py +223 -0
  43. airbyte_agent_slack/_vendored/connector_sdk/secrets.py +182 -0
  44. airbyte_agent_slack/_vendored/connector_sdk/telemetry/__init__.py +10 -0
  45. airbyte_agent_slack/_vendored/connector_sdk/telemetry/config.py +32 -0
  46. airbyte_agent_slack/_vendored/connector_sdk/telemetry/events.py +59 -0
  47. airbyte_agent_slack/_vendored/connector_sdk/telemetry/tracker.py +155 -0
  48. airbyte_agent_slack/_vendored/connector_sdk/types.py +245 -0
  49. airbyte_agent_slack/_vendored/connector_sdk/utils.py +60 -0
  50. airbyte_agent_slack/_vendored/connector_sdk/validation.py +822 -0
  51. airbyte_agent_slack/connector.py +620 -0
  52. airbyte_agent_slack/connector_model.py +2124 -0
  53. airbyte_agent_slack/models.py +394 -0
  54. airbyte_agent_slack/types.py +56 -0
  55. airbyte_agent_slack-0.1.0.dist-info/METADATA +128 -0
  56. airbyte_agent_slack-0.1.0.dist-info/RECORD +57 -0
  57. airbyte_agent_slack-0.1.0.dist-info/WHEEL +4 -0
@@ -0,0 +1,394 @@
1
+ """
2
+ Pydantic models for slack connector.
3
+
4
+ This module contains Pydantic models used for authentication configuration
5
+ and response envelope types.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from pydantic import BaseModel, ConfigDict, Field
11
+ from typing import TypeVar, Generic, Union, Any
12
+
13
+ # Authentication configuration - multiple options available
14
+
15
+ class SlackTokenAuthenticationAuthConfig(BaseModel):
16
+ """Token Authentication"""
17
+
18
+ model_config = ConfigDict(extra="forbid")
19
+
20
+ access_token: str
21
+ """Your Slack Bot Token (xoxb-) or User Token (xoxp-)"""
22
+
23
+ class SlackOauth20AuthenticationAuthConfig(BaseModel):
24
+ """OAuth 2.0 Authentication"""
25
+
26
+ model_config = ConfigDict(extra="forbid")
27
+
28
+ client_id: str
29
+ """Your Slack App's Client ID"""
30
+ client_secret: str
31
+ """Your Slack App's Client Secret"""
32
+ access_token: str
33
+ """OAuth access token (bot token from oauth.v2.access response)"""
34
+
35
+ SlackAuthConfig = SlackTokenAuthenticationAuthConfig | SlackOauth20AuthenticationAuthConfig
36
+
37
+ # ===== RESPONSE TYPE DEFINITIONS (PYDANTIC) =====
38
+
39
+ class User(BaseModel):
40
+ """Slack user object"""
41
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
42
+
43
+ id: Union[str, Any] = Field(default=None)
44
+ team_id: Union[str | None, Any] = Field(default=None)
45
+ name: Union[str | None, Any] = Field(default=None)
46
+ deleted: Union[bool | None, Any] = Field(default=None)
47
+ color: Union[str | None, Any] = Field(default=None)
48
+ real_name: Union[str | None, Any] = Field(default=None)
49
+ tz: Union[str | None, Any] = Field(default=None)
50
+ tz_label: Union[str | None, Any] = Field(default=None)
51
+ tz_offset: Union[int | None, Any] = Field(default=None)
52
+ profile: Union[Any, Any] = Field(default=None)
53
+ is_admin: Union[bool | None, Any] = Field(default=None)
54
+ is_owner: Union[bool | None, Any] = Field(default=None)
55
+ is_primary_owner: Union[bool | None, Any] = Field(default=None)
56
+ is_restricted: Union[bool | None, Any] = Field(default=None)
57
+ is_ultra_restricted: Union[bool | None, Any] = Field(default=None)
58
+ is_bot: Union[bool | None, Any] = Field(default=None)
59
+ is_app_user: Union[bool | None, Any] = Field(default=None)
60
+ updated: Union[int | None, Any] = Field(default=None)
61
+ is_email_confirmed: Union[bool | None, Any] = Field(default=None)
62
+ who_can_share_contact_card: Union[str | None, Any] = Field(default=None)
63
+
64
+ class UserProfile(BaseModel):
65
+ """User profile information"""
66
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
67
+
68
+ title: Union[str | None, Any] = Field(default=None)
69
+ phone: Union[str | None, Any] = Field(default=None)
70
+ skype: Union[str | None, Any] = Field(default=None)
71
+ real_name: Union[str | None, Any] = Field(default=None)
72
+ real_name_normalized: Union[str | None, Any] = Field(default=None)
73
+ display_name: Union[str | None, Any] = Field(default=None)
74
+ display_name_normalized: Union[str | None, Any] = Field(default=None)
75
+ status_text: Union[str | None, Any] = Field(default=None)
76
+ status_emoji: Union[str | None, Any] = Field(default=None)
77
+ status_expiration: Union[int | None, Any] = Field(default=None)
78
+ avatar_hash: Union[str | None, Any] = Field(default=None)
79
+ first_name: Union[str | None, Any] = Field(default=None)
80
+ last_name: Union[str | None, Any] = Field(default=None)
81
+ email: Union[str | None, Any] = Field(default=None)
82
+ image_24: Union[str | None, Any] = Field(default=None)
83
+ image_32: Union[str | None, Any] = Field(default=None)
84
+ image_48: Union[str | None, Any] = Field(default=None)
85
+ image_72: Union[str | None, Any] = Field(default=None)
86
+ image_192: Union[str | None, Any] = Field(default=None)
87
+ image_512: Union[str | None, Any] = Field(default=None)
88
+ team: Union[str | None, Any] = Field(default=None)
89
+
90
+ class ResponseMetadata(BaseModel):
91
+ """Response metadata including pagination"""
92
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
93
+
94
+ next_cursor: Union[str | None, Any] = Field(default=None)
95
+
96
+ class UsersListResponse(BaseModel):
97
+ """Response containing list of users"""
98
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
99
+
100
+ ok: Union[bool, Any] = Field(default=None)
101
+ members: Union[list[User], Any] = Field(default=None)
102
+ cache_ts: Union[int | None, Any] = Field(default=None)
103
+ response_metadata: Union[ResponseMetadata, Any] = Field(default=None)
104
+
105
+ class UserResponse(BaseModel):
106
+ """Response containing single user"""
107
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
108
+
109
+ ok: Union[bool, Any] = Field(default=None)
110
+ user: Union[User, Any] = Field(default=None)
111
+
112
+ class Channel(BaseModel):
113
+ """Slack channel object"""
114
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
115
+
116
+ id: Union[str, Any] = Field(default=None)
117
+ name: Union[str | None, Any] = Field(default=None)
118
+ is_channel: Union[bool | None, Any] = Field(default=None)
119
+ is_group: Union[bool | None, Any] = Field(default=None)
120
+ is_im: Union[bool | None, Any] = Field(default=None)
121
+ is_mpim: Union[bool | None, Any] = Field(default=None)
122
+ is_private: Union[bool | None, Any] = Field(default=None)
123
+ created: Union[int | None, Any] = Field(default=None)
124
+ is_archived: Union[bool | None, Any] = Field(default=None)
125
+ is_general: Union[bool | None, Any] = Field(default=None)
126
+ unlinked: Union[int | None, Any] = Field(default=None)
127
+ name_normalized: Union[str | None, Any] = Field(default=None)
128
+ is_shared: Union[bool | None, Any] = Field(default=None)
129
+ is_org_shared: Union[bool | None, Any] = Field(default=None)
130
+ is_pending_ext_shared: Union[bool | None, Any] = Field(default=None)
131
+ pending_shared: Union[list[str] | None, Any] = Field(default=None)
132
+ context_team_id: Union[str | None, Any] = Field(default=None)
133
+ updated: Union[int | None, Any] = Field(default=None)
134
+ creator: Union[str | None, Any] = Field(default=None)
135
+ is_ext_shared: Union[bool | None, Any] = Field(default=None)
136
+ shared_team_ids: Union[list[str] | None, Any] = Field(default=None)
137
+ pending_connected_team_ids: Union[list[str] | None, Any] = Field(default=None)
138
+ is_member: Union[bool | None, Any] = Field(default=None)
139
+ topic: Union[Any, Any] = Field(default=None)
140
+ purpose: Union[Any, Any] = Field(default=None)
141
+ previous_names: Union[list[str] | None, Any] = Field(default=None)
142
+ num_members: Union[int | None, Any] = Field(default=None)
143
+ parent_conversation: Union[str | None, Any] = Field(default=None)
144
+ properties: Union[dict[str, Any] | None, Any] = Field(default=None)
145
+ is_thread_only: Union[bool | None, Any] = Field(default=None)
146
+ is_read_only: Union[bool | None, Any] = Field(default=None)
147
+
148
+ class ChannelTopic(BaseModel):
149
+ """Channel topic information"""
150
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
151
+
152
+ value: Union[str | None, Any] = Field(default=None)
153
+ creator: Union[str | None, Any] = Field(default=None)
154
+ last_set: Union[int | None, Any] = Field(default=None)
155
+
156
+ class ChannelPurpose(BaseModel):
157
+ """Channel purpose information"""
158
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
159
+
160
+ value: Union[str | None, Any] = Field(default=None)
161
+ creator: Union[str | None, Any] = Field(default=None)
162
+ last_set: Union[int | None, Any] = Field(default=None)
163
+
164
+ class ChannelsListResponse(BaseModel):
165
+ """Response containing list of channels"""
166
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
167
+
168
+ ok: Union[bool, Any] = Field(default=None)
169
+ channels: Union[list[Channel], Any] = Field(default=None)
170
+ response_metadata: Union[ResponseMetadata, Any] = Field(default=None)
171
+
172
+ class ChannelResponse(BaseModel):
173
+ """Response containing single channel"""
174
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
175
+
176
+ ok: Union[bool, Any] = Field(default=None)
177
+ channel: Union[Channel, Any] = Field(default=None)
178
+
179
+ class File(BaseModel):
180
+ """File object"""
181
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
182
+
183
+ id: Union[str | None, Any] = Field(default=None)
184
+ name: Union[str | None, Any] = Field(default=None)
185
+ title: Union[str | None, Any] = Field(default=None)
186
+ mimetype: Union[str | None, Any] = Field(default=None)
187
+ filetype: Union[str | None, Any] = Field(default=None)
188
+ pretty_type: Union[str | None, Any] = Field(default=None)
189
+ user: Union[str | None, Any] = Field(default=None)
190
+ size: Union[int | None, Any] = Field(default=None)
191
+ mode: Union[str | None, Any] = Field(default=None)
192
+ is_external: Union[bool | None, Any] = Field(default=None)
193
+ external_type: Union[str | None, Any] = Field(default=None)
194
+ is_public: Union[bool | None, Any] = Field(default=None)
195
+ public_url_shared: Union[bool | None, Any] = Field(default=None)
196
+ url_private: Union[str | None, Any] = Field(default=None)
197
+ url_private_download: Union[str | None, Any] = Field(default=None)
198
+ permalink: Union[str | None, Any] = Field(default=None)
199
+ permalink_public: Union[str | None, Any] = Field(default=None)
200
+ created: Union[int | None, Any] = Field(default=None)
201
+ timestamp: Union[int | None, Any] = Field(default=None)
202
+
203
+ class Attachment(BaseModel):
204
+ """Message attachment"""
205
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
206
+
207
+ id: Union[int | None, Any] = Field(default=None)
208
+ fallback: Union[str | None, Any] = Field(default=None)
209
+ color: Union[str | None, Any] = Field(default=None)
210
+ pretext: Union[str | None, Any] = Field(default=None)
211
+ author_name: Union[str | None, Any] = Field(default=None)
212
+ author_link: Union[str | None, Any] = Field(default=None)
213
+ author_icon: Union[str | None, Any] = Field(default=None)
214
+ title: Union[str | None, Any] = Field(default=None)
215
+ title_link: Union[str | None, Any] = Field(default=None)
216
+ text: Union[str | None, Any] = Field(default=None)
217
+ fields: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
218
+ image_url: Union[str | None, Any] = Field(default=None)
219
+ thumb_url: Union[str | None, Any] = Field(default=None)
220
+ footer: Union[str | None, Any] = Field(default=None)
221
+ footer_icon: Union[str | None, Any] = Field(default=None)
222
+ ts: Union[Any, Any] = Field(default=None)
223
+
224
+ class Reaction(BaseModel):
225
+ """Message reaction"""
226
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
227
+
228
+ name: Union[str | None, Any] = Field(default=None)
229
+ users: Union[list[str] | None, Any] = Field(default=None)
230
+ count: Union[int | None, Any] = Field(default=None)
231
+
232
+ class Message(BaseModel):
233
+ """Slack message object"""
234
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
235
+
236
+ type: Union[str | None, Any] = Field(default=None)
237
+ subtype: Union[str | None, Any] = Field(default=None)
238
+ ts: Union[str, Any] = Field(default=None)
239
+ user: Union[str | None, Any] = Field(default=None)
240
+ text: Union[str | None, Any] = Field(default=None)
241
+ thread_ts: Union[str | None, Any] = Field(default=None)
242
+ reply_count: Union[int | None, Any] = Field(default=None)
243
+ reply_users_count: Union[int | None, Any] = Field(default=None)
244
+ latest_reply: Union[str | None, Any] = Field(default=None)
245
+ reply_users: Union[list[str] | None, Any] = Field(default=None)
246
+ is_locked: Union[bool | None, Any] = Field(default=None)
247
+ subscribed: Union[bool | None, Any] = Field(default=None)
248
+ reactions: Union[list[Reaction] | None, Any] = Field(default=None)
249
+ attachments: Union[list[Attachment] | None, Any] = Field(default=None)
250
+ blocks: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
251
+ files: Union[list[File] | None, Any] = Field(default=None)
252
+ edited: Union[Any, Any] = Field(default=None)
253
+ bot_id: Union[str | None, Any] = Field(default=None)
254
+ bot_profile: Union[Any, Any] = Field(default=None)
255
+ app_id: Union[str | None, Any] = Field(default=None)
256
+ team: Union[str | None, Any] = Field(default=None)
257
+
258
+ class Thread(BaseModel):
259
+ """Slack thread reply message object"""
260
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
261
+
262
+ type: Union[str | None, Any] = Field(default=None)
263
+ subtype: Union[str | None, Any] = Field(default=None)
264
+ ts: Union[str, Any] = Field(default=None)
265
+ user: Union[str | None, Any] = Field(default=None)
266
+ text: Union[str | None, Any] = Field(default=None)
267
+ thread_ts: Union[str | None, Any] = Field(default=None)
268
+ parent_user_id: Union[str | None, Any] = Field(default=None)
269
+ reply_count: Union[int | None, Any] = Field(default=None)
270
+ reply_users_count: Union[int | None, Any] = Field(default=None)
271
+ latest_reply: Union[str | None, Any] = Field(default=None)
272
+ reply_users: Union[list[str] | None, Any] = Field(default=None)
273
+ is_locked: Union[bool | None, Any] = Field(default=None)
274
+ subscribed: Union[bool | None, Any] = Field(default=None)
275
+ reactions: Union[list[Reaction] | None, Any] = Field(default=None)
276
+ attachments: Union[list[Attachment] | None, Any] = Field(default=None)
277
+ blocks: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
278
+ files: Union[list[File] | None, Any] = Field(default=None)
279
+ edited: Union[Any, Any] = Field(default=None)
280
+ bot_id: Union[str | None, Any] = Field(default=None)
281
+ bot_profile: Union[Any, Any] = Field(default=None)
282
+ app_id: Union[str | None, Any] = Field(default=None)
283
+ team: Union[str | None, Any] = Field(default=None)
284
+
285
+ class EditedInfo(BaseModel):
286
+ """Message edit information"""
287
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
288
+
289
+ user: Union[str | None, Any] = Field(default=None)
290
+ ts: Union[str | None, Any] = Field(default=None)
291
+
292
+ class BotProfile(BaseModel):
293
+ """Bot profile information"""
294
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
295
+
296
+ id: Union[str | None, Any] = Field(default=None)
297
+ deleted: Union[bool | None, Any] = Field(default=None)
298
+ name: Union[str | None, Any] = Field(default=None)
299
+ updated: Union[int | None, Any] = Field(default=None)
300
+ app_id: Union[str | None, Any] = Field(default=None)
301
+ team_id: Union[str | None, Any] = Field(default=None)
302
+
303
+ class MessagesListResponse(BaseModel):
304
+ """Response containing list of messages"""
305
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
306
+
307
+ ok: Union[bool, Any] = Field(default=None)
308
+ messages: Union[list[Message], Any] = Field(default=None)
309
+ has_more: Union[bool | None, Any] = Field(default=None)
310
+ pin_count: Union[int | None, Any] = Field(default=None)
311
+ response_metadata: Union[ResponseMetadata, Any] = Field(default=None)
312
+
313
+ class ThreadRepliesResponse(BaseModel):
314
+ """Response containing thread replies"""
315
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
316
+
317
+ ok: Union[bool, Any] = Field(default=None)
318
+ messages: Union[list[Thread], Any] = Field(default=None)
319
+ has_more: Union[bool | None, Any] = Field(default=None)
320
+ response_metadata: Union[ResponseMetadata, Any] = Field(default=None)
321
+
322
+ # ===== METADATA TYPE DEFINITIONS (PYDANTIC) =====
323
+ # Meta types for operations that extract metadata (e.g., pagination info)
324
+
325
+ class UsersListResultMeta(BaseModel):
326
+ """Metadata for users.Action.LIST operation"""
327
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
328
+
329
+ next_cursor: Union[str | None, Any] = Field(default=None)
330
+
331
+ class ChannelsListResultMeta(BaseModel):
332
+ """Metadata for channels.Action.LIST operation"""
333
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
334
+
335
+ next_cursor: Union[str | None, Any] = Field(default=None)
336
+
337
+ class ChannelMessagesListResultMeta(BaseModel):
338
+ """Metadata for channel_messages.Action.LIST operation"""
339
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
340
+
341
+ next_cursor: Union[str | None, Any] = Field(default=None)
342
+ has_more: Union[bool | None, Any] = Field(default=None)
343
+
344
+ class ThreadsListResultMeta(BaseModel):
345
+ """Metadata for threads.Action.LIST operation"""
346
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
347
+
348
+ next_cursor: Union[str | None, Any] = Field(default=None)
349
+ has_more: Union[bool | None, Any] = Field(default=None)
350
+
351
+ # ===== RESPONSE ENVELOPE MODELS =====
352
+
353
+ # Type variables for generic envelope models
354
+ T = TypeVar('T')
355
+ S = TypeVar('S')
356
+
357
+
358
+ class SlackExecuteResult(BaseModel, Generic[T]):
359
+ """Response envelope with data only.
360
+
361
+ Used for actions that return data without metadata.
362
+ """
363
+ model_config = ConfigDict(extra="forbid")
364
+
365
+ data: T
366
+ """Response data containing the result of the action."""
367
+
368
+
369
+ class SlackExecuteResultWithMeta(SlackExecuteResult[T], Generic[T, S]):
370
+ """Response envelope with data and metadata.
371
+
372
+ Used for actions that return both data and metadata (e.g., pagination info).
373
+ """
374
+ meta: S
375
+ """Metadata about the response (e.g., pagination cursors, record counts)."""
376
+
377
+
378
+ # ===== OPERATION RESULT TYPE ALIASES =====
379
+
380
+ # Concrete type aliases for each operation result.
381
+ # These provide simpler, more readable type annotations than using the generic forms.
382
+
383
+ UsersListResult = SlackExecuteResultWithMeta[list[User], UsersListResultMeta]
384
+ """Result type for users.list operation with data and metadata."""
385
+
386
+ ChannelsListResult = SlackExecuteResultWithMeta[list[Channel], ChannelsListResultMeta]
387
+ """Result type for channels.list operation with data and metadata."""
388
+
389
+ ChannelMessagesListResult = SlackExecuteResultWithMeta[list[Message], ChannelMessagesListResultMeta]
390
+ """Result type for channel_messages.list operation with data and metadata."""
391
+
392
+ ThreadsListResult = SlackExecuteResultWithMeta[list[Thread], ThreadsListResultMeta]
393
+ """Result type for threads.list operation with data and metadata."""
394
+
@@ -0,0 +1,56 @@
1
+ """
2
+ Type definitions for slack connector.
3
+ """
4
+ from __future__ import annotations
5
+
6
+ # Use typing_extensions.TypedDict for Pydantic compatibility
7
+ try:
8
+ from typing_extensions import TypedDict, NotRequired
9
+ except ImportError:
10
+ from typing import TypedDict, NotRequired # type: ignore[attr-defined]
11
+
12
+
13
+
14
+ # ===== NESTED PARAM TYPE DEFINITIONS =====
15
+ # Nested parameter schemas discovered during parameter extraction
16
+
17
+ # ===== OPERATION PARAMS TYPE DEFINITIONS =====
18
+
19
+ class UsersListParams(TypedDict):
20
+ """Parameters for users.list operation"""
21
+ cursor: NotRequired[str]
22
+ limit: NotRequired[int]
23
+
24
+ class UsersGetParams(TypedDict):
25
+ """Parameters for users.get operation"""
26
+ user: str
27
+
28
+ class ChannelsListParams(TypedDict):
29
+ """Parameters for channels.list operation"""
30
+ cursor: NotRequired[str]
31
+ limit: NotRequired[int]
32
+ types: NotRequired[str]
33
+ exclude_archived: NotRequired[bool]
34
+
35
+ class ChannelsGetParams(TypedDict):
36
+ """Parameters for channels.get operation"""
37
+ channel: str
38
+
39
+ class ChannelMessagesListParams(TypedDict):
40
+ """Parameters for channel_messages.list operation"""
41
+ channel: str
42
+ cursor: NotRequired[str]
43
+ limit: NotRequired[int]
44
+ oldest: NotRequired[str]
45
+ latest: NotRequired[str]
46
+ inclusive: NotRequired[bool]
47
+
48
+ class ThreadsListParams(TypedDict):
49
+ """Parameters for threads.list operation"""
50
+ channel: str
51
+ ts: NotRequired[str]
52
+ cursor: NotRequired[str]
53
+ limit: NotRequired[int]
54
+ oldest: NotRequired[str]
55
+ latest: NotRequired[str]
56
+ inclusive: NotRequired[bool]
@@ -0,0 +1,128 @@
1
+ Metadata-Version: 2.4
2
+ Name: airbyte-agent-slack
3
+ Version: 0.1.0
4
+ Summary: Airbyte Slack Connector for AI platforms
5
+ Project-URL: Homepage, https://github.com/airbytehq/airbyte-agent-connectors
6
+ Project-URL: Documentation, https://docs.airbyte.com/ai-agents/
7
+ Project-URL: Repository, https://github.com/airbytehq/airbyte-agent-connectors
8
+ Project-URL: Issues, https://github.com/airbytehq/airbyte-agent-connectors/issues
9
+ Author-email: Airbyte <contact@airbyte.io>
10
+ License: Elastic-2.0
11
+ Keywords: agent,ai,airbyte,api,connector,data-integration,llm,mcp,slack
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: Other/Proprietary License
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
19
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
+ Classifier: Typing :: Typed
21
+ Requires-Python: >=3.13
22
+ Requires-Dist: httpx>=0.24.0
23
+ Requires-Dist: jinja2>=3.0.0
24
+ Requires-Dist: jsonpath-ng>=1.6.1
25
+ Requires-Dist: jsonref>=1.1.0
26
+ Requires-Dist: opentelemetry-api>=1.37.0
27
+ Requires-Dist: opentelemetry-sdk>=1.37.0
28
+ Requires-Dist: pydantic>=2.0.0
29
+ Requires-Dist: python-dotenv>=1.0.0
30
+ Requires-Dist: pyyaml>=6.0
31
+ Requires-Dist: segment-analytics-python>=2.2.0
32
+ Description-Content-Type: text/markdown
33
+
34
+ # Slack agent connector
35
+
36
+ Slack is a business communication platform that offers messaging, file sharing, and integrations
37
+ with other tools. This connector provides access to users, channels, channel members, channel
38
+ messages, and threads for workspace analytics and communication insights.
39
+
40
+
41
+ ## Example questions
42
+
43
+ The Slack connector is optimized to handle prompts like these.
44
+
45
+ - List all users in my Slack workspace
46
+ - Show me all public channels
47
+ - Who are the members of channel \{channel_id\}?
48
+ - Get messages from channel \{channel_id\}
49
+ - Show me the thread replies for message \{ts\} in channel \{channel_id\}
50
+ - List all channels I have access to
51
+ - Get user details for user \{user_id\}
52
+ - What messages were posted in channel \{channel_id\} last week?
53
+ - Show me the conversation history for channel \{channel_id\}
54
+ - List channel members for the general channel
55
+
56
+ ## Unsupported questions
57
+
58
+ The Slack connector isn't currently able to handle prompts like these.
59
+
60
+ - Create a new channel
61
+ - Delete a message
62
+ - Send a message to a channel
63
+ - Update a channel topic
64
+ - Invite a user to a channel
65
+ - Archive a channel
66
+
67
+ ## Installation
68
+
69
+ ```bash
70
+ uv pip install airbyte-agent-slack
71
+ ```
72
+
73
+ ## Usage
74
+
75
+ This connector supports multiple authentication methods:
76
+
77
+ ### Token Authentication
78
+
79
+ ```python
80
+ from airbyte_agent_slack import SlackConnector
81
+ from airbyte_agent_slack.models import SlackTokenAuthenticationAuthConfig
82
+
83
+ connector = SlackConnector(
84
+ auth_config=SlackTokenAuthenticationAuthConfig(
85
+ access_token="..."
86
+ )
87
+ )
88
+ result = await connector.users.list()
89
+ ```
90
+
91
+ ### OAuth 2.0 Authentication
92
+
93
+ ```python
94
+ from airbyte_agent_slack import SlackConnector
95
+ from airbyte_agent_slack.models import SlackOauth20AuthenticationAuthConfig
96
+
97
+ connector = SlackConnector(
98
+ auth_config=SlackOauth20AuthenticationAuthConfig(
99
+ client_id="...",
100
+ client_secret="...",
101
+ access_token="..."
102
+ )
103
+ )
104
+ result = await connector.users.list()
105
+ ```
106
+
107
+
108
+ ## Full documentation
109
+
110
+ This connector supports the following entities and actions.
111
+
112
+ | Entity | Actions |
113
+ |--------|---------|
114
+ | Users | [List](./REFERENCE.md#users-list), [Get](./REFERENCE.md#users-get) |
115
+ | Channels | [List](./REFERENCE.md#channels-list), [Get](./REFERENCE.md#channels-get) |
116
+ | Channel Messages | [List](./REFERENCE.md#channel-messages-list) |
117
+ | Threads | [List](./REFERENCE.md#threads-list) |
118
+
119
+
120
+ For detailed documentation on available actions and parameters, see this connector's [full reference documentation](./REFERENCE.md).
121
+
122
+ For the service's official API docs, see the [Slack API reference](https://api.slack.com/methods).
123
+
124
+ ## Version information
125
+
126
+ - **Package version:** 0.1.0
127
+ - **Connector version:** 0.1.1
128
+ - **Generated with Connector SDK commit SHA:** 8b64ece519289f4e06c6df90ed5a254b81df1ddd
@@ -0,0 +1,57 @@
1
+ airbyte_agent_slack/__init__.py,sha256=GUkjWNJU2sOBN_WD_3YrMFtXAv6rABFyFnu-xa0dU4w,1827
2
+ airbyte_agent_slack/connector.py,sha256=5U0F8qNoT7UDS6MZ0_BidNt7p1wI73YKNqUxMlZZ-Po,20012
3
+ airbyte_agent_slack/connector_model.py,sha256=4s3vSwHde2emQI_kkIhL8JMkQoJlFqUbFKDU6dGUqD8,126566
4
+ airbyte_agent_slack/models.py,sha256=HVzFVaQjGtOsUikQQdoS3_DyT2dbgAPjtucV2-J9BiQ,17688
5
+ airbyte_agent_slack/types.py,sha256=0B5u0udAnf6wxK8nUpzgk1opmO8dkIaOupJBltqXsVs,1550
6
+ airbyte_agent_slack/_vendored/__init__.py,sha256=ILl7AHXMui__swyrjxrh9yRa4dLiwBvV6axPWFWty80,38
7
+ airbyte_agent_slack/_vendored/connector_sdk/__init__.py,sha256=T5o7roU6NSpH-lCAGZ338sE5dlh4ZU6i6IkeG1zpems,1949
8
+ airbyte_agent_slack/_vendored/connector_sdk/auth_strategies.py,sha256=BdjAzFRTwXCmLFqYWqZ4Dx9RsqtI7pAkw-8NynSK4sQ,39914
9
+ airbyte_agent_slack/_vendored/connector_sdk/auth_template.py,sha256=nju4jqlFC_KI82ILNumNIyiUtRJcy7J94INIZ0QraI4,4454
10
+ airbyte_agent_slack/_vendored/connector_sdk/connector_model_loader.py,sha256=Cx9wPhKwWfzkc8i63IevL0EsN3iWUl_OA-_jA9EKNcE,34877
11
+ airbyte_agent_slack/_vendored/connector_sdk/constants.py,sha256=AtzOvhDMWbRJgpsQNWl5tkogHD6mWgEY668PgRmgtOY,2737
12
+ airbyte_agent_slack/_vendored/connector_sdk/exceptions.py,sha256=ss5MGv9eVPmsbLcLWetuu3sDmvturwfo6Pw3M37Oq5k,481
13
+ airbyte_agent_slack/_vendored/connector_sdk/extensions.py,sha256=XWRRoJOOrwUHSKbuQt5DU7CCu8ePzhd_HuP7c_uD77w,21376
14
+ airbyte_agent_slack/_vendored/connector_sdk/http_client.py,sha256=NdccrrBHI5rW56XnXcP54arCwywIVKnMeSQPas6KlOM,27466
15
+ airbyte_agent_slack/_vendored/connector_sdk/introspection.py,sha256=2CyKXZHT74-1Id97uw1RLeyOi6TV24_hoNbQ6-6y7uI,10335
16
+ airbyte_agent_slack/_vendored/connector_sdk/secrets.py,sha256=J9ezMu4xNnLW11xY5RCre6DHP7YMKZCqwGJfk7ufHAM,6855
17
+ airbyte_agent_slack/_vendored/connector_sdk/types.py,sha256=CStkOsLtmZZdXylkdCsbYORDzughxygt1-Ucma0j-qE,8287
18
+ airbyte_agent_slack/_vendored/connector_sdk/utils.py,sha256=G4LUXOC2HzPoND2v4tQW68R9uuPX9NQyCjaGxb7Kpl0,1958
19
+ airbyte_agent_slack/_vendored/connector_sdk/validation.py,sha256=CDjCux1eg35a0Y4BegSivzIwZjiTqOxYWotWNLqTSVU,31792
20
+ airbyte_agent_slack/_vendored/connector_sdk/cloud_utils/__init__.py,sha256=4799Hv9f2zxDVj1aLyQ8JpTEuFTp_oOZMRz-NZCdBJg,134
21
+ airbyte_agent_slack/_vendored/connector_sdk/cloud_utils/client.py,sha256=YxdRpQr9XjDzih6csSseBVGn9kfMtaqbOCXP0TPuzFY,7189
22
+ airbyte_agent_slack/_vendored/connector_sdk/executor/__init__.py,sha256=EmG9YQNAjSuYCVB4D5VoLm4qpD1KfeiiOf7bpALj8p8,702
23
+ airbyte_agent_slack/_vendored/connector_sdk/executor/hosted_executor.py,sha256=ydHcG-biRS1ITT5ELwPShdJW-KYpvK--Fos1ipNgHho,6995
24
+ airbyte_agent_slack/_vendored/connector_sdk/executor/local_executor.py,sha256=CMuknflYNY6_f83xrxvqewfI52MLYdPin3Rvz6HS3wU,67610
25
+ airbyte_agent_slack/_vendored/connector_sdk/executor/models.py,sha256=lYVT_bNcw-PoIks4WHNyl2VY-lJVf2FntzINSOBIheE,5845
26
+ airbyte_agent_slack/_vendored/connector_sdk/http/__init__.py,sha256=y8fbzZn-3yV9OxtYz8Dy6FFGI5v6TOqADd1G3xHH3Hw,911
27
+ airbyte_agent_slack/_vendored/connector_sdk/http/config.py,sha256=6J7YIIwHC6sRu9i-yKa5XvArwK2KU60rlnmxzDZq3lw,3283
28
+ airbyte_agent_slack/_vendored/connector_sdk/http/exceptions.py,sha256=eYdYmxqcwA6pgrSoRXNfR6_nRBGRH6upp2-r1jcKaZo,3586
29
+ airbyte_agent_slack/_vendored/connector_sdk/http/protocols.py,sha256=eV7NbBIQOcPLw-iu8mtkV2zCVgScDwP0ek1SbPNQo0g,3323
30
+ airbyte_agent_slack/_vendored/connector_sdk/http/response.py,sha256=Q-RyM5D0D05ZhmZVJk4hVpmoS8YtyXNOTM5hqBt7rWI,3475
31
+ airbyte_agent_slack/_vendored/connector_sdk/http/adapters/__init__.py,sha256=gjbWdU4LfzUG2PETI0TkfkukdzoCAhpL6FZtIEnkO-s,209
32
+ airbyte_agent_slack/_vendored/connector_sdk/http/adapters/httpx_adapter.py,sha256=dkYhzBWiKBmzWZlc-cRTx50Hb6fy3OI8kOQvXRfS1CQ,8465
33
+ airbyte_agent_slack/_vendored/connector_sdk/logging/__init__.py,sha256=IZoE5yXhwSA0m3xQqh0FiCifjp1sB3S8jnnFPuJLYf8,227
34
+ airbyte_agent_slack/_vendored/connector_sdk/logging/logger.py,sha256=GKm03UgDMNlvGuuH_c07jNcZmUccC3DISG269Ehj1Uo,8084
35
+ airbyte_agent_slack/_vendored/connector_sdk/logging/types.py,sha256=z0UiSdXP_r71mtwWkJydo0InsNpYOMyI7SVutzd2PEo,3172
36
+ airbyte_agent_slack/_vendored/connector_sdk/observability/__init__.py,sha256=ojx1n9vaWCXFFvb3-90Pwtg845trFdV2v6wcCoO75Ko,269
37
+ airbyte_agent_slack/_vendored/connector_sdk/observability/config.py,sha256=uWvRAPHnEusVKviQQncqcpnHKNhoZ4ZoFK6nUOSVClY,5372
38
+ airbyte_agent_slack/_vendored/connector_sdk/observability/models.py,sha256=IRGjlJia28_IU7BMSBb5RHWs47yAOLvE20JIIXHazLY,448
39
+ airbyte_agent_slack/_vendored/connector_sdk/observability/redactor.py,sha256=HRbSwGxsfQYbYlG4QBVvv8Qnw0d4SMowMv0dTFHsHqQ,2361
40
+ airbyte_agent_slack/_vendored/connector_sdk/observability/session.py,sha256=WYRIB3bVz9HhpElkUO9CILCRIrWs9p2MR2hmf8uJm3E,3086
41
+ airbyte_agent_slack/_vendored/connector_sdk/performance/__init__.py,sha256=Sp5fSd1LvtIQkv-fnrKqPsM7-6IWp0sSZSK0mhzal_A,200
42
+ airbyte_agent_slack/_vendored/connector_sdk/performance/instrumentation.py,sha256=_dXvNiqdndIBwDjeDKNViWzn_M5FkSUsMmJtFldrmsM,1504
43
+ airbyte_agent_slack/_vendored/connector_sdk/performance/metrics.py,sha256=FRff7dKt4iwt_A7pxV5n9kAGBR756PC7q8-weWygPSM,2817
44
+ airbyte_agent_slack/_vendored/connector_sdk/schema/__init__.py,sha256=Uymu-QuzGJuMxexBagIvUxpVAigIuIhz3KeBl_Vu4Ko,1638
45
+ airbyte_agent_slack/_vendored/connector_sdk/schema/base.py,sha256=swe27f6sWuuGmG54VAW9K8P5USuhmncpIqAliFcB-OU,4741
46
+ airbyte_agent_slack/_vendored/connector_sdk/schema/components.py,sha256=x3YCM1p2n_xHi50fMeOX0mXUiPqjGlLHs3Go8jXokb0,7895
47
+ airbyte_agent_slack/_vendored/connector_sdk/schema/connector.py,sha256=mSZk1wr2YSdRj9tTRsPAuIlCzd_xZLw-Bzl1sMwE0rE,3731
48
+ airbyte_agent_slack/_vendored/connector_sdk/schema/extensions.py,sha256=0SKtv1WaW2sHaSZF-gi5dI3p0heGbegphjU2PAyIe-M,3277
49
+ airbyte_agent_slack/_vendored/connector_sdk/schema/operations.py,sha256=RpzGtAI4yvAtMHAfMUMcUwgHv_qJojnKlNb75_agUF8,5729
50
+ airbyte_agent_slack/_vendored/connector_sdk/schema/security.py,sha256=zQ9RRuF3LBgLQi_4cItmjXbG_5WKlmCNM3nCil30H90,8470
51
+ airbyte_agent_slack/_vendored/connector_sdk/telemetry/__init__.py,sha256=RaLgkBU4dfxn1LC5Y0Q9rr2PJbrwjxvPgBLmq8_WafE,211
52
+ airbyte_agent_slack/_vendored/connector_sdk/telemetry/config.py,sha256=tLmQwAFD0kP1WyBGWBS3ysaudN9H3e-3EopKZi6cGKg,885
53
+ airbyte_agent_slack/_vendored/connector_sdk/telemetry/events.py,sha256=8Y1NbXiwISX-V_wRofY7PqcwEXD0dLMnntKkY6XFU2s,1328
54
+ airbyte_agent_slack/_vendored/connector_sdk/telemetry/tracker.py,sha256=Ftrk0_ddfM7dZG8hF9xBuPwhbc9D6JZ7Q9qs5o3LEyA,5579
55
+ airbyte_agent_slack-0.1.0.dist-info/METADATA,sha256=Yw5pSHWGdYu58RJSJyIRbM8AqKVrsn8FEWrEqG4dA3U,4158
56
+ airbyte_agent_slack-0.1.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
57
+ airbyte_agent_slack-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.28.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any