managed-deepagents 0.10.0-dev.6 → 0.10.0-dev.8

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 (109) hide show
  1. package/README.md +100 -58
  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 +52 -93
  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 +38 -10
  13. package/dist/channels/github/types.d.ts.map +1 -1
  14. package/dist/channels/http/forward.d.ts +13 -0
  15. package/dist/channels/http/forward.d.ts.map +1 -0
  16. package/dist/channels/http/forward.js +128 -0
  17. package/dist/channels/http/forward.js.map +1 -0
  18. package/dist/channels/http/http.d.ts.map +1 -1
  19. package/dist/channels/http/http.js +94 -95
  20. package/dist/channels/http/http.js.map +1 -1
  21. package/dist/channels/http/index.d.ts +1 -1
  22. package/dist/channels/http/index.d.ts.map +1 -1
  23. package/dist/channels/http/index.js +9 -0
  24. package/dist/channels/http/index.js.map +1 -1
  25. package/dist/channels/http/ingress.d.ts +26 -11
  26. package/dist/channels/http/ingress.d.ts.map +1 -1
  27. package/dist/channels/http/ingress.js +19 -34
  28. package/dist/channels/http/ingress.js.map +1 -1
  29. package/dist/channels/http/provider.d.ts +83 -0
  30. package/dist/channels/http/provider.d.ts.map +1 -0
  31. package/dist/channels/http/provider.js +176 -0
  32. package/dist/channels/http/provider.js.map +1 -0
  33. package/dist/channels/http/studio.d.ts +7 -5
  34. package/dist/channels/http/studio.d.ts.map +1 -1
  35. package/dist/channels/http/studio.js +12 -12
  36. package/dist/channels/http/studio.js.map +1 -1
  37. package/dist/channels/http/types.d.ts +53 -15
  38. package/dist/channels/http/types.d.ts.map +1 -1
  39. package/dist/channels/linear/connections.d.ts.map +1 -1
  40. package/dist/channels/linear/connections.js +2 -2
  41. package/dist/channels/linear/connections.js.map +1 -1
  42. package/dist/channels/linear/graphql.d.ts +5 -17
  43. package/dist/channels/linear/graphql.d.ts.map +1 -1
  44. package/dist/channels/linear/graphql.js +55 -57
  45. package/dist/channels/linear/graphql.js.map +1 -1
  46. package/dist/channels/linear/index.d.ts +1 -1
  47. package/dist/channels/linear/index.d.ts.map +1 -1
  48. package/dist/channels/linear/index.js +162 -160
  49. package/dist/channels/linear/index.js.map +1 -1
  50. package/dist/channels/linear/schema.d.ts +173 -144
  51. package/dist/channels/linear/schema.d.ts.map +1 -1
  52. package/dist/channels/linear/schema.js +45 -12
  53. package/dist/channels/linear/schema.js.map +1 -1
  54. package/dist/channels/linear/types.d.ts +42 -21
  55. package/dist/channels/linear/types.d.ts.map +1 -1
  56. package/dist/channels/message-schema.d.ts +2 -0
  57. package/dist/channels/message-schema.d.ts.map +1 -1
  58. package/dist/channels/message-schema.js +4 -0
  59. package/dist/channels/message-schema.js.map +1 -1
  60. package/dist/channels/run-input.d.ts +3 -9
  61. package/dist/channels/run-input.d.ts.map +1 -1
  62. package/dist/channels/run-input.js +7 -17
  63. package/dist/channels/run-input.js.map +1 -1
  64. package/dist/channels/trigger/client.js +7 -3
  65. package/dist/channels/trigger/client.js.map +1 -1
  66. package/dist/channels/trigger/http.d.ts.map +1 -1
  67. package/dist/channels/trigger/http.js +6 -3
  68. package/dist/channels/trigger/http.js.map +1 -1
  69. package/dist/channels/trigger/tracing-project.d.ts +16 -0
  70. package/dist/channels/trigger/tracing-project.d.ts.map +1 -0
  71. package/dist/channels/trigger/tracing-project.js +54 -0
  72. package/dist/channels/trigger/tracing-project.js.map +1 -0
  73. package/dist/channels/trigger/types.d.ts +6 -0
  74. package/dist/channels/trigger/types.d.ts.map +1 -1
  75. package/dist/channels/trigger/types.js.map +1 -1
  76. package/dist/connections.d.ts +6 -0
  77. package/dist/connections.d.ts.map +1 -1
  78. package/dist/connections.js +27 -0
  79. package/dist/connections.js.map +1 -1
  80. package/dist/connectors/mcp/index.d.ts.map +1 -1
  81. package/dist/connectors/mcp/index.js +52 -2
  82. package/dist/connectors/mcp/index.js.map +1 -1
  83. package/dist/credential-gate.d.ts.map +1 -1
  84. package/dist/credential-gate.js +13 -3
  85. package/dist/credential-gate.js.map +1 -1
  86. package/dist/identity/options.d.ts +0 -9
  87. package/dist/identity/options.d.ts.map +1 -1
  88. package/dist/identity/options.js +1 -6
  89. package/dist/identity/options.js.map +1 -1
  90. package/dist/identity/types.d.ts +0 -6
  91. package/dist/identity/types.d.ts.map +1 -1
  92. package/dist/index.d.ts +3 -3
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js.map +1 -1
  95. package/dist/ingress/runs.d.ts +2 -4
  96. package/dist/ingress/runs.d.ts.map +1 -1
  97. package/dist/ingress/runs.js +5 -6
  98. package/dist/ingress/runs.js.map +1 -1
  99. package/dist/runtime/auth.d.ts +0 -9
  100. package/dist/runtime/auth.d.ts.map +1 -1
  101. package/dist/runtime/auth.js +2 -55
  102. package/dist/runtime/auth.js.map +1 -1
  103. package/dist/runtime/schedule-auth.d.ts +1 -1
  104. package/dist/runtime/schedule-auth.d.ts.map +1 -1
  105. package/dist/runtime/schedule-auth.js +12 -4
  106. package/dist/runtime/schedule-auth.js.map +1 -1
  107. package/dist/runtime-schedules.js +6 -6
  108. package/dist/runtime-schedules.js.map +1 -1
  109. package/package.json +7 -7
