@cat-factory/integrations 0.64.0 → 0.65.1
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 +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/modules/runners/HttpRunnerPoolProvider.js +16 -0
- package/dist/modules/runners/HttpRunnerPoolProvider.js.map +1 -1
- package/dist/modules/tasks/BugIntakeService.d.ts +50 -0
- package/dist/modules/tasks/BugIntakeService.d.ts.map +1 -0
- package/dist/modules/tasks/BugIntakeService.js +108 -0
- package/dist/modules/tasks/BugIntakeService.js.map +1 -0
- package/dist/modules/tasks/GitHubIssuesProvider.d.ts +11 -1
- package/dist/modules/tasks/GitHubIssuesProvider.d.ts.map +1 -1
- package/dist/modules/tasks/GitHubIssuesProvider.js +49 -0
- package/dist/modules/tasks/GitHubIssuesProvider.js.map +1 -1
- package/dist/modules/tasks/JiraProvider.d.ts +10 -1
- package/dist/modules/tasks/JiraProvider.d.ts.map +1 -1
- package/dist/modules/tasks/JiraProvider.js +15 -2
- package/dist/modules/tasks/JiraProvider.js.map +1 -1
- package/dist/modules/tasks/LinearTaskProvider.d.ts +13 -1
- package/dist/modules/tasks/LinearTaskProvider.d.ts.map +1 -1
- package/dist/modules/tasks/LinearTaskProvider.js +35 -1
- package/dist/modules/tasks/LinearTaskProvider.js.map +1 -1
- package/dist/modules/tasks/TaskConnectionService.d.ts +9 -0
- package/dist/modules/tasks/TaskConnectionService.d.ts.map +1 -1
- package/dist/modules/tasks/TaskConnectionService.js +12 -0
- package/dist/modules/tasks/TaskConnectionService.js.map +1 -1
- package/dist/modules/tasks/TaskLinkService.d.ts +22 -0
- package/dist/modules/tasks/TaskLinkService.d.ts.map +1 -1
- package/dist/modules/tasks/TaskLinkService.js +0 -0
- package/dist/modules/tasks/TaskLinkService.js.map +1 -1
- package/dist/modules/tasks/github-issues.logic.d.ts +14 -1
- package/dist/modules/tasks/github-issues.logic.d.ts.map +1 -1
- package/dist/modules/tasks/github-issues.logic.js +32 -0
- package/dist/modules/tasks/github-issues.logic.js.map +1 -1
- package/dist/modules/tasks/jira.logic.d.ts +11 -1
- package/dist/modules/tasks/jira.logic.d.ts.map +1 -1
- package/dist/modules/tasks/jira.logic.js +27 -0
- package/dist/modules/tasks/jira.logic.js.map +1 -1
- package/dist/modules/tasks/linear.logic.d.ts +46 -1
- package/dist/modules/tasks/linear.logic.d.ts.map +1 -1
- package/dist/modules/tasks/linear.logic.js +60 -0
- package/dist/modules/tasks/linear.logic.js.map +1 -1
- package/dist/modules/tracker/jira.writeback.logic.d.ts +6 -5
- package/dist/modules/tracker/jira.writeback.logic.d.ts.map +1 -1
- package/dist/modules/tracker/jira.writeback.logic.js +7 -6
- package/dist/modules/tracker/jira.writeback.logic.js.map +1 -1
- package/dist/modules/tracker/linear.writeback.logic.d.ts +6 -4
- package/dist/modules/tracker/linear.writeback.logic.d.ts.map +1 -1
- package/dist/modules/tracker/linear.writeback.logic.js +7 -5
- package/dist/modules/tracker/linear.writeback.logic.js.map +1 -1
- package/dist/modules/writeback/IssueWritebackService.d.ts +30 -3
- package/dist/modules/writeback/IssueWritebackService.d.ts.map +1 -1
- package/dist/modules/writeback/IssueWritebackService.js +70 -9
- package/dist/modules/writeback/IssueWritebackService.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/tasks/linear.logic.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"linear.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/tasks/linear.logic.ts"],"names":[],"mappings":"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"}
|
|
@@ -81,6 +81,66 @@ export const LINEAR_SEARCH_ISSUES_QUERY = `query SearchIssues($term: String!) {
|
|
|
81
81
|
nodes { identifier title url state { name } }
|
|
82
82
|
}
|
|
83
83
|
}`;
|
|
84
|
+
/**
|
|
85
|
+
* Issue-intake predicate search. The predicates travel as an `IssueFilter`
|
|
86
|
+
* variable (see {@link buildLinearIntakeFilter}); `sort` asks Linear for
|
|
87
|
+
* oldest-created-first so the page window IS the oldest matching issues (a
|
|
88
|
+
* client-side sort of a newest-first page would pick the oldest of the newest —
|
|
89
|
+
* wrong for a backlog larger than one page). Nodes carry `createdAt` so the
|
|
90
|
+
* mapper can enforce the ordering deterministically regardless.
|
|
91
|
+
*/
|
|
92
|
+
export const LINEAR_INTAKE_ISSUES_QUERY = `query IntakeIssues($filter: IssueFilter, $first: Int!, $after: String) {
|
|
93
|
+
issues(filter: $filter, first: $first, after: $after, sort: [{ createdAt: { order: Ascending } }]) {
|
|
94
|
+
nodes { identifier title url createdAt state { name } }
|
|
95
|
+
pageInfo { hasNextPage endCursor }
|
|
96
|
+
}
|
|
97
|
+
}`;
|
|
98
|
+
/**
|
|
99
|
+
* Bounded page walk for issue-intake overscan: the already-worked (excluded) issues
|
|
100
|
+
* cluster at the front of the oldest-first results, so page through (bounded) rather
|
|
101
|
+
* than let a first page full of them starve the pickup.
|
|
102
|
+
*/
|
|
103
|
+
export const LINEAR_INTAKE_PAGE_CAP = 5;
|
|
104
|
+
/**
|
|
105
|
+
* Compile an intake query's predicates onto a Linear `IssueFilter`: the team
|
|
106
|
+
* scope, open-only (state type not completed/canceled), every label present
|
|
107
|
+
* (one `labels.some` clause per label, AND-ed), and the title fragment as
|
|
108
|
+
* `containsIgnoreCase`. Linear has no issue-type notion, so `issueType` is
|
|
109
|
+
* ignored (teams label their bugs — the `labels` predicate covers it). The
|
|
110
|
+
* already-worked exclusion list is not expressible on the human identifier;
|
|
111
|
+
* the provider filters it from a bounded overscan (see the mapper).
|
|
112
|
+
*/
|
|
113
|
+
export function buildLinearIntakeFilter(query) {
|
|
114
|
+
const filter = {
|
|
115
|
+
state: { type: { nin: ['completed', 'canceled'] } },
|
|
116
|
+
};
|
|
117
|
+
if (query.board.linearTeamId)
|
|
118
|
+
filter.team = { id: { eq: query.board.linearTeamId } };
|
|
119
|
+
if (query.titleFragment)
|
|
120
|
+
filter.title = { containsIgnoreCase: query.titleFragment };
|
|
121
|
+
const labels = query.labels ?? [];
|
|
122
|
+
if (labels.length > 0) {
|
|
123
|
+
filter.and = labels.map((label) => ({ labels: { some: { name: { eq: label } } } }));
|
|
124
|
+
}
|
|
125
|
+
return filter;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Map an intake `issues` payload onto lean hits: drop the excluded (already
|
|
129
|
+
* worked) identifiers, order oldest-created-first, and cap at `limit`.
|
|
130
|
+
*/
|
|
131
|
+
export function mapLinearIntakeResults(data, limit, excludeExternalIds = []) {
|
|
132
|
+
const excluded = new Set(excludeExternalIds.map((id) => id.toUpperCase()));
|
|
133
|
+
const nodes = (data.issues?.nodes ?? []).filter((node) => !!node.identifier && !excluded.has(node.identifier.toUpperCase()));
|
|
134
|
+
nodes.sort((a, b) => (a.createdAt ?? '').localeCompare(b.createdAt ?? ''));
|
|
135
|
+
return nodes.slice(0, limit).map((node) => ({
|
|
136
|
+
source: 'linear',
|
|
137
|
+
externalId: node.identifier,
|
|
138
|
+
title: node.title ?? '(untitled)',
|
|
139
|
+
url: node.url ?? `https://linear.app/issue/${node.identifier}`,
|
|
140
|
+
status: node.state?.name ?? '',
|
|
141
|
+
excerpt: '',
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
84
144
|
/** List the connection's teams (for the ticket-filing team picker). */
|
|
85
145
|
export const LINEAR_TEAMS_QUERY = `query Teams { teams(first: 250) { nodes { id name key } } }`;
|
|
86
146
|
/** Cheapest authenticated read, for the live "check setup" probe. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear.logic.js","sourceRoot":"","sources":["../../../src/modules/tasks/linear.logic.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"linear.logic.js","sourceRoot":"","sources":["../../../src/modules/tasks/linear.logic.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,10 +11,11 @@ export interface JiraTransition {
|
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
|
-
* Pick the transition that moves an issue into Jira's standard
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
14
|
+
* Pick the transition that moves an issue into one of Jira's standard status
|
|
15
|
+
* categories: `done` (resolve on merge) or `indeterminate` (Jira's "In
|
|
16
|
+
* Progress" category — the intake pickup mark). Auto-detection only — no
|
|
17
|
+
* per-project mapping. Returns the first matching transition, the conventional
|
|
18
|
+
* action in a standard workflow, or null if none is available.
|
|
18
19
|
*/
|
|
19
|
-
export declare function
|
|
20
|
+
export declare function pickTransitionByCategory(transitions: JiraTransition[], category: 'indeterminate' | 'done'): JiraTransition | null;
|
|
20
21
|
//# sourceMappingURL=jira.writeback.logic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jira.writeback.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/tracker/jira.writeback.logic.ts"],"names":[],"mappings":"AAMA,2FAA2F;AAC3F,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE7E;AAED,6EAA6E;AAC7E,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CAC3C;AAED
|
|
1
|
+
{"version":3,"file":"jira.writeback.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/tracker/jira.writeback.logic.ts"],"names":[],"mappings":"AAMA,2FAA2F;AAC3F,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE7E;AAED,6EAA6E;AAC7E,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CAC3C;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,cAAc,EAAE,EAC7B,QAAQ,EAAE,eAAe,GAAG,MAAM,GACjC,cAAc,GAAG,IAAI,CAEvB"}
|
|
@@ -7,12 +7,13 @@ export function buildJiraCommentPayload(body) {
|
|
|
7
7
|
return { body: markdownToAdf(body) };
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
|
-
* Pick the transition that moves an issue into Jira's standard
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
10
|
+
* Pick the transition that moves an issue into one of Jira's standard status
|
|
11
|
+
* categories: `done` (resolve on merge) or `indeterminate` (Jira's "In
|
|
12
|
+
* Progress" category — the intake pickup mark). Auto-detection only — no
|
|
13
|
+
* per-project mapping. Returns the first matching transition, the conventional
|
|
14
|
+
* action in a standard workflow, or null if none is available.
|
|
14
15
|
*/
|
|
15
|
-
export function
|
|
16
|
-
return transitions.find((t) => t.to?.statusCategory?.key ===
|
|
16
|
+
export function pickTransitionByCategory(transitions, category) {
|
|
17
|
+
return transitions.find((t) => t.to?.statusCategory?.key === category && t.id) ?? null;
|
|
17
18
|
}
|
|
18
19
|
//# sourceMappingURL=jira.writeback.logic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jira.writeback.logic.js","sourceRoot":"","sources":["../../../src/modules/tracker/jira.writeback.logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAEtD,kFAAkF;AAClF,kFAAkF;AAClF,mFAAmF;AAEnF,2FAA2F;AAC3F,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAA;AACtC,CAAC;AASD
|
|
1
|
+
{"version":3,"file":"jira.writeback.logic.js","sourceRoot":"","sources":["../../../src/modules/tracker/jira.writeback.logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAEtD,kFAAkF;AAClF,kFAAkF;AAClF,mFAAmF;AAEnF,2FAA2F;AAC3F,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAA;AACtC,CAAC;AASD;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACtC,WAA6B,EAC7B,QAAkC;IAElC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAA;AACxF,CAAC"}
|
|
@@ -21,9 +21,11 @@ export interface LinearWorkflowState {
|
|
|
21
21
|
type?: string;
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
|
-
* Pick the id of the team's
|
|
25
|
-
* resolved category
|
|
26
|
-
*
|
|
24
|
+
* Pick the id of the team's workflow state of a given standard type — `completed`
|
|
25
|
+
* (Linear's resolved category, the merge-resolve target) or `started` (its "In
|
|
26
|
+
* Progress" category, the intake pickup mark) — or null if none exists. Returns
|
|
27
|
+
* the first match, the conventional target in a default workflow. The Linear
|
|
28
|
+
* analogue of Jira's {@link pickTransitionByCategory}.
|
|
27
29
|
*/
|
|
28
|
-
export declare function
|
|
30
|
+
export declare function pickStateIdByType(states: LinearWorkflowState[], type: 'completed' | 'started'): string | null;
|
|
29
31
|
//# sourceMappingURL=linear.writeback.logic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear.writeback.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/tracker/linear.writeback.logic.ts"],"names":[],"mappings":"AAYA,4EAA4E;AAC5E,eAAO,MAAM,qBAAqB,8DAEhC,CAAA;AAEF,6EAA6E;AAC7E,eAAO,MAAM,iCAAiC,4HAK5C,CAAA;AAEF,oCAAoC;AACpC,eAAO,MAAM,8BAA8B,yGAEzC,CAAA;AAEF,mEAAmE;AACnE,eAAO,MAAM,4BAA4B,0HAEvC,CAAA;AAEF,wEAAwE;AACxE,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACX;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAEpC;AAED,gFAAgF;AAChF,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAEhD;AAED,gEAAgE;AAChE,MAAM,WAAW,mBAAmB;IAClC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED
|
|
1
|
+
{"version":3,"file":"linear.writeback.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/tracker/linear.writeback.logic.ts"],"names":[],"mappings":"AAYA,4EAA4E;AAC5E,eAAO,MAAM,qBAAqB,8DAEhC,CAAA;AAEF,6EAA6E;AAC7E,eAAO,MAAM,iCAAiC,4HAK5C,CAAA;AAEF,oCAAoC;AACpC,eAAO,MAAM,8BAA8B,yGAEzC,CAAA;AAEF,mEAAmE;AACnE,eAAO,MAAM,4BAA4B,0HAEvC,CAAA;AAEF,wEAAwE;AACxE,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACX;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAEpC;AAED,gFAAgF;AAChF,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAEhD;AAED,gEAAgE;AAChE,MAAM,WAAW,mBAAmB;IAClC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,mBAAmB,EAAE,EAC7B,IAAI,EAAE,WAAW,GAAG,SAAS,GAC5B,MAAM,GAAG,IAAI,CAEf"}
|
|
@@ -37,11 +37,13 @@ export function buildLinearStateUpdateVariables(issueId, stateId) {
|
|
|
37
37
|
return { id: issueId, input: { stateId } };
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
|
-
* Pick the id of the team's
|
|
41
|
-
* resolved category
|
|
42
|
-
*
|
|
40
|
+
* Pick the id of the team's workflow state of a given standard type — `completed`
|
|
41
|
+
* (Linear's resolved category, the merge-resolve target) or `started` (its "In
|
|
42
|
+
* Progress" category, the intake pickup mark) — or null if none exists. Returns
|
|
43
|
+
* the first match, the conventional target in a default workflow. The Linear
|
|
44
|
+
* analogue of Jira's {@link pickTransitionByCategory}.
|
|
43
45
|
*/
|
|
44
|
-
export function
|
|
45
|
-
return states.find((s) => s.type ===
|
|
46
|
+
export function pickStateIdByType(states, type) {
|
|
47
|
+
return states.find((s) => s.type === type && s.id)?.id ?? null;
|
|
46
48
|
}
|
|
47
49
|
//# sourceMappingURL=linear.writeback.logic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear.writeback.logic.js","sourceRoot":"","sources":["../../../src/modules/tracker/linear.writeback.logic.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,mFAAmF;AACnF,+EAA+E;AAC/E,oCAAoC;AACpC,EAAE;AACF,iFAAiF;AACjF,2EAA2E;AAC3E,kFAAkF;AAClF,8EAA8E;AAC9E,+EAA+E;AAC/E,oCAAoC;AAEpC,4EAA4E;AAC5E,MAAM,CAAC,MAAM,qBAAqB,GAAG;;EAEnC,CAAA;AAEF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,iCAAiC,GAAG;;;;;EAK/C,CAAA;AAEF,oCAAoC;AACpC,MAAM,CAAC,MAAM,8BAA8B,GAAG;;EAE5C,CAAA;AAEF,mEAAmE;AACnE,MAAM,CAAC,MAAM,4BAA4B,GAAG;;EAE1C,CAAA;AAEF,wEAAwE;AACxE,MAAM,UAAU,2BAA2B,CACzC,OAAe,EACf,IAAY;IAEZ,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAA;AACrC,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,+BAA+B,CAC7C,OAAe,EACf,OAAe;IAEf,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,CAAA;AAC5C,CAAC;AAQD
|
|
1
|
+
{"version":3,"file":"linear.writeback.logic.js","sourceRoot":"","sources":["../../../src/modules/tracker/linear.writeback.logic.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,mFAAmF;AACnF,+EAA+E;AAC/E,oCAAoC;AACpC,EAAE;AACF,iFAAiF;AACjF,2EAA2E;AAC3E,kFAAkF;AAClF,8EAA8E;AAC9E,+EAA+E;AAC/E,oCAAoC;AAEpC,4EAA4E;AAC5E,MAAM,CAAC,MAAM,qBAAqB,GAAG;;EAEnC,CAAA;AAEF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,iCAAiC,GAAG;;;;;EAK/C,CAAA;AAEF,oCAAoC;AACpC,MAAM,CAAC,MAAM,8BAA8B,GAAG;;EAE5C,CAAA;AAEF,mEAAmE;AACnE,MAAM,CAAC,MAAM,4BAA4B,GAAG;;EAE1C,CAAA;AAEF,wEAAwE;AACxE,MAAM,UAAU,2BAA2B,CACzC,OAAe,EACf,IAAY;IAEZ,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAA;AACrC,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,+BAA+B,CAC7C,OAAe,EACf,OAAe;IAEf,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,CAAA;AAC5C,CAAC;AAQD;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAA6B,EAC7B,IAA6B;IAE7B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,IAAI,CAAA;AAChE,CAAC"}
|
|
@@ -14,6 +14,12 @@ export interface IssueWritebackServiceDependencies {
|
|
|
14
14
|
* external id. Absent → GitHub close passes through.
|
|
15
15
|
*/
|
|
16
16
|
closeGitHubIssue?: (workspaceId: string, externalId: string) => Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Apply a label to a GitHub issue (creating the label if absent) identified by
|
|
19
|
+
* its `owner/repo#number` external id — the intake pickup's in-progress mark
|
|
20
|
+
* (GitHub has no native workflow status). Absent → the mark passes through.
|
|
21
|
+
*/
|
|
22
|
+
labelGitHubIssue?: (workspaceId: string, externalId: string, label: string) => Promise<void>;
|
|
17
23
|
/**
|
|
18
24
|
* Resolve the workspace's Jira credentials, or null when Jira isn't configured.
|
|
19
25
|
* Reuses the same seam as `TicketTrackerService`. Absent → Jira writeback passes through.
|
|
@@ -27,15 +33,28 @@ export interface IssueWritebackServiceDependencies {
|
|
|
27
33
|
/** HTTP transport for the Jira/Linear calls (each runtime exposes a global `fetch`). */
|
|
28
34
|
fetchImpl?: FetchLike;
|
|
29
35
|
}
|
|
36
|
+
/** The GitHub in-progress label applied on pickup when the schedule doesn't name one. */
|
|
37
|
+
export declare const DEFAULT_IN_PROGRESS_LABEL = "in-progress";
|
|
30
38
|
export declare class IssueWritebackService implements IssueWritebackProvider {
|
|
31
39
|
private readonly deps;
|
|
32
40
|
constructor(deps: IssueWritebackServiceDependencies);
|
|
33
41
|
onPullRequestOpened(workspaceId: string, block: Block, pr: PullRequestRef): Promise<void>;
|
|
34
42
|
onPullRequestMerged(workspaceId: string, block: Block, pr: PullRequestRef): Promise<void>;
|
|
43
|
+
onIssuePickedUp(workspaceId: string, blockId: string, info: {
|
|
44
|
+
runUrl?: string;
|
|
45
|
+
inProgressLabel?: string;
|
|
46
|
+
}): Promise<void>;
|
|
47
|
+
postQuestions(workspaceId: string, blockId: string, questions: string[]): Promise<void>;
|
|
35
48
|
/** Run a writeback per issue, isolating failures so one bad issue can't block the rest. */
|
|
36
49
|
private forEachIssue;
|
|
37
50
|
private comment;
|
|
38
51
|
private resolve;
|
|
52
|
+
/**
|
|
53
|
+
* Mark a picked-up issue in-progress: the vendor's in-progress workflow
|
|
54
|
+
* transition (Jira's `indeterminate` status category / Linear's `started`
|
|
55
|
+
* state), or the in-progress label for GitHub, which has no native status.
|
|
56
|
+
*/
|
|
57
|
+
private markInProgress;
|
|
39
58
|
/**
|
|
40
59
|
* Comment on a Linear issue: resolve its UUID by identifier, then `commentCreate`.
|
|
41
60
|
* On merge this runs before {@link resolveLinear}, so the issue is looked up twice
|
|
@@ -45,15 +64,23 @@ export declare class IssueWritebackService implements IssueWritebackProvider {
|
|
|
45
64
|
* kept uniform with the GitHub/Jira comment/resolve split rather than special-cased.
|
|
46
65
|
*/
|
|
47
66
|
private commentLinear;
|
|
48
|
-
/**
|
|
49
|
-
|
|
67
|
+
/**
|
|
68
|
+
* Transition a Linear issue: look up its UUID + team states, pick the target
|
|
69
|
+
* state (`completed` on resolve, `started` on pickup), then `issueUpdate`.
|
|
70
|
+
*/
|
|
71
|
+
private transitionLinear;
|
|
50
72
|
/**
|
|
51
73
|
* Issue a Linear GraphQL request for the workspace's connection. Returns the
|
|
52
74
|
* validated `data` (or null when Linear isn't configured). Throws on a GraphQL /
|
|
53
75
|
* HTTP error so the per-issue `.catch` in {@link forEachIssue} swallows it.
|
|
54
76
|
*/
|
|
55
77
|
private linearRequest;
|
|
56
|
-
|
|
78
|
+
/**
|
|
79
|
+
* Transition a Jira issue into a standard status category: `done` on resolve,
|
|
80
|
+
* `indeterminate` (In Progress) on pickup. Lists the issue's available
|
|
81
|
+
* transitions and fires the first one landing in the category.
|
|
82
|
+
*/
|
|
83
|
+
private transitionJira;
|
|
57
84
|
/**
|
|
58
85
|
* Issue a Jira REST v3 request for the workspace's connection. Returns the parsed
|
|
59
86
|
* JSON body (or null on an empty/204 response). Throws on a non-OK status so the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IssueWritebackService.d.ts","sourceRoot":"","sources":["../../../src/modules/writeback/IssueWritebackService.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,KAAK,EACV,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EAEnB,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC/B,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"IssueWritebackService.d.ts","sourceRoot":"","sources":["../../../src/modules/writeback/IssueWritebackService.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,KAAK,EACV,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EAEnB,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC/B,MAAM,qBAAqB,CAAA;AAc5B,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,gBAAgB,EACjB,MAAM,oCAAoC,CAAA;AAkB3C,MAAM,WAAW,iCAAiC;IAChD,yBAAyB,EAAE,yBAAyB,CAAA;IACpD,cAAc,EAAE,cAAc,CAAA;IAC9B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/F;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7E;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5F;;;OAGG;IACH,qBAAqB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IAC/E;;;OAGG;IACH,uBAAuB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;IACnF,wFAAwF;IACxF,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED,yFAAyF;AACzF,eAAO,MAAM,yBAAyB,gBAAgB,CAAA;AAEtD,qBAAa,qBAAsB,YAAW,sBAAsB;IACtD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,iCAAiC,EAAI;IAElE,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAW9F;IAEK,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAc9F;IAEK,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAClD,OAAO,CAAC,IAAI,CAAC,CAaf;IAEK,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAe5F;IAED,2FAA2F;YAC7E,YAAY;YAOZ,OAAO;YAiBP,OAAO;IAcrB;;;;OAIG;YACW,cAAc;IAsB5B;;;;;;;OAOG;YACW,aAAa;IAiB3B;;;OAGG;YACW,gBAAgB;IAqB9B;;;;OAIG;YACW,aAAa;IAiB3B;;;;OAIG;YACW,cAAc;IAiB5B;;;;OAIG;YACW,WAAW;CA+B1B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { resolveWritebackFlag, } from '@cat-factory/kernel';
|
|
2
|
-
import { buildJiraCommentPayload,
|
|
3
|
-
import { LINEAR_COMMENT_CREATE_MUTATION, LINEAR_ISSUE_ID_QUERY, LINEAR_ISSUE_RESOLVE_LOOKUP_QUERY, LINEAR_ISSUE_UPDATE_MUTATION, buildLinearCommentVariables, buildLinearStateUpdateVariables,
|
|
2
|
+
import { buildJiraCommentPayload, pickTransitionByCategory, } from '../tracker/jira.writeback.logic.js';
|
|
3
|
+
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';
|
|
4
4
|
import { linearAuthFromCredentials, postLinearGraphql } from '../shared/linear.client.js';
|
|
5
5
|
import { toBase64 } from '../tracker/base64.js';
|
|
6
6
|
// IssueWritebackService: the runtime-neutral `IssueWritebackProvider`. As a task's
|
|
@@ -15,6 +15,8 @@ import { toBase64 } from '../tracker/base64.js';
|
|
|
15
15
|
// Every action is best-effort: each issue's writeback is wrapped so one failure
|
|
16
16
|
// never blocks the others, and the engine already calls these fire-and-forget.
|
|
17
17
|
const USER_AGENT = 'cat-factory';
|
|
18
|
+
/** The GitHub in-progress label applied on pickup when the schedule doesn't name one. */
|
|
19
|
+
export const DEFAULT_IN_PROGRESS_LABEL = 'in-progress';
|
|
18
20
|
export class IssueWritebackService {
|
|
19
21
|
deps;
|
|
20
22
|
constructor(deps) {
|
|
@@ -45,6 +47,39 @@ export class IssueWritebackService {
|
|
|
45
47
|
await this.resolve(workspaceId, issue);
|
|
46
48
|
});
|
|
47
49
|
}
|
|
50
|
+
async onIssuePickedUp(workspaceId, blockId, info) {
|
|
51
|
+
// Deliberately NOT gated on the workspace writeback settings: claiming the
|
|
52
|
+
// issue where it was filed is the intake step's semantics, not a courtesy
|
|
53
|
+
// (see the port doc). Still best-effort per issue, like every hook here.
|
|
54
|
+
const issues = await this.deps.taskRepository.listByBlock(workspaceId, blockId);
|
|
55
|
+
if (issues.length === 0)
|
|
56
|
+
return;
|
|
57
|
+
const body = info.runUrl
|
|
58
|
+
? `🤖 Taken by cat-factory — this issue is being worked autonomously: ${info.runUrl}`
|
|
59
|
+
: '🤖 Taken by cat-factory — this issue is being worked autonomously.';
|
|
60
|
+
await this.forEachIssue(issues, async (issue) => {
|
|
61
|
+
await this.comment(workspaceId, issue, body);
|
|
62
|
+
await this.markInProgress(workspaceId, issue, info.inProgressLabel);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
async postQuestions(workspaceId, blockId, questions) {
|
|
66
|
+
// Echo the clarification gate's open questions onto the linked tracker issue(s) so the
|
|
67
|
+
// reporter sees the ask where they filed the bug. Like `onIssuePickedUp`, NOT gated on
|
|
68
|
+
// the workspace writeback settings (see the port doc), and best-effort per issue.
|
|
69
|
+
const asked = questions.map((q) => q.trim()).filter((q) => q.length > 0);
|
|
70
|
+
if (asked.length === 0)
|
|
71
|
+
return;
|
|
72
|
+
const issues = await this.deps.taskRepository.listByBlock(workspaceId, blockId);
|
|
73
|
+
if (issues.length === 0)
|
|
74
|
+
return;
|
|
75
|
+
const body = [
|
|
76
|
+
'🤖 cat-factory needs a few clarifications before it can fix this bug. Please answer ' +
|
|
77
|
+
'in the platform (these are echoed here for visibility):',
|
|
78
|
+
'',
|
|
79
|
+
...asked.map((q) => `- ${q}`),
|
|
80
|
+
].join('\n');
|
|
81
|
+
await this.forEachIssue(issues, (issue) => this.comment(workspaceId, issue, body));
|
|
82
|
+
}
|
|
48
83
|
/** Run a writeback per issue, isolating failures so one bad issue can't block the rest. */
|
|
49
84
|
async forEachIssue(issues, fn) {
|
|
50
85
|
await Promise.all(issues.map((issue) => fn(issue).catch(() => { })));
|
|
@@ -71,11 +106,29 @@ export class IssueWritebackService {
|
|
|
71
106
|
return;
|
|
72
107
|
}
|
|
73
108
|
if (issue.source === 'jira') {
|
|
74
|
-
await this.
|
|
109
|
+
await this.transitionJira(workspaceId, issue.externalId, 'done');
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (issue.source === 'linear') {
|
|
113
|
+
await this.transitionLinear(workspaceId, issue.externalId, 'completed');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Mark a picked-up issue in-progress: the vendor's in-progress workflow
|
|
118
|
+
* transition (Jira's `indeterminate` status category / Linear's `started`
|
|
119
|
+
* state), or the in-progress label for GitHub, which has no native status.
|
|
120
|
+
*/
|
|
121
|
+
async markInProgress(workspaceId, issue, inProgressLabel) {
|
|
122
|
+
if (issue.source === 'github') {
|
|
123
|
+
await this.deps.labelGitHubIssue?.(workspaceId, issue.externalId, inProgressLabel ?? DEFAULT_IN_PROGRESS_LABEL);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (issue.source === 'jira') {
|
|
127
|
+
await this.transitionJira(workspaceId, issue.externalId, 'indeterminate');
|
|
75
128
|
return;
|
|
76
129
|
}
|
|
77
130
|
if (issue.source === 'linear') {
|
|
78
|
-
await this.
|
|
131
|
+
await this.transitionLinear(workspaceId, issue.externalId, 'started');
|
|
79
132
|
}
|
|
80
133
|
}
|
|
81
134
|
/**
|
|
@@ -95,13 +148,16 @@ export class IssueWritebackService {
|
|
|
95
148
|
return;
|
|
96
149
|
await this.linearRequest(workspaceId, LINEAR_COMMENT_CREATE_MUTATION, buildLinearCommentVariables(issueId, body));
|
|
97
150
|
}
|
|
98
|
-
/**
|
|
99
|
-
|
|
151
|
+
/**
|
|
152
|
+
* Transition a Linear issue: look up its UUID + team states, pick the target
|
|
153
|
+
* state (`completed` on resolve, `started` on pickup), then `issueUpdate`.
|
|
154
|
+
*/
|
|
155
|
+
async transitionLinear(workspaceId, identifier, stateType) {
|
|
100
156
|
const lookup = (await this.linearRequest(workspaceId, LINEAR_ISSUE_RESOLVE_LOOKUP_QUERY, {
|
|
101
157
|
id: identifier,
|
|
102
158
|
}));
|
|
103
159
|
const issueId = lookup?.issue?.id;
|
|
104
|
-
const stateId =
|
|
160
|
+
const stateId = pickStateIdByType((lookup?.issue?.team?.states?.nodes ?? []), stateType);
|
|
105
161
|
if (!issueId || !stateId)
|
|
106
162
|
return;
|
|
107
163
|
await this.linearRequest(workspaceId, LINEAR_ISSUE_UPDATE_MUTATION, buildLinearStateUpdateVariables(issueId, stateId));
|
|
@@ -120,10 +176,15 @@ export class IssueWritebackService {
|
|
|
120
176
|
return null;
|
|
121
177
|
return postLinearGraphql(fetchImpl, linearAuthFromCredentials(connection), document, variables);
|
|
122
178
|
}
|
|
123
|
-
|
|
179
|
+
/**
|
|
180
|
+
* Transition a Jira issue into a standard status category: `done` on resolve,
|
|
181
|
+
* `indeterminate` (In Progress) on pickup. Lists the issue's available
|
|
182
|
+
* transitions and fires the first one landing in the category.
|
|
183
|
+
*/
|
|
184
|
+
async transitionJira(workspaceId, key, category) {
|
|
124
185
|
const path = `issue/${encodeURIComponent(key)}/transitions`;
|
|
125
186
|
const list = (await this.jiraRequest(workspaceId, path, { method: 'GET' }));
|
|
126
|
-
const transition =
|
|
187
|
+
const transition = pickTransitionByCategory(list?.transitions ?? [], category);
|
|
127
188
|
if (!transition?.id)
|
|
128
189
|
return;
|
|
129
190
|
await this.jiraRequest(workspaceId, path, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IssueWritebackService.js","sourceRoot":"","sources":["../../../src/modules/writeback/IssueWritebackService.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,GAOrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,
|
|
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.65.1",
|
|
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",
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"ai": "^6.0.214",
|
|
28
28
|
"yaml": "^2.9.0",
|
|
29
|
-
"@cat-factory/contracts": "0.
|
|
30
|
-
"@cat-factory/kernel": "0.
|
|
29
|
+
"@cat-factory/contracts": "0.97.0",
|
|
30
|
+
"@cat-factory/kernel": "0.86.1"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"typescript": "7.0.1-rc",
|