managed-deepagents 0.10.0-dev.16 → 0.10.0-dev.18

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 (236) hide show
  1. package/README.md +809 -71
  2. package/dist/channels/actor.d.ts +43 -0
  3. package/dist/channels/actor.d.ts.map +1 -0
  4. package/dist/channels/actor.js +2 -0
  5. package/dist/channels/actor.js.map +1 -0
  6. package/dist/channels/assistant-text.d.ts +29 -0
  7. package/dist/channels/assistant-text.d.ts.map +1 -1
  8. package/dist/channels/assistant-text.js +72 -1
  9. package/dist/channels/assistant-text.js.map +1 -1
  10. package/dist/channels/binding.d.ts +20 -1
  11. package/dist/channels/binding.d.ts.map +1 -1
  12. package/dist/channels/binding.js +39 -10
  13. package/dist/channels/binding.js.map +1 -1
  14. package/dist/channels/delivery.d.ts +21 -0
  15. package/dist/channels/delivery.d.ts.map +1 -0
  16. package/dist/channels/delivery.js +196 -0
  17. package/dist/channels/delivery.js.map +1 -0
  18. package/dist/channels/github/connections.d.ts.map +1 -1
  19. package/dist/channels/github/connections.js +2 -2
  20. package/dist/channels/github/connections.js.map +1 -1
  21. package/dist/channels/github/index.d.ts +1 -8
  22. package/dist/channels/github/index.d.ts.map +1 -1
  23. package/dist/channels/github/index.js +46 -139
  24. package/dist/channels/github/index.js.map +1 -1
  25. package/dist/channels/github/mentions.d.ts +12 -0
  26. package/dist/channels/github/mentions.d.ts.map +1 -0
  27. package/dist/channels/github/mentions.js +185 -0
  28. package/dist/channels/github/mentions.js.map +1 -0
  29. package/dist/channels/github/schema.d.ts +271 -0
  30. package/dist/channels/github/schema.d.ts.map +1 -1
  31. package/dist/channels/github/schema.js +34 -3
  32. package/dist/channels/github/schema.js.map +1 -1
  33. package/dist/channels/github/types.d.ts +57 -4
  34. package/dist/channels/github/types.d.ts.map +1 -1
  35. package/dist/channels/http/endpoint.d.ts +95 -0
  36. package/dist/channels/http/endpoint.d.ts.map +1 -0
  37. package/dist/channels/http/endpoint.js +276 -0
  38. package/dist/channels/http/endpoint.js.map +1 -0
  39. package/dist/channels/http/http.d.ts.map +1 -1
  40. package/dist/channels/http/http.js +322 -86
  41. package/dist/channels/http/http.js.map +1 -1
  42. package/dist/channels/http/index.d.ts +1 -1
  43. package/dist/channels/http/index.d.ts.map +1 -1
  44. package/dist/channels/http/index.js +10 -16
  45. package/dist/channels/http/index.js.map +1 -1
  46. package/dist/channels/http/ingress.d.ts +40 -5
  47. package/dist/channels/http/ingress.d.ts.map +1 -1
  48. package/dist/channels/http/ingress.js +63 -40
  49. package/dist/channels/http/ingress.js.map +1 -1
  50. package/dist/channels/http/provider.d.ts +119 -0
  51. package/dist/channels/http/provider.d.ts.map +1 -0
  52. package/dist/channels/http/provider.js +227 -0
  53. package/dist/channels/http/provider.js.map +1 -0
  54. package/dist/channels/http/studio.d.ts +24 -0
  55. package/dist/channels/http/studio.d.ts.map +1 -0
  56. package/dist/channels/http/studio.js +95 -0
  57. package/dist/channels/http/studio.js.map +1 -0
  58. package/dist/channels/http/types.d.ts +107 -7
  59. package/dist/channels/http/types.d.ts.map +1 -1
  60. package/dist/channels/linear/connections.d.ts +11 -0
  61. package/dist/channels/linear/connections.d.ts.map +1 -0
  62. package/dist/channels/linear/connections.js +14 -0
  63. package/dist/channels/linear/connections.js.map +1 -0
  64. package/dist/channels/linear/graphql.d.ts +57 -0
  65. package/dist/channels/linear/graphql.d.ts.map +1 -0
  66. package/dist/channels/linear/graphql.js +167 -0
  67. package/dist/channels/linear/graphql.js.map +1 -0
  68. package/dist/channels/linear/index.d.ts +9 -0
  69. package/dist/channels/linear/index.d.ts.map +1 -0
  70. package/dist/channels/linear/index.js +489 -0
  71. package/dist/channels/linear/index.js.map +1 -0
  72. package/dist/channels/linear/schema.d.ts +1050 -0
  73. package/dist/channels/linear/schema.d.ts.map +1 -0
  74. package/dist/channels/linear/schema.js +255 -0
  75. package/dist/channels/linear/schema.js.map +1 -0
  76. package/dist/channels/linear/types.d.ts +162 -0
  77. package/dist/channels/linear/types.d.ts.map +1 -0
  78. package/dist/channels/linear/types.js +2 -0
  79. package/dist/channels/linear/types.js.map +1 -0
  80. package/dist/channels/message-schema.d.ts +2 -0
  81. package/dist/channels/message-schema.d.ts.map +1 -1
  82. package/dist/channels/message-schema.js +4 -0
  83. package/dist/channels/message-schema.js.map +1 -1
  84. package/dist/channels/messaging-registry.d.ts +16 -0
  85. package/dist/channels/messaging-registry.d.ts.map +1 -1
  86. package/dist/channels/messaging-registry.js +29 -0
  87. package/dist/channels/messaging-registry.js.map +1 -1
  88. package/dist/channels/reserved-connections.d.ts +2 -2
  89. package/dist/channels/reserved-connections.d.ts.map +1 -1
  90. package/dist/channels/reserved-connections.js +36 -9
  91. package/dist/channels/reserved-connections.js.map +1 -1
  92. package/dist/channels/run-input.d.ts +35 -2
  93. package/dist/channels/run-input.d.ts.map +1 -1
  94. package/dist/channels/run-input.js +74 -14
  95. package/dist/channels/run-input.js.map +1 -1
  96. package/dist/channels/runtime.d.ts +1 -1
  97. package/dist/channels/runtime.d.ts.map +1 -1
  98. package/dist/channels/runtime.js +1 -1
  99. package/dist/channels/runtime.js.map +1 -1
  100. package/dist/channels/schedule-delivery.d.ts +1 -1
  101. package/dist/channels/schedule-delivery.d.ts.map +1 -1
  102. package/dist/channels/schedule-delivery.js +9 -20
  103. package/dist/channels/schedule-delivery.js.map +1 -1
  104. package/dist/channels/slack/api.d.ts +2 -0
  105. package/dist/channels/slack/api.d.ts.map +1 -1
  106. package/dist/channels/slack/api.js +6 -0
  107. package/dist/channels/slack/api.js.map +1 -1
  108. package/dist/channels/slack/connections.d.ts +6 -0
  109. package/dist/channels/slack/connections.d.ts.map +1 -0
  110. package/dist/channels/slack/connections.js +6 -0
  111. package/dist/channels/slack/connections.js.map +1 -0
  112. package/dist/channels/slack/events.d.ts +272 -0
  113. package/dist/channels/slack/events.d.ts.map +1 -0
  114. package/dist/channels/slack/events.js +235 -0
  115. package/dist/channels/slack/events.js.map +1 -0
  116. package/dist/channels/slack/files.d.ts.map +1 -1
  117. package/dist/channels/slack/files.js +2 -3
  118. package/dist/channels/slack/files.js.map +1 -1
  119. package/dist/channels/slack/index.d.ts +76 -2
  120. package/dist/channels/slack/index.d.ts.map +1 -1
  121. package/dist/channels/slack/index.js +177 -6
  122. package/dist/channels/slack/index.js.map +1 -1
  123. package/dist/channels/slack/message-content.d.ts.map +1 -1
  124. package/dist/channels/slack/message-content.js +23 -28
  125. package/dist/channels/slack/message-content.js.map +1 -1
  126. package/dist/channels/slack/status.d.ts +76 -0
  127. package/dist/channels/slack/status.d.ts.map +1 -0
  128. package/dist/channels/slack/status.js +427 -0
  129. package/dist/channels/slack/status.js.map +1 -0
  130. package/dist/channels/source-providers.js +1 -1
  131. package/dist/channels/source-providers.js.map +1 -1
  132. package/dist/channels/trigger/client.d.ts.map +1 -1
  133. package/dist/channels/trigger/client.js +4 -9
  134. package/dist/channels/trigger/client.js.map +1 -1
  135. package/dist/channels/trigger/http.d.ts +114 -3
  136. package/dist/channels/trigger/http.d.ts.map +1 -1
  137. package/dist/channels/trigger/http.js +310 -71
  138. package/dist/channels/trigger/http.js.map +1 -1
  139. package/dist/channels/trigger/ingress.d.ts +38 -1
  140. package/dist/channels/trigger/ingress.d.ts.map +1 -1
  141. package/dist/channels/trigger/ingress.js +47 -1
  142. package/dist/channels/trigger/ingress.js.map +1 -1
  143. package/dist/channels/trigger/types.d.ts +82 -3
  144. package/dist/channels/trigger/types.d.ts.map +1 -1
  145. package/dist/channels/trigger/types.js +36 -0
  146. package/dist/channels/trigger/types.js.map +1 -1
  147. package/dist/channels/types.d.ts +19 -3
  148. package/dist/channels/types.d.ts.map +1 -1
  149. package/dist/channels/types.js +2 -0
  150. package/dist/channels/types.js.map +1 -1
  151. package/dist/connections.d.ts +5 -0
  152. package/dist/connections.d.ts.map +1 -1
  153. package/dist/connections.js +14 -1
  154. package/dist/connections.js.map +1 -1
  155. package/dist/index.d.ts +13 -4
  156. package/dist/index.d.ts.map +1 -1
  157. package/dist/index.js +2 -1
  158. package/dist/index.js.map +1 -1
  159. package/dist/ingress/runs.d.ts +32 -1
  160. package/dist/ingress/runs.d.ts.map +1 -1
  161. package/dist/ingress/runs.js +85 -5
  162. package/dist/ingress/runs.js.map +1 -1
  163. package/dist/managed-composition.d.ts.map +1 -1
  164. package/dist/managed-composition.js +8 -13
  165. package/dist/managed-composition.js.map +1 -1
  166. package/dist/namespaces.d.ts +15 -21
  167. package/dist/namespaces.d.ts.map +1 -1
  168. package/dist/namespaces.js +2 -29
  169. package/dist/namespaces.js.map +1 -1
  170. package/dist/runtime/auth.d.ts +1 -2
  171. package/dist/runtime/auth.d.ts.map +1 -1
  172. package/dist/runtime/auth.js +94 -48
  173. package/dist/runtime/auth.js.map +1 -1
  174. package/dist/runtime/channel-icon.d.ts +22 -0
  175. package/dist/runtime/channel-icon.d.ts.map +1 -0
  176. package/dist/runtime/channel-icon.js +70 -0
  177. package/dist/runtime/channel-icon.js.map +1 -0
  178. package/dist/runtime/channel.d.ts +6 -0
  179. package/dist/runtime/channel.d.ts.map +1 -1
  180. package/dist/runtime/channel.js.map +1 -1
  181. package/dist/runtime/identity-http.d.ts +2 -0
  182. package/dist/runtime/identity-http.d.ts.map +1 -1
  183. package/dist/runtime/identity-http.js +35 -0
  184. package/dist/runtime/identity-http.js.map +1 -1
  185. package/dist/runtime/identity-runtime.d.ts +4 -9
  186. package/dist/runtime/identity-runtime.d.ts.map +1 -1
  187. package/dist/runtime/identity-runtime.js +12 -25
  188. package/dist/runtime/identity-runtime.js.map +1 -1
  189. package/dist/runtime/index.d.ts.map +1 -1
  190. package/dist/runtime/index.js +32 -21
  191. package/dist/runtime/index.js.map +1 -1
  192. package/dist/runtime/managed-thread.d.ts +60 -0
  193. package/dist/runtime/managed-thread.d.ts.map +1 -0
  194. package/dist/runtime/managed-thread.js +76 -0
  195. package/dist/runtime/managed-thread.js.map +1 -0
  196. package/dist/runtime/managed-tools.d.ts +10 -2
  197. package/dist/runtime/managed-tools.d.ts.map +1 -1
  198. package/dist/runtime/managed-tools.js +10 -8
  199. package/dist/runtime/managed-tools.js.map +1 -1
  200. package/dist/runtime/memory/policy.d.ts.map +1 -1
  201. package/dist/runtime/memory/policy.js +1 -3
  202. package/dist/runtime/memory/policy.js.map +1 -1
  203. package/dist/runtime/run-input.d.ts +10 -0
  204. package/dist/runtime/run-input.d.ts.map +1 -1
  205. package/dist/runtime/run-input.js +48 -2
  206. package/dist/runtime/run-input.js.map +1 -1
  207. package/dist/runtime/sandbox-manager.d.ts.map +1 -1
  208. package/dist/runtime/sandbox-manager.js +1 -1
  209. package/dist/runtime/sandbox-manager.js.map +1 -1
  210. package/dist/runtime/schedule-auth.d.ts +17 -0
  211. package/dist/runtime/schedule-auth.d.ts.map +1 -1
  212. package/dist/runtime/schedule-auth.js +39 -1
  213. package/dist/runtime/schedule-auth.js.map +1 -1
  214. package/dist/runtime/thread-record.d.ts +81 -0
  215. package/dist/runtime/thread-record.d.ts.map +1 -0
  216. package/dist/runtime/thread-record.js +205 -0
  217. package/dist/runtime/thread-record.js.map +1 -0
  218. package/dist/runtime/types.d.ts +5 -1
  219. package/dist/runtime/types.d.ts.map +1 -1
  220. package/dist/runtime-schedules.d.ts +13 -0
  221. package/dist/runtime-schedules.d.ts.map +1 -1
  222. package/dist/runtime-schedules.js +83 -20
  223. package/dist/runtime-schedules.js.map +1 -1
  224. package/dist/sandbox.d.ts +0 -6
  225. package/dist/sandbox.d.ts.map +1 -1
  226. package/dist/sandbox.js +3 -7
  227. package/dist/sandbox.js.map +1 -1
  228. package/dist/schedule-channel.d.ts +5 -2
  229. package/dist/schedule-channel.d.ts.map +1 -1
  230. package/dist/schedule-channel.js +13 -12
  231. package/dist/schedule-channel.js.map +1 -1
  232. package/dist/values.d.ts +15 -0
  233. package/dist/values.d.ts.map +1 -0
  234. package/dist/values.js +31 -0
  235. package/dist/values.js.map +1 -0
  236. package/package.json +7 -7
