@cat-factory/integrations 0.152.8 → 0.153.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/modules/tasks/GitHubIssuesProvider.d.ts +9 -1
- package/dist/modules/tasks/GitHubIssuesProvider.d.ts.map +1 -1
- package/dist/modules/tasks/GitHubIssuesProvider.js +18 -0
- package/dist/modules/tasks/GitHubIssuesProvider.js.map +1 -1
- package/dist/modules/tasks/GitLabIssuesProvider.d.ts +20 -1
- package/dist/modules/tasks/GitLabIssuesProvider.d.ts.map +1 -1
- package/dist/modules/tasks/GitLabIssuesProvider.js +30 -0
- package/dist/modules/tasks/GitLabIssuesProvider.js.map +1 -1
- package/dist/modules/tasks/JiraProvider.d.ts +6 -0
- package/dist/modules/tasks/JiraProvider.d.ts.map +1 -1
- package/dist/modules/tasks/JiraProvider.js +7 -0
- package/dist/modules/tasks/JiraProvider.js.map +1 -1
- package/dist/modules/tasks/LinearTaskProvider.d.ts +6 -0
- package/dist/modules/tasks/LinearTaskProvider.d.ts.map +1 -1
- package/dist/modules/tasks/LinearTaskProvider.js +7 -0
- package/dist/modules/tasks/LinearTaskProvider.js.map +1 -1
- package/dist/modules/tasks/gitlab-issues.logic.d.ts +10 -0
- package/dist/modules/tasks/gitlab-issues.logic.d.ts.map +1 -1
- package/dist/modules/tasks/gitlab-issues.logic.js +12 -0
- package/dist/modules/tasks/gitlab-issues.logic.js.map +1 -1
- package/dist/modules/tasks/intakeMatch.logic.d.ts +6 -5
- package/dist/modules/tasks/intakeMatch.logic.d.ts.map +1 -1
- package/dist/modules/tasks/intakeMatch.logic.js +33 -14
- package/dist/modules/tasks/intakeMatch.logic.js.map +1 -1
- package/dist/modules/tasks/webhook/adapters.d.ts +16 -0
- package/dist/modules/tasks/webhook/adapters.d.ts.map +1 -1
- package/dist/modules/tasks/webhook/adapters.js +117 -1
- package/dist/modules/tasks/webhook/adapters.js.map +1 -1
- package/dist/modules/tasks/webhook/hmac.d.ts +11 -0
- package/dist/modules/tasks/webhook/hmac.d.ts.map +1 -1
- package/dist/modules/tasks/webhook/hmac.js +30 -6
- package/dist/modules/tasks/webhook/hmac.js.map +1 -1
- package/dist/modules/tasks/writeback/jira.writeback.d.ts +4 -0
- package/dist/modules/tasks/writeback/jira.writeback.d.ts.map +1 -0
- package/dist/modules/tasks/writeback/jira.writeback.js +89 -0
- package/dist/modules/tasks/writeback/jira.writeback.js.map +1 -0
- package/dist/modules/tasks/writeback/linear.writeback.d.ts +4 -0
- package/dist/modules/tasks/writeback/linear.writeback.d.ts.map +1 -0
- package/dist/modules/tasks/writeback/linear.writeback.js +66 -0
- package/dist/modules/tasks/writeback/linear.writeback.js.map +1 -0
- package/dist/modules/tasks/writeback/repo-issue.writeback.d.ts +32 -0
- package/dist/modules/tasks/writeback/repo-issue.writeback.d.ts.map +1 -0
- package/dist/modules/tasks/writeback/repo-issue.writeback.js +70 -0
- package/dist/modules/tasks/writeback/repo-issue.writeback.js.map +1 -0
- package/dist/modules/writeback/IssueWritebackService.d.ts +69 -111
- package/dist/modules/writeback/IssueWritebackService.d.ts.map +1 -1
- package/dist/modules/writeback/IssueWritebackService.js +155 -222
- package/dist/modules/writeback/IssueWritebackService.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,30 +1,15 @@
|
|
|
1
|
-
import { describeError, noopLogger, redactSecrets, resolveWritebackFlag, runBestEffort, REVIEW_QUESTION_POLICIES, REVIEW_QUESTION_POST_CLAIM_TTL_MS, trackerWebhookSecret, } from '@cat-factory/kernel';
|
|
1
|
+
import { createTaskWritebackContext, describeError, noopLogger, redactSecrets, resolveWritebackFlag, runBestEffort, REVIEW_QUESTION_POLICIES, REVIEW_QUESTION_POST_CLAIM_TTL_MS, trackerWebhookSecret, } from '@cat-factory/kernel';
|
|
2
2
|
import { issueRefFor, renderReviewQuestionsComment } from './reviewQuestions.logic.js';
|
|
3
3
|
import { renderReviewReplyAck } from './reviewReplies.logic.js';
|
|
4
|
-
import {
|
|
5
|
-
import { LINEAR_COMMENT_CREATE_MUTATION, LINEAR_ISSUE_ID_QUERY, LINEAR_ISSUE_RESOLVE_LOOKUP_QUERY, LINEAR_ISSUE_UPDATE_MUTATION, buildLinearCommentVariables, buildLinearStateUpdateVariables, pickStateIdByType, } from '../tracker/linear.writeback.logic.js';
|
|
6
|
-
import { linearAuthFromCredentials, postLinearGraphql } from '../shared/linear.client.js';
|
|
7
|
-
import { toBase64 } from '../tracker/base64.js';
|
|
8
|
-
// IssueWritebackService: the runtime-neutral `IssueWritebackProvider`. As a task's
|
|
9
|
-
// PR progresses the execution engine calls it to write back to the task's linked
|
|
10
|
-
// tracker issue(s): comment when the PR opens, and comment + close as resolved when
|
|
11
|
-
// the PR merges. It resolves the workspace's writeback settings (with the per-task
|
|
12
|
-
// override on the block), finds the linked issues via the task projection, and
|
|
13
|
-
// dispatches per source. GitHub auth/installation resolution differs per runtime so
|
|
14
|
-
// it is injected as seams (the facade parses `owner/repo#number` and resolves the
|
|
15
|
-
// installation); the Jira HTTP + ADF logic stays here (identical across runtimes).
|
|
16
|
-
//
|
|
17
|
-
// Every action is best-effort: each issue's writeback is wrapped so one failure
|
|
18
|
-
// never blocks the others, and the engine already calls these fire-and-forget.
|
|
19
|
-
const USER_AGENT = 'cat-factory';
|
|
20
|
-
/** The GitHub in-progress label applied on pickup when the schedule doesn't name one. */
|
|
21
|
-
export const DEFAULT_IN_PROGRESS_LABEL = 'in-progress';
|
|
4
|
+
import { MapTaskSourceRegistry } from '../tasks/tasks.logic.js';
|
|
22
5
|
export class IssueWritebackService {
|
|
23
6
|
deps;
|
|
24
7
|
log;
|
|
8
|
+
sources;
|
|
25
9
|
constructor(deps) {
|
|
26
10
|
this.deps = deps;
|
|
27
11
|
this.log = (deps.logger ?? noopLogger).child({ service: 'issueWriteback' });
|
|
12
|
+
this.sources = new MapTaskSourceRegistry([...(deps.taskSourceProviders ?? [])]);
|
|
28
13
|
}
|
|
29
14
|
async onPullRequestOpened(workspaceId, block, pr) {
|
|
30
15
|
const settings = await this.deps.trackerSettingsRepository.get(workspaceId);
|
|
@@ -34,9 +19,10 @@ export class IssueWritebackService {
|
|
|
34
19
|
const issues = await this.deps.taskRepository.listByBlock(workspaceId, block.id);
|
|
35
20
|
if (issues.length === 0)
|
|
36
21
|
return;
|
|
22
|
+
const resolved = await this.resolveSources(workspaceId, issues);
|
|
37
23
|
const body = `🔧 A pull request was opened for this issue: ${pr.url}`;
|
|
38
24
|
await this.forEachIssue({ label: 'writeback.onPullRequestOpened', workspaceId }, issues, async (issue) => {
|
|
39
|
-
await this.comment(workspaceId, issue, body);
|
|
25
|
+
await this.comment(workspaceId, resolved, issue, body);
|
|
40
26
|
});
|
|
41
27
|
}
|
|
42
28
|
async onPullRequestMerged(workspaceId, block, pr) {
|
|
@@ -47,10 +33,11 @@ export class IssueWritebackService {
|
|
|
47
33
|
const issues = await this.deps.taskRepository.listByBlock(workspaceId, block.id);
|
|
48
34
|
if (issues.length === 0)
|
|
49
35
|
return;
|
|
36
|
+
const resolved = await this.resolveSources(workspaceId, issues);
|
|
50
37
|
const body = `✅ The pull request was merged and this issue is resolved: ${pr.url}`;
|
|
51
38
|
await this.forEachIssue({ label: 'writeback.onPullRequestMerged', workspaceId }, issues, async (issue) => {
|
|
52
|
-
await this.comment(workspaceId, issue, body);
|
|
53
|
-
await this.
|
|
39
|
+
await this.comment(workspaceId, resolved, issue, body);
|
|
40
|
+
await this.applyState(workspaceId, resolved, issue, 'resolve', {});
|
|
54
41
|
});
|
|
55
42
|
}
|
|
56
43
|
async onIssuePickedUp(workspaceId, blockId, info) {
|
|
@@ -60,12 +47,13 @@ export class IssueWritebackService {
|
|
|
60
47
|
const issues = await this.deps.taskRepository.listByBlock(workspaceId, blockId);
|
|
61
48
|
if (issues.length === 0)
|
|
62
49
|
return;
|
|
50
|
+
const resolved = await this.resolveSources(workspaceId, issues);
|
|
63
51
|
const body = info.runUrl
|
|
64
52
|
? `🤖 Taken by cat-factory — this issue is being worked autonomously: ${info.runUrl}`
|
|
65
53
|
: '🤖 Taken by cat-factory — this issue is being worked autonomously.';
|
|
66
54
|
await this.forEachIssue({ label: 'writeback.onIssuePickedUp', workspaceId }, issues, async (issue) => {
|
|
67
|
-
await this.comment(workspaceId, issue, body);
|
|
68
|
-
await this.
|
|
55
|
+
await this.comment(workspaceId, resolved, issue, body);
|
|
56
|
+
await this.applyState(workspaceId, resolved, issue, 'markInProgress', info.inProgressLabel ? { label: info.inProgressLabel } : {});
|
|
69
57
|
});
|
|
70
58
|
}
|
|
71
59
|
async postReviewQuestions(workspaceId, block, post) {
|
|
@@ -87,11 +75,10 @@ export class IssueWritebackService {
|
|
|
87
75
|
const issues = await this.deps.taskRepository.listByBlock(workspaceId, block.id);
|
|
88
76
|
if (issues.length === 0)
|
|
89
77
|
return empty;
|
|
90
|
-
// Which of these issues can be REPLIED to
|
|
91
|
-
//
|
|
92
|
-
//
|
|
93
|
-
|
|
94
|
-
const repliesBySource = await this.resolveTicketReplyChannels(workspaceId, issues);
|
|
78
|
+
// Which of these issues can be REPLIED to rides the same per-source resolution the comment
|
|
79
|
+
// transport does, so the two cannot disagree about a connection. Two bodies at most, so the
|
|
80
|
+
// render is memoised on the same boolean instead of being recomputed alongside it.
|
|
81
|
+
const resolved = await this.resolveSources(workspaceId, issues);
|
|
95
82
|
const bodies = new Map();
|
|
96
83
|
const bodyFor = (ticketReplies) => {
|
|
97
84
|
const cached = bodies.get(ticketReplies);
|
|
@@ -137,7 +124,8 @@ export class IssueWritebackService {
|
|
|
137
124
|
outcome.skipped += 1;
|
|
138
125
|
continue;
|
|
139
126
|
}
|
|
140
|
-
const
|
|
127
|
+
const source = resolved.get(issue.source);
|
|
128
|
+
const ticketReplies = source?.status === 'ready' && source.ticketReplies;
|
|
141
129
|
if (!ticketReplies) {
|
|
142
130
|
// Said once per claimed post (the marker bounds it), because the remedy is the operator's
|
|
143
131
|
// and the symptom otherwise reaches nobody: the reporter is being asked a question they
|
|
@@ -159,9 +147,9 @@ export class IssueWritebackService {
|
|
|
159
147
|
// outcome this whole marker exists to prevent. A hung transport is instead cut off by
|
|
160
148
|
// the driver's own step limit, and the claim's abandonment window (above) makes that
|
|
161
149
|
// row re-claimable — self-healing without ever inventing a duplicate.
|
|
162
|
-
const delivered = await this.comment(workspaceId, issue, bodyFor(ticketReplies));
|
|
150
|
+
const delivered = await this.comment(workspaceId, resolved, issue, bodyFor(ticketReplies));
|
|
163
151
|
if (!delivered)
|
|
164
|
-
throw new Error(`No ${issue.source}
|
|
152
|
+
throw new Error(`No ${issue.source} writeback is wired`);
|
|
165
153
|
await markers.settle(key, { status: 'posted' }, now());
|
|
166
154
|
outcome.posted += 1;
|
|
167
155
|
}
|
|
@@ -186,73 +174,112 @@ export class IssueWritebackService {
|
|
|
186
174
|
return outcome;
|
|
187
175
|
}
|
|
188
176
|
/**
|
|
189
|
-
*
|
|
190
|
-
* linked issues.
|
|
177
|
+
* Acknowledge a ticket reply on the very issue it arrived on.
|
|
191
178
|
*
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
*
|
|
179
|
+
* Deliberately NOT marker-gated, unlike {@link postReviewQuestions}: an ack is the terminal
|
|
180
|
+
* effect of an ingest that is ALREADY claimed exactly once by `tracker_comment_ingests`, so a
|
|
181
|
+
* second marker here would guard nothing and add a second thing to reason about. It is also not
|
|
182
|
+
* gated on the workspace writeback settings — a reply is an explicit request for a response, not
|
|
183
|
+
* an unsolicited courtesy.
|
|
195
184
|
*
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
|
|
185
|
+
* Best-effort throughout: the reply is applied and settled before this runs, so a tracker outage
|
|
186
|
+
* costs the acknowledgement, never the answer.
|
|
187
|
+
*/
|
|
188
|
+
async postReviewReplyAck(workspaceId, issue, ack) {
|
|
189
|
+
const resolved = await this.resolveSources(workspaceId, [issue]);
|
|
190
|
+
await this.comment(workspaceId, resolved, issue, renderReviewReplyAck(ack));
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* What this deployment can do for each source the given issues sit on: the registered
|
|
194
|
+
* provider's writeback adapter, the batch context carrying the workspace's credential bag for
|
|
195
|
+
* it, and whether a reply typed on one of its tickets reaches the run.
|
|
196
|
+
*
|
|
197
|
+
* ONE connection read for the whole set, indexed by source.
|
|
199
198
|
*
|
|
200
|
-
*
|
|
201
|
-
*
|
|
202
|
-
*
|
|
203
|
-
*
|
|
199
|
+
* What an unreadable row costs is the ADAPTER's own declaration (`authenticates`), never a guess
|
|
200
|
+
* from the empty bag it leaves behind. A `stored-connection` adapter resolves to `unreadable`
|
|
201
|
+
* and is REPORTED: writing back with a bag that would not open authenticates as nobody, and the
|
|
202
|
+
* vendor's rejection would name the wrong fault. An `out-of-band` adapter (GitHub Issues rides
|
|
203
|
+
* the workspace's App, GitLab Issues its VCS connection) never needed the row to post, so it
|
|
204
|
+
* stays READY and loses only what the row actually carried: the reply channel, which is
|
|
205
|
+
* WITHHELD rather than assumed, because telling a reporter to reply where nothing listens is
|
|
206
|
+
* the exact thing this resolution exists to prevent.
|
|
207
|
+
*
|
|
208
|
+
* Both verdicts are scoped to the SOURCE they were learned about. A block's issues can span
|
|
209
|
+
* trackers, and a corrupt Linear envelope is no evidence at all about the workspace's Jira
|
|
210
|
+
* connection, so a batch-wide failure would take a working channel away from a healthy ticket.
|
|
204
211
|
*/
|
|
205
|
-
async
|
|
206
|
-
const
|
|
212
|
+
async resolveSources(workspaceId, issues) {
|
|
213
|
+
const sources = [...new Set(issues.map((issue) => issue.source))];
|
|
214
|
+
const out = new Map();
|
|
215
|
+
/** The adapter for a source, or `undefined` when nothing is registered to write back with. */
|
|
216
|
+
const adapterFor = (source) => this.sources.get(source)?.writeback;
|
|
217
|
+
const ready = (adapter, credentials, ticketReplies) => ({
|
|
218
|
+
status: 'ready',
|
|
219
|
+
adapter,
|
|
220
|
+
ctx: createTaskWritebackContext({ workspaceId, credentials }),
|
|
221
|
+
ticketReplies,
|
|
222
|
+
});
|
|
223
|
+
/**
|
|
224
|
+
* A source that HAS no stored connection: no row, or no store wired at all. Every adapter
|
|
225
|
+
* stays ready with an empty bag, because absence is the adapter's own question to answer. A
|
|
226
|
+
* credentialless one is unaffected, and one that needs credentials throws from the call with
|
|
227
|
+
* a message naming the missing connection, which beats this file guessing that fault from
|
|
228
|
+
* outside (see the port doc on `TaskWritebackContext.credentials`).
|
|
229
|
+
*
|
|
230
|
+
* A row that FAILED to open is the opposite case and is handled below: something exists and
|
|
231
|
+
* could not be read, so an adapter that needs it must not be asked to try.
|
|
232
|
+
*/
|
|
233
|
+
for (const source of sources) {
|
|
234
|
+
const adapter = adapterFor(source);
|
|
235
|
+
out.set(source, adapter ? ready(adapter, {}, false) : { status: 'unwired' });
|
|
236
|
+
}
|
|
207
237
|
const connections = this.deps.taskConnectionStore;
|
|
208
238
|
if (!connections)
|
|
209
|
-
return
|
|
210
|
-
const sources = [...new Set(issues.map((issue) => issue.source))];
|
|
211
|
-
// Default FALSE for every source asked about, then raise the ones that answered: a source with
|
|
212
|
-
// no stored connection is simply absent from the result, and it has no reply channel.
|
|
213
|
-
for (const source of sources)
|
|
214
|
-
wired.set(source, false);
|
|
239
|
+
return out;
|
|
215
240
|
let opened;
|
|
216
241
|
try {
|
|
217
242
|
opened = await connections.listBySources(workspaceId, sources);
|
|
218
243
|
}
|
|
219
244
|
catch (error) {
|
|
220
245
|
// The stored-row READ itself failed, before any source was opened, so nothing was learned
|
|
221
|
-
// about any of them
|
|
222
|
-
this.
|
|
223
|
-
|
|
224
|
-
sources,
|
|
225
|
-
...describeError(error),
|
|
226
|
-
});
|
|
227
|
-
return wired;
|
|
246
|
+
// about any of them.
|
|
247
|
+
this.markUnreadable(out, workspaceId, sources, error);
|
|
248
|
+
return out;
|
|
228
249
|
}
|
|
229
250
|
for (const result of opened) {
|
|
230
251
|
if (result.status === 'unreadable') {
|
|
231
|
-
this.
|
|
232
|
-
workspaceId,
|
|
233
|
-
source: result.source,
|
|
234
|
-
...describeError(result.cause),
|
|
235
|
-
});
|
|
252
|
+
this.markUnreadable(out, workspaceId, [result.source], result.cause);
|
|
236
253
|
continue;
|
|
237
254
|
}
|
|
238
|
-
|
|
255
|
+
const adapter = adapterFor(result.source);
|
|
256
|
+
if (!adapter)
|
|
257
|
+
continue;
|
|
258
|
+
const credentials = result.connection.credentials;
|
|
259
|
+
out.set(result.source, ready(adapter, credentials, trackerWebhookSecret(credentials) !== ''));
|
|
239
260
|
}
|
|
240
|
-
return
|
|
261
|
+
return out;
|
|
241
262
|
}
|
|
242
263
|
/**
|
|
243
|
-
*
|
|
264
|
+
* Record a connection that would not open, costing each source only what it actually costs.
|
|
244
265
|
*
|
|
245
|
-
*
|
|
246
|
-
*
|
|
247
|
-
*
|
|
248
|
-
*
|
|
249
|
-
*
|
|
250
|
-
*
|
|
251
|
-
*
|
|
252
|
-
* costs the acknowledgement, never the answer.
|
|
266
|
+
* An adapter that authenticates WITH the bag is lost until the connection is repaired, so it
|
|
267
|
+
* resolves to `unreadable` and every call for it fails loudly. An `out-of-band` one keeps its
|
|
268
|
+
* whole writeback (it authenticates from `workspaceId` and only ever read this row for the
|
|
269
|
+
* inbound secret) and loses just the reply channel, which the seeded entry already withholds.
|
|
270
|
+
* Reading the failure as one fact for every source is what would let a rotated
|
|
271
|
+
* `TASKS_ENCRYPTION_KEY` silence GitHub's PR notices, and the two log lines say which happened
|
|
272
|
+
* because an operator acts on them differently.
|
|
253
273
|
*/
|
|
254
|
-
|
|
255
|
-
|
|
274
|
+
markUnreadable(out, workspaceId, sources, cause) {
|
|
275
|
+
for (const source of sources) {
|
|
276
|
+
const outOfBand = this.sources.get(source)?.writeback?.authenticates === 'out-of-band';
|
|
277
|
+
if (!outOfBand)
|
|
278
|
+
out.set(source, { status: 'unreadable' });
|
|
279
|
+
this.log.warn(outOfBand
|
|
280
|
+
? 'tracker connection unreadable; the writeback still posts but can offer no ticket reply channel'
|
|
281
|
+
: 'tracker connection unreadable; writeback cannot authenticate', { workspaceId, source, ...describeError(cause) });
|
|
282
|
+
}
|
|
256
283
|
}
|
|
257
284
|
/**
|
|
258
285
|
* Run a writeback per issue, isolating failures so one bad issue can't block the rest. Each
|
|
@@ -268,166 +295,72 @@ export class IssueWritebackService {
|
|
|
268
295
|
})));
|
|
269
296
|
}
|
|
270
297
|
/**
|
|
271
|
-
* Post a comment on one linked issue. Returns whether this deployment has a
|
|
272
|
-
* issue's source at all;
|
|
273
|
-
*
|
|
274
|
-
*
|
|
275
|
-
*
|
|
276
|
-
*
|
|
298
|
+
* Post a comment on one linked issue. Returns whether this deployment has a writeback for that
|
|
299
|
+
* issue's source at all; an adapter that cannot deliver THROWS (see the port), so `true` means
|
|
300
|
+
* the comment landed. The fire-and-forget hooks ignore both signals, but the parked-review
|
|
301
|
+
* writeback distinguishes them: an unwired source is a permanent no-op to retry once someone
|
|
302
|
+
* wires it, a throw is a failure to retry on the next replay, and neither may be recorded as
|
|
303
|
+
* `posted`.
|
|
277
304
|
*/
|
|
278
|
-
async comment(workspaceId,
|
|
305
|
+
async comment(workspaceId, resolved,
|
|
279
306
|
// Narrowed to the natural key rather than the whole record: the ticket-reply ack addresses the
|
|
280
307
|
// issue the comment ARRIVED on, which it knows as `(source, externalId)` off the delivery and
|
|
281
308
|
// has no reason to re-read from the projection.
|
|
282
309
|
issue, body) {
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
310
|
+
const source = resolved.get(issue.source);
|
|
311
|
+
if (source?.status !== 'ready') {
|
|
312
|
+
// An unreadable connection is a FAILURE to retry, not an absent capability: the source is
|
|
313
|
+
// wired and the row exists, it just could not be opened this time.
|
|
314
|
+
if (source?.status === 'unreadable') {
|
|
315
|
+
throw new Error(`The ${issue.source} connection for this workspace could not be opened`);
|
|
316
|
+
}
|
|
317
|
+
this.log.warn('no writeback is wired for this source; the comment was not posted', {
|
|
318
|
+
workspaceId,
|
|
319
|
+
source: issue.source,
|
|
320
|
+
externalId: issue.externalId,
|
|
321
|
+
remedy: `register a ${issue.source} task-source provider declaring a writeback adapter`,
|
|
295
322
|
});
|
|
296
|
-
return
|
|
297
|
-
}
|
|
298
|
-
if (issue.source === 'linear') {
|
|
299
|
-
if (!this.deps.resolveLinearConnection || !this.deps.fetchImpl)
|
|
300
|
-
return false;
|
|
301
|
-
await this.commentLinear(workspaceId, issue.externalId, body);
|
|
302
|
-
return true;
|
|
303
|
-
}
|
|
304
|
-
return false;
|
|
305
|
-
}
|
|
306
|
-
async resolve(workspaceId, issue) {
|
|
307
|
-
if (issue.source === 'github') {
|
|
308
|
-
await this.deps.closeGitHubIssue?.(workspaceId, issue.externalId);
|
|
309
|
-
return;
|
|
310
|
-
}
|
|
311
|
-
if (issue.source === 'jira') {
|
|
312
|
-
await this.transitionJira(workspaceId, issue.externalId, 'done');
|
|
313
|
-
return;
|
|
314
|
-
}
|
|
315
|
-
if (issue.source === 'linear') {
|
|
316
|
-
await this.transitionLinear(workspaceId, issue.externalId, 'completed');
|
|
323
|
+
return false;
|
|
317
324
|
}
|
|
325
|
+
await source.adapter.comment(source.ctx, issue.externalId, body);
|
|
326
|
+
return true;
|
|
318
327
|
}
|
|
319
328
|
/**
|
|
320
|
-
*
|
|
321
|
-
*
|
|
322
|
-
*
|
|
329
|
+
* Apply the issue's state change for a hook: `resolve` on merge, `markInProgress` on pickup.
|
|
330
|
+
*
|
|
331
|
+
* Both are OPTIONAL on the adapter, and an omitted one is reported rather than passed over in
|
|
332
|
+
* silence. A tracker whose vendor has no such notion is a real answer an operator may need (the
|
|
333
|
+
* merge comment landed and the issue stayed open, and only this line says why), and it must not
|
|
334
|
+
* read like the write simply succeeded.
|
|
323
335
|
*/
|
|
324
|
-
async
|
|
325
|
-
|
|
326
|
-
|
|
336
|
+
async applyState(workspaceId, resolved, issue, action, mark) {
|
|
337
|
+
const source = resolved.get(issue.source);
|
|
338
|
+
// An unwired or unreadable source has already been reported by the comment that preceded
|
|
339
|
+
// every call site, so this stays quiet rather than logging the same fact twice.
|
|
340
|
+
if (source?.status !== 'ready')
|
|
327
341
|
return;
|
|
328
|
-
|
|
329
|
-
if (
|
|
330
|
-
|
|
342
|
+
const ctx = source.ctx;
|
|
343
|
+
if (action === 'resolve') {
|
|
344
|
+
if (!source.adapter.resolve) {
|
|
345
|
+
this.log.warn('this source cannot resolve an issue; it was commented on but left open', {
|
|
346
|
+
workspaceId,
|
|
347
|
+
source: issue.source,
|
|
348
|
+
externalId: issue.externalId,
|
|
349
|
+
});
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
352
|
+
await source.adapter.resolve(ctx, issue.externalId);
|
|
331
353
|
return;
|
|
332
354
|
}
|
|
333
|
-
if (
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
* On merge this runs before {@link resolveLinear}, so the issue is looked up twice
|
|
340
|
-
* (here for the UUID, there for the UUID + the team's workflow states). That second
|
|
341
|
-
* lookup is unavoidable — only it carries the states needed to pick the resolved
|
|
342
|
-
* state — and the duplicated read is one cheap `issue(id:){id}` call, so the seam is
|
|
343
|
-
* kept uniform with the GitHub/Jira comment/resolve split rather than special-cased.
|
|
344
|
-
*/
|
|
345
|
-
async commentLinear(workspaceId, identifier, body) {
|
|
346
|
-
const lookup = (await this.linearRequest(workspaceId, LINEAR_ISSUE_ID_QUERY, {
|
|
347
|
-
id: identifier,
|
|
348
|
-
}));
|
|
349
|
-
const issueId = lookup?.issue?.id;
|
|
350
|
-
if (!issueId)
|
|
351
|
-
return;
|
|
352
|
-
await this.linearRequest(workspaceId, LINEAR_COMMENT_CREATE_MUTATION, buildLinearCommentVariables(issueId, body));
|
|
353
|
-
}
|
|
354
|
-
/**
|
|
355
|
-
* Transition a Linear issue: look up its UUID + team states, pick the target
|
|
356
|
-
* state (`completed` on resolve, `started` on pickup), then `issueUpdate`.
|
|
357
|
-
*/
|
|
358
|
-
async transitionLinear(workspaceId, identifier, stateType) {
|
|
359
|
-
const lookup = (await this.linearRequest(workspaceId, LINEAR_ISSUE_RESOLVE_LOOKUP_QUERY, {
|
|
360
|
-
id: identifier,
|
|
361
|
-
}));
|
|
362
|
-
const issueId = lookup?.issue?.id;
|
|
363
|
-
const stateId = pickStateIdByType((lookup?.issue?.team?.states?.nodes ?? []), stateType);
|
|
364
|
-
if (!issueId || !stateId)
|
|
365
|
-
return;
|
|
366
|
-
await this.linearRequest(workspaceId, LINEAR_ISSUE_UPDATE_MUTATION, buildLinearStateUpdateVariables(issueId, stateId));
|
|
367
|
-
}
|
|
368
|
-
/**
|
|
369
|
-
* Issue a Linear GraphQL request for the workspace's connection. Returns the
|
|
370
|
-
* validated `data` (or null when Linear isn't configured). Throws on a GraphQL /
|
|
371
|
-
* HTTP error so the per-issue isolation in {@link forEachIssue} reports and swallows it.
|
|
372
|
-
*/
|
|
373
|
-
async linearRequest(workspaceId, document, variables) {
|
|
374
|
-
const { resolveLinearConnection, fetchImpl } = this.deps;
|
|
375
|
-
if (!resolveLinearConnection || !fetchImpl)
|
|
376
|
-
return null;
|
|
377
|
-
const connection = await resolveLinearConnection(workspaceId);
|
|
378
|
-
if (!connection?.token && !connection?.apiKey)
|
|
379
|
-
return null;
|
|
380
|
-
return postLinearGraphql(fetchImpl, linearAuthFromCredentials(connection), document, variables);
|
|
381
|
-
}
|
|
382
|
-
/**
|
|
383
|
-
* Transition a Jira issue into a standard status category: `done` on resolve,
|
|
384
|
-
* `indeterminate` (In Progress) on pickup. Lists the issue's available
|
|
385
|
-
* transitions and fires the first one landing in the category.
|
|
386
|
-
*/
|
|
387
|
-
async transitionJira(workspaceId, key, category) {
|
|
388
|
-
const path = `issue/${encodeURIComponent(key)}/transitions`;
|
|
389
|
-
const list = (await this.jiraRequest(workspaceId, path, { method: 'GET' }));
|
|
390
|
-
const transition = pickTransitionByCategory(list?.transitions ?? [], category);
|
|
391
|
-
if (!transition?.id)
|
|
355
|
+
if (!source.adapter.markInProgress) {
|
|
356
|
+
this.log.warn('this source cannot mark an issue in progress; the pickup is comment-only', {
|
|
357
|
+
workspaceId,
|
|
358
|
+
source: issue.source,
|
|
359
|
+
externalId: issue.externalId,
|
|
360
|
+
});
|
|
392
361
|
return;
|
|
393
|
-
await this.jiraRequest(workspaceId, path, {
|
|
394
|
-
method: 'POST',
|
|
395
|
-
body: { transition: { id: transition.id } },
|
|
396
|
-
});
|
|
397
|
-
}
|
|
398
|
-
/**
|
|
399
|
-
* Issue a Jira REST v3 request for the workspace's connection. Returns the parsed
|
|
400
|
-
* JSON body (or null on an empty/204 response). Throws on a non-OK status so the
|
|
401
|
-
* per-issue isolation in {@link forEachIssue} reports and swallows it.
|
|
402
|
-
*/
|
|
403
|
-
async jiraRequest(workspaceId, path, init) {
|
|
404
|
-
const { resolveJiraConnection, fetchImpl } = this.deps;
|
|
405
|
-
if (!resolveJiraConnection || !fetchImpl)
|
|
406
|
-
return null;
|
|
407
|
-
const connection = await resolveJiraConnection(workspaceId);
|
|
408
|
-
if (!connection?.baseUrl || !connection.accountEmail || !connection.apiToken)
|
|
409
|
-
return null;
|
|
410
|
-
const base = connection.baseUrl.replace(/\/+$/, '');
|
|
411
|
-
const url = `${base}/rest/api/3/${path}`;
|
|
412
|
-
const auth = toBase64(`${connection.accountEmail}:${connection.apiToken}`);
|
|
413
|
-
const res = await fetchImpl(url, {
|
|
414
|
-
method: init.method,
|
|
415
|
-
headers: {
|
|
416
|
-
authorization: `Basic ${auth}`,
|
|
417
|
-
accept: 'application/json',
|
|
418
|
-
'content-type': 'application/json',
|
|
419
|
-
'user-agent': USER_AGENT,
|
|
420
|
-
},
|
|
421
|
-
// Omit the body entirely for a bodyless (GET) request: the real `fetch` throws
|
|
422
|
-
// for ANY non-null body on a GET — including an empty string — which the
|
|
423
|
-
// per-issue catch would silently swallow, leaving Jira issues never resolved.
|
|
424
|
-
...(init.body === undefined ? {} : { body: JSON.stringify(init.body) }),
|
|
425
|
-
});
|
|
426
|
-
if (!res.ok) {
|
|
427
|
-
const text = await res.text().catch(() => '');
|
|
428
|
-
throw new Error(`Jira ${init.method} ${url} → ${res.status}: ${text.slice(0, 300)}`);
|
|
429
362
|
}
|
|
430
|
-
|
|
363
|
+
await source.adapter.markInProgress(ctx, issue.externalId, mark);
|
|
431
364
|
}
|
|
432
365
|
}
|
|
433
366
|
//# sourceMappingURL=IssueWritebackService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IssueWritebackService.js","sourceRoot":"","sources":["../../../src/modules/writeback/IssueWritebackService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IssueWritebackService.js","sourceRoot":"","sources":["../../../src/modules/writeback/IssueWritebackService.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/integrations",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.153.0",
|
|
4
4
|
"description": "External-system integration domain logic for the Agent Architecture Board (GitHub, documents, tasks, environments, runners).",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -28,14 +28,14 @@
|
|
|
28
28
|
"p-map": "^7.0.6",
|
|
29
29
|
"yaml": "^2.9.0",
|
|
30
30
|
"@cat-factory/contracts": "0.283.0",
|
|
31
|
-
"@cat-factory/kernel": "0.
|
|
31
|
+
"@cat-factory/kernel": "0.279.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"typescript": "7.0.2",
|
|
35
35
|
"undici": "^8.10.0",
|
|
36
36
|
"valibot": "^1.4.2",
|
|
37
37
|
"vitest": "^4.1.10",
|
|
38
|
-
"@cat-factory/caching": "0.18.
|
|
38
|
+
"@cat-factory/caching": "0.18.24"
|
|
39
39
|
},
|
|
40
40
|
"scripts": {
|
|
41
41
|
"build": "tsc -b tsconfig.build.json",
|