managed-deepagents 0.10.0-dev.5 → 0.10.0-dev.7

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 (95) hide show
  1. package/README.md +69 -33
  2. package/dist/channels/github/connections.d.ts.map +1 -1
  3. package/dist/channels/github/connections.js +2 -2
  4. package/dist/channels/github/connections.js.map +1 -1
  5. package/dist/channels/github/index.d.ts +1 -1
  6. package/dist/channels/github/index.d.ts.map +1 -1
  7. package/dist/channels/github/index.js +42 -88
  8. package/dist/channels/github/index.js.map +1 -1
  9. package/dist/channels/github/schema.d.ts.map +1 -1
  10. package/dist/channels/github/schema.js +1 -3
  11. package/dist/channels/github/schema.js.map +1 -1
  12. package/dist/channels/github/types.d.ts +18 -8
  13. package/dist/channels/github/types.d.ts.map +1 -1
  14. package/dist/channels/http/http.d.ts.map +1 -1
  15. package/dist/channels/http/http.js +91 -94
  16. package/dist/channels/http/http.js.map +1 -1
  17. package/dist/channels/http/index.d.ts +1 -1
  18. package/dist/channels/http/index.d.ts.map +1 -1
  19. package/dist/channels/http/index.js +9 -0
  20. package/dist/channels/http/index.js.map +1 -1
  21. package/dist/channels/http/ingress.d.ts +26 -11
  22. package/dist/channels/http/ingress.d.ts.map +1 -1
  23. package/dist/channels/http/ingress.js +19 -29
  24. package/dist/channels/http/ingress.js.map +1 -1
  25. package/dist/channels/http/provider.d.ts +68 -0
  26. package/dist/channels/http/provider.d.ts.map +1 -0
  27. package/dist/channels/http/provider.js +149 -0
  28. package/dist/channels/http/provider.js.map +1 -0
  29. package/dist/channels/http/studio.d.ts +7 -5
  30. package/dist/channels/http/studio.d.ts.map +1 -1
  31. package/dist/channels/http/studio.js +12 -12
  32. package/dist/channels/http/studio.js.map +1 -1
  33. package/dist/channels/http/types.d.ts +25 -12
  34. package/dist/channels/http/types.d.ts.map +1 -1
  35. package/dist/channels/linear/connections.d.ts.map +1 -1
  36. package/dist/channels/linear/connections.js +2 -2
  37. package/dist/channels/linear/connections.js.map +1 -1
  38. package/dist/channels/linear/graphql.d.ts +5 -17
  39. package/dist/channels/linear/graphql.d.ts.map +1 -1
  40. package/dist/channels/linear/graphql.js +55 -57
  41. package/dist/channels/linear/graphql.js.map +1 -1
  42. package/dist/channels/linear/index.d.ts +1 -1
  43. package/dist/channels/linear/index.d.ts.map +1 -1
  44. package/dist/channels/linear/index.js +133 -139
  45. package/dist/channels/linear/index.js.map +1 -1
  46. package/dist/channels/linear/schema.d.ts +173 -144
  47. package/dist/channels/linear/schema.d.ts.map +1 -1
  48. package/dist/channels/linear/schema.js +45 -12
  49. package/dist/channels/linear/schema.js.map +1 -1
  50. package/dist/channels/linear/types.d.ts +21 -7
  51. package/dist/channels/linear/types.d.ts.map +1 -1
  52. package/dist/channels/message-schema.d.ts +2 -0
  53. package/dist/channels/message-schema.d.ts.map +1 -1
  54. package/dist/channels/message-schema.js +4 -0
  55. package/dist/channels/message-schema.js.map +1 -1
  56. package/dist/channels/run-input.d.ts +9 -1
  57. package/dist/channels/run-input.d.ts.map +1 -1
  58. package/dist/channels/run-input.js +23 -5
  59. package/dist/channels/run-input.js.map +1 -1
  60. package/dist/channels/trigger/client.js +7 -3
  61. package/dist/channels/trigger/client.js.map +1 -1
  62. package/dist/channels/trigger/http.d.ts.map +1 -1
  63. package/dist/channels/trigger/http.js +6 -3
  64. package/dist/channels/trigger/http.js.map +1 -1
  65. package/dist/channels/trigger/tracing-project.d.ts +16 -0
  66. package/dist/channels/trigger/tracing-project.d.ts.map +1 -0
  67. package/dist/channels/trigger/tracing-project.js +54 -0
  68. package/dist/channels/trigger/tracing-project.js.map +1 -0
  69. package/dist/channels/trigger/types.d.ts +6 -0
  70. package/dist/channels/trigger/types.d.ts.map +1 -1
  71. package/dist/channels/trigger/types.js.map +1 -1
  72. package/dist/connections.d.ts +6 -0
  73. package/dist/connections.d.ts.map +1 -1
  74. package/dist/connections.js +27 -0
  75. package/dist/connections.js.map +1 -1
  76. package/dist/connectors/mcp/index.d.ts.map +1 -1
  77. package/dist/connectors/mcp/index.js +52 -2
  78. package/dist/connectors/mcp/index.js.map +1 -1
  79. package/dist/credential-gate.d.ts.map +1 -1
  80. package/dist/credential-gate.js +13 -3
  81. package/dist/credential-gate.js.map +1 -1
  82. package/dist/index.d.ts +3 -3
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js.map +1 -1
  85. package/dist/ingress/runs.d.ts +2 -2
  86. package/dist/ingress/runs.d.ts.map +1 -1
  87. package/dist/ingress/runs.js +5 -5
  88. package/dist/ingress/runs.js.map +1 -1
  89. package/dist/runtime/schedule-auth.d.ts +1 -1
  90. package/dist/runtime/schedule-auth.d.ts.map +1 -1
  91. package/dist/runtime/schedule-auth.js +12 -4
  92. package/dist/runtime/schedule-auth.js.map +1 -1
  93. package/dist/runtime-schedules.js +6 -6
  94. package/dist/runtime-schedules.js.map +1 -1
  95. package/package.json +7 -7
