managed-deepagents 0.4.0-dev.72 → 0.4.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 (252) hide show
  1. package/README.md +2 -1
  2. package/dist/channels/binding.d.ts +3 -5
  3. package/dist/channels/binding.d.ts.map +1 -1
  4. package/dist/channels/binding.js +3 -9
  5. package/dist/channels/binding.js.map +1 -1
  6. package/dist/channels/collect.d.ts +23 -0
  7. package/dist/channels/collect.d.ts.map +1 -0
  8. package/dist/channels/collect.js +46 -0
  9. package/dist/channels/collect.js.map +1 -0
  10. package/dist/channels/github/adapter-core.d.ts +6 -0
  11. package/dist/channels/github/adapter-core.d.ts.map +1 -0
  12. package/dist/channels/github/adapter-core.js +27 -0
  13. package/dist/channels/github/adapter-core.js.map +1 -0
  14. package/dist/channels/github/adapter.d.ts +16 -0
  15. package/dist/channels/github/adapter.d.ts.map +1 -0
  16. package/dist/channels/github/adapter.js +52 -0
  17. package/dist/channels/github/adapter.js.map +1 -0
  18. package/dist/channels/github/define.d.ts +198 -0
  19. package/dist/channels/github/define.d.ts.map +1 -0
  20. package/dist/channels/github/define.js +166 -0
  21. package/dist/channels/github/define.js.map +1 -0
  22. package/dist/channels/github/http.d.ts +25 -0
  23. package/dist/channels/github/http.d.ts.map +1 -0
  24. package/dist/channels/github/http.js +147 -0
  25. package/dist/channels/github/http.js.map +1 -0
  26. package/dist/channels/github/index.d.ts +12 -0
  27. package/dist/channels/github/index.d.ts.map +1 -0
  28. package/dist/channels/github/index.js +10 -0
  29. package/dist/channels/github/index.js.map +1 -0
  30. package/dist/channels/github/normalize.d.ts +32 -0
  31. package/dist/channels/github/normalize.d.ts.map +1 -0
  32. package/dist/channels/github/normalize.js +152 -0
  33. package/dist/channels/github/normalize.js.map +1 -0
  34. package/dist/channels/github/source-thread.d.ts +24 -0
  35. package/dist/channels/github/source-thread.d.ts.map +1 -0
  36. package/dist/channels/github/source-thread.js +54 -0
  37. package/dist/channels/github/source-thread.js.map +1 -0
  38. package/dist/channels/github/transport.d.ts +19 -0
  39. package/dist/channels/github/transport.d.ts.map +1 -0
  40. package/dist/channels/github/transport.js +92 -0
  41. package/dist/channels/github/transport.js.map +1 -0
  42. package/dist/channels/index.d.ts +10 -3
  43. package/dist/channels/index.d.ts.map +1 -1
  44. package/dist/channels/index.js +5 -2
  45. package/dist/channels/index.js.map +1 -1
  46. package/dist/channels/manifest.d.ts +34 -0
  47. package/dist/channels/manifest.d.ts.map +1 -0
  48. package/dist/channels/manifest.js +8 -0
  49. package/dist/channels/manifest.js.map +1 -0
  50. package/dist/channels/plugin.d.ts +61 -0
  51. package/dist/channels/plugin.d.ts.map +1 -0
  52. package/dist/channels/plugin.js +80 -0
  53. package/dist/channels/plugin.js.map +1 -0
  54. package/dist/channels/registry-store.d.ts +12 -0
  55. package/dist/channels/registry-store.d.ts.map +1 -0
  56. package/dist/channels/registry-store.js +18 -0
  57. package/dist/channels/registry-store.js.map +1 -0
  58. package/dist/channels/registry-types.d.ts +32 -0
  59. package/dist/channels/registry-types.d.ts.map +1 -0
  60. package/dist/channels/registry-types.js +5 -0
  61. package/dist/channels/registry-types.js.map +1 -0
  62. package/dist/channels/registry.d.ts +14 -0
  63. package/dist/channels/registry.d.ts.map +1 -0
  64. package/dist/channels/registry.js +25 -0
  65. package/dist/channels/registry.js.map +1 -0
  66. package/dist/channels/runtime.d.ts +2 -4
  67. package/dist/channels/runtime.d.ts.map +1 -1
  68. package/dist/channels/runtime.js +0 -4
  69. package/dist/channels/runtime.js.map +1 -1
  70. package/dist/channels/schedule-delivery.d.ts +4 -0
  71. package/dist/channels/schedule-delivery.d.ts.map +1 -1
  72. package/dist/channels/schedule-delivery.js +6 -5
  73. package/dist/channels/schedule-delivery.js.map +1 -1
  74. package/dist/channels/slack/adapter-core.d.ts +6 -0
  75. package/dist/channels/slack/adapter-core.d.ts.map +1 -0
  76. package/dist/channels/slack/adapter-core.js +24 -0
  77. package/dist/channels/slack/adapter-core.js.map +1 -0
  78. package/dist/channels/slack/adapter.d.ts +10 -0
  79. package/dist/channels/slack/adapter.d.ts.map +1 -0
  80. package/dist/channels/slack/adapter.js +22 -0
  81. package/dist/channels/slack/adapter.js.map +1 -0
  82. package/dist/channels/slack/define.d.ts +7 -20
  83. package/dist/channels/slack/define.d.ts.map +1 -1
  84. package/dist/channels/slack/define.js +29 -10
  85. package/dist/channels/slack/define.js.map +1 -1
  86. package/dist/channels/slack/http.d.ts +12 -1
  87. package/dist/channels/slack/http.d.ts.map +1 -1
  88. package/dist/channels/slack/http.js +103 -47
  89. package/dist/channels/slack/http.js.map +1 -1
  90. package/dist/channels/store.d.ts +4 -4
  91. package/dist/channels/store.d.ts.map +1 -1
  92. package/dist/channels/store.js.map +1 -1
  93. package/dist/channels/types.d.ts +4 -4
  94. package/dist/channels/types.d.ts.map +1 -1
  95. package/dist/channels/types.js.map +1 -1
  96. package/dist/connectors/github/index.d.ts +80 -0
  97. package/dist/connectors/github/index.d.ts.map +1 -0
  98. package/dist/connectors/github/index.js +118 -0
  99. package/dist/connectors/github/index.js.map +1 -0
  100. package/dist/connectors/github/sandbox.d.ts +54 -0
  101. package/dist/connectors/github/sandbox.d.ts.map +1 -0
  102. package/dist/connectors/github/sandbox.js +519 -0
  103. package/dist/connectors/github/sandbox.js.map +1 -0
  104. package/dist/connectors/{langsmith.d.ts → langsmith/index.d.ts} +3 -3
  105. package/dist/connectors/langsmith/index.d.ts.map +1 -0
  106. package/dist/connectors/{langsmith.js → langsmith/index.js} +4 -4
  107. package/dist/connectors/langsmith/index.js.map +1 -0
  108. package/dist/{runtime/langsmith-connector.d.ts → connectors/langsmith/routes.d.ts} +4 -4
  109. package/dist/connectors/langsmith/routes.d.ts.map +1 -0
  110. package/dist/{runtime/langsmith-connector.js → connectors/langsmith/routes.js} +12 -6
  111. package/dist/connectors/langsmith/routes.js.map +1 -0
  112. package/dist/{connectors.d.ts → connectors/mcp/index.d.ts} +2 -2
  113. package/dist/connectors/mcp/index.d.ts.map +1 -0
  114. package/dist/{connectors.js → connectors/mcp/index.js} +3 -3
  115. package/dist/connectors/mcp/index.js.map +1 -0
  116. package/dist/{runtime/connectors-manager.d.ts → connectors/mcp/load.d.ts} +2 -2
  117. package/dist/connectors/mcp/load.d.ts.map +1 -0
  118. package/dist/{runtime/connectors-manager.js → connectors/mcp/load.js} +1 -1
  119. package/dist/connectors/mcp/load.js.map +1 -0
  120. package/dist/define-deep-agent.d.ts +1 -0
  121. package/dist/define-deep-agent.d.ts.map +1 -1
  122. package/dist/define-deep-agent.js +6 -0
  123. package/dist/define-deep-agent.js.map +1 -1
  124. package/dist/identity/connect-paths.d.ts +8 -0
  125. package/dist/identity/connect-paths.d.ts.map +1 -0
  126. package/dist/identity/connect-paths.js +11 -0
  127. package/dist/identity/connect-paths.js.map +1 -0
  128. package/dist/identity/connect-provider-types.d.ts +68 -0
  129. package/dist/identity/connect-provider-types.d.ts.map +1 -0
  130. package/dist/identity/connect-provider-types.js +8 -0
  131. package/dist/identity/connect-provider-types.js.map +1 -0
  132. package/dist/identity/connect-provider.d.ts +30 -0
  133. package/dist/identity/connect-provider.d.ts.map +1 -0
  134. package/dist/identity/connect-provider.js +122 -0
  135. package/dist/identity/connect-provider.js.map +1 -0
  136. package/dist/identity/github/connect-http.d.ts +33 -0
  137. package/dist/identity/github/connect-http.d.ts.map +1 -0
  138. package/dist/identity/github/connect-http.js +111 -0
  139. package/dist/identity/github/connect-http.js.map +1 -0
  140. package/dist/identity/github/credentials-store.d.ts +76 -0
  141. package/dist/identity/github/credentials-store.d.ts.map +1 -0
  142. package/dist/identity/github/credentials-store.js +257 -0
  143. package/dist/identity/github/credentials-store.js.map +1 -0
  144. package/dist/identity/github/credentials.d.ts +82 -0
  145. package/dist/identity/github/credentials.d.ts.map +1 -0
  146. package/dist/identity/github/credentials.js +171 -0
  147. package/dist/identity/github/credentials.js.map +1 -0
  148. package/dist/identity/github/index.d.ts +10 -0
  149. package/dist/identity/github/index.d.ts.map +1 -0
  150. package/dist/identity/github/index.js +9 -0
  151. package/dist/identity/github/index.js.map +1 -0
  152. package/dist/identity/github/oauth.d.ts +49 -0
  153. package/dist/identity/github/oauth.d.ts.map +1 -0
  154. package/dist/identity/github/oauth.js +143 -0
  155. package/dist/identity/github/oauth.js.map +1 -0
  156. package/dist/identity/index.d.ts +2 -3
  157. package/dist/identity/index.d.ts.map +1 -1
  158. package/dist/identity/index.js +30 -1
  159. package/dist/identity/index.js.map +1 -1
  160. package/dist/identity/loopback.d.ts +8 -0
  161. package/dist/identity/loopback.d.ts.map +1 -0
  162. package/dist/identity/loopback.js +18 -0
  163. package/dist/identity/loopback.js.map +1 -0
  164. package/dist/identity/slack/connect-http.d.ts +33 -0
  165. package/dist/identity/slack/connect-http.d.ts.map +1 -0
  166. package/dist/identity/slack/connect-http.js +105 -0
  167. package/dist/identity/slack/connect-http.js.map +1 -0
  168. package/dist/identity/slack/index.d.ts +9 -0
  169. package/dist/identity/slack/index.d.ts.map +1 -0
  170. package/dist/identity/slack/index.js +8 -0
  171. package/dist/identity/slack/index.js.map +1 -0
  172. package/dist/identity/slack/links.d.ts.map +1 -0
  173. package/dist/identity/{links.js → slack/links.js} +2 -12
  174. package/dist/identity/slack/links.js.map +1 -0
  175. package/dist/identity/{slack-oauth.d.ts → slack/oauth.d.ts} +1 -1
  176. package/dist/identity/slack/oauth.d.ts.map +1 -0
  177. package/dist/identity/{slack-oauth.js → slack/oauth.js} +1 -1
  178. package/dist/identity/slack/oauth.js.map +1 -0
  179. package/dist/identity/types.d.ts +12 -1
  180. package/dist/identity/types.d.ts.map +1 -1
  181. package/dist/index.d.ts +14 -7
  182. package/dist/index.d.ts.map +1 -1
  183. package/dist/index.js +8 -3
  184. package/dist/index.js.map +1 -1
  185. package/dist/runtime/auth.d.ts +6 -0
  186. package/dist/runtime/auth.d.ts.map +1 -1
  187. package/dist/runtime/auth.js +19 -8
  188. package/dist/runtime/auth.js.map +1 -1
  189. package/dist/runtime/backend.d.ts +52 -0
  190. package/dist/runtime/backend.d.ts.map +1 -0
  191. package/dist/runtime/backend.js +165 -0
  192. package/dist/runtime/backend.js.map +1 -0
  193. package/dist/runtime/connector.d.ts +43 -12
  194. package/dist/runtime/connector.d.ts.map +1 -1
  195. package/dist/runtime/connector.js +25 -10
  196. package/dist/runtime/connector.js.map +1 -1
  197. package/dist/runtime/cors.js +1 -1
  198. package/dist/runtime/identity-http.d.ts +9 -3
  199. package/dist/runtime/identity-http.d.ts.map +1 -1
  200. package/dist/runtime/identity-http.js +24 -34
  201. package/dist/runtime/identity-http.js.map +1 -1
  202. package/dist/runtime/identity-runtime.d.ts +9 -28
  203. package/dist/runtime/identity-runtime.d.ts.map +1 -1
  204. package/dist/runtime/identity-runtime.js +30 -65
  205. package/dist/runtime/identity-runtime.js.map +1 -1
  206. package/dist/runtime/index.d.ts +11 -5
  207. package/dist/runtime/index.d.ts.map +1 -1
  208. package/dist/runtime/index.js +27 -69
  209. package/dist/runtime/index.js.map +1 -1
  210. package/dist/runtime/memory/index.d.ts +3 -6
  211. package/dist/runtime/memory/index.d.ts.map +1 -1
  212. package/dist/runtime/memory/index.js +3 -4
  213. package/dist/runtime/memory/index.js.map +1 -1
  214. package/dist/runtime/memory/mounts.d.ts +15 -1
  215. package/dist/runtime/memory/mounts.d.ts.map +1 -1
  216. package/dist/runtime/memory/mounts.js +31 -7
  217. package/dist/runtime/memory/mounts.js.map +1 -1
  218. package/dist/runtime/memory/paths.d.ts +0 -5
  219. package/dist/runtime/memory/paths.d.ts.map +1 -1
  220. package/dist/runtime/memory/paths.js +0 -24
  221. package/dist/runtime/memory/paths.js.map +1 -1
  222. package/dist/runtime/memory/seed.d.ts +0 -16
  223. package/dist/runtime/memory/seed.d.ts.map +1 -1
  224. package/dist/runtime/memory/seed.js +0 -43
  225. package/dist/runtime/memory/seed.js.map +1 -1
  226. package/dist/runtime/sandbox-manager.d.ts +20 -2
  227. package/dist/runtime/sandbox-manager.d.ts.map +1 -1
  228. package/dist/runtime/sandbox-manager.js +102 -9
  229. package/dist/runtime/sandbox-manager.js.map +1 -1
  230. package/dist/runtime/types.d.ts +0 -6
  231. package/dist/runtime/types.d.ts.map +1 -1
  232. package/dist/types.d.ts +6 -0
  233. package/dist/types.d.ts.map +1 -1
  234. package/dist/types.js.map +1 -1
  235. package/package.json +11 -7
  236. package/dist/connectors/langsmith.d.ts.map +0 -1
  237. package/dist/connectors/langsmith.js.map +0 -1
  238. package/dist/connectors.d.ts.map +0 -1
  239. package/dist/connectors.js.map +0 -1
  240. package/dist/identity/links.d.ts.map +0 -1
  241. package/dist/identity/links.js.map +0 -1
  242. package/dist/identity/slack-connect-http.d.ts +0 -21
  243. package/dist/identity/slack-connect-http.d.ts.map +0 -1
  244. package/dist/identity/slack-connect-http.js +0 -129
  245. package/dist/identity/slack-connect-http.js.map +0 -1
  246. package/dist/identity/slack-oauth.d.ts.map +0 -1
  247. package/dist/identity/slack-oauth.js.map +0 -1
  248. package/dist/runtime/connectors-manager.d.ts.map +0 -1
  249. package/dist/runtime/connectors-manager.js.map +0 -1
  250. package/dist/runtime/langsmith-connector.d.ts.map +0 -1
  251. package/dist/runtime/langsmith-connector.js.map +0 -1
  252. /package/dist/identity/{links.d.ts → slack/links.d.ts} +0 -0
