managed-deepagents 0.9.6-dev.19 → 0.9.6-dev.20

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 (333) hide show
  1. package/README.md +1075 -37
  2. package/dist/agent-auth.d.ts +1 -1
  3. package/dist/agent-auth.d.ts.map +1 -1
  4. package/dist/agent-auth.js +36 -12
  5. package/dist/agent-auth.js.map +1 -1
  6. package/dist/browser.d.ts +37 -0
  7. package/dist/browser.d.ts.map +1 -0
  8. package/dist/browser.js +31 -0
  9. package/dist/browser.js.map +1 -0
  10. package/dist/channels/actor.d.ts +57 -0
  11. package/dist/channels/actor.d.ts.map +1 -0
  12. package/dist/channels/actor.js +24 -0
  13. package/dist/channels/actor.js.map +1 -0
  14. package/dist/channels/assistant-text.d.ts +29 -0
  15. package/dist/channels/assistant-text.d.ts.map +1 -1
  16. package/dist/channels/assistant-text.js +72 -1
  17. package/dist/channels/assistant-text.js.map +1 -1
  18. package/dist/channels/binding.d.ts +20 -1
  19. package/dist/channels/binding.d.ts.map +1 -1
  20. package/dist/channels/binding.js +44 -11
  21. package/dist/channels/binding.js.map +1 -1
  22. package/dist/channels/delivery.d.ts +51 -0
  23. package/dist/channels/delivery.d.ts.map +1 -0
  24. package/dist/channels/delivery.js +424 -0
  25. package/dist/channels/delivery.js.map +1 -0
  26. package/dist/channels/github/app-setup.d.ts +32 -0
  27. package/dist/channels/github/app-setup.d.ts.map +1 -0
  28. package/dist/channels/github/app-setup.js +146 -0
  29. package/dist/channels/github/app-setup.js.map +1 -0
  30. package/dist/channels/github/connections.d.ts +11 -0
  31. package/dist/channels/github/connections.d.ts.map +1 -0
  32. package/dist/channels/github/connections.js +14 -0
  33. package/dist/channels/github/connections.js.map +1 -0
  34. package/dist/channels/github/index.d.ts +12 -0
  35. package/dist/channels/github/index.d.ts.map +1 -0
  36. package/dist/channels/github/index.js +266 -0
  37. package/dist/channels/github/index.js.map +1 -0
  38. package/dist/channels/github/mentions.d.ts +12 -0
  39. package/dist/channels/github/mentions.d.ts.map +1 -0
  40. package/dist/channels/github/mentions.js +185 -0
  41. package/dist/channels/github/mentions.js.map +1 -0
  42. package/dist/channels/github/schema.d.ts +4165 -0
  43. package/dist/channels/github/schema.d.ts.map +1 -0
  44. package/dist/channels/github/schema.js +221 -0
  45. package/dist/channels/github/schema.js.map +1 -0
  46. package/dist/channels/github/types.d.ts +170 -0
  47. package/dist/channels/github/types.d.ts.map +1 -0
  48. package/dist/channels/github/types.js +2 -0
  49. package/dist/channels/github/types.js.map +1 -0
  50. package/dist/channels/http/endpoint.d.ts +137 -0
  51. package/dist/channels/http/endpoint.d.ts.map +1 -0
  52. package/dist/channels/http/endpoint.js +286 -0
  53. package/dist/channels/http/endpoint.js.map +1 -0
  54. package/dist/channels/http/http.d.ts.map +1 -1
  55. package/dist/channels/http/http.js +439 -65
  56. package/dist/channels/http/http.js.map +1 -1
  57. package/dist/channels/http/index.d.ts +8 -1
  58. package/dist/channels/http/index.d.ts.map +1 -1
  59. package/dist/channels/http/index.js +35 -16
  60. package/dist/channels/http/index.js.map +1 -1
  61. package/dist/channels/http/ingress.d.ts +67 -5
  62. package/dist/channels/http/ingress.d.ts.map +1 -1
  63. package/dist/channels/http/ingress.js +155 -43
  64. package/dist/channels/http/ingress.js.map +1 -1
  65. package/dist/channels/http/provider.d.ts +125 -0
  66. package/dist/channels/http/provider.d.ts.map +1 -0
  67. package/dist/channels/http/provider.js +227 -0
  68. package/dist/channels/http/provider.js.map +1 -0
  69. package/dist/channels/http/studio.d.ts +24 -0
  70. package/dist/channels/http/studio.d.ts.map +1 -0
  71. package/dist/channels/http/studio.js +95 -0
  72. package/dist/channels/http/studio.js.map +1 -0
  73. package/dist/channels/http/threads.d.ts +7 -0
  74. package/dist/channels/http/threads.d.ts.map +1 -0
  75. package/dist/channels/http/threads.js +10 -0
  76. package/dist/channels/http/threads.js.map +1 -0
  77. package/dist/channels/http/types.d.ts +166 -2
  78. package/dist/channels/http/types.d.ts.map +1 -1
  79. package/dist/channels/linear/app-setup.d.ts +29 -0
  80. package/dist/channels/linear/app-setup.d.ts.map +1 -0
  81. package/dist/channels/linear/app-setup.js +102 -0
  82. package/dist/channels/linear/app-setup.js.map +1 -0
  83. package/dist/channels/linear/connections.d.ts +11 -0
  84. package/dist/channels/linear/connections.d.ts.map +1 -0
  85. package/dist/channels/linear/connections.js +14 -0
  86. package/dist/channels/linear/connections.js.map +1 -0
  87. package/dist/channels/linear/graphql.d.ts +57 -0
  88. package/dist/channels/linear/graphql.d.ts.map +1 -0
  89. package/dist/channels/linear/graphql.js +167 -0
  90. package/dist/channels/linear/graphql.js.map +1 -0
  91. package/dist/channels/linear/index.d.ts +13 -0
  92. package/dist/channels/linear/index.d.ts.map +1 -0
  93. package/dist/channels/linear/index.js +457 -0
  94. package/dist/channels/linear/index.js.map +1 -0
  95. package/dist/channels/linear/schema.d.ts +1050 -0
  96. package/dist/channels/linear/schema.d.ts.map +1 -0
  97. package/dist/channels/linear/schema.js +255 -0
  98. package/dist/channels/linear/schema.js.map +1 -0
  99. package/dist/channels/linear/types.d.ts +169 -0
  100. package/dist/channels/linear/types.d.ts.map +1 -0
  101. package/dist/channels/linear/types.js +2 -0
  102. package/dist/channels/linear/types.js.map +1 -0
  103. package/dist/channels/message-schema.d.ts +2 -0
  104. package/dist/channels/message-schema.d.ts.map +1 -1
  105. package/dist/channels/message-schema.js +4 -0
  106. package/dist/channels/message-schema.js.map +1 -1
  107. package/dist/channels/messaging-registry.d.ts +16 -0
  108. package/dist/channels/messaging-registry.d.ts.map +1 -1
  109. package/dist/channels/messaging-registry.js +29 -0
  110. package/dist/channels/messaging-registry.js.map +1 -1
  111. package/dist/channels/reserved-connections.d.ts +12 -0
  112. package/dist/channels/reserved-connections.d.ts.map +1 -0
  113. package/dist/channels/reserved-connections.js +55 -0
  114. package/dist/channels/reserved-connections.js.map +1 -0
  115. package/dist/channels/resolve-user-endpoint.d.ts +34 -0
  116. package/dist/channels/resolve-user-endpoint.d.ts.map +1 -0
  117. package/dist/channels/resolve-user-endpoint.js +51 -0
  118. package/dist/channels/resolve-user-endpoint.js.map +1 -0
  119. package/dist/channels/resolve-user.d.ts +95 -0
  120. package/dist/channels/resolve-user.d.ts.map +1 -0
  121. package/dist/channels/resolve-user.js +143 -0
  122. package/dist/channels/resolve-user.js.map +1 -0
  123. package/dist/channels/run-input.d.ts +88 -0
  124. package/dist/channels/run-input.d.ts.map +1 -0
  125. package/dist/channels/run-input.js +177 -0
  126. package/dist/channels/run-input.js.map +1 -0
  127. package/dist/channels/runtime.d.ts +5 -2
  128. package/dist/channels/runtime.d.ts.map +1 -1
  129. package/dist/channels/runtime.js +19 -10
  130. package/dist/channels/runtime.js.map +1 -1
  131. package/dist/channels/schedule-delivery.d.ts +2 -13
  132. package/dist/channels/schedule-delivery.d.ts.map +1 -1
  133. package/dist/channels/schedule-delivery.js +6 -73
  134. package/dist/channels/schedule-delivery.js.map +1 -1
  135. package/dist/channels/slack/api.d.ts +2 -0
  136. package/dist/channels/slack/api.d.ts.map +1 -1
  137. package/dist/channels/slack/api.js +6 -0
  138. package/dist/channels/slack/api.js.map +1 -1
  139. package/dist/channels/slack/connections.d.ts +6 -0
  140. package/dist/channels/slack/connections.d.ts.map +1 -0
  141. package/dist/channels/slack/connections.js +6 -0
  142. package/dist/channels/slack/connections.js.map +1 -0
  143. package/dist/channels/slack/events.d.ts +278 -0
  144. package/dist/channels/slack/events.d.ts.map +1 -0
  145. package/dist/channels/slack/events.js +235 -0
  146. package/dist/channels/slack/events.js.map +1 -0
  147. package/dist/channels/slack/files.d.ts.map +1 -1
  148. package/dist/channels/slack/files.js +2 -3
  149. package/dist/channels/slack/files.js.map +1 -1
  150. package/dist/channels/slack/index.d.ts +90 -2
  151. package/dist/channels/slack/index.d.ts.map +1 -1
  152. package/dist/channels/slack/index.js +188 -6
  153. package/dist/channels/slack/index.js.map +1 -1
  154. package/dist/channels/slack/message-content.d.ts.map +1 -1
  155. package/dist/channels/slack/message-content.js +23 -28
  156. package/dist/channels/slack/message-content.js.map +1 -1
  157. package/dist/channels/slack/status.d.ts +76 -0
  158. package/dist/channels/slack/status.d.ts.map +1 -0
  159. package/dist/channels/slack/status.js +427 -0
  160. package/dist/channels/slack/status.js.map +1 -0
  161. package/dist/channels/source-providers.js +1 -1
  162. package/dist/channels/source-providers.js.map +1 -1
  163. package/dist/channels/trigger/client.d.ts.map +1 -1
  164. package/dist/channels/trigger/client.js +6 -9
  165. package/dist/channels/trigger/client.js.map +1 -1
  166. package/dist/channels/trigger/conversation.d.ts +11 -0
  167. package/dist/channels/trigger/conversation.d.ts.map +1 -0
  168. package/dist/channels/trigger/conversation.js +72 -0
  169. package/dist/channels/trigger/conversation.js.map +1 -0
  170. package/dist/channels/trigger/http.d.ts +130 -4
  171. package/dist/channels/trigger/http.d.ts.map +1 -1
  172. package/dist/channels/trigger/http.js +408 -78
  173. package/dist/channels/trigger/http.js.map +1 -1
  174. package/dist/channels/trigger/ingress.d.ts +70 -1
  175. package/dist/channels/trigger/ingress.d.ts.map +1 -1
  176. package/dist/channels/trigger/ingress.js +130 -19
  177. package/dist/channels/trigger/ingress.js.map +1 -1
  178. package/dist/channels/trigger/transport.d.ts +10 -0
  179. package/dist/channels/trigger/transport.d.ts.map +1 -1
  180. package/dist/channels/trigger/transport.js +25 -9
  181. package/dist/channels/trigger/transport.js.map +1 -1
  182. package/dist/channels/trigger/types.d.ts +92 -3
  183. package/dist/channels/trigger/types.d.ts.map +1 -1
  184. package/dist/channels/trigger/types.js +37 -0
  185. package/dist/channels/trigger/types.js.map +1 -1
  186. package/dist/channels/types.d.ts +53 -4
  187. package/dist/channels/types.d.ts.map +1 -1
  188. package/dist/channels/types.js +2 -0
  189. package/dist/channels/types.js.map +1 -1
  190. package/dist/connections.d.ts +35 -1
  191. package/dist/connections.d.ts.map +1 -1
  192. package/dist/connections.js +121 -10
  193. package/dist/connections.js.map +1 -1
  194. package/dist/credential-gate.d.ts +2 -0
  195. package/dist/credential-gate.d.ts.map +1 -1
  196. package/dist/credential-gate.js +37 -3
  197. package/dist/credential-gate.js.map +1 -1
  198. package/dist/define-deep-agent.d.ts +2 -2
  199. package/dist/define-deep-agent.d.ts.map +1 -1
  200. package/dist/define-deep-agent.js +53 -2
  201. package/dist/define-deep-agent.js.map +1 -1
  202. package/dist/identity/index.d.ts.map +1 -1
  203. package/dist/identity/index.js +3 -1
  204. package/dist/identity/index.js.map +1 -1
  205. package/dist/identity/options.d.ts +9 -0
  206. package/dist/identity/options.d.ts.map +1 -1
  207. package/dist/identity/options.js +1 -1
  208. package/dist/identity/options.js.map +1 -1
  209. package/dist/identity/types.d.ts +3 -0
  210. package/dist/identity/types.d.ts.map +1 -1
  211. package/dist/index.d.ts +19 -5
  212. package/dist/index.d.ts.map +1 -1
  213. package/dist/index.js +3 -1
  214. package/dist/index.js.map +1 -1
  215. package/dist/ingress/loopback.d.ts +1 -0
  216. package/dist/ingress/loopback.d.ts.map +1 -1
  217. package/dist/ingress/loopback.js +4 -1
  218. package/dist/ingress/loopback.js.map +1 -1
  219. package/dist/ingress/runs.d.ts +74 -1
  220. package/dist/ingress/runs.d.ts.map +1 -1
  221. package/dist/ingress/runs.js +184 -9
  222. package/dist/ingress/runs.js.map +1 -1
  223. package/dist/managed-composition.d.ts +3 -0
  224. package/dist/managed-composition.d.ts.map +1 -1
  225. package/dist/managed-composition.js +29 -13
  226. package/dist/managed-composition.js.map +1 -1
  227. package/dist/namespaces.d.ts +25 -21
  228. package/dist/namespaces.d.ts.map +1 -1
  229. package/dist/namespaces.js +4 -29
  230. package/dist/namespaces.js.map +1 -1
  231. package/dist/runtime/async-subagents.d.ts +27 -0
  232. package/dist/runtime/async-subagents.d.ts.map +1 -0
  233. package/dist/runtime/async-subagents.js +139 -0
  234. package/dist/runtime/async-subagents.js.map +1 -0
  235. package/dist/runtime/auth.d.ts.map +1 -1
  236. package/dist/runtime/auth.js +177 -8
  237. package/dist/runtime/auth.js.map +1 -1
  238. package/dist/runtime/backend.d.ts +7 -0
  239. package/dist/runtime/backend.d.ts.map +1 -1
  240. package/dist/runtime/backend.js +32 -7
  241. package/dist/runtime/backend.js.map +1 -1
  242. package/dist/runtime/browser-facade.d.ts +10 -0
  243. package/dist/runtime/browser-facade.d.ts.map +1 -0
  244. package/dist/runtime/browser-facade.js +23 -0
  245. package/dist/runtime/browser-facade.js.map +1 -0
  246. package/dist/runtime/browser-langsmith.d.ts +143 -0
  247. package/dist/runtime/browser-langsmith.d.ts.map +1 -0
  248. package/dist/runtime/browser-langsmith.js +508 -0
  249. package/dist/runtime/browser-langsmith.js.map +1 -0
  250. package/dist/runtime/browser-recorder.py +831 -0
  251. package/dist/runtime/browser-selection.d.ts +10 -0
  252. package/dist/runtime/browser-selection.d.ts.map +1 -0
  253. package/dist/runtime/browser-selection.js +21 -0
  254. package/dist/runtime/browser-selection.js.map +1 -0
  255. package/dist/runtime/browser.d.ts +128 -0
  256. package/dist/runtime/browser.d.ts.map +1 -0
  257. package/dist/runtime/browser.js +795 -0
  258. package/dist/runtime/browser.js.map +1 -0
  259. package/dist/runtime/channel-icon.d.ts +22 -0
  260. package/dist/runtime/channel-icon.d.ts.map +1 -0
  261. package/dist/runtime/channel-icon.js +81 -0
  262. package/dist/runtime/channel-icon.js.map +1 -0
  263. package/dist/runtime/channel.d.ts +11 -0
  264. package/dist/runtime/channel.d.ts.map +1 -1
  265. package/dist/runtime/channel.js.map +1 -1
  266. package/dist/runtime/identity-http.d.ts +2 -0
  267. package/dist/runtime/identity-http.d.ts.map +1 -1
  268. package/dist/runtime/identity-http.js +38 -2
  269. package/dist/runtime/identity-http.js.map +1 -1
  270. package/dist/runtime/identity-runtime.d.ts +10 -0
  271. package/dist/runtime/identity-runtime.d.ts.map +1 -1
  272. package/dist/runtime/identity-runtime.js +22 -0
  273. package/dist/runtime/identity-runtime.js.map +1 -1
  274. package/dist/runtime/index.d.ts +38 -1
  275. package/dist/runtime/index.d.ts.map +1 -1
  276. package/dist/runtime/index.js +76 -34
  277. package/dist/runtime/index.js.map +1 -1
  278. package/dist/runtime/managed-thread.d.ts +61 -0
  279. package/dist/runtime/managed-thread.d.ts.map +1 -0
  280. package/dist/runtime/managed-thread.js +76 -0
  281. package/dist/runtime/managed-thread.js.map +1 -0
  282. package/dist/runtime/managed-tools.d.ts +10 -2
  283. package/dist/runtime/managed-tools.d.ts.map +1 -1
  284. package/dist/runtime/managed-tools.js +10 -8
  285. package/dist/runtime/managed-tools.js.map +1 -1
  286. package/dist/runtime/memory/policy.d.ts.map +1 -1
  287. package/dist/runtime/memory/policy.js +1 -3
  288. package/dist/runtime/memory/policy.js.map +1 -1
  289. package/dist/runtime/parent-run.d.ts +33 -0
  290. package/dist/runtime/parent-run.d.ts.map +1 -0
  291. package/dist/runtime/parent-run.js +114 -0
  292. package/dist/runtime/parent-run.js.map +1 -0
  293. package/dist/runtime/run-input.d.ts +14 -1
  294. package/dist/runtime/run-input.d.ts.map +1 -1
  295. package/dist/runtime/run-input.js +100 -7
  296. package/dist/runtime/run-input.js.map +1 -1
  297. package/dist/runtime/sandbox-manager.d.ts +15 -2
  298. package/dist/runtime/sandbox-manager.d.ts.map +1 -1
  299. package/dist/runtime/sandbox-manager.js +37 -12
  300. package/dist/runtime/sandbox-manager.js.map +1 -1
  301. package/dist/runtime/schedule-auth.d.ts +79 -0
  302. package/dist/runtime/schedule-auth.d.ts.map +1 -1
  303. package/dist/runtime/schedule-auth.js +163 -6
  304. package/dist/runtime/schedule-auth.js.map +1 -1
  305. package/dist/runtime/static-entry.d.ts.map +1 -1
  306. package/dist/runtime/static-entry.js +1 -0
  307. package/dist/runtime/static-entry.js.map +1 -1
  308. package/dist/runtime/thread-record.d.ts +88 -0
  309. package/dist/runtime/thread-record.d.ts.map +1 -0
  310. package/dist/runtime/thread-record.js +213 -0
  311. package/dist/runtime/thread-record.js.map +1 -0
  312. package/dist/runtime/types.d.ts +12 -1
  313. package/dist/runtime/types.d.ts.map +1 -1
  314. package/dist/runtime-schedules.d.ts +15 -0
  315. package/dist/runtime-schedules.d.ts.map +1 -1
  316. package/dist/runtime-schedules.js +83 -20
  317. package/dist/runtime-schedules.js.map +1 -1
  318. package/dist/sandbox.d.ts +0 -6
  319. package/dist/sandbox.d.ts.map +1 -1
  320. package/dist/sandbox.js +3 -7
  321. package/dist/sandbox.js.map +1 -1
  322. package/dist/schedule-channel.d.ts +5 -2
  323. package/dist/schedule-channel.d.ts.map +1 -1
  324. package/dist/schedule-channel.js +13 -12
  325. package/dist/schedule-channel.js.map +1 -1
  326. package/dist/types.d.ts +19 -2
  327. package/dist/types.d.ts.map +1 -1
  328. package/dist/types.js.map +1 -1
  329. package/dist/values.d.ts +15 -0
  330. package/dist/values.d.ts.map +1 -0
  331. package/dist/values.js +31 -0
  332. package/dist/values.js.map +1 -0
  333. package/package.json +23 -9
