@clipboard-health/groundcrew 3.4.1 → 4.0.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/README.md +19 -24
- package/clearance-allow-hosts +7 -0
- package/crew.config.example.ts +13 -32
- package/dist/commands/cleaner.d.ts.map +1 -1
- package/dist/commands/cleaner.js +1 -5
- package/dist/commands/dispatcher.d.ts.map +1 -1
- package/dist/commands/dispatcher.js +5 -5
- package/dist/commands/eligibility.d.ts +1 -1
- package/dist/commands/eligibility.d.ts.map +1 -1
- package/dist/commands/eligibility.js +4 -4
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +2 -1
- package/dist/commands/setupWorkspace.d.ts.map +1 -1
- package/dist/commands/setupWorkspace.js +1 -2
- package/dist/commands/ticketDoctor.d.ts.map +1 -1
- package/dist/commands/ticketDoctor.js +11 -33
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/lib/adapters/linear/factory.d.ts +10 -14
- package/dist/lib/adapters/linear/factory.d.ts.map +1 -1
- package/dist/lib/adapters/linear/factory.js +23 -63
- package/dist/lib/adapters/linear/schema.d.ts +3 -5
- package/dist/lib/adapters/linear/schema.d.ts.map +1 -1
- package/dist/lib/adapters/linear/schema.js +3 -5
- package/dist/lib/boardSource.d.ts +55 -39
- package/dist/lib/boardSource.d.ts.map +1 -1
- package/dist/lib/boardSource.js +130 -237
- package/dist/lib/config.d.ts +11 -70
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +10 -157
- package/dist/lib/linearIssueStatus.d.ts +0 -4
- package/dist/lib/linearIssueStatus.d.ts.map +1 -1
- package/dist/lib/linearIssueStatus.js +0 -0
- package/dist/lib/ticketSource.d.ts +5 -7
- package/dist/lib/ticketSource.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,78 +1,45 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Linear `TicketSource` factory. Wraps the existing boardSource.ts machinery
|
|
3
3
|
* (createBoardSource, fetchResolvedIssue, createLinearIssueStatusUpdater) and
|
|
4
|
-
* converts the
|
|
5
|
-
*
|
|
4
|
+
* converts the Linear-native `Issue`/`Blocker` shapes into the canonical
|
|
5
|
+
* `Issue`/`Blocker` shapes consumers (via `Board`) speak.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* `isTerminalStatusForBlocker` behavior.
|
|
7
|
+
* Status mapping is driven entirely by Linear's workflow `state.type`
|
|
8
|
+
* (`unstarted` → todo, `started` → in-progress,
|
|
9
|
+
* `completed`/`canceled`/`duplicate` → done) so renamed columns are classified
|
|
10
|
+
* correctly without any per-team config.
|
|
12
11
|
*
|
|
13
12
|
* Description is not populated on `fetch()` Issues (boardSource's snapshot
|
|
14
13
|
* doesn't include it); `resolveOne()` Issues carry the full description
|
|
15
|
-
* because `fetchResolvedIssue` fetches it explicitly.
|
|
16
|
-
* description onto the board snapshot when it refactors setupWorkspace.
|
|
14
|
+
* because `fetchResolvedIssue` fetches it explicitly.
|
|
17
15
|
*/
|
|
18
|
-
import { createBoardSource, fetchResolvedIssue,
|
|
19
|
-
import { findProjectBySlugId } from "../../config.js";
|
|
16
|
+
import { createBoardSource, fetchResolvedIssue, isTerminalStateType, } from "../../boardSource.js";
|
|
20
17
|
import { createLinearIssueStatusUpdater } from "../../linearIssueStatus.js";
|
|
21
18
|
import { getLinearClient } from "../../util.js";
|
|
22
|
-
export function
|
|
23
|
-
if (
|
|
19
|
+
export function canonicalStatusFromStateType(stateType) {
|
|
20
|
+
if (stateType === "unstarted") {
|
|
24
21
|
return "todo";
|
|
25
22
|
}
|
|
26
|
-
if (
|
|
23
|
+
if (stateType === "started") {
|
|
27
24
|
return "in-progress";
|
|
28
25
|
}
|
|
29
|
-
if (
|
|
30
|
-
return "done";
|
|
31
|
-
}
|
|
32
|
-
if (project.statuses.terminal.includes(nativeStatus)) {
|
|
26
|
+
if (isTerminalStateType(stateType)) {
|
|
33
27
|
return "done";
|
|
34
28
|
}
|
|
35
29
|
return "other";
|
|
36
30
|
}
|
|
37
|
-
|
|
38
|
-
if (blocker.status === undefined) {
|
|
39
|
-
return "other";
|
|
40
|
-
}
|
|
41
|
-
// Terminal first — handles off-config blockers via the union fallback that
|
|
42
|
-
// isTerminalStatusForBlocker already implements.
|
|
43
|
-
if (isTerminalStatusForBlocker(blocker, globalConfig)) {
|
|
44
|
-
return "done";
|
|
45
|
-
}
|
|
46
|
-
// Non-terminal: if the blocker's project is configured, use its statuses to
|
|
47
|
-
// distinguish todo vs in-progress. For off-config blockers we collapse to
|
|
48
|
-
// "other" — eligibility only cares whether the blocker is terminal, so the
|
|
49
|
-
// distinction is informational at most.
|
|
50
|
-
if (blocker.projectSlugId !== undefined) {
|
|
51
|
-
const project = findProjectBySlugId(globalConfig, blocker.projectSlugId);
|
|
52
|
-
if (project !== undefined) {
|
|
53
|
-
return canonicalStatusForProject(blocker.status, project);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
return "other";
|
|
57
|
-
}
|
|
58
|
-
function toCanonicalBlocker(blocker, globalConfig, sourceName) {
|
|
31
|
+
function toCanonicalBlocker(blocker, sourceName) {
|
|
59
32
|
return {
|
|
60
33
|
id: `${sourceName}:${blocker.id}`,
|
|
61
34
|
title: blocker.title,
|
|
62
|
-
status:
|
|
35
|
+
status: canonicalStatusFromStateType(blocker.stateType),
|
|
63
36
|
};
|
|
64
37
|
}
|
|
65
|
-
export function toCanonicalIssue(linearIssue,
|
|
66
|
-
const project = findProjectBySlugId(globalConfig, linearIssue.projectSlugId);
|
|
67
|
-
/* v8 ignore next 5 @preserve -- fetchBoard's slugId filter and issueStatusBelongsToOwnProject guarantee project is configured by the time we get here */
|
|
68
|
-
if (project === undefined) {
|
|
69
|
-
throw new Error(`Linear adapter: issue ${linearIssue.id} carries unknown projectSlugId "${linearIssue.projectSlugId}"`);
|
|
70
|
-
}
|
|
38
|
+
export function toCanonicalIssue(linearIssue, sourceName) {
|
|
71
39
|
const sourceRef = {
|
|
72
40
|
uuid: linearIssue.uuid,
|
|
73
41
|
statusId: linearIssue.statusId,
|
|
74
42
|
teamId: linearIssue.teamId,
|
|
75
|
-
projectSlugId: linearIssue.projectSlugId,
|
|
76
43
|
nativeStatus: linearIssue.status,
|
|
77
44
|
};
|
|
78
45
|
return {
|
|
@@ -81,12 +48,12 @@ export function toCanonicalIssue(linearIssue, globalConfig, sourceName) {
|
|
|
81
48
|
title: linearIssue.title,
|
|
82
49
|
// Board snapshot doesn't carry description; resolveOne() populates it.
|
|
83
50
|
description: "",
|
|
84
|
-
status:
|
|
51
|
+
status: canonicalStatusFromStateType(linearIssue.stateType),
|
|
85
52
|
repository: linearIssue.repository,
|
|
86
53
|
model: linearIssue.model,
|
|
87
54
|
assignee: linearIssue.assignee,
|
|
88
55
|
updatedAt: linearIssue.updatedAt,
|
|
89
|
-
blockers: linearIssue.blockers.map((b) => toCanonicalBlocker(b,
|
|
56
|
+
blockers: linearIssue.blockers.map((b) => toCanonicalBlocker(b, sourceName)),
|
|
90
57
|
hasMoreBlockers: linearIssue.hasMoreBlockers,
|
|
91
58
|
sourceRef,
|
|
92
59
|
};
|
|
@@ -96,7 +63,7 @@ export function createLinearTicketSource(config, context) {
|
|
|
96
63
|
const { globalConfig } = context;
|
|
97
64
|
const client = getLinearClient();
|
|
98
65
|
const boardSource = createBoardSource({ config: globalConfig, client });
|
|
99
|
-
const issueStatusUpdater = createLinearIssueStatusUpdater({
|
|
66
|
+
const issueStatusUpdater = createLinearIssueStatusUpdater({ client });
|
|
100
67
|
return {
|
|
101
68
|
name: sourceName,
|
|
102
69
|
async verify() {
|
|
@@ -104,23 +71,18 @@ export function createLinearTicketSource(config, context) {
|
|
|
104
71
|
},
|
|
105
72
|
async fetch() {
|
|
106
73
|
const state = await boardSource.fetch();
|
|
107
|
-
return state.issues.map((linearIssue) => toCanonicalIssue(linearIssue,
|
|
74
|
+
return state.issues.map((linearIssue) => toCanonicalIssue(linearIssue, sourceName));
|
|
108
75
|
},
|
|
109
76
|
async resolveOne(naturalId) {
|
|
110
|
-
// fetchResolvedIssue throws on
|
|
111
|
-
//
|
|
112
|
-
//
|
|
113
|
-
//
|
|
77
|
+
// fetchResolvedIssue throws on missing repo; we let those propagate.
|
|
78
|
+
// Returning `undefined` is reserved for "ticket genuinely doesn't
|
|
79
|
+
// exist," which fetchResolvedIssue surfaces as an Error too — for now
|
|
80
|
+
// we let any error bubble up rather than swallow.
|
|
114
81
|
const resolved = await fetchResolvedIssue({
|
|
115
82
|
client,
|
|
116
83
|
config: globalConfig,
|
|
117
84
|
ticket: naturalId,
|
|
118
85
|
});
|
|
119
|
-
const project = findProjectBySlugId(globalConfig, resolved.projectSlugId);
|
|
120
|
-
/* v8 ignore next 5 @preserve -- fetchResolvedIssue already throws UnknownProjectError before reaching this guard */
|
|
121
|
-
if (project === undefined) {
|
|
122
|
-
throw new Error(`Linear adapter: resolved issue ${naturalId} carries unknown projectSlugId "${resolved.projectSlugId}"`);
|
|
123
|
-
}
|
|
124
86
|
// fetchResolvedIssue doesn't return the native status name (it's
|
|
125
87
|
// already been resolved through workflow state lookup). We surface
|
|
126
88
|
// "other" until the consumer needs the canonical status, which is fine
|
|
@@ -129,7 +91,6 @@ export function createLinearTicketSource(config, context) {
|
|
|
129
91
|
uuid: resolved.uuid,
|
|
130
92
|
statusId: "",
|
|
131
93
|
teamId: resolved.teamId,
|
|
132
|
-
projectSlugId: resolved.projectSlugId,
|
|
133
94
|
nativeStatus: "",
|
|
134
95
|
};
|
|
135
96
|
return {
|
|
@@ -154,7 +115,6 @@ export function createLinearTicketSource(config, context) {
|
|
|
154
115
|
id: issue.id,
|
|
155
116
|
uuid: ref.uuid,
|
|
156
117
|
teamId: ref.teamId,
|
|
157
|
-
projectSlugId: ref.projectSlugId,
|
|
158
118
|
});
|
|
159
119
|
},
|
|
160
120
|
};
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Zod schema for the Linear adapter's per-source config block.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* future refactor can move `projects` into this block to enable multi-workspace
|
|
6
|
-
* Linear (one adapter per API key), but that's V1.5+ scope.
|
|
2
|
+
* Zod schema for the Linear adapter's per-source config block. The built-in
|
|
3
|
+
* Linear adapter is implicit and derives scope from the API key's viewer plus
|
|
4
|
+
* `agent-*` labels, so the source config only needs an optional display name.
|
|
7
5
|
*/
|
|
8
6
|
import { z } from "zod";
|
|
9
7
|
export declare const linearAdapterConfigSchema: z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/linear/schema.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/linear/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,yBAAyB;;;iBAMpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Zod schema for the Linear adapter's per-source config block.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* future refactor can move `projects` into this block to enable multi-workspace
|
|
6
|
-
* Linear (one adapter per API key), but that's V1.5+ scope.
|
|
2
|
+
* Zod schema for the Linear adapter's per-source config block. The built-in
|
|
3
|
+
* Linear adapter is implicit and derives scope from the API key's viewer plus
|
|
4
|
+
* `agent-*` labels, so the source config only needs an optional display name.
|
|
7
5
|
*/
|
|
8
6
|
import { z } from "zod";
|
|
9
7
|
export const linearAdapterConfigSchema = z.object({
|
|
@@ -1,23 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Linear adapter — turns the
|
|
2
|
+
* Linear adapter — turns the viewer's GraphQL state into a `BoardState`
|
|
3
3
|
* snapshot. Owns the GraphQL queries and shape parsing so callers consume a
|
|
4
4
|
* typed `BoardState` instead of raw nodes.
|
|
5
|
+
*
|
|
6
|
+
* There is no project / view / status configuration: the only filter is
|
|
7
|
+
* "assigned to the API key's viewer AND carries an `agent-*` label."
|
|
8
|
+
* State classification is driven by Linear's workflow `state.type`
|
|
9
|
+
* (`unstarted` | `started` | `completed` | `canceled` | `duplicate`) —
|
|
10
|
+
* never by status name — so workspaces with renamed columns (Todo → To Do,
|
|
11
|
+
* Done → Shipped, etc.) Just Work.
|
|
5
12
|
*/
|
|
6
13
|
import type { LinearClient } from "@linear/sdk";
|
|
7
|
-
import { type ResolvedConfig
|
|
14
|
+
import { type ResolvedConfig } from "./config.ts";
|
|
8
15
|
import { RepositoryResolutionError } from "./ticketSource.ts";
|
|
16
|
+
export declare const AGENT_LABEL_PREFIX = "agent-";
|
|
17
|
+
export declare const ISSUES_PAGE_SIZE = 250;
|
|
9
18
|
export interface Blocker {
|
|
10
19
|
id: string;
|
|
11
20
|
title: string;
|
|
12
21
|
status: string | undefined;
|
|
13
22
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* pick between the blocker's own project terminals and the global
|
|
18
|
-
* union fallback.
|
|
23
|
+
* Linear workflow `state.type` for the blocker (`unstarted` | `started` |
|
|
24
|
+
* `completed` | `canceled` | `duplicate` | `backlog` | `triage`). All
|
|
25
|
+
* canonical classification — todo / in-progress / terminal — keys off this.
|
|
19
26
|
*/
|
|
20
|
-
|
|
27
|
+
stateType: string | undefined;
|
|
21
28
|
}
|
|
22
29
|
export interface Issue {
|
|
23
30
|
id: string;
|
|
@@ -25,6 +32,8 @@ export interface Issue {
|
|
|
25
32
|
title: string;
|
|
26
33
|
status: string;
|
|
27
34
|
statusId: string;
|
|
35
|
+
/** Linear workflow `state.type` — the source of truth for canonical classification. */
|
|
36
|
+
stateType: string;
|
|
28
37
|
assignee: string;
|
|
29
38
|
updatedAt: string;
|
|
30
39
|
/**
|
|
@@ -37,8 +46,6 @@ export interface Issue {
|
|
|
37
46
|
/** `undefined` whenever `repository` is — the two are populated together. */
|
|
38
47
|
model: string | undefined;
|
|
39
48
|
teamId: string;
|
|
40
|
-
/** SlugId of the Linear project the issue belongs to — always one of `linear.projects[*].slugId`. */
|
|
41
|
-
projectSlugId: string;
|
|
42
49
|
blockers: Blocker[];
|
|
43
50
|
hasMoreBlockers: boolean;
|
|
44
51
|
}
|
|
@@ -71,22 +78,10 @@ export interface BoardState {
|
|
|
71
78
|
parentSkips: ParentSkip[];
|
|
72
79
|
}
|
|
73
80
|
export { RepositoryResolutionError };
|
|
74
|
-
export declare class UnknownProjectError extends Error {
|
|
75
|
-
readonly ticket: string;
|
|
76
|
-
readonly projectSlugId: string | undefined;
|
|
77
|
-
readonly configuredSlugIds: readonly string[];
|
|
78
|
-
constructor(arguments_: {
|
|
79
|
-
ticket: string;
|
|
80
|
-
projectSlugId: string | undefined;
|
|
81
|
-
configuredSlugIds: readonly string[];
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
81
|
export interface BoardSource {
|
|
85
82
|
/**
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
* several entries doesn't abort the watch loop. Run once at startup
|
|
89
|
-
* so misconfigurations surface before the first tick.
|
|
83
|
+
* Verify the Linear API key resolves to a viewer. Run once at startup so
|
|
84
|
+
* misconfiguration surfaces before the first tick.
|
|
90
85
|
*/
|
|
91
86
|
verify(): Promise<void>;
|
|
92
87
|
/** Fetch the current board snapshot. Paginates internally. */
|
|
@@ -97,16 +92,40 @@ interface BoardSourceDeps {
|
|
|
97
92
|
client: LinearClient;
|
|
98
93
|
}
|
|
99
94
|
export declare function createBoardSource(deps: BoardSourceDeps): BoardSource;
|
|
100
|
-
export declare function
|
|
101
|
-
export declare function
|
|
95
|
+
export declare function isIssueInProgress(issue: Pick<Issue, "stateType">): boolean;
|
|
96
|
+
export declare function isIssueTodo(issue: Pick<Issue, "stateType">): boolean;
|
|
97
|
+
export declare function isTerminalStateType(stateType: string | undefined): boolean;
|
|
98
|
+
export declare function isTerminalStatusForIssue(issue: Pick<Issue, "stateType">): boolean;
|
|
102
99
|
/**
|
|
103
|
-
* Terminal check for a blocker.
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
* matches today's single-project "is this name in our terminal list?"
|
|
107
|
-
* behavior so off-config blockers don't regress.
|
|
100
|
+
* Terminal check for a blocker. Driven by Linear's workflow `state.type` so
|
|
101
|
+
* renamed status columns ("Shipped" instead of "Done") are still classified
|
|
102
|
+
* correctly. An undefined `stateType` falls through to non-terminal.
|
|
108
103
|
*/
|
|
109
|
-
export declare function isTerminalStatusForBlocker(blocker: Blocker
|
|
104
|
+
export declare function isTerminalStatusForBlocker(blocker: Blocker): boolean;
|
|
105
|
+
export interface IssueRelationNode {
|
|
106
|
+
type: string;
|
|
107
|
+
issue?: {
|
|
108
|
+
identifier: string;
|
|
109
|
+
title: string;
|
|
110
|
+
state?: {
|
|
111
|
+
name: string;
|
|
112
|
+
type?: string;
|
|
113
|
+
} | null;
|
|
114
|
+
} | null;
|
|
115
|
+
}
|
|
116
|
+
export declare function modelForResolution(resolution: Exclude<ModelResolution, {
|
|
117
|
+
kind: "no-label";
|
|
118
|
+
}>): string;
|
|
119
|
+
export declare function resolveTodoAgentMetadata(arguments_: {
|
|
120
|
+
ticket: string;
|
|
121
|
+
description: string | undefined;
|
|
122
|
+
modelResolution: ModelResolution;
|
|
123
|
+
config: ResolvedConfig;
|
|
124
|
+
isTodo: boolean;
|
|
125
|
+
}): {
|
|
126
|
+
repository: string | undefined;
|
|
127
|
+
model: string | undefined;
|
|
128
|
+
};
|
|
110
129
|
interface ResolvedIssue {
|
|
111
130
|
uuid: string;
|
|
112
131
|
title: string;
|
|
@@ -114,19 +133,18 @@ interface ResolvedIssue {
|
|
|
114
133
|
repository: string;
|
|
115
134
|
model: string;
|
|
116
135
|
teamId: string;
|
|
117
|
-
projectSlugId: string;
|
|
118
136
|
}
|
|
119
137
|
export interface RawLinearIssue {
|
|
120
138
|
uuid: string;
|
|
121
139
|
title: string;
|
|
122
140
|
description: string;
|
|
123
141
|
teamId: string;
|
|
124
|
-
projectSlugId: string | undefined;
|
|
125
142
|
labels: {
|
|
126
143
|
name: string;
|
|
127
144
|
}[];
|
|
128
145
|
/** Linear workflow state name, e.g. "Todo", "In Review". May be "" if state was null. */
|
|
129
146
|
stateName: string;
|
|
147
|
+
stateType?: string;
|
|
130
148
|
blockers: Blocker[];
|
|
131
149
|
hasMoreBlockers: boolean;
|
|
132
150
|
/**
|
|
@@ -148,7 +166,6 @@ export declare function fetchRawLinearIssue(arguments_: {
|
|
|
148
166
|
}): Promise<RawLinearIssue>;
|
|
149
167
|
export declare function fetchInProgressIssueCount(arguments_: {
|
|
150
168
|
client: LinearClient;
|
|
151
|
-
config: ResolvedConfig;
|
|
152
169
|
}): Promise<number>;
|
|
153
170
|
export type RepositoryResolution = {
|
|
154
171
|
kind: "ok";
|
|
@@ -182,14 +199,13 @@ export declare function resolveModelFor(arguments_: {
|
|
|
182
199
|
/**
|
|
183
200
|
* `agent-any` collapses to `models.default` here — manual setup doesn't run
|
|
184
201
|
* the usage-gated `any` resolver, so the caller gets a concrete model name
|
|
185
|
-
* instead of a sentinel that downstream code can't interpret.
|
|
186
|
-
* `UnknownProjectError` when the ticket lives in a Linear project that
|
|
187
|
-
* isn't listed in `linear.projects`, so callers can surface the misconfiguration
|
|
188
|
-
* instead of silently using the wrong status names.
|
|
202
|
+
* instead of a sentinel that downstream code can't interpret.
|
|
189
203
|
*/
|
|
190
204
|
export declare function fetchResolvedIssue(arguments_: {
|
|
191
205
|
client: LinearClient;
|
|
192
206
|
config: ResolvedConfig;
|
|
193
207
|
ticket: string;
|
|
194
208
|
}): Promise<ResolvedIssue>;
|
|
209
|
+
export declare function warnIfDisabledFallback(ticket: string, modelResolution: ModelResolution, config: ResolvedConfig): void;
|
|
210
|
+
export declare function blockersFromRelations(relations: IssueRelationNode[]): Blocker[];
|
|
195
211
|
//# sourceMappingURL=boardSource.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boardSource.d.ts","sourceRoot":"","sources":["../../src/lib/boardSource.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"boardSource.d.ts","sourceRoot":"","sources":["../../src/lib/boardSource.ts"],"names":[],"mappings":"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"}
|