@@ -1,16 +1,18 @@
1
- import { createHmac, timingSafeEqual } from "node:crypto";
2
1
  import { channelThreadId, httpChannel, } from "../http/index.js";
3
- import { isJsonValue } from "../message-schema.js";
4
- import { immutableCopy } from "../runtime.js";
2
+ import { channelName, checkEventKeys, definedFields, eventSnapshot, handledEventKeys, readDeploymentSecret, resetDeploymentSecrets, resolveEndpoints, runEventHandler, eventThread, finishEvents, receiveEvents, verifyHmacSha256, } from "../http/provider.js";
3
+ import { isEndpointCallback } from "../http/endpoint.js";
4
+ import { interruptedNotice, pendingDecision } from "../http/studio.js";
5
+ import { withPausedNotice } from "../messaging-registry.js";
5
6
  import { logger } from "../../runtime/log.js";
6
- import { ConnectionNotFoundError, DEPLOYMENT_ID_ENV, connections, } from "../../connections.js";
7
+ import { connections } from "../../connections.js";
7
8
  import { ConnectionsNotConfiguredError } from "../../agent-auth.js";
8
9
  import { GITHUB_TOKEN_SLUG, githubAppConnectionSlug } from "./connections.js";
9
- import { managedDeploymentName } from "../../runtime/sandbox-manager.js";
10
- import { SUPPORTED_EVENT_KEYS, githubReceiptSchema, githubIdentifierSchema, githubEventSchema, } from "./schema.js";
10
+ import { ENDPOINT_EVENT_FIELDS, SUPPORTED_EVENT_KEYS, githubReceiptSchema, githubIdentifierSchema, githubEventSchema, } from "./schema.js";
11
+ const EVENT_KEYS = new Set(SUPPORTED_EVENT_KEYS);
11
12
  /** Adapt verified GitHub events into HTTP channel messages or skips. */