@@ -1,15 +1,14 @@
1
- import { createHmac, timingSafeEqual } from "node:crypto";
2
1
  import { channelThreadId, httpChannel, } from "../http/index.js";
3
- import { studioUrl } from "../http/studio.js";
4
- import { isJsonValue } from "../message-schema.js";
5
- import { immutableCopy, requireTextContent } from "../runtime.js";
2
+ import { channelName, checkEventKeys, definedFields, eventSnapshot, handledEventKeys, readDeploymentSecret, resetDeploymentSecrets, runEventHandler, verifyHmacSha256, } from "../http/provider.js";
3
+ import { interruptedNotice, studioUrl } from "../http/studio.js";
4
+ import { requireTextContent } from "../runtime.js";
6
5
  import { logger } from "../../runtime/log.js";
7
6
  import { validateChannelIconPath } from "../../runtime/channel-icon.js";
8
- import { ConnectionNotFoundError, DEPLOYMENT_ID_ENV, connections, } from "../../connections.js";
9
7
  import { linearAppConnectionSlug } from "./connections.js";
10
8
  import { addLinearSessionUrl, commentInAgentSession, createLinearActivity, createLinearComment, linearAppUser, } from "./graphql.js";
11
9
  import { SUPPORTED_EVENT_KEYS, linearEventSchema, linearReceiptSchema, } from "./schema.js";
12
10
  export { LinearRateLimitError } from "./graphql.js";