@@ -69,8 +69,4 @@ function validateMessage(message, provider) {
69
69
  throw new ChannelError("channel_provider_rejected", `native payload provider "${message.native.provider}" does not match channel provider "${provider}"`);
70
70
  }
71
71
  }
72
- /** True when an explicit `post(..., { final: true })` already delivered the reply. */
73
- export function wasFinalPosted(channel) {
74
- return Boolean(channel.finalPosted);
75
- }
76
72
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/channels/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/channels/runtime.ts"],"names":[],"mappings":"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"}
@@ -60,6 +60,10 @@ export declare function isTrustedScheduleDeliveryRun(configurable: Record<string
60
60
  /**
61
61
  * Always-on middleware that auto-posts schedule results when `deliver_to` is set
62
62
  * on a trusted managed cron run.
63
+ *
64
+ * Prefer explicit `runtime.configurable`, then ambient — not
65
+ * `resolveRuntimeConfigurable`, which can discard a present `mda_schedule` when
66
+ * the bag lacks `langgraph_auth_user`.
63
67
  */
64
68
  export declare function createScheduleDeliveryMiddleware(options?: {
65
69
  deliver?: typeof deliverScheduleResult;
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-delivery.d.ts","sourceRoot":"","sources":["../../src/channels/schedule-delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAK1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD,6DAA6D;AAC7D,wBAAgB,2BAA2B,CACzC,MAAM,CAAC,EAAE,MAAM;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,GAC3E,IAAI,CAEN;AAED,uDAAuD;AACvD,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EACE;QAAE,IAAI,EAAE,uBAAuB,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,GACzD;QAAE,IAAI,EAAE,iBAAiB,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1E,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAChD,2BAA2B,GAAG,SAAS,CAoDzC;AAED,kEAAkE;AAClE,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,2BAA2B,CAAC,IAAI,CAAC,GACpC,cAAc,CAKhB;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,2BAA2B,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC,CAgD1C;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAChD,OAAO,CAcT;AAmBD;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,CAAC,EAAE;IACzD,OAAO,CAAC,EAAE,OAAO,qBAAqB,CAAC;CACxC,GAAG,iBAAiB,CA6BpB"}
1
+ {"version":3,"file":"schedule-delivery.d.ts","sourceRoot":"","sources":["../../src/channels/schedule-delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAK1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD,6DAA6D;AAC7D,wBAAgB,2BAA2B,CACzC,MAAM,CAAC,EAAE,MAAM;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,GAC3E,IAAI,CAEN;AAED,uDAAuD;AACvD,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EACE;QAAE,IAAI,EAAE,uBAAuB,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,GACzD;QAAE,IAAI,EAAE,iBAAiB,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1E,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAChD,2BAA2B,GAAG,SAAS,CAoDzC;AAED,kEAAkE;AAClE,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,2BAA2B,CAAC,IAAI,CAAC,GACpC,cAAc,CAKhB;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,2BAA2B,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC,CAgD1C;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAChD,OAAO,CAcT;AAmBD;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,CAAC,EAAE;IACzD,OAAO,CAAC,EAAE,OAAO,qBAAqB,CAAC;CACxC,GAAG,iBAAiB,CAyBpB"}
@@ -10,6 +10,7 @@
10
10
  * pair (and `mda_schedule` is a reserved configurable key).
11
11
  */
12
12
  import { getConfig } from "@langchain/langgraph";
13
+ import { configurableFromRuntime, resolveAmbientConfigurable, } from "../runtime/identity-runtime.js";
13
14
  import { extractAssistantText } from "./assistant-text.js";
14
15
  import { SLACK_BOT_TOKEN_ENV } from "./binding.js";
15
16
  import { createSlackWebApiTransport } from "./slack/transport.js";
@@ -161,17 +162,17 @@ function resolveScheduleMetadata() {
161
162
  /**
162
163
  * Always-on middleware that auto-posts schedule results when `deliver_to` is set
163
164
  * on a trusted managed cron run.
165
+ *
166
+ * Prefer explicit `runtime.configurable`, then ambient — not
167
+ * `resolveRuntimeConfigurable`, which can discard a present `mda_schedule` when
168
+ * the bag lacks `langgraph_auth_user`.
164
169
  */
165
170
  export function createScheduleDeliveryMiddleware(options) {
166
171
  const deliver = options?.deliver ?? deliverScheduleResult;
167
172
  return {
168
173
  name: "mda-schedule-delivery",
169
174
  async afterAgent(state, runtime) {
170
- const configurable = runtime?.configurable &&
171
- typeof runtime.configurable === "object" &&
172
- !Array.isArray(runtime.configurable)
173
- ? runtime.configurable
174
- : undefined;
175
+ const configurable = configurableFromRuntime(runtime) ?? resolveAmbientConfigurable();
175
176
  if (!isTrustedScheduleDeliveryRun(configurable)) {
176
177
  return undefined;
177
178
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-delivery.js","sourceRoot":"","sources":["../../src/channels/schedule-delivery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schedule-delivery.js","sourceRoot":"","sources":["../../src/channels/schedule-delivery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Slack adapter object without imports from `define.ts` (avoids load cycles).
3
+ */
4
+ import type { ChannelProviderAdapter } from "../registry-types.js";
5
+ export declare const slackChannelAdapter: ChannelProviderAdapter;
6
+ //# sourceMappingURL=adapter-core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-core.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/adapter-core.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAInE,eAAO,MAAM,mBAAmB,EAAE,sBAkBjC,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Slack adapter object without imports from `define.ts` (avoids load cycles).
3
+ */
4
+ import { handleSlackEventsRequest } from "./http.js";
5
+ import { createSlackWebApiTransport } from "./transport.js";
6
+ export const slackChannelAdapter = {
7
+ provider: "slack",
8
+ async handleEventsRequest(request, ctx) {
9
+ const { slackConfigFromManifest } = await import("./adapter.js");
10
+ const config = slackConfigFromManifest(ctx.manifest);
11
+ return handleSlackEventsRequest(request, {
12
+ name: ctx.name,
13
+ config,
14
+ rawBody: ctx.rawBody,
15
+ });
16
+ },
17
+ createTransport(env) {
18
+ const token = env.SLACK_BOT_TOKEN;
19
+ if (!token)
20
+ return undefined;
21
+ return createSlackWebApiTransport({ botToken: token });
22
+ },
23
+ };
24
+ //# sourceMappingURL=adapter-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-core.js","sourceRoot":"","sources":["../../../src/channels/slack/adapter-core.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAE5D,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACzD,QAAQ,EAAE,OAAO;IAEjB,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,GAAG;QACpC,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,wBAAwB,CAAC,OAAO,EAAE;YACvC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM;YACN,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC,CAAC;IACL,CAAC;IAED,eAAe,CAAC,GAAG;QACjB,MAAM,KAAK,GAAG,GAAG,CAAC,eAAe,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,OAAO,0BAA0B,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;CACF,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Slack channel provider adapter — registry entry for Events + transport.
3
+ */
4
+ import type { ChannelManifest } from "../manifest.js";
5
+ import type { RequiredSlackChannelConfig } from "./define.js";
6
+ export { SLACK_CHANNEL_REQUIRED_ENV } from "./define.js";
7
+ export { slackChannelAdapter } from "./adapter-core.js";
8
+ /** Rebuild Slack runtime config from a compiled envelope manifest. */
9
+ export declare function slackConfigFromManifest(manifest: ChannelManifest): RequiredSlackChannelConfig;
10
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAc,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EACV,0BAA0B,EAI3B,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,sEAAsE;AACtE,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,eAAe,GACxB,0BAA0B,CAiB5B"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Slack channel provider adapter — registry entry for Events + transport.
3
+ */
4
+ export { SLACK_CHANNEL_REQUIRED_ENV } from "./define.js";
5
+ export { slackChannelAdapter } from "./adapter-core.js";
6
+ /** Rebuild Slack runtime config from a compiled envelope manifest. */
7
+ export function slackConfigFromManifest(manifest) {
8
+ const cfg = manifest.providerConfig;
9
+ return {
10
+ on: cfg.triggers ?? [],
11
+ autoReply: manifest.autoReply,
12
+ mentionBehavior: cfg.mentionBehavior ?? "strip",
13
+ filters: cfg.filters ?? {
14
+ allowSharedConversations: false,
15
+ },
16
+ conversation: cfg.conversation ?? {
17
+ appMention: "thread",
18
+ directMessage: "conversation",
19
+ },
20
+ };
21
+ }
22
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/channels/slack/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,sEAAsE;AACtE,MAAM,UAAU,uBAAuB,CACrC,QAAyB;IAEzB,MAAM,GAAG,GAAG,QAAQ,CAAC,cAA4B,CAAC;IAClD,OAAO;QACL,EAAE,EAAG,GAAG,CAAC,QAA2C,IAAI,EAAE;QAC1D,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,eAAe,EAAG,GAAG,CAAC,eAAwC,IAAI,OAAO;QACzE,OAAO,EAAG,GAAG,CAAC,OAAiD,IAAI;YACjE,wBAAwB,EAAE,KAAK;SAChC;QACD,YAAY,EAAG,GAAG,CAAC,YAGjB,IAAI;YACJ,UAAU,EAAE,QAAQ;YACpB,aAAa,EAAE,cAAc;SAC9B;KACF,CAAC;AACJ,CAAC"}
@@ -4,7 +4,11 @@
4
4
  * Returns a validated declaration. Provider HTTP, OAuth, and Web API clients
5
5
  * remain managed implementation details.
6
6
  */
7
- import type { ChannelProvider, JsonValue } from "../types.js";
7
+ import type { ChannelManifest } from "../manifest.js";
8
+ import { type ChannelDefinition } from "../plugin.js";
9
+ export type { ChannelManifest } from "../manifest.js";
10
+ /** Env vars deploy must ensure for any Slack channel manifest. */
11
+ export declare const SLACK_CHANNEL_REQUIRED_ENV: readonly ["SLACK_SIGNING_SECRET", "SLACK_BOT_TOKEN"];
8
12
  /**
9
13
  * Managed Slack triggers.
10
14
  * Later phases may enable `slash_command` / `interaction`.
@@ -40,11 +44,7 @@ export interface SlackChannelConfig {
40
44
  conversation?: SlackConversationPolicy;
41
45
  }
42
46
  /** Object exported from `channels/*.ts`. */
43
- export interface SlackChannelDefinition {
44
- readonly kind: "channel";
45
- readonly provider: ChannelProvider;
46
- readonly config: RequiredSlackChannelConfig;
47
- }
47
+ export type SlackChannelDefinition = ChannelDefinition<RequiredSlackChannelConfig>;
48
48
  /** Normalized config with defaults applied. */
49
49
  export interface RequiredSlackChannelConfig {
50
50
  on: readonly SlackChannelTrigger[];
@@ -62,17 +62,6 @@ export interface RequiredSlackChannelConfig {
62
62
  directMessage: SlackConversationMapping;
63
63
  };
64
64
  }
65
- /** Provider-neutral channel manifest emitted at compile/deploy time. */
66
- export interface ChannelManifest {
67
- name: string;
68
- provider: ChannelProvider;
69
- triggers: readonly SlackChannelTrigger[];
70
- autoReply: boolean;
71
- mentionBehavior: SlackMentionBehavior;
72
- filters: RequiredSlackChannelConfig["filters"];
73
- conversation: RequiredSlackChannelConfig["conversation"];
74
- requiredScopes: readonly string[];
75
- }
76
65
  /**
77
66
  * Declare a managed Slack channel. Files under `channels/*.ts` export a named
78
67
  * `channel` created with this helper.
@@ -81,7 +70,5 @@ export declare function defineSlackChannel(config: SlackChannelConfig): SlackCha
81
70
  /** Derive Slack OAuth scopes from enabled channel triggers. */
82
71
  export declare function requiredSlackScopes(config: Pick<RequiredSlackChannelConfig, "on">): string[];
83
72
  /** Build the compile/deploy channel manifest for a file-derived name. */
84
- export declare function toChannelManifest(name: string, definition: SlackChannelDefinition): ChannelManifest;
85
- /** @internal — re-export for manifest JSON typing. */
86
- export type SlackChannelJsonValue = JsonValue;
73
+ export declare function toChannelManifest(name: string, definition: SlackChannelDefinition | RequiredSlackChannelConfig): ChannelManifest;
87
74
  //# sourceMappingURL=define.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/define.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/define.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGrE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,kEAAkE;AAClE,eAAO,MAAM,0BAA0B,YACrC,sBAAsB,oBAEd,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAC3B,aAAa,GACb,gBAAgB,GAChB,cAAc,CAAC;AAEnB,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,UAAU,CAAC;AAExD,MAAM,MAAM,wBAAwB,GAAG,QAAQ,GAAG,cAAc,GAAG,SAAS,CAAC;AAE7E,MAAM,WAAW,mBAAmB;IAClC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,kEAAkE;IAClE,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,uBAAuB;IACtC,wBAAwB;IACxB,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,8BAA8B;IAC9B,aAAa,CAAC,EAAE,wBAAwB,CAAC;CAC1C;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACnC,oBAAoB;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uBAAuB;IACvB,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,YAAY,CAAC,EAAE,uBAAuB,CAAC;CACxC;AAED,4CAA4C;AAC5C,MAAM,MAAM,sBAAsB,GAChC,iBAAiB,CAAC,0BAA0B,CAAC,CAAC;AAEhD,+CAA+C;AAC/C,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,oBAAoB,CAAC;IACtC,OAAO,EAAE;QACP,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QACzC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QACzC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAClC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAClC,wBAAwB,EAAE,OAAO,CAAC;KACnC,CAAC;IACF,YAAY,EAAE;QACZ,UAAU,EAAE,wBAAwB,CAAC;QACrC,aAAa,EAAE,wBAAwB,CAAC;KACzC,CAAC;CACH;AAUD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,kBAAkB,GACzB,sBAAsB,CAexB;AAED,+DAA+D;AAC/D,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,GAC7C,MAAM,EAAE,CAeV;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,sBAAsB,GAAG,0BAA0B,GAC9D,eAAe,CAmBjB"}
@@ -4,6 +4,14 @@
4
4
  * Returns a validated declaration. Provider HTTP, OAuth, and Web API clients
5
5
  * remain managed implementation details.
6
6
  */
7
+ import { SLACK_BOT_TOKEN_ENV } from "../binding.js";
8
+ import { defineChannel } from "../plugin.js";
9
+ import { slackChannelAdapter } from "./adapter-core.js";
10
+ /** Env vars deploy must ensure for any Slack channel manifest. */
11
+ export const SLACK_CHANNEL_REQUIRED_ENV = [
12
+ "SLACK_SIGNING_SECRET",
13
+ SLACK_BOT_TOKEN_ENV,
14
+ ];
7
15
  const SUPPORTED_TRIGGERS = new Set([
8
16
  "app_mention",
9
17
  "direct_message",
@@ -17,11 +25,15 @@ const MAPPINGS = new Set(["thread", "conversation", "message"]);
17
25
  */
18
26
  export function defineSlackChannel(config) {
19
27
  const normalized = validateAndNormalize(config);
20
- return {
21
- kind: "channel",
28
+ return defineChannel({
22
29
  provider: "slack",
30
+ adapter: slackChannelAdapter,
23
31
  config: normalized,
24
- };
32
+ toManifest: (name) => {
33
+ const { name: _n, provider: _p, ...body } = toChannelManifest(name, normalized);
34
+ return body;
35
+ },
36
+ });
25
37
  }
26
38
  /** Derive Slack OAuth scopes from enabled channel triggers. */
27
39
  export function requiredSlackScopes(config) {
@@ -42,15 +54,22 @@ export function requiredSlackScopes(config) {
42
54
  }
43
55
  /** Build the compile/deploy channel manifest for a file-derived name. */
44
56
  export function toChannelManifest(name, definition) {
57
+ const config = "config" in definition && definition.config
58
+ ? definition.config
59
+ : definition;
60
+ const scopes = requiredSlackScopes(config);
45
61
  return {
46
62
  name,
47
- provider: definition.provider,
48
- triggers: definition.config.on,
49
- autoReply: definition.config.autoReply,
50
- mentionBehavior: definition.config.mentionBehavior,
51
- filters: definition.config.filters,
52
- conversation: definition.config.conversation,
53
- requiredScopes: requiredSlackScopes(definition.config),
63
+ provider: "slack",
64
+ autoReply: config.autoReply,
65
+ requiredPermissions: scopes,
66
+ requiredEnv: [...SLACK_CHANNEL_REQUIRED_ENV],
67
+ providerConfig: {
68
+ triggers: config.on,
69
+ mentionBehavior: config.mentionBehavior,
70
+ filters: config.filters,
71
+ conversation: config.conversation,
72
+ },
54
73
  };
55
74
  }
56
75
  function validateAndNormalize(config) {
@@ -1 +1 @@
1
- {"version":3,"file":"define.js","sourceRoot":"","sources":["../../../src/channels/slack/define.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"define.js","sourceRoot":"","sources":["../../../src/channels/slack/define.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ import { InMemoryChannelStore } from "../store.js";
9
9
  import { type ChannelBinding } from "../binding.js";
10
10
  import type { RequiredSlackChannelConfig } from "./define.js";
11
11
  import { type SlackInstallationContext } from "./normalize.js";
12
- import { type IdentityLinkStore } from "../../identity/links.js";
12
+ import { type IdentityLinkStore } from "../../identity/slack/links.js";
13
13
  /** Env vars for Phase 1 single-workspace Slack install. */
14
14
  export declare const SLACK_SIGNING_SECRET_ENV = "SLACK_SIGNING_SECRET";
15
15
  export declare const SLACK_API_APP_ID_ENV = "SLACK_API_APP_ID";
@@ -63,6 +63,8 @@ export interface InvokeChannelAgentInput {
63
63
  binding: ChannelBinding;
64
64
  text: string;
65
65
  assistantId: string;
66
+ /** Trusted source provider stamped on loopback invoke. @default "slack" */
67
+ sourceProvider?: ChannelBinding["provider"];
66
68
  }
67
69
  export interface InvokeChannelAgentResult {
68
70
  replyText: string;
@@ -83,4 +85,13 @@ export declare function channelSourceThreadExists(input: SourceThreadExistsInput
83
85
  export declare function invokeChannelAgent(input: InvokeChannelAgentInput): Promise<InvokeChannelAgentResult>;
84
86
  /** Deterministic LangGraph thread id from the Slack source-thread key. */
85
87
  export declare function stableThreadId(sourceThreadKey: string): string;
88
+ /**
89
+ * Build a short user-facing Slack failure message.
90
+ *
91
+ * Opaque by default; only allowlisted {@link ChannelError} codes get a fixed
92
+ * safe string. Raw exception text is never posted to the channel.
93
+ *
94
+ * Exported for unit tests.
95
+ */
96
+ export declare function formatSlackFailureReply(error: unknown): string;
86
97
  //# sourceMappingURL=http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/http.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAGL,KAAK,cAAc,EAEpB,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,gBAAgB,CAAC;AAQxB,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AAcjC,2DAA2D;AAC3D,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAC/D,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AACvD,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AACjD,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAiBzD,8EAA8E;AAC9E,MAAM,WAAW,uBAAuB;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,0BAA0B,CAAC;IACnC,8BAA8B;IAC9B,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC/C,qCAAqC;IACrC,WAAW,CAAC,EAAE,OAAO,kBAAkB,CAAC;IACxC,oDAAoD;IACpD,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC9B,4CAA4C;IAC5C,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3E;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,QAAQ,CAAC,CAmPnB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAkBlB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,wBAAwB,CAAC,CA+CnC;AAuCD,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAS9D"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/http.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAIL,KAAK,cAAc,EAEpB,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,gBAAgB,CAAC;AAQxB,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAC;AAevC,2DAA2D;AAC3D,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAC/D,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AACvD,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AACjD,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAiBzD,8EAA8E;AAC9E,MAAM,WAAW,uBAAuB;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,0BAA0B,CAAC;IACnC,8BAA8B;IAC9B,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC/C,qCAAqC;IACrC,WAAW,CAAC,EAAE,OAAO,kBAAkB,CAAC;IACxC,oDAAoD;IACpD,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC9B,4CAA4C;IAC5C,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3E;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,QAAQ,CAAC,CA2QnB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,cAAc,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAkBlB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,wBAAwB,CAAC,CAgDnC;AA4BD,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAS9D;AA8ID;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAK9D"}
@@ -9,14 +9,15 @@ import { createHash } from "node:crypto";
9
9
  import { Client } from "@langchain/langgraph-sdk";
10
10
  import { ChannelError } from "../errors.js";
11
11
  import { InMemoryChannelStore } from "../store.js";
12
- import { CHANNEL_BINDING_KEY, clearFinalPosted, wasDeliveryFinalPosted, } from "../binding.js";
12
+ import { CHANNEL_BINDING_KEY, clearFinalPosted, markFinalPosted, wasDeliveryFinalPosted, } from "../binding.js";
13
13
  import { extractAssistantText } from "../assistant-text.js";
14
14
  import { createRuntimeChannel } from "../runtime.js";
15
15
  import { normalizeSlackEvent, verifySlackRequest, } from "./normalize.js";
16
16
  import { createSlackWebApiTransport, DEFAULT_ASSISTANT_STATUS, DEFAULT_LOADING_MESSAGES, setSlackAssistantStatus, } from "./transport.js";
17
17
  import { SLACK_BOT_TOKEN_ENV } from "../binding.js";
18
- import { getIdentityLinkStore, } from "../../identity/links.js";
19
- import { readSlackOidcConfig, slackConnectUrl, } from "../../identity/slack-oauth.js";
18
+ import { getIdentityLinkStore, } from "../../identity/slack/links.js";
19
+ import { resolveLoopbackApiUrl } from "../../identity/loopback.js";
20
+ import { readSlackOidcConfig, slackConnectUrl, } from "../../identity/slack/oauth.js";
20
21
  import { ACTOR_HEADER, INGRESS_SECRET_ENV, INGRESS_SECRET_HEADER, SOURCE_PROVIDER_HEADER, SOURCE_THREAD_HEADER, TENANT_HEADER, } from "../../runtime/auth.js";
21
22
  /** Env vars for Phase 1 single-workspace Slack install. */
22
23
  export const SLACK_SIGNING_SECRET_ENV = "SLACK_SIGNING_SECRET";
@@ -205,43 +206,66 @@ export async function handleSlackEventsRequest(request, channel) {
205
206
  }
206
207
  }
207
208
  const address = normalized.event.address;
208
- await withSlackAssistantStatusHeartbeat({
209
- botToken,
210
- channelId: address.conversationId,
211
- threadTs: address.threadId ?? "",
212
- }, async () => {
213
- const result = await invoke({
214
- actorId,
215
- tenantId: normalized.tenantId,
216
- sourceThreadKey: normalized.sourceThreadKey,
217
- binding,
218
- text,
219
- assistantId: channel.assistantId ?? DEFAULT_ASSISTANT_ID,
209
+ try {
210
+ await withSlackAssistantStatusHeartbeat({
211
+ botToken,
212
+ channelId: address.conversationId,
213
+ threadTs: address.threadId ?? "",
214
+ }, async () => {
215
+ const result = await invoke({
216
+ actorId,
217
+ tenantId: normalized.tenantId,
218
+ sourceThreadKey: normalized.sourceThreadKey,
219
+ binding,
220
+ text,
221
+ assistantId: channel.assistantId ?? DEFAULT_ASSISTANT_ID,
222
+ });
223
+ delivery.runId = result.runId;
224
+ delivery.status = "response_pending";
225
+ delivery.updatedAt = new Date().toISOString();
226
+ if (channel.config.autoReply &&
227
+ !wasDeliveryFinalPosted(delivery.deliveryId) &&
228
+ result.replyText.trim().length > 0) {
229
+ if (!botToken) {
230
+ throw new ChannelError("channel_run_failed", "auto-reply requires SLACK_BOT_TOKEN");
231
+ }
232
+ const transport = createSlackWebApiTransport({ botToken });
233
+ const runtimeChannel = createRuntimeChannel({
234
+ name: channel.name,
235
+ provider: "slack",
236
+ event: normalized.event,
237
+ address: normalized.event.address,
238
+ transport,
239
+ onFinalPosted: () => undefined,
240
+ });
241
+ const posted = await runtimeChannel.post({ text: result.replyText }, { final: true });
242
+ delivery.outboundMessageIds.push(posted.id);
243
+ }
244
+ delivery.status = "delivered";
245
+ delivery.updatedAt = new Date().toISOString();
220
246
  });
221
- delivery.runId = result.runId;
222
- delivery.status = "response_pending";
247
+ }
248
+ catch (error) {
249
+ delivery.status = "failed";
223
250
  delivery.updatedAt = new Date().toISOString();
224
- if (channel.config.autoReply &&
225
- !wasDeliveryFinalPosted(delivery.deliveryId) &&
226
- result.replyText.trim().length > 0) {
227
- if (!botToken) {
228
- throw new ChannelError("channel_run_failed", "auto-reply requires SLACK_BOT_TOKEN");
251
+ if (botToken && !wasDeliveryFinalPosted(delivery.deliveryId)) {
252
+ try {
253
+ const posted = await postFailureReply({
254
+ botToken,
255
+ channelName: channel.name,
256
+ event: normalized.event,
257
+ address: normalized.event.address,
258
+ error,
259
+ });
260
+ delivery.outboundMessageIds.push(posted.id);
261
+ markFinalPosted(delivery.deliveryId);
262
+ }
263
+ catch (postError) {
264
+ console.error(`[mda] channel "${channel.name}" failed to post failure reply for delivery ${delivery.deliveryId}:`, postError);
229
265
  }
230
- const transport = createSlackWebApiTransport({ botToken });
231
- const runtimeChannel = createRuntimeChannel({
232
- name: channel.name,
233
- provider: "slack",
234
- event: normalized.event,
235
- address: normalized.event.address,
236
- transport,
237
- onFinalPosted: () => undefined,
238
- });
239
- const posted = await runtimeChannel.post({ text: result.replyText }, { final: true });
240
- delivery.outboundMessageIds.push(posted.id);
241
266
  }
242
- delivery.status = "delivered";
243
- delivery.updatedAt = new Date().toISOString();
244
- });
267
+ throw error;
268
+ }
245
269
  });
246
270
  return new Response("", { status: 200 });
247
271
  }
@@ -285,6 +309,7 @@ export async function invokeChannelAgent(input) {
285
309
  tenantId: input.tenantId,
286
310
  sourceThreadKey: input.sourceThreadKey,
287
311
  ingressSecret,
312
+ sourceProvider: input.sourceProvider ?? "slack",
288
313
  });
289
314
  const threadId = stableThreadId(input.sourceThreadKey);
290
315
  try {
@@ -319,7 +344,7 @@ function createChannelLoopbackClient(input) {
319
344
  const headers = {
320
345
  [INGRESS_SECRET_HEADER]: input.ingressSecret,
321
346
  [ACTOR_HEADER]: input.actorId,
322
- [SOURCE_PROVIDER_HEADER]: "slack",
347
+ [SOURCE_PROVIDER_HEADER]: input.sourceProvider ?? "slack",
323
348
  [SOURCE_THREAD_HEADER]: input.sourceThreadKey,
324
349
  };
325
350
  if (input.tenantId) {
@@ -331,16 +356,6 @@ function createChannelLoopbackClient(input) {
331
356
  defaultHeaders: headers,
332
357
  });
333
358
  }
334
- function resolveLoopbackApiUrl() {
335
- const explicit = process.env.MDA_CHANNEL_API_URL ??
336
- process.env.LANGGRAPH_API_URL ??
337
- process.env.LANGSMITH_ENDPOINT;
338
- if (explicit && explicit.trim().length > 0) {
339
- return explicit.replace(/\/$/, "");
340
- }
341
- const port = process.env.PORT ?? "8000";
342
- return `http://127.0.0.1:${port}`;
343
- }
344
359
  /** Deterministic LangGraph thread id from the Slack source-thread key. */
345
360
  export function stableThreadId(sourceThreadKey) {
346
361
  const hex = createHash("sha256").update(sourceThreadKey).digest("hex");
@@ -441,6 +456,47 @@ async function postConnectPrompt(input) {
441
456
  `Open ${connectUrl} while signed in, then try again.`,
442
457
  }, { final: true });
443
458
  }
459
+ /**
460
+ * Pre-approved Slack copy for known {@link ChannelError} codes.
461
+ *
462
+ * Never include `error.message` — provisioning / credential / upstream failures
463
+ * can embed actor ids, paths, or API details that must not go to the channel.
464
+ */
465
+ const SAFE_SLACK_FAILURE_BY_CODE = {
466
+ channel_identity_unresolvable: "Connect your account to use this agent in Slack, then try again.",
467
+ channel_provider_rate_limited: "Slack is rate-limiting replies right now. Please try again shortly.",
468
+ channel_invocation_rate_limited: "Too many requests. Please try again shortly.",
469
+ channel_destination_forbidden: "That destination isn't allowed for this agent.",
470
+ channel_provider_rejected: "I couldn't post a reply to Slack. Please try again.",
471
+ channel_run_failed: "I couldn't finish this request — workspace setup or the agent run failed.",
472
+ };
473
+ const OPAQUE_SLACK_FAILURE_REPLY = "I couldn't finish this request — workspace setup or the agent run failed.";
474
+ /**
475
+ * Build a short user-facing Slack failure message.
476
+ *
477
+ * Opaque by default; only allowlisted {@link ChannelError} codes get a fixed
478
+ * safe string. Raw exception text is never posted to the channel.
479
+ *
480
+ * Exported for unit tests.
481
+ */
482
+ export function formatSlackFailureReply(error) {
483
+ if (error instanceof ChannelError) {
484
+ return SAFE_SLACK_FAILURE_BY_CODE[error.code] ?? OPAQUE_SLACK_FAILURE_REPLY;
485
+ }
486
+ return OPAQUE_SLACK_FAILURE_REPLY;
487
+ }
488
+ async function postFailureReply(input) {
489
+ const transport = createSlackWebApiTransport({ botToken: input.botToken });
490
+ const runtimeChannel = createRuntimeChannel({
491
+ name: input.channelName,
492
+ provider: "slack",
493
+ event: input.event,
494
+ address: input.address,
495
+ transport,
496
+ onFinalPosted: () => undefined,
497
+ });
498
+ return runtimeChannel.post({ text: formatSlackFailureReply(input.error) }, { final: true });
499
+ }
444
500
  function jsonError(status, message) {
445
501
  return new Response(JSON.stringify({ error: message }), {
446
502
  status,