12
13
  export function githubChannel(options = {}) {
13
- const handlers = { ...options.onEvent };
14
+ const handlers = resolveEndpoints("GitHub", options.onEvent, ENDPOINT_EVENT_FIELDS);
15
+ checkEventKeys("GitHub", handlers, EVENT_KEYS);
14
16
  // A misspelled option would silently widen what the agent's token reaches.
15
17
  const unknown = Object.keys(options.app ?? {}).filter((key) => key !== "permissions" && key !== "repositories");
16
18
  if (unknown.length)
@@ -26,7 +28,7 @@ export function githubChannel(options = {}) {
26
28
  }),
27
29
  providerConfig: {
28
30
  // Deploy subscribes the GitHub App to the handled events.
29
- events: subscribedEvents(handlers),
31
+ events: handledEventKeys(handlers),
30
32
  ...(options.app && { app: appConfig(options.app) }),
31
33
  },
32
34
  verify: verifyGitHubRequest,
@@ -35,80 +37,49 @@ export function githubChannel(options = {}) {
35
37
  id: message.threadId,
36
38
  channel: { name: channelName(channel) },
37
39
  }),
38
- // Only for an event its handler would act on, so the handler's filters,
39
- // such as trusted senders or mentions, decide who gets a notice. The
40
- // handler knows it is only asked, so it can skip side effects.
41
- onPaused: async (target, run) => {
42
- if ((await handlerInput(handlers, run.rawEvent, {
43
- id: run.threadId,
44
- channel: { name: channelName(channel) },
45
- interrupted: true,
46
- })) === undefined)
47
- return;
48
- await postPausedNotice(target, run);
49
- },
40
+ onReceived: receiveEvents(options.onReceived, githubEvent, () => channelName(channel)),
41
+ onFinish: finishEvents((target, delivery) => notifyWaiting(handlers, target, delivery, channelName(channel)), options.onFinish, githubEvent, (delivery) => eventThread(delivery, channelName(channel))),
50
42
  });