11
+ const EVENT_KEYS = new Set(SUPPORTED_EVENT_KEYS);
13
12
  const SESSION_KEYS = new Set([
14
13
  "AgentSessionEvent.created",
15
14
  "AgentSessionEvent.prompted",
@@ -23,6 +22,7 @@ const APP_OPTION_KEYS = new Set([
23
22
  /** Adapt verified Linear webhooks into HTTP channel messages or skips. */
24
23
  export function linearChannel(options = {}) {
25
24
  const handlers = { ...options.onEvent };
25
+ checkEventKeys("Linear", handlers, EVENT_KEYS);
26
26
  // A misspelled option would silently widen what starts runs.
27
27
  const unknown = Object.keys(options.app ?? {}).filter((key) => !APP_OPTION_KEYS.has(key));
28
28
  if (unknown.length)
@@ -45,16 +45,28 @@ export function linearChannel(options = {}) {
45
45
  providerConfig: {
46
46
  // Deploy subscribes the app's webhook to the handled events.
47
47
  events: handledEvents(handlers, filters.sessions),
48
- ...(options.app && { app: appConfig(options.app) }),
48
+ ...(options.app && {
49
+ app: definedFields({
50
+ name: options.app.name?.trim(),
51
+ description: options.app.description?.trim(),
52
+ icon: options.app.icon &&
53
+ validateChannelIconPath(options.app.icon, "Linear app.icon"),
54
+ teams: options.app.teams && [...options.app.teams],
55
+ }),
56
+ }),
49
57
  },
50
58
  verify: verifyLinearRequest,
51
59
  parse: (context) => parseLinearRequest(context, handlers, channelName(channel), filters),
52
- input: (_message, rawEvent) => handlerInput(handlers, rawEvent, channelName(channel)),
60
+ input: (message, rawEvent) => handlerInput(handlers, rawEvent, {
61
+ id: message.threadId,
62
+ channel: { name: channelName(channel) },
63
+ }),
53
64
  post: postReply,
54
65
  onDelivered: acknowledgeSession,
55
66
  onCancelled: confirmStopped,
56
67
  onError: reportError,
57
- onPaused: notifyPaused,
68
+ interruptedReasons: ["waiting", "stopped"],
69
+ onInterrupted: notifyInterrupted,
58
70
  });
59
71
  // Served at /channels/{name}/icon; deploy points the app's icon at it.
60
72
  const icon = options.app?.icon;
@@ -64,13 +76,14 @@ export function linearChannel(options = {}) {
64
76
  icon: validateChannelIconPath(icon, "Linear app.icon"),
65
77
  });
66
78
  }
67
- function channelName(channel) {
68
- return channel.name ?? channel.kind;
69
- }
70
79
  /** The events deploy subscribes the app's webhook to. */
71
80
  function handledEvents(handlers, sessions) {
72
- const handled = Object.keys(handlers).filter((key) => handlers[key] !== undefined);
73
- return [...new Set([...handled, ...(sessions ? SESSION_KEYS : [])])].sort();
81
+ return [
82
+ ...new Set([
83
+ ...handledEventKeys(handlers),
84
+ ...(sessions ? SESSION_KEYS : []),
85
+ ]),
86
+ ].sort();
74
87
  }
75
88
  /** Check how the app looks against Linear's rules, before deploy sends it. */
76
89
  function validateAppDisplay({ name, description, icon }) {
@@ -87,58 +100,18 @@ function validateAppDisplay({ name, description, icon }) {
87
100
  if (icon !== undefined)
88
101
  validateChannelIconPath(icon, "Linear app.icon");
89
102
  }
90
- /** The app options deploy reads, without unset fields. */
91
- function appConfig(app) {
92
- return Object.fromEntries(Object.entries({
93
- name: app.name?.trim(),
94
- description: app.description?.trim(),
95
- icon: app.icon && validateChannelIconPath(app.icon, "Linear app.icon"),
96
- teams: app.teams && [...app.teams],
97
- }).filter(([, value]) => value !== undefined));
98
- }
99
- /** How long the webhook secret read from Agent Auth is reused. */
100
- const SECRET_TTL_MS = 5 * 60_000;
101
- /** How long a missing secret is remembered, so unsigned traffic can't hammer Agent Auth. */
102
- const MISSING_SECRET_TTL_MS = 60_000;
103
- let webhookSecret;
104
103
  /**
105
104
  * The app's webhook signing secret: `LINEAR_WEBHOOK_SECRET` when set,
106
105
  * otherwise the agent secret stored at
107
106
  * `mda/linear-app/{deployment}/webhook-secret`. Only a missing connection
108
107
  * reads as `undefined`; credential store failures propagate.
109
108
  */
110
- async function linearWebhookSecret() {
111
- const override = process.env.LINEAR_WEBHOOK_SECRET?.trim();
112
- if (override)
113
- return override;
114
- const deploymentId = process.env[DEPLOYMENT_ID_ENV]?.trim();
115
- if (!deploymentId)
116
- return undefined;
117
- if (webhookSecret && webhookSecret.expiresAt > Date.now())
118
- return webhookSecret.value;
119
- // Concurrent deliveries share the in-flight read.
120
- const entry = {
121
- value: connections
122
- .resolveDeploymentSecret(linearAppConnectionSlug(deploymentId, "webhook-secret"))
123
- .catch((error) => {
124
- if (error instanceof ConnectionNotFoundError) {
125
- entry.expiresAt = Date.now() + MISSING_SECRET_TTL_MS;
126
- logger.error("Linear webhook secret is not stored in Agent Auth");
127
- return undefined;
128
- }
129
- // Read again on the next delivery rather than caching a failure.
130
- if (webhookSecret === entry)
131
- webhookSecret = undefined;
132
- throw error;
133
- }),
134
- expiresAt: Date.now() + SECRET_TTL_MS,
135
- };
136
- webhookSecret = entry;
137
- return entry.value;
109
+ function linearWebhookSecret() {
110
+ return readDeploymentSecret("LINEAR_WEBHOOK_SECRET", (deploymentId) => linearAppConnectionSlug(deploymentId, "webhook-secret"), "Linear webhook secret");
138
111
  }
139
112
  /** Forget the cached webhook secret; for tests. */
140
113
  export function resetLinearWebhookSecret() {
141
- webhookSecret = undefined;
114
+ resetDeploymentSecrets();
142
115
  }
143
116
  /**
144
117
  * How far a delivery's `webhookTimestamp` may be from now. Linear recommends
@@ -153,7 +126,7 @@ async function verifyLinearRequest({ request, rawBody, }) {
153
126
  const secret = await linearWebhookSecret();
154
127
  if (!secret)
155
128
  return false;
156
- if (!timingSafeEqual(createHmac("sha256", secret).update(rawBody).digest(), Buffer.from(signature, "hex")))
129
+ if (!verifyHmacSha256(secret, rawBody, signature))
157
130
  return false;
158
131
  return isFresh(rawBody);
159
132
  }
@@ -169,20 +142,19 @@ function isFresh(rawBody) {
169
142
  return (typeof timestamp === "number" &&
170
143
  Math.abs(Date.now() - timestamp) <= WEBHOOK_TOLERANCE_MS);
171
144
  }
172
- const EVENT_KEYS = new Set(SUPPORTED_EVENT_KEYS);
173
145
  /**
174
146
  * Whether another app or an integration made the change. The delivery's actor
175
147
  * says who acted. An issue's or comment's `botActor` is the bot that created
176
148
  * it, so it names the actor only when the event is its creation.
177
149
  */
178
150
  function byBot(event) {
179
- const actor = event.payload.actor;
180
- if (typeof actor?.type === "string" && actor.type.toLowerCase() !== "user")
151
+ if (event.actor?.type !== undefined &&
152
+ event.actor.type.toLowerCase() !== "user")
181
153
  return true;
182
154
  if (event.key === "Issue.update")
183
155
  return false;
184
- const data = event.payload.data;
185
- return data?.botActor !== undefined && data.botActor !== null;
156
+ const { botActor } = event.payload.data;
157
+ return botActor !== undefined && botActor !== null;
186
158
  }
187
159
  async function parseLinearRequest({ request }, handlers, channelName, filters) {
188
160
  const receipt = linearReceiptSchema.parse({
@@ -212,36 +184,51 @@ async function parseLinearRequest({ request }, handlers, channelName, filters) {
212
184
  const event = linearEventSchema.parse({ key, deliveryId, payload });
213
185
  // Issues of teams the channel is not limited to start nothing.
214
186
  if (filters.teams &&
215
- !(event.team && filters.teams.includes(event.team.key.toLowerCase())))
187
+ !(event.team && filters.teams.includes(event.team.key.toLowerCase()))) {
188
+ logger.info(`linear event ignored: ${event.team ? "its team is not in app.teams" : "it names no team"} ${JSON.stringify({
189
+ event: logger.logIdentifier(key),
190
+ deliveryId: logger.logIdentifier(deliveryId),
191
+ })}`);
216
192
  return { type: "ignore", response };
217
- if (event.type !== "AgentSessionEvent" && (await ignored(event, filters)))
193
+ }
194
+ if (!("sessionId" in event) && (await ignored(event, filters)))
218
195
  return { type: "ignore", response };
219
196
  // Preserve the original event even if a callback modifies its argument.
220
- if (!isJsonValue(event))
221
- throw new TypeError("invalid Linear event");
222
- const eventSnapshot = immutableCopy(event);
223
- // One thread per issue, so the agent keeps the conversation.
197
+ const snapshot = eventSnapshot(event, "Linear");
198
+ // One thread per agent session, so a Stop ends only its own session's
199
+ // work. Other events share one thread per issue, so the agent keeps the
200
+ // conversation.
201
+ const conversation = `${event.organizationId}/${event.issueId}`;
224
202
  const message = {
225
- threadId: channelThreadId(channelName, `${event.organizationId}/${event.issueId}`),
203
+ threadId: channelThreadId(channelName, "sessionId" in event
204
+ ? `${conversation}/session/${event.sessionId}`
205
+ : conversation),
226
206
  userId: "mda:channel",
227
207
  target: linearTarget(event),
228
208
  deliveryKey: deliveryId,
229
209
  };
230
- // Stop in a session cancels the conversation's run.
210
+ // Stop in a session cancels the session's run.
231
211
  if (event.key === "AgentSessionEvent.prompted" &&
232
212
  event.payload.agentActivity.signal === "stop")
233
- return { type: "cancel", message, rawEvent: eventSnapshot, response };
213
+ return {
214
+ type: "cancel",
215
+ message: {
216
+ userId: message.userId,
217
+ threadId: message.threadId,
218
+ target: message.target,
219
+ },
220
+ rawEvent: snapshot,
221
+ response,
222
+ };
234
223
  // What the run starts with, or how the event answers an interrupt, is
235
224
  // decided once MDA knows whether the thread waits on one.
236
- return { type: "message", message, rawEvent: eventSnapshot, response };
225
+ return { type: "message", message, rawEvent: snapshot, response };
237
226
  }
238
227
  /**
239
228
  * Whether a webhook event starts nothing: another app's change, the app's own
240
229
  * activity, or a comment an agent session already delivers.
241
230
  */
242
231
  async function ignored(event, filters) {
243
- if (event.type === "AgentSessionEvent")
244
- return false;
245
232
  if (filters.ignoreBots && byBot(event))
246
233
  return true;
247
234
  // Linear reports the app's comments as its user's, not as a bot's.
@@ -253,17 +240,27 @@ async function ignored(event, filters) {
253
240
  const comment = event.payload.data;
254
241
  if ((comment.user?.id ?? comment.userId) === appUser.id)
255
242
  return true;
256
- return filters.sessions && sessionComment(comment, appUser);
243
+ if (!filters.sessions)
244
+ return false;
245
+ const delivered = await sessionComment(comment, appUser);
246
+ if (delivered)
247
+ logger.info(`linear comment left to its agent session: ${delivered} ${JSON.stringify({
248
+ event: logger.logIdentifier(event.key),
249
+ deliveryId: logger.logIdentifier(event.deliveryId),
250
+ })}`);
251
+ return delivered !== undefined;
257
252
  }
258
253
  /**
259
- * Whether a comment is part of an agent session, which delivers it as a
260
- * session event too: one that mentions the app opens a session, and a reply
261
- * in a session's thread prompts it.
254
+ * Why a comment is part of an agent session, which delivers it as a session
255
+ * event too: one that mentions the app opens a session, and a reply in a
256
+ * session's thread prompts it. Only a reply without a mention asks Linear.
262
257
  */
263
258
  async function sessionComment(comment, appUser) {
264
259
  if (mentionsApp(comment.body, appUser.displayName))
265
- return true;
266
- return comment.parentId ? commentInAgentSession(comment.parentId) : false;
260
+ return "it mentions the app, which opens a session";
261
+ if (comment.parentId && (await commentInAgentSession(comment.parentId)))
262
+ return "it replies in a session's thread";
263
+ return undefined;
267
264
  }
268
265
  function mentionsApp(body, displayName) {
269
266
  if (!displayName)
@@ -273,74 +270,76 @@ function mentionsApp(body, displayName) {
273
270
  }
274
271
  /** Where replies go: the issue, and the comment thread or session that asked. */
275
272
  function linearTarget(event) {
276
- const identifier = event.key === "Comment.create"
277
- ? event.payload.data.issue?.identifier
278
- : event.type === "AgentSessionEvent"
279
- ? event.payload.agentSession.issue?.identifier
280
- : event.payload.data.identifier;
281
- return {
273
+ const target = {
282
274
  organizationId: event.organizationId,
283
275
  issueId: event.issueId,
284
- ...(identifier && { identifier }),
285
- // Replies go into the comment's thread; Linear threads one level deep.
286
- ...(event.key === "Comment.create" && {
287
- commentId: event.payload.data.parentId ?? event.payload.data.id,
288
- }),
289
- ...(event.sessionId && { sessionId: event.sessionId }),
290
276
  };
277
+ if ("sessionId" in event) {
278
+ const identifier = event.payload.agentSession.issue?.identifier;
279
+ return {
280
+ ...target,
281
+ ...(identifier && { identifier }),
282
+ sessionId: event.sessionId,
283
+ };
284
+ }
285
+ if (event.key === "Comment.create") {
286
+ const { data } = event.payload;
287
+ return {
288
+ ...target,
289
+ ...(data.issue?.identifier && { identifier: data.issue.identifier }),
290
+ // Replies go into the comment's thread; Linear threads one level deep.
291
+ commentId: data.parentId ?? data.id,
292
+ };
293
+ }
294
+ return { ...target, identifier: event.payload.data.identifier };
291
295
  }
296
+ const ERROR_MESSAGE = "Something went wrong while working on this.";
292
297
  /** What the event's handler starts a run with; `undefined` when it skips or fails. */
293
- async function handlerInput(handlers, rawEvent, channelName) {
298
+ async function handlerInput(handlers, rawEvent, thread) {
294
299
  const event = linearEvent(rawEvent);
295
300
  if (!event)
296
301
  return undefined;
297
- const handler = (Object.hasOwn(handlers, event.key) ? handlers[event.key] : undefined);
298
- const receipt = {
299
- event: logger.logIdentifier(event.key),
300
- deliveryId: logger.logIdentifier(event.deliveryId),
301
- };
302
- let input;
303
- try {
304
- input = handler
305
- ? await handler(event, { channel: { name: channelName } })
306
- : sessionInput(event);
307
- }
308
- catch (error) {
309
- logger.error(`linear callback failed ${JSON.stringify(receipt)} (${logger.safeErrorLabel(error)})`);
310
- input = undefined;
311
- }
312
- if (input === undefined || input === null) {
313
- // A session that gets no run would wait for an answer that never comes,
314
- // whether it just opened or this is a follow-up in it.
315
- if (event.type === "AgentSessionEvent")
316
- await say(event.sessionId, {
317
- type: "response",
318
- body: "I'm not set up to work on this request.",
319
- });
320
- return undefined;
321
- }
322
- logger.info(`Linear handler returned run input ${JSON.stringify(receipt)}`);
323
- return input;
302
+ const outcome = Object.hasOwn(handlers, event.key) && handlers[event.key] !== undefined
303
+ ? await runEventHandler("Linear", event, () => callHandler(handlers, event.key, event, thread))
304
+ : sessionInput(event);
305
+ if (outcome.type === "input")
306
+ return outcome.input;
307
+ // A session that gets no run would wait for an answer that never comes,
308
+ // whether it just opened or this is a follow-up in it. A handler that threw
309
+ // failed; one that returned nothing declined.
310
+ if ("sessionId" in event)
311
+ await say(event.sessionId, outcome.type === "failed"
312
+ ? { type: "error", body: ERROR_MESSAGE }
313
+ : { type: "response", body: "I'm not set up to work on this request." });
314
+ return undefined;
324
315
  }
325
316
  /** What a session event starts a run with when no handler decides. */
326
317
  function sessionInput(event) {
318
+ let input;
327
319
  if (event.key === "AgentSessionEvent.created") {
328
320
  const { promptContext, agentSession } = event.payload;
329
- return (promptContext?.trim() ||
330
- agentSession.comment?.body?.trim() ||
331
- agentSession.issue?.title?.trim() ||
332
- undefined);
321
+ input =
322
+ promptContext?.trim() ||
323
+ agentSession.comment?.body?.trim() ||
324
+ agentSession.issue?.title?.trim() ||
325
+ undefined;
333
326
  }
334
- if (event.key === "AgentSessionEvent.prompted")
335
- return event.payload.agentActivity.content.body?.trim() || undefined;
336
- return undefined;
327
+ else if (event.key === "AgentSessionEvent.prompted")
328
+ input = event.payload.agentActivity.content.body?.trim() || undefined;
329
+ return input ? { type: "input", input } : { type: "skipped" };
337
330
  }
338
- /** The parsed event a delivery carries, as handlers may change it. */
331
+ /** Call the handler of the event's key, typed by the key. */
332
+ function callHandler(handlers, key, event, thread) {
333
+ return handlers[key]?.(event, thread);
334
+ }
335
+ /**
336
+ * The parsed event a delivery carries, checked against the schema again: the
337
+ * HTTP layer hands over a copy, which handlers may change.
338
+ */
339
339
  function linearEvent(rawEvent) {
340
- if (!rawEvent || typeof rawEvent !== "object" || Array.isArray(rawEvent))
341
- return undefined;
342
- const event = structuredClone(rawEvent);
343
- return EVENT_KEYS.has(event.key) ? event : undefined;
340
+ // The schema reads `key`, `deliveryId` and `payload`, and derives the rest.
341
+ const parsed = linearEventSchema.safeParse(rawEvent);
342
+ return parsed.success ? parsed.data : undefined;
344
343
  }
345
344
  /** Say something in a session; a failure is logged, never thrown. */
346
345
  async function say(sessionId, content, extra = {}) {
@@ -409,7 +408,6 @@ async function confirmStopped(target) {
409
408
  return;
410
409
  await say(target.sessionId, { type: "response", body: "Stopped." });
411
410
  }
412
- const ERROR_MESSAGE = "Something went wrong while working on this.";
413
411
  /** Tell the session or the issue that the run failed. */
414
412
  async function reportError(_error, target) {
415
413
  if (!isLinearTarget(target))
@@ -433,14 +431,10 @@ async function reportError(_error, target) {
433
431
  * ends: once the decision is made, the resumed run's answer is the session's
434
432
  * response. Otherwise it is a comment.
435
433
  */
436
- async function notifyPaused(target, run) {
434
+ async function notifyInterrupted(target, run, reason) {
437
435
  if (!isLinearTarget(target))
438
436
  return;
439
- const url = studioUrl(run);
440
- const studio = url ? `[LangSmith Studio](${url})` : "LangSmith Studio";
441
- const body = run.stopped
442
- ? `I need a decision before I continue. Review the pending step in ${studio}.`
443
- : `I'm waiting for a decision on an earlier step, so I haven't read this yet. Review the pending step in ${studio}, then ask again.`;
437
+ const body = interruptedNotice(reason, run, "ask again");
444
438
  if (target.sessionId) {
445
439
  await createLinearActivity({
446
440
  agentSessionId: target.sessionId,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/channels/linear/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/channels/linear/index.ts"],"names":[],"mappings":"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"}