@@ -1,15 +1,15 @@
1
- import { createHmac, timingSafeEqual } from "node:crypto";
1
+ import { z } from "zod";
2
2
  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";
3
+ import { channelName, checkEventKeys, definedFields, eventSnapshot, forwardEvents, receivedEventKeys, handledEventKeys, readDeploymentSecret, resetDeploymentSecrets, runEventHandler, verifyHmacSha256, } from "../http/provider.js";
4
+ import { interruptedNotice, studioUrl } from "../http/studio.js";
5
+ import { requireTextContent } from "../runtime.js";
6
6
  import { logger } from "../../runtime/log.js";
7
7
  import { validateChannelIconPath } from "../../runtime/channel-icon.js";
8
- import { ConnectionNotFoundError, DEPLOYMENT_ID_ENV, connections, } from "../../connections.js";
9
8
  import { linearAppConnectionSlug } from "./connections.js";
10
9
  import { addLinearSessionUrl, commentInAgentSession, createLinearActivity, createLinearComment, linearAppUser, } from "./graphql.js";
11
10
  import { SUPPORTED_EVENT_KEYS, linearEventSchema, linearReceiptSchema, } from "./schema.js";
12
11
  export { LinearRateLimitError } from "./graphql.js";
12
+ const EVENT_KEYS = new Set(SUPPORTED_EVENT_KEYS);
13
13
  const SESSION_KEYS = new Set([
14
14
  "AgentSessionEvent.created",
15
15
  "AgentSessionEvent.prompted",
@@ -20,9 +20,17 @@ const APP_OPTION_KEYS = new Set([
20
20
  "icon",
21
21
  "teams",
22
22
  ]);
23
+ /** Whether a delivery's `type.action` is an event key the channel supports. */
24
+ function isLinearEventKey(key) {
25
+ return EVENT_KEYS.has(key);
26
+ }
27
+ /** The part of a delivery's body the replay check reads. */
28
+ const timestampSchema = z.looseObject({ webhookTimestamp: z.number() });
23
29
  /** Adapt verified Linear webhooks into HTTP channel messages or skips. */
24
30
  export function linearChannel(options = {}) {
25
31
  const handlers = { ...options.onEvent };
32
+ checkEventKeys("Linear", handlers, EVENT_KEYS);
33
+ const received = receivedEventKeys("Linear", options.events, EVENT_KEYS);
26
34
  // A misspelled option would silently widen what starts runs.
27
35
  const unknown = Object.keys(options.app ?? {}).filter((key) => !APP_OPTION_KEYS.has(key));
28
36
  if (unknown.length)
@@ -36,6 +44,7 @@ export function linearChannel(options = {}) {
36
44
  teams,
37
45
  ignoreBots: options.ignoreBots ?? true,
38
46
  sessions: options.sessions ?? true,
47
+ received,
39
48
  };
40
49
  const channel = httpChannel({
41
50
  provider: "linear",
@@ -44,17 +53,32 @@ export function linearChannel(options = {}) {
44
53
  }),
45
54
  providerConfig: {
46
55
  // Deploy subscribes the app's webhook to the handled events.
47
- events: handledEvents(handlers, filters.sessions),
48
- ...(options.app && { app: appConfig(options.app) }),
56
+ events: [
57
+ ...new Set([...handledEvents(handlers, filters.sessions), ...received]),
58
+ ].sort(),
59
+ ...(options.app && {
60
+ app: definedFields({
61
+ name: options.app.name?.trim(),
62
+ description: options.app.description?.trim(),
63
+ icon: options.app.icon &&
64
+ validateChannelIconPath(options.app.icon, "Linear app.icon"),
65
+ teams: options.app.teams && [...options.app.teams],
66
+ }),
67
+ }),
49
68
  },
50
69
  verify: verifyLinearRequest,
51
70
  parse: (context) => parseLinearRequest(context, handlers, channelName(channel), filters),
52
- input: (message, rawEvent, request) => handlerInput(handlers, rawEvent, channelName(channel), message.threadId, request),
71
+ input: (message, rawEvent) => handlerInput(handlers, rawEvent, {
72
+ id: message.threadId,
73
+ channel: { name: channelName(channel) },
74
+ }),
53
75
  post: postReply,
54
76
  onDelivered: acknowledgeSession,
55
77
  onCancelled: confirmStopped,
56
78
  onError: reportError,
57
- onPaused: notifyPaused,
79
+ interruptedReasons: ["waiting", "stopped"],
80
+ onInterrupted: notifyInterrupted,
81
+ forward: forwardEvents(options.forward, linearEvent),
58
82
  });
59
83
  // Served at /channels/{name}/icon; deploy points the app's icon at it.
60
84
  const icon = options.app?.icon;
@@ -64,13 +88,14 @@ export function linearChannel(options = {}) {
64
88
  icon: validateChannelIconPath(icon, "Linear app.icon"),
65
89
  });
66
90
  }