51
- return channel;
43
+ // A run that stops on interrupts says so itself (../delivery.ts): the
44
+ // handler accepted the event that started it.
45
+ return withPausedNotice(channel, postInterruptedNotice);
52
46
  }
53
- function channelName(channel) {
54
- return channel.name ?? channel.kind;
55
- }
56
- /** The events deploy subscribes the App to: the handled ones. */
57
- function subscribedEvents(handlers) {
58
- return Object.keys(handlers)
59
- .filter((key) => handlers[key] !== undefined)
60
- .sort();
47
+ /**
48
+ * Tell the issue or pull request that a new event found its thread waiting
49
+ * on a decision. Only for an event its handler would act on, so the handler's
50
+ * filters, such as trusted senders or mentions, decide who gets a notice. The
51
+ * handler knows it is only asked, so it can skip side effects.
52
+ */
53
+ async function notifyWaiting(handlers, target, delivery, name) {
54
+ if (pendingDecision(delivery) !== "waiting")
55
+ return;
56
+ if ((await handlerInput(handlers, delivery.rawEvent, {
57
+ id: delivery.threadId,
58
+ channel: { name },
59
+ interrupted: true,
60
+ })) === undefined)
61
+ return;
62
+ await postInterruptedNotice(target, delivery, "waiting");
61
63
  }
62
64
  /** The App options deploy reads, without unset fields. */
63
65
  function appConfig(app) {
64
- return Object.fromEntries(Object.entries({
66
+ return definedFields({
65
67
  permissions: app.permissions && { ...app.permissions },
66
68
  repositories: app.repositories && [...app.repositories],
67
- }).filter(([, value]) => value !== undefined));
69
+ });
68
70
  }
69
- /** How long a value read from Agent Auth is reused before it is read again. */
70
- const APP_VALUE_TTL_MS = 5 * 60_000;
71
- /** How long a missing value is remembered, so unsigned traffic can't hammer Agent Auth. */
72
- const MISSING_APP_VALUE_TTL_MS = 60_000;
73
- const appValues = new Map();
74
71
  /**
75
72
  * The App's webhook secret or bot ID: the `GH_*` env override when set,
76
73
  * otherwise the agent secret Agent Auth stored when `mda deploy` created the
77
74
  * App, at `mda/github-app/{deployment}/{suffix}`. Only a missing connection
78
75
  * reads as `undefined`; credential store failures propagate.
79
76
  */
80
- async function gitHubAppValue(envKey, suffix) {
81
- const override = process.env[envKey]?.trim();
82
- if (override)
83
- return override;
84
- const deploymentId = process.env[DEPLOYMENT_ID_ENV]?.trim();
85
- if (!deploymentId)
86
- return undefined;
87
- const slug = githubAppConnectionSlug(deploymentId, suffix);
88
- const cached = appValues.get(slug);
89
- if (cached && cached.expiresAt > Date.now())
90
- return cached.value;
91
- // Concurrent deliveries share the in-flight read.
92
- const entry = {
93
- value: connections.resolveDeploymentSecret(slug).catch((error) => {
94
- if (error instanceof ConnectionNotFoundError) {
95
- entry.expiresAt = Date.now() + MISSING_APP_VALUE_TTL_MS;
96
- logger.error(`GitHub App ${suffix} is not stored in Agent Auth`);
97
- return undefined;
98
- }
99
- // Read again on the next delivery rather than caching a failure.
100
- if (appValues.get(slug) === entry)
101
- appValues.delete(slug);
102
- throw error;
103
- }),
104
- expiresAt: Date.now() + APP_VALUE_TTL_MS,
105
- };
106
- appValues.set(slug, entry);
107
- return entry.value;
77
+ function gitHubAppValue(envKey, suffix) {
78
+ return readDeploymentSecret(envKey, (deploymentId) => githubAppConnectionSlug(deploymentId, suffix), `GitHub App ${suffix}`);
108
79
  }
109
80
  /** Forget values read from Agent Auth; for tests. */
110
81
  export function resetGitHubAppValues() {
111
- appValues.clear();
82
+ resetDeploymentSecrets();
112
83
  }
113
84
  /** GitHub's delivery ID for a log line, or `unknown` when it is not one. */
114
85
  function deliveryLabel(deliveryId) {
@@ -140,9 +111,8 @@ async function verifyGitHubRequest({ request, rawBody, }) {
140
111
  }
141
112
  if (!secret)
142
113
  return false;
143
- return timingSafeEqual(createHmac("sha256", secret).update(rawBody).digest(), Buffer.from(signature.slice(7), "hex"));
114
+ return verifyHmacSha256(secret, rawBody, signature.slice(7));
144
115
  }
145
- const EVENT_KEYS = new Set(SUPPORTED_EVENT_KEYS);
146
116
  async function parseGitHubRequest({ request }, handlers, channelName, repositories) {
147
117
  const envelope = githubReceiptSchema.parse({
148
118
  event: request.headers.get("x-github-event"),
@@ -170,9 +140,7 @@ async function parseGitHubRequest({ request }, handlers, channelName, repositori
170
140
  if (parsedEvent.sender.id === botId)
171
141
  return { type: "ignore", response };
172
142
  // Preserve the original event even if a callback modifies its argument.
173
- if (!isJsonValue(parsedEvent))
174
- throw new TypeError("invalid GitHub event");
175
- const eventSnapshot = immutableCopy(parsedEvent);
143
+ const snapshot = eventSnapshot(parsedEvent, "GitHub");
176
144
  // One thread per issue or pull request, so the agent keeps the
177
145
  // conversation. Other events get their own thread, keyed by the delivery so
178
146
  // a redelivery still finds the run it started.
@@ -192,8 +160,10 @@ async function parseGitHubRequest({ request }, handlers, channelName, repositori
192
160
  userId: senderUserId(parsedEvent.sender),
193
161
  target,
194
162
  deliveryKey: deliveryId,
163
+ // An endpoint may take longer to answer than GitHub waits.
164
+ ...(isEndpointCallback(handlers[key]) && { background: true }),
195
165
  },
196
- rawEvent: eventSnapshot,
166
+ rawEvent: snapshot,
197
167
  response,
198
168
  };
199
169
  }
@@ -214,21 +184,8 @@ async function handlerInput(handlers, rawEvent, thread) {
214
184
  : undefined;
215
185
  if (!event || !handler)
216
186
  return undefined;
217
- const receipt = {
218
- event: logger.logIdentifier(event.key),
219
- deliveryId: logger.logIdentifier(event.deliveryId),
220
- };
221
- try {
222
- const input = await handler(event, thread);
223
- if (input === undefined || input === null)
224
- return undefined;
225
- logger.info(`GitHub handler returned run input ${JSON.stringify(receipt)}`);
226
- return input;
227
- }
228
- catch (error) {
229
- logger.error(`github callback failed ${JSON.stringify(receipt)} (${logger.safeErrorLabel(error)})`);
230
- return undefined;
231
- }
187
+ const outcome = await runEventHandler("GitHub", event, () => handler(event, thread));
188
+ return outcome.type === "input" ? outcome.input : undefined;
232
189
  }
233
190
  /** The parsed event a delivery carries, as handlers may change it. */
234
191
  function githubEvent(rawEvent) {
@@ -261,18 +218,14 @@ function isIssueNumber(value) {
261
218
  return typeof value === "number" && Number.isSafeInteger(value) && value > 0;
262
219
  }
263
220
  const REPOSITORY_PATTERN = /^[A-Za-z0-9-]+\/[A-Za-z0-9._-]+$/;
264
- const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
265
- const DEPLOYMENT_NAME_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/;
266
221
  const GITHUB_API_TIMEOUT_MS = 10_000;
267
222
  /**
268
223
  * The thread waits on an interrupt, so tell the issue or pull request where
269
224
  * to continue it. Posts as the App; the notice is fixed text.
270
225
  */
271
- async function postPausedNotice(target, run) {
226
+ async function postInterruptedNotice(target, delivery, outcome) {
272
227
  if (!isGitHubTarget(target))
273
228
  return;
274
- const url = studioUrl(run);
275
- const studio = url ? `[LangSmith Studio](${url})` : "LangSmith Studio";
276
229
  const [owner, name] = target.repository.split("/");
277
230
  const token = await connections.resolveDeploymentSecret(GITHUB_TOKEN_SLUG);
278
231
  const response = await fetch(`https://api.github.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(name)}/issues/${target.number}/comments`, {
@@ -284,58 +237,12 @@ async function postPausedNotice(target, run) {
284
237
  "X-GitHub-Api-Version": "2022-11-28",
285
238
  },
286
239
  body: JSON.stringify({
287
- body: `I'm waiting for a decision on an earlier step in this conversation, so I haven't read this yet. Review the pending step in ${studio}, then comment again.`,
240
+ body: interruptedNotice(outcome, delivery, "comment again"),
288
241
  }),
289
242
  signal: AbortSignal.timeout(GITHUB_API_TIMEOUT_MS),
290
243
  });
291
244
  if (!response.ok)
292
- throw new Error(`GitHub refused the paused notice (HTTP ${response.status})`);
293
- }
294
- /**
295
- * The thread in the deployment's Studio, or the deployment's page when the
296
- * deployment's name or the thread's assistant is unknown. The LangSmith UI is
297
- * the one `mda deploy` recorded for the deployment's environment
298
- * (`MDA_LANGSMITH_URL`); without it there is nothing to link to.
299
- */
300
- export function studioUrl(run, env = process.env) {
301
- const workspace = env.LANGSMITH_TENANT_ID?.trim() ?? "";
302
- const deployment = env[DEPLOYMENT_ID_ENV]?.trim() ?? "";
303
- if (!UUID_PATTERN.test(workspace) || !UUID_PATTERN.test(deployment))
304
- return undefined;
305
- const origin = parseHttpUrl(env.MDA_LANGSMITH_URL)?.origin;
306
- if (!origin)
307
- return undefined;
308
- const name = managedDeploymentName(env);
309
- const { threadId, assistantId } = run ?? {};
310
- if (!name ||
311
- !DEPLOYMENT_NAME_PATTERN.test(name) ||
312
- !threadId ||
313
- !UUID_PATTERN.test(threadId) ||
314
- !assistantId ||
315
- !UUID_PATTERN.test(assistantId))
316
- return `${origin}/o/${workspace}/host/deployments/${deployment}`;
317
- const query = new URLSearchParams({
318
- organizationId: workspace,
319
- render: "interact",
320
- hostProjectId: deployment,
321
- assistantId,
322
- mode: "chat",
323
- threadId,
324
- });
325
- return `${origin}/o/${workspace}/a/${encodeURIComponent(name)}/studio/thread?${query}`;
326
- }
327
- function parseHttpUrl(value) {
328
- if (!value?.trim())
329
- return undefined;
330
- try {
331
- const url = new URL(value.trim());
332
- return url.protocol === "https:" || url.protocol === "http:"
333
- ? url
334
- : undefined;
335
- }
336
- catch {
337
- return undefined;
338
- }
245
+ throw new Error(`GitHub refused the interrupted notice (HTTP ${response.status})`);
339
246
  }
340
247
  function isGitHubTarget(value) {
341
248
  if (!value || typeof value !== "object" || Array.isArray(value))
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/channels/github/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/channels/github/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /** The handles an event's text mentions: GitHub sends no event for a mention. */
2
+ import type { z } from "zod";
3
+ import type { githubDispatchSchema } from "./schema.js";
4
+ type DispatchEvent = z.output<typeof githubDispatchSchema>;
5
+ /**
6
+ * The handles, such as `@octocat`, the text the event wrote mentions:
7
+ * lowercased, each once, in order. As on GitHub, code, quotes and HTML
8
+ * comments mention no one. An edit lists only the handles it added.
9
+ */
10
+ export declare function eventMentions(event: DispatchEvent): string[];
11
+ export {};
12
+ //# sourceMappingURL=mentions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mentions.d.ts","sourceRoot":"","sources":["../../../src/channels/github/mentions.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,KAAK,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAyD3D;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,EAAE,CA0B5D"}
@@ -0,0 +1,185 @@
1
+ // A login (letters, digits, hyphens, at most 39 characters) or an
2
+ // organization's team, as GitHub links them. Not part of an email address,
3
+ // a longer word or a path, and without trailing punctuation.
4
+ const MENTION = /(?<![A-Za-z0-9_`@/.-])@([A-Za-z0-9][A-Za-z0-9-]{0,38}(?:\/[A-Za-z0-9_-](?:[A-Za-z0-9_.-]{0,98}[A-Za-z0-9_-])?)?)(?![A-Za-z0-9_-])/g;
5
+ /** A fence opens or closes a code block on a line of its own. */
6
+ const FENCE = /^ {0,3}(`{3,}|~{3,})/;
7
+ const PARAGRAPH_BREAK = /\n[ \t]*\n/;
8
+ const BACKTICKS = /`+/g;
9
+ /** Where an HTML block may start: the beginning of a line, after up to 3 spaces. */
10
+ const LINE_START = /(?:^|\n) {0,3}$/;
11
+ const MAX_MENTIONS = 50;
12
+ const QUOTE = /^ {0,3}>/;
13
+ const issue = (payload) => ({
14
+ title: payload.issue.title,
15
+ body: payload.issue.body,
16
+ });
17
+ const pullRequest = (payload) => ({
18
+ title: payload.pull_request.title,
19
+ body: payload.pull_request.body,
20
+ });
21
+ const comment = (payload) => ({
22
+ body: payload.comment.body,
23
+ });
24
+ const review = (payload) => ({
25
+ body: payload.review.body,
26
+ });
27
+ /**
28
+ * The text each event writes. Other actions, such as a push to a pull
29
+ * request or a label, write none, so they mention no one.
30
+ */
31
+ const TEXTS = {
32
+ "issues.opened": issue,
33
+ "issues.edited": issue,
34
+ "pull_request.opened": pullRequest,
35
+ "pull_request.edited": pullRequest,
36
+ "issue_comment.created": comment,
37
+ "issue_comment.edited": comment,
38
+ "pull_request_review.submitted": review,
39
+ "pull_request_review.edited": review,
40
+ "pull_request_review_comment.created": comment,
41
+ "pull_request_review_comment.edited": comment,
42
+ };
43
+ /**
44
+ * The handles, such as `@octocat`, the text the event wrote mentions:
45
+ * lowercased, each once, in order. As on GitHub, code, quotes and HTML
46
+ * comments mention no one. An edit lists only the handles it added.
47
+ */
48
+ export function eventMentions(event) {
49
+ // A key's function takes that key's payload; TypeScript can't pair them.
50
+ const texts = TEXTS[event.key];
51
+ if (!texts)
52
+ return [];
53
+ const text = texts(event.payload);
54
+ const mentions = handles(text);
55
+ if (!event.key.endsWith(".edited"))
56
+ return mentions;
57
+ const changes = event.payload.changes;
58
+ const changed = changes && typeof changes === "object"
59
+ ? changes
60
+ : {};
61
+ if (!Object.hasOwn(changed, "title") && !Object.hasOwn(changed, "body"))
62
+ return [];
63
+ const before = { ...text };
64
+ for (const field of ["title", "body"]) {
65
+ const previous = changed[field];
66
+ if (previous && typeof previous === "object" && field in text) {
67
+ const from = previous.from;
68
+ before[field] = typeof from === "string" ? from : null;
69
+ }
70
+ }
71
+ const known = new Set(handles(before));
72
+ return mentions.filter((handle) => !known.has(handle));
73
+ }
74
+ function handles(text) {
75
+ const parts = [text.title, text.body].filter((part) => typeof part === "string");
76
+ const mentions = [];
77
+ for (const match of prose(parts.join("\n\n")).matchAll(MENTION)) {
78
+ const handle = `@${match[1].toLowerCase()}`;
79
+ if (mentions.includes(handle))
80
+ continue;
81
+ mentions.push(handle);
82
+ if (mentions.length === MAX_MENTIONS)
83
+ break;
84
+ }
85
+ return mentions;
86
+ }
87
+ /**
88
+ * The text GitHub renders as prose: without code, quotes and HTML comments.
89
+ * Fences and quotes are read by line, as Markdown does; a fence that is never
90
+ * closed runs to the end, as on GitHub.
91
+ */
92
+ function prose(text) {
93
+ const lines = [];
94
+ let fence = "";
95
+ let quoted = false;
96
+ for (const line of text.split("\n")) {
97
+ const marker = FENCE.exec(line);
98
+ const rest = marker ? line.slice(marker[0].length) : "";
99
+ if (fence) {
100
+ if (marker &&
101
+ marker[1][0] === fence[0] &&
102
+ marker[1].length >= fence.length &&
103
+ !rest.trim())
104
+ fence = "";
105
+ lines.push("");
106
+ }
107
+ else if (
108
+ // A backtick fence's info string can't hold a backtick.
109
+ marker &&
110
+ !(marker[1].startsWith("`") && rest.includes("`"))) {
111
+ fence = marker[1];
112
+ quoted = false;
113
+ lines.push("");
114
+ }
115
+ else if (QUOTE.test(line)) {
116
+ quoted = true;
117
+ lines.push("");
118
+ }
119
+ else if (!line.trim()) {
120
+ quoted = false;
121
+ lines.push(line);
122
+ }
123
+ else {
124
+ // A line right after a quote continues it.
125
+ lines.push(quoted ? "" : line);
126
+ }
127
+ }
128
+ return withoutComments(lines.join("\n").split(PARAGRAPH_BREAK).map(withoutSpans).join("\n\n"));
129
+ }
130
+ /**
131
+ * A paragraph without its code spans. A span opens with a run of backticks
132
+ * and closes with the next run of the same length; a run that nothing
133
+ * closes is just backticks.
134
+ */
135
+ function withoutSpans(paragraph) {
136
+ const runs = [...paragraph.matchAll(BACKTICKS)].map((match) => [match.index, match.index + match[0].length]);
137
+ const closers = new Map();
138
+ runs.forEach(([start, end], index) => {
139
+ const waiting = closers.get(end - start) ?? [];
140
+ waiting.push(index);
141
+ closers.set(end - start, waiting);
142
+ });
143
+ // How far each length's queue has been read.
144
+ const read = new Map();
145
+ const kept = [];
146
+ let cursor = 0;
147
+ let index = 0;
148
+ while (index < runs.length) {
149
+ const [start, end] = runs[index];
150
+ const waiting = closers.get(end - start);
151
+ let next = read.get(end - start) ?? 0;
152
+ while (next < waiting.length && waiting[next] <= index)
153
+ next += 1;
154
+ read.set(end - start, next);
155
+ if (next === waiting.length) {
156
+ index += 1;
157
+ continue;
158
+ }
159
+ const closer = waiting[next];
160
+ read.set(end - start, next + 1);
161
+ kept.push(`${paragraph.slice(cursor, start)} `);
162
+ cursor = runs[closer][1];
163
+ index = closer + 1;
164
+ }
165
+ kept.push(paragraph.slice(cursor));
166
+ return kept.join("");
167
+ }
168
+ /**
169
+ * The text without HTML comments. One never closed runs to the end when it
170
+ * starts a line, as an HTML block does; elsewhere it is just text.
171
+ */
172
+ function withoutComments(text) {
173
+ const kept = [];
174
+ let cursor = 0;
175
+ for (let start = text.indexOf("<!--", cursor); start !== -1; start = text.indexOf("<!--", cursor)) {
176
+ const end = text.indexOf("-->", start + 4);
177
+ if (end === -1 && !LINE_START.test(text.slice(0, start)))
178
+ break;
179
+ kept.push(`${text.slice(cursor, start)} `);
180
+ cursor = end === -1 ? text.length : end + 3;
181
+ }
182
+ kept.push(text.slice(cursor));
183
+ return kept.join("");
184
+ }
185
+ //# sourceMappingURL=mentions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mentions.js","sourceRoot":"","sources":["../../../src/channels/github/mentions.ts"],"names":[],"mappings":"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"}