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
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Stable GitHub source-thread keys for trusted channel ingress.
3
+ *
4
+ * Prefer issue/PR scoped keys when a number is known:
5
+ * `github:<installationId>:<owner>/<repo>#<number>`
6
+ * Otherwise fall back to delivery-scoped keys:
7
+ * `github:<installationId>:<owner>/<repo>:delivery:<deliveryId>`
8
+ * `github:<installationId>:delivery:<deliveryId>`
9
+ */
10
+ export function encodeGitHubSourceThreadKey(input) {
11
+ const install = input.installationId || "unknown";
12
+ if (input.owner &&
13
+ input.repo &&
14
+ typeof input.number === "number" &&
15
+ Number.isFinite(input.number)) {
16
+ return `github:${install}:${input.owner}/${input.repo}#${input.number}`;
17
+ }
18
+ if (input.owner && input.repo && input.deliveryId) {
19
+ return `github:${install}:${input.owner}/${input.repo}:delivery:${input.deliveryId}`;
20
+ }
21
+ if (input.deliveryId) {
22
+ return `github:${install}:delivery:${input.deliveryId}`;
23
+ }
24
+ return `github:${install}:delivery:unknown`;
25
+ }
26
+ export function decodeGitHubSourceThreadKey(key) {
27
+ const issue = /^github:([^:]+):([^/]+)\/([^#]+)#(\d+)$/.exec(key);
28
+ if (issue) {
29
+ return {
30
+ installationId: issue[1],
31
+ owner: issue[2],
32
+ repo: issue[3],
33
+ number: Number(issue[4]),
34
+ };
35
+ }
36
+ const repoDelivery = /^github:([^:]+):([^/]+)\/([^:]+):delivery:(.+)$/.exec(key);
37
+ if (repoDelivery) {
38
+ return {
39
+ installationId: repoDelivery[1],
40
+ owner: repoDelivery[2],
41
+ repo: repoDelivery[3],
42
+ deliveryId: repoDelivery[4],
43
+ };
44
+ }
45
+ const delivery = /^github:([^:]+):delivery:(.+)$/.exec(key);
46
+ if (delivery) {
47
+ return {
48
+ installationId: delivery[1],
49
+ deliveryId: delivery[2],
50
+ };
51
+ }
52
+ return null;
53
+ }
54
+ //# sourceMappingURL=source-thread.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-thread.js","sourceRoot":"","sources":["../../../src/channels/github/source-thread.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,UAAU,2BAA2B,CAAC,KAM3C;IACC,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,IAAI,SAAS,CAAC;IAClD,IACE,KAAK,CAAC,KAAK;QACX,KAAK,CAAC,IAAI;QACV,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QAChC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAC7B,CAAC;QACD,OAAO,UAAU,OAAO,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;IAC1E,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QAClD,OAAO,UAAU,OAAO,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,UAAU,EAAE,CAAC;IACvF,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,UAAU,OAAO,aAAa,KAAK,CAAC,UAAU,EAAE,CAAC;IAC1D,CAAC;IACD,OAAO,UAAU,OAAO,mBAAmB,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,GAAW;IAOrD,MAAM,KAAK,GAAG,yCAAyC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClE,IAAI,KAAK,EAAE,CAAC;QACV,OAAO;YACL,cAAc,EAAE,KAAK,CAAC,CAAC,CAAE;YACzB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAE;YAChB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE;YACf,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACzB,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,iDAAiD,CAAC,IAAI,CACzE,GAAG,CACJ,CAAC;IACF,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO;YACL,cAAc,EAAE,YAAY,CAAC,CAAC,CAAE;YAChC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAE;YACvB,IAAI,EAAE,YAAY,CAAC,CAAC,CAAE;YACtB,UAAU,EAAE,YAAY,CAAC,CAAC,CAAE;SAC7B,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,gCAAgC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5D,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO;YACL,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAE;YAC5B,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAE;SACzB,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * GitHub App installation transport — PR/issue comments via the REST API.
3
+ */
4
+ import type { ChannelTransport } from "../runtime.js";
5
+ export declare const GITHUB_APP_ID_ENV = "GITHUB_APP_ID";
6
+ export declare const GITHUB_APP_PRIVATE_KEY_ENV = "GITHUB_APP_PRIVATE_KEY";
7
+ export declare const GITHUB_INSTALLATION_ID_ENV = "GITHUB_INSTALLATION_ID";
8
+ export interface GitHubAppTransportOptions {
9
+ appId: string;
10
+ privateKey: string;
11
+ installationId: string;
12
+ /** Override fetch (tests). */
13
+ fetch?: typeof fetch;
14
+ }
15
+ /**
16
+ * Build a {@link ChannelTransport} that posts/edits issue comments as the App.
17
+ */
18
+ export declare function createGitHubAppTransport(options: GitHubAppTransportOptions): ChannelTransport;
19
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/channels/github/transport.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGtD,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AACjD,eAAO,MAAM,0BAA0B,2BAA2B,CAAC;AACnE,eAAO,MAAM,0BAA0B,2BAA2B,CAAC;AAEnE,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,yBAAyB,GACjC,gBAAgB,CA+DlB"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * GitHub App installation transport — PR/issue comments via the REST API.
3
+ */
4
+ import { createPrivateKey } from "node:crypto";
5
+ import { SignJWT } from "jose";
6
+ export const GITHUB_APP_ID_ENV = "GITHUB_APP_ID";
7
+ export const GITHUB_APP_PRIVATE_KEY_ENV = "GITHUB_APP_PRIVATE_KEY";
8
+ export const GITHUB_INSTALLATION_ID_ENV = "GITHUB_INSTALLATION_ID";
9
+ /**
10
+ * Build a {@link ChannelTransport} that posts/edits issue comments as the App.
11
+ */
12
+ export function createGitHubAppTransport(options) {
13
+ const fetchImpl = options.fetch ?? fetch;
14
+ let installationToken;
15
+ async function getInstallationToken() {
16
+ const now = Date.now();
17
+ if (installationToken && installationToken.expiresAt > now + 60_000) {
18
+ return installationToken.token;
19
+ }
20
+ const jwt = await appJwt(options.appId, options.privateKey);
21
+ const res = await fetchImpl(`https://api.github.com/app/installations/${options.installationId}/access_tokens`, {
22
+ method: "POST",
23
+ headers: {
24
+ Authorization: `Bearer ${jwt}`,
25
+ Accept: "application/vnd.github+json",
26
+ "X-GitHub-Api-Version": "2022-11-28",
27
+ },
28
+ });
29
+ if (!res.ok) {
30
+ throw new Error(`GitHub installation token failed: ${res.status} ${await res.text()}`);
31
+ }
32
+ const body = (await res.json());
33
+ installationToken = {
34
+ token: body.token,
35
+ expiresAt: Date.parse(body.expires_at),
36
+ };
37
+ return body.token;
38
+ }
39
+ return {
40
+ async post(input) {
41
+ const target = parseConversationId(input.conversationId);
42
+ const token = await getInstallationToken();
43
+ const res = await fetchImpl(`https://api.github.com/repos/${target.owner}/${target.repo}/issues/${target.number}/comments`, {
44
+ method: "POST",
45
+ headers: {
46
+ Authorization: `Bearer ${token}`,
47
+ Accept: "application/vnd.github+json",
48
+ "Content-Type": "application/json",
49
+ "X-GitHub-Api-Version": "2022-11-28",
50
+ },
51
+ body: JSON.stringify({ body: input.text }),
52
+ });
53
+ if (!res.ok) {
54
+ throw new Error(`GitHub create comment failed: ${res.status} ${await res.text()}`);
55
+ }
56
+ const body = (await res.json());
57
+ return {
58
+ id: `github-comment:${body.id}`,
59
+ providerMessageId: String(body.id),
60
+ };
61
+ },
62
+ };
63
+ }
64
+ function parseConversationId(conversationId) {
65
+ const match = /^([^/]+)\/([^#]+)#(\d+)$/.exec(conversationId);
66
+ if (!match) {
67
+ throw new Error(`GitHub transport cannot parse conversationId "${conversationId}"`);
68
+ }
69
+ return {
70
+ owner: match[1],
71
+ repo: match[2],
72
+ number: Number(match[3]),
73
+ };
74
+ }
75
+ /**
76
+ * Sign an App JWT. Uses Node `createPrivateKey` so both PKCS#1
77
+ * (`BEGIN RSA PRIVATE KEY`, GitHub's download format) and PKCS#8 PEMs work.
78
+ */
79
+ async function appJwt(appId, privateKeyPem) {
80
+ const key = createPrivateKey(normalizePem(privateKeyPem));
81
+ const now = Math.floor(Date.now() / 1000);
82
+ return new SignJWT({})
83
+ .setProtectedHeader({ alg: "RS256" })
84
+ .setIssuedAt(now - 60)
85
+ .setExpirationTime(now + 9 * 60)
86
+ .setIssuer(appId)
87
+ .sign(key);
88
+ }
89
+ function normalizePem(key) {
90
+ return key.includes("\\n") ? key.replace(/\\n/g, "\n") : key;
91
+ }
92
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/channels/github/transport.ts"],"names":[],"mappings":"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"}
@@ -4,16 +4,23 @@
4
4
  * Import provider integrations from their own entrypoints, e.g.
5
5
  * `managed-deepagents/channels/slack`.
6
6
  */
7
- export type { ChannelAddress, ChannelAttachmentRef, ChannelCapabilities, ChannelDestination, ChannelErrorCode, ChannelEvent, ChannelInboundMessage, ChannelMessage, ChannelMessageUpdate, ChannelNativePayload, ChannelProvider, JsonValue, PostedChannelMessage, RuntimeChannel, } from "./types.js";
7
+ export type { ChannelAddress, ChannelAttachmentRef, ChannelCapabilities, ChannelDestination, ChannelErrorCode, ChannelEvent, ChannelInboundMessage, ChannelMessage, ChannelMessageUpdate, ChannelNativePayload, JsonValue, PostedChannelMessage, RuntimeChannel, } from "./types.js";
8
8
  export { normalizeChannelDestination } from "./types.js";
9
9
  export { CHANNEL_ERROR_CODES, ChannelError } from "./errors.js";
10
- export { createRuntimeChannel, wasFinalPosted } from "./runtime.js";
10
+ export type { ChannelManifest, JsonObject } from "./manifest.js";
11
+ export { CHANNEL_BRAND, defineChannel, isChannelDefinition, manifestsFromChannelDefinitions, } from "./plugin.js";
12
+ export type { ChannelDefinition, ChannelManifestBody, DefineChannelOptions, } from "./plugin.js";
13
+ export { getChannelAdapter, registerChannelAdapter, trustedChannelSourceProviders, } from "./registry.js";
14
+ export type { ChannelHttpContext, ChannelProviderAdapter } from "./registry.js";
15
+ export { collectChannels } from "./collect.js";
16
+ export type { ChannelModuleEntry } from "./collect.js";
17
+ export { createRuntimeChannel } from "./runtime.js";
11
18
  export type { ChannelTransport, CreateRuntimeChannelOptions, } from "./runtime.js";
12
19
  export { CHANNEL_BINDING_KEY, SLACK_BOT_TOKEN_ENV, clearFinalPosted, markFinalPosted, resolveRuntimeChannel, wasDeliveryFinalPosted, } from "./binding.js";
13
20
  export type { ChannelBinding } from "./binding.js";
14
21
  export { InMemoryChannelStore } from "./store.js";
15
22
  export type { DeliveryRecord, DeliveryStatus } from "./store.js";
16
23
  export { extractAssistantText } from "./assistant-text.js";
17
- export { addressFromDeliverTo, createScheduleDeliveryMiddleware, deliverScheduleResult, isTrustedScheduleDeliveryRun, readScheduleDeliverTo, setScheduleMetadataForTests, } from "./schedule-delivery.js";
24
+ export { addressFromDeliverTo, createScheduleDeliveryMiddleware, deliverScheduleResult, isTrustedScheduleDeliveryRun, readScheduleDeliverTo, } from "./schedule-delivery.js";
18
25
  export type { DeliverScheduleResultInput, NormalizedScheduleDeliverTo, } from "./schedule-delivery.js";
19
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,SAAS,EACT,oBAAoB,EACpB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACpE,YAAY,EACV,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,gCAAgC,EAChC,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACT,oBAAoB,EACpB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,EACL,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,+BAA+B,GAChC,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEhF,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EACV,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,gCAAgC,EAChC,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC"}
@@ -6,9 +6,12 @@
6
6
  */
7
7
  export { normalizeChannelDestination } from "./types.js";
8
8
  export { CHANNEL_ERROR_CODES, ChannelError } from "./errors.js";
9
- export { createRuntimeChannel, wasFinalPosted } from "./runtime.js";
9
+ export { CHANNEL_BRAND, defineChannel, isChannelDefinition, manifestsFromChannelDefinitions, } from "./plugin.js";
10
+ export { getChannelAdapter, registerChannelAdapter, trustedChannelSourceProviders, } from "./registry.js";
11
+ export { collectChannels } from "./collect.js";
12
+ export { createRuntimeChannel } from "./runtime.js";
10
13
  export { CHANNEL_BINDING_KEY, SLACK_BOT_TOKEN_ENV, clearFinalPosted, markFinalPosted, resolveRuntimeChannel, wasDeliveryFinalPosted, } from "./binding.js";
11
14
  export { InMemoryChannelStore } from "./store.js";
12
15
  export { extractAssistantText } from "./assistant-text.js";
13
- export { addressFromDeliverTo, createScheduleDeliveryMiddleware, deliverScheduleResult, isTrustedScheduleDeliveryRun, readScheduleDeliverTo, setScheduleMetadataForTests, } from "./schedule-delivery.js";
16
+ export { addressFromDeliverTo, createScheduleDeliveryMiddleware, deliverScheduleResult, isTrustedScheduleDeliveryRun, readScheduleDeliverTo, } from "./schedule-delivery.js";
14
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAMpE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,gCAAgC,EAChC,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhE,OAAO,EACL,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,+BAA+B,GAChC,MAAM,aAAa,CAAC;AAOrB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAMpD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,gCAAgC,EAChC,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Provider-neutral channel manifest — compile/deploy/runtime contract.
3
+ *
4
+ * Provider-specific fields live in {@link ChannelManifest.providerConfig}.
5
+ * Adapters validate and interpret that blob; core only dispatches by `provider`.
6
+ */
7
+ import type { JsonValue } from "./types.js";
8
+ /** JSON object opaque to core; validated by the provider define helper. */
9
+ export type JsonObject = {
10
+ readonly [key: string]: JsonValue;
11
+ };
12
+ /**
13
+ * Compile/deploy envelope for a `channels/` declaration.
14
+ *
15
+ * Emitted by the CLI and embedded into the managed HTTP module.
16
+ */
17
+ export interface ChannelManifest {
18
+ /** File-derived channel route name (`channels/{name}` → `/channels/{name}/events`). */
19
+ name: string;
20
+ /** Adapter key used by the runtime registry. */
21
+ provider: string;
22
+ /** Whether the managed runner should auto-reply after invoke. */
23
+ autoReply: boolean;
24
+ /**
25
+ * Provider-declared permissions (Slack OAuth scopes, GitHub App permissions, …).
26
+ * Informational for docs/deploy UX; not enforced by MDA core.
27
+ */
28
+ requiredPermissions: readonly string[];
29
+ /** Env vars deploy must ensure when this channel is present. */
30
+ requiredEnv: readonly string[];
31
+ /** Opaque-to-core provider config (Slack triggers/filters, GitHub filters, …). */
32
+ providerConfig: JsonObject;
33
+ }
34
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/channels/manifest.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,2EAA2E;AAC3E,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAE/D;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,SAAS,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,gEAAgE;IAChE,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,kFAAkF;IAClF,cAAc,EAAE,UAAU,CAAC;CAC5B"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Provider-neutral channel manifest — compile/deploy/runtime contract.
3
+ *
4
+ * Provider-specific fields live in {@link ChannelManifest.providerConfig}.
5
+ * Adapters validate and interpret that blob; core only dispatches by `provider`.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/channels/manifest.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Channel plugin contract — the return value of any `define*` helper.
3
+ *
4
+ * Third-party packages export helpers like `defineStripeChannel` that return a
5
+ * branded {@link ChannelDefinition}. Helper names are irrelevant; the brand,
6
+ * adapter, and `toManifest` are what the CLI and runtime use.
7
+ */
8
+ import type { ChannelManifest } from "./manifest.js";
9
+ import type { ChannelProviderAdapter } from "./registry-types.js";
10
+ /**
11
+ * Realm-global brand marking a value as a managed channel definition.
12
+ * `Symbol.for` keeps identity stable across duplicate package copies.
13
+ */
14
+ export declare const CHANNEL_BRAND: unique symbol;
15
+ /**
16
+ * Author-supplied manifest fields. {@link defineChannel} stamps `name` (route)
17
+ * and `provider` from the definition so helpers do not repeat them.
18
+ */
19
+ export type ChannelManifestBody = Omit<ChannelManifest, "name" | "provider">;
20
+ /**
21
+ * Plugin object returned by `defineSlackChannel`, `defineGitHubChannel`, or any
22
+ * third-party `define*Channel` helper.
23
+ */
24
+ export interface ChannelDefinition<TConfig = unknown> {
25
+ readonly [CHANNEL_BRAND]: true;
26
+ readonly kind: "channel";
27
+ /** Adapter registry key and trusted source-provider stamp. */
28
+ readonly provider: string;
29
+ /** Provider Events/reply implementation (usually from the same package). */
30
+ readonly adapter: ChannelProviderAdapter;
31
+ /**
32
+ * Deploy/runtime metadata. Must be pure JSON (no functions).
33
+ * Live callbacks stay on {@link ChannelDefinition.config}.
34
+ * `name` and `provider` are stamped by {@link defineChannel}.
35
+ */
36
+ toManifest(name: string): ChannelManifest;
37
+ /** Provider-specific live config consumed by the adapter. */
38
+ readonly config: TConfig;
39
+ }
40
+ /** Inputs for {@link defineChannel}. */
41
+ export interface DefineChannelOptions<TConfig> {
42
+ provider: string;
43
+ adapter: ChannelProviderAdapter;
44
+ config: TConfig;
45
+ /** Return deploy fields only — `name` / `provider` are stamped automatically. */
46
+ toManifest: (name: string) => ChannelManifestBody;
47
+ }
48
+ /**
49
+ * Build a branded channel definition. First-party and third-party helpers should
50
+ * wrap this (or return an equivalent branded object).
51
+ */
52
+ export declare function defineChannel<TConfig>(options: DefineChannelOptions<TConfig>): ChannelDefinition<TConfig>;
53
+ /** Type guard for branded channel definitions. */
54
+ export declare function isChannelDefinition(value: unknown): value is ChannelDefinition;
55
+ /**
56
+ * Build the deploy/runtime manifest map from live channel definitions.
57
+ *
58
+ * Also registers each definition's adapter so Events routes can dispatch.
59
+ */
60
+ export declare function manifestsFromChannelDefinitions(definitions: Record<string, unknown>): Record<string, ChannelManifest>;
61
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/channels/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,OAAO,MAAkC,CAAC;AAEtE;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC;AAE7E;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,OAAO,GAAG,OAAO;IAClD,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IACzC;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAAC;IAC1C,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,wCAAwC;AACxC,MAAM,WAAW,oBAAoB,CAAC,OAAO;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,sBAAsB,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,iFAAiF;IACjF,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,mBAAmB,CAAC;CACnD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EACnC,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,GACrC,iBAAiB,CAAC,OAAO,CAAC,CA4C5B;AAED,kDAAkD;AAClD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,iBAAiB,CAI5B;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAcjC"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Channel plugin contract — the return value of any `define*` helper.
3
+ *
4
+ * Third-party packages export helpers like `defineStripeChannel` that return a
5
+ * branded {@link ChannelDefinition}. Helper names are irrelevant; the brand,
6
+ * adapter, and `toManifest` are what the CLI and runtime use.
7
+ */
8
+ import { registerChannelAdapter } from "./registry-store.js";
9
+ /**
10
+ * Realm-global brand marking a value as a managed channel definition.
11
+ * `Symbol.for` keeps identity stable across duplicate package copies.
12
+ */
13
+ export const CHANNEL_BRAND = Symbol.for("mda.channel");
14
+ /**
15
+ * Build a branded channel definition. First-party and third-party helpers should
16
+ * wrap this (or return an equivalent branded object).
17
+ */
18
+ export function defineChannel(options) {
19
+ if (!options || typeof options !== "object") {
20
+ throw new Error("defineChannel(...) requires an options object.");
21
+ }
22
+ if (typeof options.provider !== "string" || !options.provider.trim()) {
23
+ throw new Error("defineChannel(...) requires a non-empty `provider` string.");
24
+ }
25
+ if (options.adapter === null ||
26
+ typeof options.adapter !== "object" ||
27
+ typeof options.adapter.handleEventsRequest !== "function") {
28
+ throw new Error("defineChannel(...) requires an `adapter` with handleEventsRequest.");
29
+ }
30
+ if (typeof options.toManifest !== "function") {
31
+ throw new Error("defineChannel(...) requires a `toManifest` function.");
32
+ }
33
+ const provider = options.provider.trim();
34
+ if (options.adapter.provider !== provider) {
35
+ throw new Error(`defineChannel(...) adapter.provider ("${options.adapter.provider}") ` +
36
+ `must match provider ("${provider}").`);
37
+ }
38
+ const authorToManifest = options.toManifest;
39
+ return {
40
+ [CHANNEL_BRAND]: true,
41
+ kind: "channel",
42
+ provider,
43
+ adapter: options.adapter,
44
+ config: options.config,
45
+ toManifest(name) {
46
+ const body = authorToManifest(name);
47
+ return {
48
+ ...body,
49
+ name,
50
+ provider,
51
+ };
52
+ },
53
+ };
54
+ }
55
+ /** Type guard for branded channel definitions. */
56
+ export function isChannelDefinition(value) {
57
+ if (typeof value !== "object" || value === null)
58
+ return false;
59
+ const record = value;
60
+ return record[CHANNEL_BRAND] === true && record.kind === "channel";
61
+ }
62
+ /**
63
+ * Build the deploy/runtime manifest map from live channel definitions.
64
+ *
65
+ * Also registers each definition's adapter so Events routes can dispatch.
66
+ */
67
+ export function manifestsFromChannelDefinitions(definitions) {
68
+ const out = {};
69
+ for (const [name, value] of Object.entries(definitions)) {
70
+ if (!isChannelDefinition(value)) {
71
+ throw new Error(`channel "${name}" is not a branded ChannelDefinition. ` +
72
+ "Export `channel = defineXChannel(...)` (or defineChannel) so the " +
73
+ "return value includes CHANNEL_BRAND, adapter, and toManifest.");
74
+ }
75
+ registerChannelAdapter(value.adapter);
76
+ out[name] = value.toManifest(name);
77
+ }
78
+ return out;
79
+ }
80
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/channels/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAG7D;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAkB,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAsCtE;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAsC;IAEtC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IACD,IACE,OAAO,CAAC,OAAO,KAAK,IAAI;QACxB,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QACnC,OAAO,OAAO,CAAC,OAAO,CAAC,mBAAmB,KAAK,UAAU,EACzD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzC,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,yCAAyC,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK;YACpE,yBAAyB,QAAQ,KAAK,CACzC,CAAC;IACJ,CAAC;IACD,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAC5C,OAAO;QACL,CAAC,aAAa,CAAC,EAAE,IAAI;QACrB,IAAI,EAAE,SAAS;QACf,QAAQ;QACR,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,CAAC,IAAY;YACrB,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACpC,OAAO;gBACL,GAAG,IAAI;gBACP,IAAI;gBACJ,QAAQ;aACT,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,mBAAmB,CACjC,KAAc;IAEd,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,MAAM,GAAG,KAAyC,CAAC;IACzD,OAAO,MAAM,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAC7C,WAAoC;IAEpC,MAAM,GAAG,GAAoC,EAAE,CAAC;IAChD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,YAAY,IAAI,wCAAwC;gBACtD,mEAAmE;gBACnE,+DAA+D,CAClE,CAAC;QACJ,CAAC;QACD,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Adapter registry storage — kept separate from builtin registration so auth
3
+ * and collect can import without pulling Slack/GitHub adapter modules.
4
+ */
5
+ import type { ChannelProviderAdapter } from "./registry-types.js";
6
+ /** Register (or replace) a channel provider adapter. */
7
+ export declare function registerChannelAdapter(adapter: ChannelProviderAdapter): void;
8
+ /** Look up a registered adapter, or `undefined` if none. */
9
+ export declare function getChannelAdapter(provider: string): ChannelProviderAdapter | undefined;
10
+ /** Providers that may stamp trusted `x-mda-source-provider` on loopback invoke. */
11
+ export declare function trustedChannelSourceProviders(): ReadonlySet<string>;
12
+ //# sourceMappingURL=registry-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-store.d.ts","sourceRoot":"","sources":["../../src/channels/registry-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAIlE,wDAAwD;AACxD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAE5E;AAED,4DAA4D;AAC5D,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,GACf,sBAAsB,GAAG,SAAS,CAEpC;AAED,mFAAmF;AACnF,wBAAgB,6BAA6B,IAAI,WAAW,CAAC,MAAM,CAAC,CAEnE"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Adapter registry storage — kept separate from builtin registration so auth
3
+ * and collect can import without pulling Slack/GitHub adapter modules.
4
+ */
5
+ const adapters = new Map();
6
+ /** Register (or replace) a channel provider adapter. */
7
+ export function registerChannelAdapter(adapter) {
8
+ adapters.set(adapter.provider, adapter);
9
+ }
10
+ /** Look up a registered adapter, or `undefined` if none. */
11
+ export function getChannelAdapter(provider) {
12
+ return adapters.get(provider);
13
+ }
14
+ /** Providers that may stamp trusted `x-mda-source-provider` on loopback invoke. */
15
+ export function trustedChannelSourceProviders() {
16
+ return new Set(adapters.keys());
17
+ }
18
+ //# sourceMappingURL=registry-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-store.js","sourceRoot":"","sources":["../../src/channels/registry-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkC,CAAC;AAE3D,wDAAwD;AACxD,MAAM,UAAU,sBAAsB,CAAC,OAA+B;IACpE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,iBAAiB,CAC/B,QAAgB;IAEhB,OAAO,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,6BAA6B;IAC3C,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Adapter types — no side-effect imports.
3
+ */
4
+ import type { ChannelManifest } from "./manifest.js";
5
+ import type { ChannelTransport } from "./runtime.js";
6
+ /** Context passed to an adapter's Events HTTP handler. */
7
+ export interface ChannelHttpContext {
8
+ /** File-derived channel name (route segment). */
9
+ name: string;
10
+ /** Compiled channel manifest. */
11
+ manifest: ChannelManifest;
12
+ /**
13
+ * Live channel declaration imported from `channels/{name}` (includes
14
+ * GitHub `prompt` callbacks). Absent when only the JSON manifest is available.
15
+ */
16
+ definition?: unknown;
17
+ /**
18
+ * Pre-read raw body when the HTTP framework may have consumed `request`
19
+ * (Hono mount passes `await c.req.text()`).
20
+ */
21
+ rawBody?: string | Uint8Array;
22
+ }
23
+ /** Runtime plugin surface for a channel provider. */
24
+ export interface ChannelProviderAdapter {
25
+ /** Provider key; must match {@link ChannelManifest.provider}. */
26
+ readonly provider: string;
27
+ /** Handle `POST /channels/{name}/events` (verify + normalize + ACK + work). */
28
+ handleEventsRequest(request: Request, ctx: ChannelHttpContext): Promise<Response>;
29
+ /** Build outbound transport for `resolveRuntimeChannel`. */
30
+ createTransport(env: NodeJS.ProcessEnv): ChannelTransport | undefined;
31
+ }
32
+ //# sourceMappingURL=registry-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-types.d.ts","sourceRoot":"","sources":["../../src/channels/registry-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,QAAQ,EAAE,eAAe,CAAC;IAC1B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;CAC/B;AAED,qDAAqD;AACrD,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,mBAAmB,CACjB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB,4DAA4D;IAC5D,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,gBAAgB,GAAG,SAAS,CAAC;CACvE"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Adapter types — no side-effect imports.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=registry-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-types.js","sourceRoot":"","sources":["../../src/channels/registry-types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Channel provider adapter registry.
3
+ *
4
+ * Core mounts `/channels/{name}/events` and builds transports by looking up the
5
+ * adapter for `manifest.provider`. First-party adapters register lazily on first
6
+ * lookup so `define*` modules can import adapter-core without a load cycle.
7
+ */
8
+ import { registerChannelAdapter, trustedChannelSourceProviders } from "./registry-store.js";
9
+ import type { ChannelHttpContext, ChannelProviderAdapter } from "./registry-types.js";
10
+ export type { ChannelHttpContext, ChannelProviderAdapter };
11
+ export { registerChannelAdapter, trustedChannelSourceProviders };
12
+ /** Look up a registered adapter, or `undefined` if none. */
13
+ export declare function getChannelAdapter(provider: string): ChannelProviderAdapter | undefined;
14
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/channels/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAEL,sBAAsB,EACtB,6BAA6B,EAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,CAAC;AAWjE,4DAA4D;AAC5D,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,GACf,sBAAsB,GAAG,SAAS,CAGpC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Channel provider adapter registry.
3
+ *
4
+ * Core mounts `/channels/{name}/events` and builds transports by looking up the
5
+ * adapter for `manifest.provider`. First-party adapters register lazily on first
6
+ * lookup so `define*` modules can import adapter-core without a load cycle.
7
+ */
8
+ import { githubChannelAdapter } from "./github/adapter-core.js";
9
+ import { getChannelAdapter as getStoredAdapter, registerChannelAdapter, trustedChannelSourceProviders, } from "./registry-store.js";
10
+ import { slackChannelAdapter } from "./slack/adapter-core.js";
11
+ export { registerChannelAdapter, trustedChannelSourceProviders };
12
+ let builtinsRegistered = false;
13
+ function ensureBuiltinAdapters() {
14
+ if (builtinsRegistered)
15
+ return;
16
+ builtinsRegistered = true;
17
+ registerChannelAdapter(slackChannelAdapter);
18
+ registerChannelAdapter(githubChannelAdapter);
19
+ }
20
+ /** Look up a registered adapter, or `undefined` if none. */
21
+ export function getChannelAdapter(provider) {
22
+ ensureBuiltinAdapters();
23
+ return getStoredAdapter(provider);
24
+ }
25
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/channels/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EACL,iBAAiB,IAAI,gBAAgB,EACrC,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,CAAC;AAEjE,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAE/B,SAAS,qBAAqB;IAC5B,IAAI,kBAAkB;QAAE,OAAO;IAC/B,kBAAkB,GAAG,IAAI,CAAC;IAC1B,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;IAC5C,sBAAsB,CAAC,oBAAoB,CAAC,CAAC;AAC/C,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,iBAAiB,CAC/B,QAAgB;IAEhB,qBAAqB,EAAE,CAAC;IACxB,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Construct the optional `runtime.channel` surface for channel-originated runs.
3
3
  */
4
- import type { ChannelAddress, ChannelCapabilities, ChannelEvent, ChannelMessage, ChannelMessageUpdate, ChannelProvider, PostedChannelMessage, RuntimeChannel } from "./types.js";
4
+ import type { ChannelAddress, ChannelCapabilities, ChannelEvent, ChannelMessage, ChannelMessageUpdate, PostedChannelMessage, RuntimeChannel } from "./types.js";
5
5
  export interface ChannelTransport {
6
6
  post(input: {
7
7
  text: string;
@@ -17,7 +17,7 @@ export interface ChannelTransport {
17
17
  }
18
18
  export interface CreateRuntimeChannelOptions {
19
19
  name: string;
20
- provider: ChannelProvider;
20
+ provider: string;
21
21
  event: ChannelEvent;
22
22
  address: ChannelAddress;
23
23
  capabilities?: Partial<ChannelCapabilities>;
@@ -35,6 +35,4 @@ export interface CreateRuntimeChannelOptions {
35
35
  * Phase 1 only permits `current_thread` destinations.
36
36
  */
37
37
  export declare function createRuntimeChannel(options: CreateRuntimeChannelOptions): RuntimeChannel;
38
- /** True when an explicit `post(..., { final: true })` already delivered the reply. */
39
- export declare function wasFinalPosted(channel: RuntimeChannel): boolean;
40
38
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/channels/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,cAAc,EACf,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,KAAK,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;KACnC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClC,MAAM,CAAC,CAAC,KAAK,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;KACzC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC5C,SAAS,EAAE,gBAAgB,CAAC;IAC5B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;CAC5B;AAMD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,2BAA2B,GACnC,cAAc,CA4DhB;AAiBD,sFAAsF;AACtF,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAI/D"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/channels/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACf,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,KAAK,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;KACnC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClC,MAAM,CAAC,CAAC,KAAK,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;KACzC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC5C,SAAS,EAAE,gBAAgB,CAAC;IAC5B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;CAC5B;AAMD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,2BAA2B,GACnC,cAAc,CA4DhB"}