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.
- package/README.md +100 -58
- package/dist/channels/github/connections.d.ts.map +1 -1
- package/dist/channels/github/connections.js +2 -2
- package/dist/channels/github/connections.js.map +1 -1
- package/dist/channels/github/index.d.ts +1 -1
- package/dist/channels/github/index.d.ts.map +1 -1
- package/dist/channels/github/index.js +52 -93
- package/dist/channels/github/index.js.map +1 -1
- package/dist/channels/github/schema.d.ts.map +1 -1
- package/dist/channels/github/schema.js +1 -3
- package/dist/channels/github/schema.js.map +1 -1
- package/dist/channels/github/types.d.ts +38 -10
- package/dist/channels/github/types.d.ts.map +1 -1
- package/dist/channels/http/forward.d.ts +13 -0
- package/dist/channels/http/forward.d.ts.map +1 -0
- package/dist/channels/http/forward.js +128 -0
- package/dist/channels/http/forward.js.map +1 -0
- package/dist/channels/http/http.d.ts.map +1 -1
- package/dist/channels/http/http.js +94 -95
- package/dist/channels/http/http.js.map +1 -1
- package/dist/channels/http/index.d.ts +1 -1
- package/dist/channels/http/index.d.ts.map +1 -1
- package/dist/channels/http/index.js +9 -0
- package/dist/channels/http/index.js.map +1 -1
- package/dist/channels/http/ingress.d.ts +26 -11
- package/dist/channels/http/ingress.d.ts.map +1 -1
- package/dist/channels/http/ingress.js +19 -34
- package/dist/channels/http/ingress.js.map +1 -1
- package/dist/channels/http/provider.d.ts +83 -0
- package/dist/channels/http/provider.d.ts.map +1 -0
- package/dist/channels/http/provider.js +176 -0
- package/dist/channels/http/provider.js.map +1 -0
- package/dist/channels/http/studio.d.ts +7 -5
- package/dist/channels/http/studio.d.ts.map +1 -1
- package/dist/channels/http/studio.js +12 -12
- package/dist/channels/http/studio.js.map +1 -1
- package/dist/channels/http/types.d.ts +53 -15
- package/dist/channels/http/types.d.ts.map +1 -1
- package/dist/channels/linear/connections.d.ts.map +1 -1
- package/dist/channels/linear/connections.js +2 -2
- package/dist/channels/linear/connections.js.map +1 -1
- package/dist/channels/linear/graphql.d.ts +5 -17
- package/dist/channels/linear/graphql.d.ts.map +1 -1
- package/dist/channels/linear/graphql.js +55 -57
- package/dist/channels/linear/graphql.js.map +1 -1
- package/dist/channels/linear/index.d.ts +1 -1
- package/dist/channels/linear/index.d.ts.map +1 -1
- package/dist/channels/linear/index.js +162 -160
- package/dist/channels/linear/index.js.map +1 -1
- package/dist/channels/linear/schema.d.ts +173 -144
- package/dist/channels/linear/schema.d.ts.map +1 -1
- package/dist/channels/linear/schema.js +45 -12
- package/dist/channels/linear/schema.js.map +1 -1
- package/dist/channels/linear/types.d.ts +42 -21
- package/dist/channels/linear/types.d.ts.map +1 -1
- package/dist/channels/message-schema.d.ts +2 -0
- package/dist/channels/message-schema.d.ts.map +1 -1
- package/dist/channels/message-schema.js +4 -0
- package/dist/channels/message-schema.js.map +1 -1
- package/dist/channels/run-input.d.ts +3 -9
- package/dist/channels/run-input.d.ts.map +1 -1
- package/dist/channels/run-input.js +7 -17
- package/dist/channels/run-input.js.map +1 -1
- package/dist/channels/trigger/client.js +7 -3
- package/dist/channels/trigger/client.js.map +1 -1
- package/dist/channels/trigger/http.d.ts.map +1 -1
- package/dist/channels/trigger/http.js +6 -3
- package/dist/channels/trigger/http.js.map +1 -1
- package/dist/channels/trigger/tracing-project.d.ts +16 -0
- package/dist/channels/trigger/tracing-project.d.ts.map +1 -0
- package/dist/channels/trigger/tracing-project.js +54 -0
- package/dist/channels/trigger/tracing-project.js.map +1 -0
- package/dist/channels/trigger/types.d.ts +6 -0
- package/dist/channels/trigger/types.d.ts.map +1 -1
- package/dist/channels/trigger/types.js.map +1 -1
- package/dist/connections.d.ts +6 -0
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +27 -0
- package/dist/connections.js.map +1 -1
- package/dist/connectors/mcp/index.d.ts.map +1 -1
- package/dist/connectors/mcp/index.js +52 -2
- package/dist/connectors/mcp/index.js.map +1 -1
- package/dist/credential-gate.d.ts.map +1 -1
- package/dist/credential-gate.js +13 -3
- package/dist/credential-gate.js.map +1 -1
- package/dist/identity/options.d.ts +0 -9
- package/dist/identity/options.d.ts.map +1 -1
- package/dist/identity/options.js +1 -6
- package/dist/identity/options.js.map +1 -1
- package/dist/identity/types.d.ts +0 -6
- package/dist/identity/types.d.ts.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/ingress/runs.d.ts +2 -4
- package/dist/ingress/runs.d.ts.map +1 -1
- package/dist/ingress/runs.js +5 -6
- package/dist/ingress/runs.js.map +1 -1
- package/dist/runtime/auth.d.ts +0 -9
- package/dist/runtime/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +2 -55
- package/dist/runtime/auth.js.map +1 -1
- package/dist/runtime/schedule-auth.d.ts +1 -1
- package/dist/runtime/schedule-auth.d.ts.map +1 -1
- package/dist/runtime/schedule-auth.js +12 -4
- package/dist/runtime/schedule-auth.js.map +1 -1
- package/dist/runtime-schedules.js +6 -6
- package/dist/runtime-schedules.js.map +1 -1
- package/package.json +7 -7
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { z } from "zod";
|
|
2
2
|
import { channelThreadId, httpChannel, } from "../http/index.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
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:
|
|
48
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
73
|
-
|
|
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
|
-
|
|
111
|
-
|
|
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
|
-
|
|
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 (!
|
|
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
|
|
147
|
+
let body;
|
|
163
148
|
try {
|
|
164
|
-
|
|
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
|
-
|
|
170
|
-
|
|
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
|
-
|
|
180
|
-
|
|
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
|
|
185
|
-
return
|
|
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.
|
|
205
|
-
// default handler while they are on.
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
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
|
-
|
|
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
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
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,
|
|
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
|
|
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 {
|
|
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:
|
|
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
|
-
|
|
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
|
-
*
|
|
260
|
-
*
|
|
261
|
-
*
|
|
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
|
|
266
|
-
|
|
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
|
|
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,
|
|
315
|
+
async function handlerInput(handlers, rawEvent, thread) {
|
|
294
316
|
const event = linearEvent(rawEvent);
|
|
295
317
|
if (!event)
|
|
296
318
|
return undefined;
|
|
297
|
-
const
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
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
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
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
|
-
|
|
343
|
-
return
|
|
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
|
-
/**
|
|
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
|
-
|
|
348
|
-
|
|
349
|
-
|
|
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
|
|
449
|
+
async function notifyInterrupted(target, run, reason) {
|
|
444
450
|
if (!isLinearTarget(target))
|
|
445
451
|
return;
|
|
446
|
-
const
|
|
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":"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"}
|