67
- function channelName(channel) {
68
- return channel.name ?? channel.kind;
69
- }
70
91
  /** The events deploy subscribes the app's webhook to. */
71
92
  function handledEvents(handlers, sessions) {
72
- const handled = Object.keys(handlers).filter((key) => handlers[key] !== undefined);
73
- return [...new Set([...handled, ...(sessions ? SESSION_KEYS : [])])].sort();
93
+ return [
94
+ ...new Set([
95
+ ...handledEventKeys(handlers),
96
+ ...(sessions ? SESSION_KEYS : []),
97
+ ]),
98
+ ].sort();
74
99
  }
75
100
  /** Check how the app looks against Linear's rules, before deploy sends it. */
76
101
  function validateAppDisplay({ name, description, icon }) {
@@ -87,58 +112,18 @@ function validateAppDisplay({ name, description, icon }) {
87
112
  if (icon !== undefined)
88
113
  validateChannelIconPath(icon, "Linear app.icon");
89
114
  }
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
115
  /**
105
116
  * The app's webhook signing secret: `LINEAR_WEBHOOK_SECRET` when set,
106
117
  * otherwise the agent secret stored at
107
118
  * `mda/linear-app/{deployment}/webhook-secret`. Only a missing connection
108
119
  * reads as `undefined`; credential store failures propagate.
109
120
  */
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;
121
+ function linearWebhookSecret() {
122
+ return readDeploymentSecret("LINEAR_WEBHOOK_SECRET", (deploymentId) => linearAppConnectionSlug(deploymentId, "webhook-secret"), "Linear webhook secret");
138
123
  }
139
124
  /** Forget the cached webhook secret; for tests. */
140
125
  export function resetLinearWebhookSecret() {
141
- webhookSecret = undefined;
126
+ resetDeploymentSecrets();
142
127
  }
143
128
  /**
144
129
  * How far a delivery's `webhookTimestamp` may be from now. Linear recommends
@@ -153,36 +138,37 @@ async function verifyLinearRequest({ request, rawBody, }) {
153
138
  const secret = await linearWebhookSecret();
154
139
  if (!secret)
155
140
  return false;
156
- if (!timingSafeEqual(createHmac("sha256", secret).update(rawBody).digest(), Buffer.from(signature, "hex")))
141
+ if (!verifyHmacSha256(secret, rawBody, signature))
157
142
  return false;
158
143
  return isFresh(rawBody);
159
144
  }
160
145
  /** Whether a signed delivery was sent within the replay window. */
161
146
  function isFresh(rawBody) {
162
- let timestamp;
147
+ let body;
163
148
  try {
164
- timestamp = JSON.parse(new TextDecoder().decode(rawBody)).webhookTimestamp;
149
+ body = JSON.parse(new TextDecoder().decode(rawBody));
165
150
  }
166
151
  catch {
152
+ // Signed, but not JSON: no timestamp to trust, so the delivery is refused.
167
153
  return false;
168
154
  }
169
- return (typeof timestamp === "number" &&
170
- Math.abs(Date.now() - timestamp) <= WEBHOOK_TOLERANCE_MS);
155
+ const parsed = timestampSchema.safeParse(body);
156
+ return (parsed.success &&
157
+ Math.abs(Date.now() - parsed.data.webhookTimestamp) <= WEBHOOK_TOLERANCE_MS);
171
158
  }
172
- const EVENT_KEYS = new Set(SUPPORTED_EVENT_KEYS);
173
159
  /**
174
160
  * Whether another app or an integration made the change. The delivery's actor
175
161
  * says who acted. An issue's or comment's `botActor` is the bot that created
176
162
  * it, so it names the actor only when the event is its creation.
177
163
  */
178
164
  function byBot(event) {
179
- const actor = event.payload.actor;
180
- if (typeof actor?.type === "string" && actor.type.toLowerCase() !== "user")
165
+ if (event.actor?.type !== undefined &&
166
+ event.actor.type.toLowerCase() !== "user")
181
167
  return true;
182
168
  if (event.key === "Issue.update")
183
169
  return false;
184
- const data = event.payload.data;
185
- return data?.botActor !== undefined && data.botActor !== null;
170
+ const { botActor } = event.payload.data;
171
+ return botActor !== undefined && botActor !== null;
186
172
  }
187
173
  async function parseLinearRequest({ request }, handlers, channelName, filters) {
188
174
  const receipt = linearReceiptSchema.parse({
@@ -201,47 +187,65 @@ async function parseLinearRequest({ request }, handlers, channelName, filters) {
201
187
  logger.warn("Linear app access was revoked; reinstall it with mda deploy");
202
188
  return { type: "ignore", response };
203
189
  }
204
- // Events nothing handles stop here, before run creation. Sessions have a
205
- // default handler while they are on.
206
- const handled = EVENT_KEYS.has(key) &&
207
- ((filters.sessions && SESSION_KEYS.has(key)) ||
208
- (Object.hasOwn(handlers, key) &&
209
- handlers[key] !== undefined));
210
- if (!handled)
190
+ // Events nothing handles or forwards stop here, before run creation.
191
+ // Sessions have a default handler while they are on.
192
+ if (!isLinearEventKey(key))
193
+ return { type: "ignore", response };
194
+ const handled = (filters.sessions && SESSION_KEYS.has(key)) ||
195
+ (Object.hasOwn(handlers, key) && handlers[key] !== undefined);
196
+ if (!handled && !filters.received.has(key))
211
197
  return { type: "ignore", response };
212
198
  const event = linearEventSchema.parse({ key, deliveryId, payload });
213
199
  // Issues of teams the channel is not limited to start nothing.
214
200
  if (filters.teams &&
215
- !(event.team && filters.teams.includes(event.team.key.toLowerCase())))
201
+ !(event.team && filters.teams.includes(event.team.key.toLowerCase()))) {
202
+ logger.info(`linear event ignored: ${event.team ? "its team is not in app.teams" : "it names no team"} ${JSON.stringify({
203
+ event: logger.logIdentifier(key),
204
+ deliveryId: logger.logIdentifier(deliveryId),
205
+ })}`);
216
206
  return { type: "ignore", response };
217
- if (event.type !== "AgentSessionEvent" && (await ignored(event, filters)))
207
+ }
208
+ if (!("sessionId" in event) && (await ignored(event, filters)))
218
209
  return { type: "ignore", response };
219
210
  // 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.
211
+ const snapshot = eventSnapshot(event, "Linear");
212
+ // Received only to forward: it starts nothing.
213
+ if (!handled)
214
+ return { type: "ignore", response, rawEvent: snapshot };
215
+ // One thread per agent session, so a Stop ends only its own session's
216
+ // work. Other events share one thread per issue, so the agent keeps the
217
+ // conversation.
218
+ const conversation = `${event.organizationId}/${event.issueId}`;
224
219
  const message = {
225
- threadId: channelThreadId(channelName, `${event.organizationId}/${event.issueId}`),
220
+ threadId: channelThreadId(channelName, "sessionId" in event
221
+ ? `${conversation}/session/${event.sessionId}`
222
+ : conversation),
226
223
  userId: "mda:channel",
227
224
  target: linearTarget(event),
228
225
  deliveryKey: deliveryId,
229
226
  };
230
- // Stop in a session cancels the conversation's run.
227
+ // Stop in a session cancels the session's run.
231
228
  if (event.key === "AgentSessionEvent.prompted" &&
232
229
  event.payload.agentActivity.signal === "stop")
233
- return { type: "cancel", message, rawEvent: eventSnapshot, response };
230
+ return {
231
+ type: "cancel",
232
+ message: {
233
+ userId: message.userId,
234
+ threadId: message.threadId,
235
+ target: message.target,
236
+ },
237
+ rawEvent: snapshot,
238
+ response,
239
+ };
234
240
  // What the run starts with, or how the event answers an interrupt, is
235
241
  // decided once MDA knows whether the thread waits on one.
236
- return { type: "message", message, rawEvent: eventSnapshot, response };
242
+ return { type: "message", message, rawEvent: snapshot, response };
237
243
  }
238
244
  /**
239
245
  * Whether a webhook event starts nothing: another app's change, the app's own
240
246
  * activity, or a comment an agent session already delivers.
241
247
  */
242
248
  async function ignored(event, filters) {
243
- if (event.type === "AgentSessionEvent")
244
- return false;
245
249
  if (filters.ignoreBots && byBot(event))
246
250
  return true;
247
251
  // Linear reports the app's comments as its user's, not as a bot's.
@@ -253,17 +257,27 @@ async function ignored(event, filters) {
253
257
  const comment = event.payload.data;
254
258
  if ((comment.user?.id ?? comment.userId) === appUser.id)
255
259
  return true;
256
- return filters.sessions && sessionComment(comment, appUser);
260
+ if (!filters.sessions)
261
+ return false;
262
+ const delivered = await sessionComment(comment, appUser);
263
+ if (delivered)
264
+ logger.info(`linear comment left to its agent session: ${delivered} ${JSON.stringify({
265
+ event: logger.logIdentifier(event.key),
266
+ deliveryId: logger.logIdentifier(event.deliveryId),
267
+ })}`);
268
+ return delivered !== undefined;
257
269
  }
258
270
  /**
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.
271
+ * Why a comment is part of an agent session, which delivers it as a session
272
+ * event too: one that mentions the app opens a session, and a reply in a
273
+ * session's thread prompts it. Only a reply without a mention asks Linear.
262
274
  */
263
275
  async function sessionComment(comment, appUser) {
264
276
  if (mentionsApp(comment.body, appUser.displayName))
265
- return true;
266
- return comment.parentId ? commentInAgentSession(comment.parentId) : false;
277
+ return "it mentions the app, which opens a session";
278
+ if (comment.parentId && (await commentInAgentSession(comment.parentId)))
279
+ return "it replies in a session's thread";
280
+ return undefined;
267
281
  }
268
282
  function mentionsApp(body, displayName) {
269
283
  if (!displayName)
@@ -273,86 +287,79 @@ function mentionsApp(body, displayName) {
273
287
  }
274
288
  /** Where replies go: the issue, and the comment thread or session that asked. */
275
289
  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 {
290
+ const target = {
282
291
  organizationId: event.organizationId,
283
292
  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
293
  };
294
+ if ("sessionId" in event) {
295
+ const identifier = event.payload.agentSession.issue?.identifier;
296
+ return {
297
+ ...target,
298
+ ...(identifier && { identifier }),
299
+ sessionId: event.sessionId,
300
+ };
301
+ }
302
+ if (event.key === "Comment.create") {
303
+ const { data } = event.payload;
304
+ return {
305
+ ...target,
306
+ ...(data.issue?.identifier && { identifier: data.issue.identifier }),
307
+ // Replies go into the comment's thread; Linear threads one level deep.
308
+ commentId: data.parentId ?? data.id,
309
+ };
310
+ }
311
+ return { ...target, identifier: event.payload.data.identifier };
291
312
  }
313
+ const ERROR_MESSAGE = "Something went wrong while working on this.";
292
314
  /** What the event's handler starts a run with; `undefined` when it skips or fails. */
293
- async function handlerInput(handlers, rawEvent, channelName, threadId, request) {
315
+ async function handlerInput(handlers, rawEvent, thread) {
294
316
  const event = linearEvent(rawEvent);
295
317
  if (!event)
296
318
  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, {
306
- channel: { name: channelName },
307
- threadId,
308
- delivery: {
309
- rawBody: new TextDecoder().decode(request.rawBody),
310
- signature: request.request.headers.get("linear-signature") ?? "",
311
- },
312
- })
313
- : sessionInput(event);
314
- }
315
- catch (error) {
316
- logger.error(`linear callback failed ${JSON.stringify(receipt)} (${logger.safeErrorLabel(error)})`);
317
- input = undefined;
318
- }
319
- if (input === undefined || input === null) {
320
- // A session that gets no run would wait for an answer that never comes,
321
- // whether it just opened or this is a follow-up in it.
322
- if (event.type === "AgentSessionEvent")
323
- await say(event.sessionId, {
324
- type: "response",
325
- body: "I'm not set up to work on this request.",
326
- });
327
- return undefined;
328
- }
329
- logger.info(`Linear handler returned run input ${JSON.stringify(receipt)}`);
330
- return input;
319
+ const outcome = Object.hasOwn(handlers, event.key) && handlers[event.key] !== undefined
320
+ ? await runEventHandler("Linear", event, () => callHandler(handlers, event.key, event, thread))
321
+ : sessionInput(event);
322
+ if (outcome.type === "input")
323
+ return outcome.input;
324
+ // A session that gets no run would wait for an answer that never comes,
325
+ // whether it just opened or this is a follow-up in it. A handler that threw
326
+ // failed; one that returned nothing declined.
327
+ if ("sessionId" in event)
328
+ await say(event.sessionId, outcome.type === "failed"
329
+ ? { type: "error", body: ERROR_MESSAGE }
330
+ : { type: "response", body: "I'm not set up to work on this request." });
331
+ return undefined;
331
332
  }
332
333
  /** What a session event starts a run with when no handler decides. */
333
334
  function sessionInput(event) {
335
+ let input;
334
336
  if (event.key === "AgentSessionEvent.created") {
335
337
  const { promptContext, agentSession } = event.payload;
336
- return (promptContext?.trim() ||
337
- agentSession.comment?.body?.trim() ||
338
- agentSession.issue?.title?.trim() ||
339
- undefined);
338
+ input =
339
+ promptContext?.trim() ||
340
+ agentSession.comment?.body?.trim() ||
341
+ agentSession.issue?.title?.trim() ||
342
+ undefined;
340
343
  }
341
- if (event.key === "AgentSessionEvent.prompted")
342
- return event.payload.agentActivity.content.body?.trim() || undefined;
343
- return undefined;
344
+ else if (event.key === "AgentSessionEvent.prompted")
345
+ input = event.payload.agentActivity.content.body?.trim() || undefined;
346
+ return input ? { type: "input", input } : { type: "skipped" };
347
+ }
348
+ /** Call the handler of the event's key, typed by the key. */
349
+ function callHandler(handlers, key, event, thread) {
350
+ return handlers[key]?.(event, thread);
344
351
  }
345
- /** The parsed event a delivery carries, as handlers may change it. */
352
+ /**
353
+ * The parsed event a delivery carries, checked against the schema again: the
354
+ * HTTP layer hands over a copy, which handlers may change.
355
+ */
346
356
  function linearEvent(rawEvent) {
347
- if (!rawEvent || typeof rawEvent !== "object" || Array.isArray(rawEvent))
348
- return undefined;
349
- const event = structuredClone(rawEvent);
350
- return EVENT_KEYS.has(event.key) ? event : undefined;
357
+ // The schema reads `key`, `deliveryId` and `payload`, and derives the rest.
358
+ const parsed = linearEventSchema.safeParse(rawEvent);
359
+ return parsed.success ? parsed.data : undefined;
351
360
  }
352
361
  /** Say something in a session; a failure is logged, never thrown. */
353
362
  async function say(sessionId, content, extra = {}) {
354
- if (!sessionId)
355
- return;
356
363
  try {
357
364
  await createLinearActivity({
358
365
  agentSessionId: sessionId,
@@ -416,7 +423,6 @@ async function confirmStopped(target) {
416
423
  return;
417
424
  await say(target.sessionId, { type: "response", body: "Stopped." });
418
425
  }
419
- const ERROR_MESSAGE = "Something went wrong while working on this.";
420
426
  /** Tell the session or the issue that the run failed. */
421
427
  async function reportError(_error, target) {
422
428
  if (!isLinearTarget(target))
@@ -440,14 +446,10 @@ async function reportError(_error, target) {
440
446
  * ends: once the decision is made, the resumed run's answer is the session's
441
447
  * response. Otherwise it is a comment.
442
448
  */
443
- async function notifyPaused(target, run) {
449
+ async function notifyInterrupted(target, run, reason) {
444
450
  if (!isLinearTarget(target))
445
451
  return;
446
- const url = studioUrl(run);
447
- const studio = url ? `[LangSmith Studio](${url})` : "LangSmith Studio";
448
- const body = run.stopped
449
- ? `I need a decision before I continue. Review the pending step in ${studio}.`
450
- : `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.`;
452
+ const body = interruptedNotice(reason, run, "ask again");
451
453
  if (target.sessionId) {
452
454
  await createLinearActivity({
453
455
  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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,eAAe,EACf,WAAW,GAQZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,WAAW,EACX,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,GAEd,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAoBrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGpD,MAAM,UAAU,GAAwB,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAEtE,MAAM,YAAY,GAAwB,IAAI,GAAG,CAAC;IAChD,2BAA2B;IAC3B,4BAA4B;CAC7B,CAAC,CAAC;AAEH,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAC;IACnD,MAAM;IACN,aAAa;IACb,MAAM;IACN,OAAO;CACR,CAAC,CAAC;AAEH,+EAA+E;AAC/E,SAAS,gBAAgB,CAAC,GAAW;IACnC,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,4DAA4D;AAC5D,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAExE,0EAA0E;AAC1E,MAAM,UAAU,aAAa,CAAC,OAAO,GAAyB,EAAE;IAC9D,MAAM,QAAQ,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IACxC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACzE,6DAA6D;IAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,MAAM,CACnD,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CACnC,CAAC;IACF,IAAI,OAAO,CAAC,MAAM;QAChB,MAAM,IAAI,SAAS,CACjB,6BAA6B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1F,CAAC;IACJ,IAAI,OAAO,CAAC,GAAG;QAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3E,IAAI,KAAK,EAAE,MAAM,KAAK,CAAC,IAAI,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;QACrD,MAAM,IAAI,SAAS,CACjB,mEAAmE,CACpE,CAAC;IACJ,MAAM,OAAO,GAAG;QACd,KAAK;QACL,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;QACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;QAClC,QAAQ;KACT,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,CAAC;QAC1B,QAAQ,EAAE,QAAQ;QAClB,GAAG,CAAC,OAAO,CAAC,iBAAiB,IAAI;YAC/B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;SAC7C,CAAC;QACF,cAAc,EAAE;YACd,6DAA6D;YAC7D,MAAM,EAAE;gBACN,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC;aACxE,CAAC,IAAI,EAAE;YACR,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI;gBACjB,GAAG,EAAE,aAAa,CAAC;oBACjB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE;oBAC9B,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE;oBAC5C,IAAI,EACF,OAAO,CAAC,GAAG,CAAC,IAAI;wBAChB,uBAAuB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,iBAAiB,CAAC;oBAC9D,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;iBACnD,CAAC;aACH,CAAC;SACH;QACD,MAAM,EAAE,mBAAmB;QAC3B,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CACjB,kBAAkB,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QACtE,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAC3B,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE;YAC/B,EAAE,EAAE,OAAO,CAAC,QAAQ;YACpB,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE;SACxC,CAAC;QACJ,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,kBAAkB;QAC/B,WAAW,EAAE,cAAc;QAC3B,OAAO,EAAE,WAAW;QACpB,kBAAkB,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;QAC1C,aAAa,EAAE,iBAAiB;QAChC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC;KACrD,CAAC,CAAC;IACH,uEAAuE;IACvE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;IAC/B,OAAO,IAAI,KAAK,SAAS;QACvB,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;YACrB,IAAI,EAAE,uBAAuB,CAAC,IAAI,EAAE,iBAAiB,CAAC;SACvD,CAAC,CAAC;AACT,CAAC;AAED,yDAAyD;AACzD,SAAS,aAAa,CAAC,QAAkB,EAAE,QAAiB;IAC1D,OAAO;QACL,GAAG,IAAI,GAAG,CAAC;YACT,GAAG,gBAAgB,CAAC,QAAQ,CAAC;YAC7B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;SAClC,CAAC;KACH,CAAC,IAAI,EAAE,CAAC;AACX,CAAC;AAED,8EAA8E;AAC9E,SAAS,kBAAkB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAoB;IACvE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IACE,OAAO,CAAC,MAAM,GAAG,CAAC;YAClB,OAAO,CAAC,MAAM,GAAG,EAAE;YACnB,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;YAEnC,MAAM,IAAI,SAAS,CACjB,oEAAoE,CACrE,CAAC;IACN,CAAC;IACD,IACE,WAAW,KAAK,SAAS;QACzB,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;QAEzD,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAC;IAC1E,IAAI,IAAI,KAAK,SAAS;QAAE,uBAAuB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB;IAC1B,OAAO,oBAAoB,CACzB,uBAAuB,EACvB,CAAC,YAAY,EAAE,EAAE,CAAC,uBAAuB,CAAC,YAAY,EAAE,gBAAgB,CAAC,EACzE,uBAAuB,CACxB,CAAC;AACJ,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,wBAAwB;IACtC,sBAAsB,EAAE,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAEpC,KAAK,UAAU,mBAAmB,CAAC,EACjC,OAAO,EACP,OAAO,GACY;IACnB,wEAAwE;IACxE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;IAChE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IACrD,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC3C,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAChE,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;AAC1B,CAAC;AAED,mEAAmE;AACnE,SAAS,OAAO,CAAC,OAAmB;IAClC,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,2EAA2E;QAC3E,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,CACL,MAAM,CAAC,OAAO;QACd,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,oBAAoB,CAC5E,CAAC;AACJ,CAAC;AAeD;;;;GAIG;AACH,SAAS,KAAK,CAAC,KAAgB;IAC7B,IACE,KAAK,CAAC,KAAK,EAAE,IAAI,KAAK,SAAS;QAC/B,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM;QAEzC,OAAO,IAAI,CAAC;IACd,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc;QAAE,OAAO,KAAK,CAAC;IAC/C,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IACxC,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,EAAE,OAAO,EAAsB,EAC/B,QAAkB,EAClB,WAAmB,EACnB,OAAgB;IAEhB,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC;QACxC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAClD,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,EAAE;KAC9B,CAAC,CAAC;IACH,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAChD,MAAM,CAAC,IAAI,CACT,kBAAkB,IAAI,CAAC,SAAS,CAAC;QAC/B,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC;QAChC,UAAU,EAAE,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC;KAC7C,CAAC,EAAE,CACL,CAAC;IACF,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACxE,IAAI,GAAG,KAAK,kBAAkB,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;QAC3E,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACtC,CAAC;IAED,qEAAqE;IACrE,qDAAqD;IACrD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAChE,MAAM,OAAO,GACX,CAAC,OAAO,CAAC,QAAQ,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;IAChE,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAEtC,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;IAEpE,+DAA+D;IAC/D,IACE,OAAO,CAAC,KAAK;QACb,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,EACrE,CAAC;QACD,MAAM,CAAC,IAAI,CACT,yBAAyB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,kBAAkB,IAAI,IAAI,CAAC,SAAS,CACzG;YACE,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC;YAChC,UAAU,EAAE,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC;SAC7C,CACF,EAAE,CACJ,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAEtC,wEAAwE;IACxE,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAChD,+CAA+C;IAC/C,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAEtE,sEAAsE;IACtE,wEAAwE;IACxE,gBAAgB;IAChB,MAAM,YAAY,GAAG,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;IAChE,MAAM,OAAO,GAAG;QACd,QAAQ,EAAE,eAAe,CACvB,WAAW,EACX,WAAW,IAAI,KAAK;YAClB,CAAC,CAAC,GAAG,YAAY,YAAY,KAAK,CAAC,SAAS,EAAE;YAC9C,CAAC,CAAC,YAAY,CACjB;QACD,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC;QAC3B,WAAW,EAAE,UAAU;KACxB,CAAC;IACF,+CAA+C;IAC/C,IACE,KAAK,CAAC,GAAG,KAAK,4BAA4B;QAC1C,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,KAAK,MAAM;QAE7C,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB;YACD,QAAQ,EAAE,QAAQ;YAClB,QAAQ;SACT,CAAC;IACJ,sEAAsE;IACtE,0DAA0D;IAC1D,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACpE,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,OAAO,CAAC,KAAgB,EAAE,OAAgB;IACvD,IAAI,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,mEAAmE;IACnE,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;IACtC,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,OAAO,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAChD,IAAI,KAAK,CAAC,GAAG,KAAK,gBAAgB;QAAE,OAAO,KAAK,CAAC;IACjD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IACnC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IACrE,IAAI,CAAC,OAAO,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzD,IAAI,SAAS;QACX,MAAM,CAAC,IAAI,CACT,6CAA6C,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;YACvE,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;YACtC,UAAU,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC;SACnD,CAAC,EAAE,CACL,CAAC;IACJ,OAAO,SAAS,KAAK,SAAS,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,cAAc,CAC3B,OAAmD,EACnD,OAAsB;IAEtB,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC;QAChD,OAAO,4CAA4C,CAAC;IACtD,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,MAAM,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrE,OAAO,kCAAkC,CAAC;IAC5C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,WAAmB;IACpD,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAChE,OAAO,IAAI,MAAM,CAAC,eAAe,IAAI,YAAY,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,CAAC;AAED,iFAAiF;AACjF,SAAS,YAAY,CAAC,KAAkB;IACtC,MAAM,MAAM,GAAiB;QAC3B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;IACF,IAAI,WAAW,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC;QAChE,OAAO;YACL,GAAG,MAAM;YACT,GAAG,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,CAAC;YACjC,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,GAAG,KAAK,gBAAgB,EAAE,CAAC;QACnC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/B,OAAO;YACL,GAAG,MAAM;YACT,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YACpE,uEAAuE;YACvE,SAAS,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,EAAE;SACpC,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AAClE,CAAC;AAED,MAAM,aAAa,GAAG,6CAA6C,CAAC;AAEpE,sFAAsF;AACtF,KAAK,UAAU,YAAY,CACzB,QAAkB,EAClB,QAA+B,EAC/B,MAA2B;IAE3B,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,OAAO,GACX,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS;QACrE,CAAC,CAAC,MAAM,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAC1C,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAChD;QACH,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IACnD,wEAAwE;IACxE,4EAA4E;IAC5E,8CAA8C;IAC9C,IAAI,WAAW,IAAI,KAAK;QACtB,MAAM,GAAG,CACP,KAAK,CAAC,SAAS,EACf,OAAO,CAAC,IAAI,KAAK,QAAQ;YACvB,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;YACxC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,yCAAyC,EAAE,CAC1E,CAAC;IACJ,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,sEAAsE;AACtE,SAAS,YAAY,CAAC,KAAkB;IACtC,IAAI,KAAyB,CAAC;IAC9B,IAAI,KAAK,CAAC,GAAG,KAAK,2BAA2B,EAAE,CAAC;QAC9C,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;QACtD,KAAK;YACH,aAAa,EAAE,IAAI,EAAE;gBACrB,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;gBAClC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;gBACjC,SAAS,CAAC;IACd,CAAC;SAAM,IAAI,KAAK,CAAC,GAAG,KAAK,4BAA4B;QACnD,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IACxE,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAChE,CAAC;AAED,6DAA6D;AAC7D,SAAS,WAAW,CAClB,QAAkB,EAClB,GAAM,EACN,KAAqB,EACrB,MAA2B;IAE3B,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,QAA+B;IAClD,4EAA4E;IAC5E,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC;AAWD,qEAAqE;AACrE,KAAK,UAAU,GAAG,CAChB,SAAiB,EACjB,OAA8D,EAC9D,KAAK,GAGD,EAAE;IAEN,IAAI,CAAC;QACH,MAAM,oBAAoB,CAAC;YACzB,cAAc,EAAE,SAAS;YACzB,OAAO;YACP,GAAG,KAAK;SACT,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CACV,mCAAmC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CACnE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,SAAS,CACtB,KAA2B;IAE3B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC;IAChD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,uBAAuB,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAyB,CAAC,CAAC;IAC3D,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,SAAS;QAChC,OAAO,oBAAoB,CAAC;YAC1B,cAAc,EAAE,MAAM,CAAC,SAAS;YAChC,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;SACpC,CAAC,CAAC;IACL,OAAO,mBAAmB,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI;QACJ,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,SAAS,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;KACtE,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,kBAAkB,CAC/B,MAAiB,EACjB,GAAuB;IAEvB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;QAAE,OAAO;IACzD,MAAM,GAAG,CACP,MAAM,CAAC,SAAS,EAChB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAC3C;QACE,SAAS,EAAE,IAAI;KAChB,CACF,CAAC;IACF,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,KAAK,2BAA2B;QACxE,OAAO;IACT,IAAI,CAAC;QACH,MAAM,mBAAmB,CAAC,MAAM,CAAC,SAAS,EAAE;YAC1C,KAAK,EAAE,kBAAkB;YACzB,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CACV,+BAA+B,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAC/D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,gEAAgE;AAChE,KAAK,UAAU,cAAc,CAAC,MAAiB;IAC7C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;QAAE,OAAO;IACzD,MAAM,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,yDAAyD;AACzD,KAAK,UAAU,WAAW,CAAC,MAAe,EAAE,MAAiB;IAC3D,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAAE,OAAO;IACpC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,oBAAoB,CAAC;YACzB,cAAc,EAAE,MAAM,CAAC,SAAS;YAChC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;SAChD,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,MAAM,mBAAmB,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,aAAa;QACnB,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;KACxD,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,iBAAiB,CAC9B,MAAiB,EACjB,GAAuB,EACvB,MAA6B;IAE7B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAAE,OAAO;IACpC,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,oBAAoB,CAAC;YACzB,cAAc,EAAE,MAAM,CAAC,SAAS;YAChC,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;SACvC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,MAAM,mBAAmB,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI;QACJ,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;KACxD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,KAAgB;IACtC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9E,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,GACjE,KAAgC,CAAC;IACnC,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAE,EAAE,CAClC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACvD,OAAO,CACL,QAAQ,CAAC,cAAc,CAAC;QACxB,QAAQ,CAAC,OAAO,CAAC;QACjB,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,KAAK,CACtC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,CAClD,CACF,CAAC;AACJ,CAAC"}