@@ -0,0 +1,278 @@
1
+ /**
2
+ * The Slack messages a channel's `onEvent` handlers see: which kind of
3
+ * message each is, and the message as a handler reads it.
4
+ */
5
+ import type { MultitaskStrategy } from "../../ingress/runs.js";
6
+ import type { JsonValue } from "../types.js";
7
+ import type { ChannelRunResult } from "../run-input.js";
8
+ import type { TriggerChannelMessageEvent, TriggerChannelUserPromptResponseEvent } from "../trigger/types.js";
9
+ import type { EndpointRequest, EventEndpoint } from "../http/endpoint.js";
10
+ import { type EventFinished, type EventThread } from "../http/provider.js";
11
+ import type { ChannelActor, SlackActor } from "../actor.js";
12
+ export declare const SLACK_MESSAGE_KEYS: readonly ["mention", "directMessage", "message"];
13
+ export declare const SLACK_EVENT_KEYS: readonly ["mention", "directMessage", "message", "interaction"];
14
+ /**
15
+ * Which kind of Slack message reached the agent:
16
+ * - `"mention"`: a channel message that @-mentions your agent.
17
+ * - `"directMessage"`: a direct message to your agent.
18
+ * - `"message"`: any other channel message, which only `triggerMode`
19
+ * `"thread"` or `"all"` delivers.
20
+ */
21
+ export type SlackMessageKey = (typeof SLACK_MESSAGE_KEYS)[number];
22
+ /**
23
+ * What reached the agent from Slack: a kind of message
24
+ * ({@link SlackMessageKey}), or `"interaction"`, a click on a button in a
25
+ * message your agent posted with its own blocks, or a submitted modal it
26
+ * opened, that answers no decision the thread waits on.
27
+ */
28
+ export type SlackEventKey = (typeof SLACK_EVENT_KEYS)[number];
29
+ /** A file attached to a Slack message, as Slack describes it. */
30
+ export interface SlackFile {
31
+ id: string;
32
+ name?: string;
33
+ mimetype?: string;
34
+ /** Size in bytes. */
35
+ size?: number;
36
+ }
37
+ /**
38
+ * A Slack message that reached the agent. The run it starts can read its
39
+ * files under `/workspace/attachments`, as without a handler.
40
+ */
41
+ export interface SlackMessageEvent<K extends SlackMessageKey = SlackMessageKey> {
42
+ key: K;
43
+ /** Trigger Server's ID for this delivery. */
44
+ deliveryId: string;
45
+ /** The message's text as Slack sent it, with mentions as `<@U123>`. */
46
+ text: string;
47
+ /** The Slack user who sent it; absent for some bot messages. */
48
+ userId?: string;
49
+ /** The Slack conversation: a channel's or a direct message's ID. */
50
+ channelId: string;
51
+ /** The message's timestamp, its ID in Slack. */
52
+ messageTs: string;
53
+ /** The timestamp of its thread's first message; `messageTs` when it starts one. */
54
+ threadTs: string;
55
+ files: SlackFile[];
56
+ /** The Slack event as Slack sent it, from the Events API. */
57
+ payload: {
58
+ readonly [key: string]: JsonValue;
59
+ };
60
+ /**
61
+ * The Slack user who sent the message, as Trigger Server verified it from
62
+ * Slack's signed request, in the shape every channel's `actor` has. Its
63
+ * `teamId` is their own workspace, which in a Slack Connect channel isn't
64
+ * your app's. Absent when Trigger Server names no one, such as an older
65
+ * Trigger Server or a message from a bot. It is personal data: MDA neither
66
+ * logs it nor adds it to the run's metadata.
67
+ */
68
+ actor?: SlackActor;
69
+ }
70
+ /**
71
+ * A click on a button in a message your agent posted with its own blocks, or
72
+ * a submitted modal it opened, as Trigger Server forwards it: one that
73
+ * answers no decision the thread waits on. A click on a decision's buttons
74
+ * resumes the run instead.
75
+ */
76
+ export interface SlackInteractionEvent {
77
+ key: "interaction";
78
+ /** Trigger Server's ID for this delivery. */
79
+ deliveryId: string;
80
+ /** The button's `action_id`, or the modal's `callback_id`. */
81
+ actionId: string;
82
+ /** The button's `value`, or the modal's `state.values`. */
83
+ value?: JsonValue;
84
+ /** The Slack user who clicked, as Slack's payload says. */
85
+ userId?: string;
86
+ /** The Slack conversation the message is in. */
87
+ channelId: string;
88
+ /** The timestamp of the message holding the button; absent for a modal. */
89
+ messageTs?: string;
90
+ /** The timestamp of its thread's first message. */
91
+ threadTs: string;
92
+ /**
93
+ * Slack's interaction payload, such as a `block_actions` one, with its
94
+ * `response_url` and `actions`, without its verification `token`.
95
+ */
96
+ payload: {
97
+ readonly [key: string]: JsonValue;
98
+ };
99
+ /**
100
+ * The Slack user who clicked, as Trigger Server verified it; see
101
+ * {@link SlackMessageEvent.actor}.
102
+ */
103
+ actor?: SlackActor;
104
+ }
105
+ type SlackEventUnion = {
106
+ [K in SlackMessageKey]: SlackMessageEvent<K>;
107
+ }[SlackMessageKey] | SlackInteractionEvent;
108
+ /** What reached the agent from Slack, typed by its key. */
109
+ export type SlackEvent<K extends SlackEventKey = SlackEventKey> = Extract<SlackEventUnion, {
110
+ key: K;
111
+ }>;
112
+ /**
113
+ * The conversation's thread a message belongs to. A handler runs before any
114
+ * run exists, so this is not a run's runtime.
115
+ */
116
+ export interface SlackChannelThread extends EventThread {
117
+ /**
118
+ * The thread the run the handler starts runs on, one per Slack thread.
119
+ * Useful for run context that names the thread, such as a token a backend
120
+ * signs for it.
121
+ */
122
+ id: string;
123
+ /** The key the thread is derived from, which names the Slack thread. */
124
+ sourceThreadKey: string;
125
+ }
126
+ /** The Slack thread of a Trigger message's thread, for a channel named `name`. */
127
+ export declare function slackThread(thread: {
128
+ id: string;
129
+ sourceThreadKey: string;
130
+ }, name: string): SlackChannelThread;
131
+ /**
132
+ * What an event handler returns: a run's input, as `agent.invoke` takes it —
133
+ * a string, a message such as `new HumanMessage(...)`, state such as
134
+ * `{ messages: [...] }`, or `[input, { context, metadata, webhook }]`.
135
+ * `null` or `undefined` starts nothing.
136
+ */
137
+ export type SlackEventResult = ChannelRunResult | null | undefined | void;
138
+ export type SlackEventCallback<K extends SlackEventKey = SlackEventKey> = (event: SlackEvent<K>, thread: SlackChannelThread) => SlackEventResult | Promise<SlackEventResult>;
139
+ /** The `channels.slack(...)` options that decide what each message starts. */
140
+ export interface SlackEventOptions {
141
+ /**
142
+ * Handlers that decide what each kind of message starts. Return a prompt
143
+ * (string, message, or state), optionally with run options as
144
+ * `[input, { context, metadata, webhook }]`, or nothing to start no run:
145
+ * then the agent doesn't react or reply. A message kind without a handler
146
+ * starts a run with the message, as without `onEvent`. The run's reply is
147
+ * posted in the message's thread.
148
+ *
149
+ * `interaction` decides what a click on a button your agent posted with
150
+ * its own blocks starts, such as the next prompt, or `null` after
151
+ * recording it. Without one, such a click starts a run with no new
152
+ * message, which reads the click from `runtime.channel.event`. A click
153
+ * that answers a decision the thread waits on resumes the run, and never
154
+ * reaches it.
155
+ *
156
+ * @example
157
+ * ```ts
158
+ * onEvent: {
159
+ * mention: (event) => [event.text, { metadata: { slack_channel: event.channelId } }],
160
+ * message: () => null,
161
+ * interaction: (event) =>
162
+ * event.actionId === "quick_reply" ? String(event.value) : null,
163
+ * }
164
+ * ```
165
+ *
166
+ * A handler may also be an endpoint, a URL or a `Request` carrying
167
+ * headers, to have a service of yours decide: MDA answers Trigger Server,
168
+ * then POSTs the endpoint the message and its thread, and starts the run it
169
+ * answers with. See the README's "Asking your service what to start".
170
+ *
171
+ * @experimental This may change in a minor release.
172
+ */
173
+ onEvent?: {
174
+ [K in SlackEventKey]?: SlackEventCallback<K> | EventEndpoint;
175
+ };
176
+ /**
177
+ * What a message that starts a run does while its thread already runs:
178
+ * `enqueue` (the default) waits for the run and starts after it,
179
+ * `interrupt` cancels the run, keeping its progress, and starts at once,
180
+ * `rollback` cancels it and discards its progress, and `reject` starts
181
+ * nothing.
182
+ *
183
+ * @experimental This may change in a minor release.
184
+ */
185
+ multitaskStrategy?: MultitaskStrategy;
186
+ /**
187
+ * Called once when a message or an `interaction` is done, with the event,
188
+ * its thread, and how it finished:
189
+ *
190
+ * - `run`: it started a run, which ended with `run.status`
191
+ * (`success`, `error`, `timeout` or `interrupted`). `interrupts` lists
192
+ * the decisions the thread waits on.
193
+ * - `skipped`: no run started. The handler returned nothing or failed
194
+ * (`ignored`), or the thread was busy under `multitaskStrategy:
195
+ * "reject"` (`rejected`).
196
+ * - `failed`: MDA couldn't start the run, or lost track of it.
197
+ *
198
+ * It runs in the background after the reply; errors are logged. Interrupt
199
+ * resumes don't call it, and neither does a message Trigger Server will
200
+ * send again because its run couldn't start. It runs in the deployment's process, so a restart
201
+ * loses it: use the run's `webhook` for anything you can't miss.
202
+ *
203
+ * @example
204
+ * ```ts
205
+ * onFinish: async (event, thread, finished) => {
206
+ * if (finished.type !== "run") return;
207
+ * if (finished.run.status === "success") {
208
+ * // e.g. record the answer in your service, or update memory
209
+ * } else {
210
+ * // e.g. alert someone that the run failed
211
+ * }
212
+ * }
213
+ * ```
214
+ *
215
+ * @experimental This may change in a minor release.
216
+ */
217
+ onFinish?: EventFinished<SlackEvent, SlackChannelThread>;
218
+ }
219
+ /**
220
+ * A Slack event's fields its endpoints are sent beside its key, delivery ID
221
+ * and payload, those its kind has: the one list of them, so
222
+ * `SlackEndpointRequest` is typed by it.
223
+ */
224
+ export declare const SLACK_ENDPOINT_EVENT_FIELDS: readonly ["text", "userId", "channelId", "messageTs", "threadTs", "files", "actor", "actionId", "value"];
225
+ /** What a Slack channel POSTs an endpoint, for one event key or any. */
226
+ export type SlackEndpointRequest<K extends SlackEventKey = SlackEventKey> = EndpointRequest<SlackEvent<K>, (typeof SLACK_ENDPOINT_EVENT_FIELDS)[number]>;
227
+ /**
228
+ * Which kind of message a delivery is. Slack sends a mention as
229
+ * `app_mention` under `triggerMode` `"mention"`, and as a `message` that
230
+ * names the app's bot user under `"thread"` and `"all"`, so only a channel
231
+ * `message` asks who the bot is.
232
+ */
233
+ export declare function slackEventKey(rawEvent: Record<string, unknown>): Promise<SlackMessageKey>;
234
+ /**
235
+ * Whether a delivery is surely a plain channel message, neither a mention
236
+ * nor a direct message. One that names a user while the bot user is unknown
237
+ * may be a mention, so it isn't.
238
+ */
239
+ export declare function isPlainSlackMessage(rawEvent: Record<string, unknown>): Promise<boolean>;
240
+ /** Forget the bot user's ID; for tests. */
241
+ export declare function resetSlackBotUser(): void;
242
+ /**
243
+ * What a delivery carries: a message, of the kind Slack's event says, or an
244
+ * interaction; `undefined` when it has nothing to read one from.
245
+ */
246
+ export declare function readSlackEvent(event: TriggerChannelMessageEvent | TriggerChannelUserPromptResponseEvent, actor?: ChannelActor): Promise<SlackEvent | undefined>;
247
+ /**
248
+ * The `SlackEvent` a handler got for each delivery, so `onFinish` gets that
249
+ * same event rather than reading the delivery again, which could read it as
250
+ * another kind. A delivery that never finishes, such as one Trigger Server
251
+ * sends again, is dropped once there are many.
252
+ */
253
+ export declare class DecidedSlackEvents {
254
+ #private;
255
+ remember(deliveryId: string, event: SlackEvent): void;
256
+ /**
257
+ * What a finished delivery carried: as its handler got it, or read from the
258
+ * delivery, with its verified actor, when no handler did.
259
+ */
260
+ finished(rawEvent: JsonValue | undefined): Promise<SlackEvent | undefined>;
261
+ }
262
+ /**
263
+ * The Trigger delivery a finished message or interaction carries; see
264
+ * `TriggerFinishedEvent`.
265
+ */
266
+ export declare function finishedDelivery(rawEvent: JsonValue | undefined): TriggerChannelMessageEvent | TriggerChannelUserPromptResponseEvent | undefined;
267
+ /**
268
+ * The message a delivery carries, as a handler reads it, or `undefined` when
269
+ * the delivery has no Slack event to read it from.
270
+ */
271
+ export declare function slackEvent<K extends SlackMessageKey>(key: K, event: TriggerChannelMessageEvent, actor?: ChannelActor): SlackMessageEvent<K> | undefined;
272
+ /**
273
+ * The interaction a forwarded click or modal submission carries, as a
274
+ * handler reads it, or `undefined` without the conversation it happened in.
275
+ */
276
+ export declare function slackInteractionEvent(event: TriggerChannelUserPromptResponseEvent, actor?: ChannelActor): SlackInteractionEvent | undefined;
277
+ export type { SlackActor } from "../actor.js";
278
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,235 @@
1
+ import { logger } from "../../runtime/log.js";
2
+ import { CachedRead, } from "../http/provider.js";
3
+ import { slackApi, slackBotToken } from "./api.js";
4
+ import { isRecord, nonblankString } from "../../values.js";
5
+ export const SLACK_MESSAGE_KEYS = [
6
+ "mention",
7
+ "directMessage",
8
+ "message",
9
+ ];
10
+ export const SLACK_EVENT_KEYS = [...SLACK_MESSAGE_KEYS, "interaction"];
11
+ /** The Slack thread of a Trigger message's thread, for a channel named `name`. */
12
+ export function slackThread(thread, name) {
13
+ return {
14
+ id: thread.id,
15
+ sourceThreadKey: thread.sourceThreadKey,
16
+ channel: { name },
17
+ };
18
+ }
19
+ /**
20
+ * A Slack event's fields its endpoints are sent beside its key, delivery ID
21
+ * and payload, those its kind has: the one list of them, so
22
+ * `SlackEndpointRequest` is typed by it.
23
+ */
24
+ export const SLACK_ENDPOINT_EVENT_FIELDS = [
25
+ "text",
26
+ "userId",
27
+ "channelId",
28
+ "messageTs",
29
+ "threadTs",
30
+ "files",
31
+ "actor",
32
+ "actionId",
33
+ "value",
34
+ ];
35
+ /**
36
+ * Which kind of message a delivery is. Slack sends a mention as
37
+ * `app_mention` under `triggerMode` `"mention"`, and as a `message` that
38
+ * names the app's bot user under `"thread"` and `"all"`, so only a channel
39
+ * `message` asks who the bot is.
40
+ */
41
+ export async function slackEventKey(rawEvent) {
42
+ if (rawEvent.type === "app_mention")
43
+ return "mention";
44
+ if (rawEvent.channel_type === "im")
45
+ return "directMessage";
46
+ const body = nonblankString(rawEvent.text);
47
+ if (!body?.includes("<@"))
48
+ return "message";
49
+ const botUserId = await slackBotUserId();
50
+ return botUserId && mentions(body, botUserId) ? "mention" : "message";
51
+ }
52
+ /**
53
+ * Whether a delivery is surely a plain channel message, neither a mention
54
+ * nor a direct message. One that names a user while the bot user is unknown
55
+ * may be a mention, so it isn't.
56
+ */
57
+ export async function isPlainSlackMessage(rawEvent) {
58
+ if (rawEvent.type === "app_mention" || rawEvent.channel_type === "im")
59
+ return false;
60
+ const body = nonblankString(rawEvent.text);
61
+ if (!body?.includes("<@"))
62
+ return true;
63
+ const botUserId = await slackBotUserId();
64
+ return botUserId !== undefined && !mentions(body, botUserId);
65
+ }
66
+ function mentions(body, userId) {
67
+ return body.includes(`<@${userId}>`) || body.includes(`<@${userId}|`);
68
+ }
69
+ /** How long the bot user's ID is reused; an app keeps it for good. */
70
+ const BOT_USER_TTL_MS = 60 * 60_000;
71
+ /** How long a failed lookup is remembered, so each message doesn't ask Slack. */
72
+ const MISSING_BOT_USER_TTL_MS = 60_000;
73
+ const botUser = new CachedRead(async () => {
74
+ try {
75
+ const identity = await slackApi(await slackBotToken(), "auth.test", {});
76
+ return nonblankString(identity.user_id);
77
+ }
78
+ catch (error) {
79
+ logger.warn(`slack bot user lookup failed; mentions in channel messages count as messages (${logger.safeErrorLabel(error)})`);
80
+ return undefined;
81
+ }
82
+ }, (userId) => (userId ? BOT_USER_TTL_MS : MISSING_BOT_USER_TTL_MS));
83
+ /** The app's bot user, from Slack's `auth.test` with its bot token. */
84
+ function slackBotUserId() {
85
+ return botUser.get();
86
+ }
87
+ /** Forget the bot user's ID; for tests. */
88
+ export function resetSlackBotUser() {
89
+ botUser.reset();
90
+ }
91
+ /**
92
+ * What a delivery carries: a message, of the kind Slack's event says, or an
93
+ * interaction; `undefined` when it has nothing to read one from.
94
+ */
95
+ export async function readSlackEvent(event, actor) {
96
+ if (event.type === "user_prompt_response")
97
+ return slackInteractionEvent(event, actor);
98
+ if (!isRecord(event.raw_event))
99
+ return undefined;
100
+ return slackEvent(await slackEventKey(event.raw_event), event, actor);
101
+ }
102
+ /** How many deliveries' events a channel keeps until they finish. */
103
+ const MAX_DECIDED_EVENTS = 1024;
104
+ /**
105
+ * The `SlackEvent` a handler got for each delivery, so `onFinish` gets that
106
+ * same event rather than reading the delivery again, which could read it as
107
+ * another kind. A delivery that never finishes, such as one Trigger Server
108
+ * sends again, is dropped once there are many.
109
+ */
110
+ export class DecidedSlackEvents {
111
+ #byDelivery = new Map();
112
+ remember(deliveryId, event) {
113
+ this.#byDelivery.delete(deliveryId);
114
+ this.#byDelivery.set(deliveryId, event);
115
+ const [oldest] = this.#byDelivery.keys();
116
+ if (this.#byDelivery.size > MAX_DECIDED_EVENTS && oldest !== undefined)
117
+ this.#byDelivery.delete(oldest);
118
+ }
119
+ /**
120
+ * What a finished delivery carried: as its handler got it, or read from the
121
+ * delivery, with its verified actor, when no handler did.
122
+ */
123
+ async finished(rawEvent) {
124
+ const delivery = finishedDelivery(rawEvent);
125
+ if (!delivery)
126
+ return undefined;
127
+ const decided = this.#byDelivery.get(delivery.delivery_id);
128
+ this.#byDelivery.delete(delivery.delivery_id);
129
+ return decided ?? readSlackEvent(delivery, finishedActor(rawEvent));
130
+ }
131
+ }
132
+ /** The verified actor a finished message carries; see `TriggerFinishedEvent`. */
133
+ function finishedActor(rawEvent) {
134
+ return isRecord(rawEvent) && isRecord(rawEvent.actor)
135
+ ? rawEvent.actor
136
+ : undefined;
137
+ }
138
+ /**
139
+ * The Trigger delivery a finished message or interaction carries; see
140
+ * `TriggerFinishedEvent`.
141
+ */
142
+ export function finishedDelivery(rawEvent) {
143
+ return isRecord(rawEvent) && isRecord(rawEvent.delivery)
144
+ ? rawEvent.delivery
145
+ : undefined;
146
+ }
147
+ /**
148
+ * The message a delivery carries, as a handler reads it, or `undefined` when
149
+ * the delivery has no Slack event to read it from.
150
+ */
151
+ export function slackEvent(key, event, actor) {
152
+ const raw = event.raw_event;
153
+ if (!isRecord(raw))
154
+ return undefined;
155
+ const address = isRecord(event.address) ? event.address : {};
156
+ const message = isRecord(event.message)
157
+ ? event.message
158
+ : {};
159
+ const channelId = nonblankString(raw.channel) ?? nonblankString(address.conversation_id);
160
+ const messageTs = nonblankString(raw.ts) ?? nonblankString(message.id);
161
+ if (!channelId || !messageTs)
162
+ return undefined;
163
+ const userId = nonblankString(raw.user);
164
+ return {
165
+ key,
166
+ deliveryId: event.delivery_id,
167
+ text: (typeof raw.text === "string" ? raw.text : undefined) ??
168
+ (typeof message.text === "string" ? message.text : ""),
169
+ ...(userId && { userId }),
170
+ channelId,
171
+ messageTs,
172
+ threadTs: nonblankString(raw.thread_ts) ??
173
+ nonblankString(address.thread_id) ??
174
+ messageTs,
175
+ files: Array.isArray(raw.files) ? raw.files.flatMap(slackFile) : [],
176
+ payload: structuredClone(raw),
177
+ // A Slack message's actor is a Slack user.
178
+ ...(actor?.provider === "slack" && { actor: { ...actor } }),
179
+ };
180
+ }
181
+ /**
182
+ * The interaction a forwarded click or modal submission carries, as a
183
+ * handler reads it, or `undefined` without the conversation it happened in.
184
+ */
185
+ export function slackInteractionEvent(event, actor) {
186
+ const raw = isRecord(event.raw_event) ? event.raw_event : {};
187
+ const address = isRecord(event.address) ? event.address : {};
188
+ const container = isRecord(raw.container) ? raw.container : {};
189
+ const message = isRecord(raw.message) ? raw.message : {};
190
+ const messageTs = nonblankString(container.message_ts) ?? nonblankString(message.ts);
191
+ const channelId = nonblankString(address.conversation_id) ??
192
+ nonblankString(container.channel_id) ??
193
+ (isRecord(raw.channel) ? nonblankString(raw.channel.id) : undefined);
194
+ const threadTs = nonblankString(address.thread_id) ??
195
+ nonblankString(container.thread_ts) ??
196
+ nonblankString(message.thread_ts) ??
197
+ messageTs;
198
+ if (!channelId || !threadTs)
199
+ return undefined;
200
+ const userId = isRecord(raw.user) ? nonblankString(raw.user.id) : undefined;
201
+ // Slack's legacy verification token isn't the handler's to have.
202
+ const { token: _token, ...payload } = raw;
203
+ const interaction = event.interaction;
204
+ return {
205
+ key: "interaction",
206
+ deliveryId: event.delivery_id,
207
+ actionId: interaction.action,
208
+ ...("value" in interaction &&
209
+ interaction.value !== undefined && {
210
+ value: structuredClone(interaction.value),
211
+ }),
212
+ ...(userId && { userId }),
213
+ channelId,
214
+ ...(messageTs && { messageTs }),
215
+ threadTs,
216
+ payload: structuredClone(payload),
217
+ // The actor of a click in Slack is a Slack user.
218
+ ...(actor?.provider === "slack" && { actor: { ...actor } }),
219
+ };
220
+ }
221
+ function slackFile(file) {
222
+ if (!isRecord(file) || !nonblankString(file.id))
223
+ return [];
224
+ return [
225
+ {
226
+ id: file.id,
227
+ ...(nonblankString(file.name) && { name: file.name }),
228
+ ...(nonblankString(file.mimetype) && {
229
+ mimetype: file.mimetype,
230
+ }),
231
+ ...(typeof file.size === "number" && { size: file.size }),
232
+ },
233
+ ];
234
+ }
235
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/channels/slack/events.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/files.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIxD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAE9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,eAAO,MAAM,aAAa,eAAe,CAAC;AAC1C,eAAO,MAAM,eAAe,2BAAiC,CAAC;AAC9D,eAAO,MAAM,cAAc,QAAoB,CAAC;AAEhD,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,uBAAuB,EACvB,SAAS,GAAG,YAAY,GAAG,SAAS,CACrC,CAAC;AAuBF,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAEjE;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,MAAM,CAAC,CAyCjB;AAED,wBAAsB,UAAU,CAC9B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAmDnC;AA0DD,gFAAgF;AAChF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,gBAAgB,GACxB,QAAQ,CAAC,cAAc,CAAC,GAAG,SAAS,CAYtC;AAkBD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUlD;AAkCD,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,CAAC,CAmBrB"}
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/files.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAE9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,eAAO,MAAM,aAAa,eAAe,CAAC;AAC1C,eAAO,MAAM,eAAe,2BAAiC,CAAC;AAC9D,eAAO,MAAM,cAAc,QAAoB,CAAC;AAEhD,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,uBAAuB,EACvB,SAAS,GAAG,YAAY,GAAG,SAAS,CACrC,CAAC;AAuBF,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAEjE;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,MAAM,CAAC,CAyCjB;AAED,wBAAsB,UAAU,CAC9B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAmDnC;AA0DD,gFAAgF;AAChF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,gBAAgB,GACxB,QAAQ,CAAC,cAAc,CAAC,GAAG,SAAS,CAYtC;AAkBD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUlD;AAkCD,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,CAAC,CAmBrB"}
@@ -1,10 +1,9 @@
1
1
  import { posix } from "node:path";
2
2
  import { HumanMessage } from "@langchain/core/messages";
3
3
  import { z } from "zod";
4
- import { connections } from "../../connections.js";
5
4
  import { fetchWithTimeout } from "../../runtime/http.js";
6
5
  import { resolveChannelBinding } from "../binding.js";
7
- import { SlackApiError, slackApi } from "./api.js";
6
+ import { SlackApiError, slackApi, slackBotToken } from "./api.js";
8
7
  export const WORKSPACE_DIR = "/workspace";
9
8
  export const ATTACHMENTS_DIR = `${WORKSPACE_DIR}/attachments`;
10
9
  export const MAX_FILE_BYTES = 200 * 1024 * 1024;
@@ -173,7 +172,7 @@ export function getSlackDestination(runtime) {
173
172
  /** Retrieve the managed bot credential without exposing connection errors. */
174
173
  async function getSlackBotToken() {
175
174
  try {
176
- return await connections.get("mda/slack-bot-token", { type: "agent" });
175
+ return await slackBotToken();
177
176
  }
178
177
  catch {
179
178
  throw new SlackConnectionError("The managed Slack connection is unavailable. Reconnect Slack.");
@@ -1 +1 @@
1
- {"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/channels/slack/files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/channels/slack/files.ts"],"names":[],"mappings":"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"}