github-issue-tower-defence-management 1.162.0 → 1.162.2
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/CHANGELOG.md +14 -0
- package/README.md +1 -1
- package/bin/domain/entities/WorkflowStatus.js +1 -5
- package/bin/domain/entities/WorkflowStatus.js.map +1 -1
- package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js +7 -6
- package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js.map +1 -1
- package/package.json +1 -1
- package/src/domain/entities/WorkflowStatus.ts +0 -5
- package/src/domain/usecases/console/GenerateConsoleListsUseCase.test.ts +75 -6
- package/src/domain/usecases/console/GenerateConsoleListsUseCase.ts +8 -13
- package/types/domain/entities/WorkflowStatus.d.ts +0 -1
- package/types/domain/entities/WorkflowStatus.d.ts.map +1 -1
- package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts +1 -1
- package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [1.162.2](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.162.1...v1.162.2) (2026-08-19)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **console:** list every item still needing a story on the triage tab ([#1633](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1633)) ([94b49b0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/94b49b0d6aa21dd7e98c6b39761d3068307fe809))
|
|
7
|
+
|
|
8
|
+
## [1.162.1](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.162.0...v1.162.1) (2026-08-19)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **console:** keep no-story items on the triage tab at every status ([#1631](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1631)) ([2e975ef](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/2e975efcf48bad5a52e2a2785a0959f78f4abf5b))
|
|
14
|
+
|
|
1
15
|
# [1.162.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.161.0...v1.162.0) (2026-08-18)
|
|
2
16
|
|
|
3
17
|
|
package/README.md
CHANGED
|
@@ -524,7 +524,7 @@ Most tabs apply a common actionable filter to the project's issues: the issue is
|
|
|
524
524
|
- `failed-preparation`: status equals `Failed Preparation` (exact case)
|
|
525
525
|
- `todo-by-human`: status equals `Todo by human` or the legacy value `Todo` (exact case)
|
|
526
526
|
- `todo-by-agent`: status equals `Todo by agent` (exact case)
|
|
527
|
-
- `triage`: story name contains `no story` (case-insensitive),
|
|
527
|
+
- `triage`: every open issue assigned to the console owner whose story name contains `no story` (case-insensitive), whatever status it carries, whatever it depends on and whatever next action date or hour it holds, because the `NO STORY` story option is assigned by this tool rather than chosen by a person, so the triage decision stays open however far the status has advanced and however the issue is blocked or scheduled. Pull requests are excluded, because a pull request's story is written by this tool from its task issue. This tab is the one tab built from the full issue list rather than from the shared actionable set, so `In Tmux by agent` is listed here while every other tab drops it
|
|
528
528
|
|
|
529
529
|
The `workflow-blocker` tab is the one exception to the common actionable filter: it lists every issue whose story name equals the configured `workflowBlockerStoryName` (case-insensitive) and whose issue state is not closed, regardless of its status, next action date, next action hour, or depended issue URLs. When `workflowBlockerStoryName` is unset, the `workflow-blocker` list is always empty.
|
|
530
530
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.REQUIRED_WORKFLOW_STATUSES = exports.
|
|
3
|
+
exports.REQUIRED_WORKFLOW_STATUSES = exports.LEGACY_AWAITING_TASK_BREAKDOWN_STATUS_NAME = exports.LEGACY_IN_TMUX_STATUS_NAME = exports.LEGACY_TODO_STATUS_NAME = exports.ICEBOX_STATUS_NAME = exports.DONE_STATUS_NAME = exports.IN_TMUX_BY_AGENT_STATUS_NAME = exports.IN_TMUX_STATUS_NAME = exports.PC_TODO_STATUS_NAME = exports.TODO_BY_AGENT_STATUS_NAME = exports.TODO_STATUS_NAME = exports.AWAITING_QUALITY_CHECK_STATUS_NAME = exports.FAILED_PREPARATION_STATUS_NAME = exports.PREPARATION_STATUS_NAME = exports.AWAITING_WORKSPACE_STATUS_NAME = exports.DEFAULT_STATUS_NAME = void 0;
|
|
4
4
|
exports.DEFAULT_STATUS_NAME = 'Unread';
|
|
5
5
|
exports.AWAITING_WORKSPACE_STATUS_NAME = 'Awaiting Workspace';
|
|
6
6
|
exports.PREPARATION_STATUS_NAME = 'Preparation';
|
|
@@ -16,10 +16,6 @@ exports.ICEBOX_STATUS_NAME = 'Icebox';
|
|
|
16
16
|
exports.LEGACY_TODO_STATUS_NAME = 'Todo';
|
|
17
17
|
exports.LEGACY_IN_TMUX_STATUS_NAME = 'In Tmux';
|
|
18
18
|
exports.LEGACY_AWAITING_TASK_BREAKDOWN_STATUS_NAME = 'Awaiting Task Breakdown';
|
|
19
|
-
exports.STATUS_NAMES_BEFORE_WORK_STARTS = [
|
|
20
|
-
exports.DEFAULT_STATUS_NAME,
|
|
21
|
-
exports.AWAITING_WORKSPACE_STATUS_NAME,
|
|
22
|
-
];
|
|
23
19
|
exports.REQUIRED_WORKFLOW_STATUSES = [
|
|
24
20
|
{
|
|
25
21
|
name: exports.DEFAULT_STATUS_NAME,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowStatus.js","sourceRoot":"","sources":["../../../src/domain/entities/WorkflowStatus.ts"],"names":[],"mappings":";;;AAEa,QAAA,mBAAmB,GAAG,QAAQ,CAAC;AAC/B,QAAA,8BAA8B,GAAG,oBAAoB,CAAC;AACtD,QAAA,uBAAuB,GAAG,aAAa,CAAC;AACxC,QAAA,8BAA8B,GAAG,oBAAoB,CAAC;AACtD,QAAA,kCAAkC,GAAG,wBAAwB,CAAC;AAC9D,QAAA,gBAAgB,GAAG,eAAe,CAAC;AACnC,QAAA,yBAAyB,GAAG,eAAe,CAAC;AAC5C,QAAA,mBAAmB,GAAG,SAAS,CAAC;AAChC,QAAA,mBAAmB,GAAG,kBAAkB,CAAC;AACzC,QAAA,4BAA4B,GAAG,kBAAkB,CAAC;AAClD,QAAA,gBAAgB,GAAG,MAAM,CAAC;AAC1B,QAAA,kBAAkB,GAAG,QAAQ,CAAC;AAE9B,QAAA,uBAAuB,GAAG,MAAM,CAAC;AACjC,QAAA,0BAA0B,GAAG,SAAS,CAAC;AACvC,QAAA,0CAA0C,GACrD,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkflowStatus.js","sourceRoot":"","sources":["../../../src/domain/entities/WorkflowStatus.ts"],"names":[],"mappings":";;;AAEa,QAAA,mBAAmB,GAAG,QAAQ,CAAC;AAC/B,QAAA,8BAA8B,GAAG,oBAAoB,CAAC;AACtD,QAAA,uBAAuB,GAAG,aAAa,CAAC;AACxC,QAAA,8BAA8B,GAAG,oBAAoB,CAAC;AACtD,QAAA,kCAAkC,GAAG,wBAAwB,CAAC;AAC9D,QAAA,gBAAgB,GAAG,eAAe,CAAC;AACnC,QAAA,yBAAyB,GAAG,eAAe,CAAC;AAC5C,QAAA,mBAAmB,GAAG,SAAS,CAAC;AAChC,QAAA,mBAAmB,GAAG,kBAAkB,CAAC;AACzC,QAAA,4BAA4B,GAAG,kBAAkB,CAAC;AAClD,QAAA,gBAAgB,GAAG,MAAM,CAAC;AAC1B,QAAA,kBAAkB,GAAG,QAAQ,CAAC;AAE9B,QAAA,uBAAuB,GAAG,MAAM,CAAC;AACjC,QAAA,0BAA0B,GAAG,SAAS,CAAC;AACvC,QAAA,0CAA0C,GACrD,yBAAyB,CAAC;AAOf,QAAA,0BAA0B,GAA+B;IACpE;QACE,IAAI,EAAE,2BAAmB;QACzB,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,IAAI,EAAE,sCAA8B;QACpC,KAAK,EAAE,MAAM;KACd;IACD;QACE,IAAI,EAAE,+BAAuB;QAC7B,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,IAAI,EAAE,sCAA8B;QACpC,KAAK,EAAE,KAAK;KACb;IACD;QACE,IAAI,EAAE,0CAAkC;QACxC,KAAK,EAAE,OAAO;KACf;IACD;QACE,IAAI,EAAE,wBAAgB;QACtB,KAAK,EAAE,MAAM;KACd;IACD;QACE,IAAI,EAAE,iCAAyB;QAC/B,KAAK,EAAE,MAAM;KACd;IACD;QACE,IAAI,EAAE,2BAAmB;QACzB,KAAK,EAAE,KAAK;KACb;IACD;QACE,IAAI,EAAE,oCAA4B;QAClC,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,IAAI,EAAE,wBAAgB;QACtB,KAAK,EAAE,QAAQ;KAChB;IACD;QACE,IAAI,EAAE,0BAAkB;QACxB,KAAK,EAAE,MAAM;KACd;CACF,CAAC"}
|
|
@@ -49,16 +49,17 @@ class GenerateConsoleListsUseCase {
|
|
|
49
49
|
storyOptions: this.buildFieldOptions(storyOptions, []),
|
|
50
50
|
storyOrder,
|
|
51
51
|
storyColors: this.buildStoryColorsString(storyOptions),
|
|
52
|
-
items: this.sortByStoryOrder(
|
|
53
|
-
.filter((issue) => issue
|
|
54
|
-
issue.story.toLowerCase().includes('no story') &&
|
|
55
|
-
this.isBeforeWorkStarts(issue.status))
|
|
52
|
+
items: this.sortByStoryOrder(issues
|
|
53
|
+
.filter((issue) => this.needsStory(issue, assigneeLogin))
|
|
56
54
|
.map((issue) => this.projectItem(issue, relatedOpenPullRequestUrlsByIssueUrl.get(issue.url) ?? [])), storyOrder),
|
|
57
55
|
},
|
|
58
56
|
};
|
|
59
57
|
};
|
|
60
|
-
this.
|
|
61
|
-
|
|
58
|
+
this.needsStory = (issue, assigneeLogin) => issue.isClosed === false &&
|
|
59
|
+
issue.isPr === false &&
|
|
60
|
+
issue.assignees.includes(assigneeLogin) &&
|
|
61
|
+
issue.story !== null &&
|
|
62
|
+
issue.story.toLowerCase().includes('no story');
|
|
62
63
|
this.isActionable = (issue, assigneeLogin) => issue.isClosed === false &&
|
|
63
64
|
issue.assignees.includes(assigneeLogin) &&
|
|
64
65
|
issue.dependedIssueUrls.length === 0 &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenerateConsoleListsUseCase.js","sourceRoot":"","sources":["../../../../src/domain/usecases/console/GenerateConsoleListsUseCase.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"GenerateConsoleListsUseCase.js","sourceRoot":"","sources":["../../../../src/domain/usecases/console/GenerateConsoleListsUseCase.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -18,11 +18,6 @@ export const LEGACY_IN_TMUX_STATUS_NAME = 'In Tmux';
|
|
|
18
18
|
export const LEGACY_AWAITING_TASK_BREAKDOWN_STATUS_NAME =
|
|
19
19
|
'Awaiting Task Breakdown';
|
|
20
20
|
|
|
21
|
-
export const STATUS_NAMES_BEFORE_WORK_STARTS: string[] = [
|
|
22
|
-
DEFAULT_STATUS_NAME,
|
|
23
|
-
AWAITING_WORKSPACE_STATUS_NAME,
|
|
24
|
-
];
|
|
25
|
-
|
|
26
21
|
export type WorkflowStatusDefinition = {
|
|
27
22
|
name: string;
|
|
28
23
|
color: FieldOption['color'];
|
|
@@ -230,17 +230,45 @@ describe('GenerateConsoleListsUseCase', () => {
|
|
|
230
230
|
expect(result.triage.items).toHaveLength(2);
|
|
231
231
|
});
|
|
232
232
|
|
|
233
|
-
it('
|
|
233
|
+
it('keeps no-story items whose status is In Tmux by agent', () => {
|
|
234
234
|
const result = run([
|
|
235
235
|
makeIssue({ story: 'no story', status: 'In Tmux by agent' }),
|
|
236
236
|
makeIssue({ story: 'no story', status: 'in tmux by agent' }),
|
|
237
237
|
makeIssue({ story: 'no story', status: 'Unread' }),
|
|
238
238
|
]);
|
|
239
239
|
const statuses = result.triage.items.map((item) => item.status);
|
|
240
|
-
expect(statuses).toEqual([
|
|
240
|
+
expect(statuses).toEqual([
|
|
241
|
+
'In Tmux by agent',
|
|
242
|
+
'in tmux by agent',
|
|
243
|
+
'Unread',
|
|
244
|
+
]);
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
it('keeps a no-story item that is blocked or scheduled to resume later', () => {
|
|
248
|
+
const result = run([
|
|
249
|
+
makeIssue({
|
|
250
|
+
story: 'no story',
|
|
251
|
+
dependedIssueUrls: ['https://github.com/demo/repo/issues/99'],
|
|
252
|
+
}),
|
|
253
|
+
makeIssue({
|
|
254
|
+
story: 'no story',
|
|
255
|
+
nextActionDate: new Date('2026-08-20T00:00:00.000Z'),
|
|
256
|
+
}),
|
|
257
|
+
makeIssue({ story: 'no story', nextActionHour: 9 }),
|
|
258
|
+
]);
|
|
259
|
+
expect(result.triage.items).toHaveLength(3);
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
it('keeps a pull request and another person’s item off the triage tab', () => {
|
|
263
|
+
const result = run([
|
|
264
|
+
makeIssue({ story: 'no story', isPr: true }),
|
|
265
|
+
makeIssue({ story: 'no story', assignees: ['someone-else'] }),
|
|
266
|
+
makeIssue({ story: 'no story', isClosed: true }),
|
|
267
|
+
]);
|
|
268
|
+
expect(result.triage.items).toHaveLength(0);
|
|
241
269
|
});
|
|
242
270
|
|
|
243
|
-
it('keeps
|
|
271
|
+
it('keeps every no-story item whatever status it carries', () => {
|
|
244
272
|
const result = run([
|
|
245
273
|
makeIssue({ story: 'no story', status: 'Unread' }),
|
|
246
274
|
makeIssue({ story: 'no story', status: 'Awaiting Workspace' }),
|
|
@@ -251,15 +279,42 @@ describe('GenerateConsoleListsUseCase', () => {
|
|
|
251
279
|
makeIssue({ story: 'no story', status: 'Todo by human' }),
|
|
252
280
|
makeIssue({ story: 'no story', status: 'Todo by agent' }),
|
|
253
281
|
makeIssue({ story: 'no story', status: 'In Tmux by human' }),
|
|
282
|
+
makeIssue({ story: 'no story', status: 'Done' }),
|
|
283
|
+
makeIssue({ story: 'no story', status: 'Icebox' }),
|
|
254
284
|
]);
|
|
255
285
|
expect(result.triage.items.map((item) => item.status)).toEqual([
|
|
256
286
|
'Unread',
|
|
257
287
|
'Awaiting Workspace',
|
|
258
288
|
null,
|
|
289
|
+
'Preparation',
|
|
290
|
+
'Failed Preparation',
|
|
291
|
+
'Awaiting Quality Check',
|
|
292
|
+
'Todo by human',
|
|
293
|
+
'Todo by agent',
|
|
294
|
+
'In Tmux by human',
|
|
295
|
+
'Done',
|
|
296
|
+
'Icebox',
|
|
259
297
|
]);
|
|
260
298
|
});
|
|
261
299
|
|
|
262
|
-
it('keeps
|
|
300
|
+
it('keeps an item whose story is not a no-story name off the triage tab at every status', () => {
|
|
301
|
+
const result = run([
|
|
302
|
+
makeIssue({ story: 'Story Alpha', status: 'Unread' }),
|
|
303
|
+
makeIssue({ story: 'Story Alpha', status: 'Awaiting Workspace' }),
|
|
304
|
+
makeIssue({ story: 'Story Alpha', status: null }),
|
|
305
|
+
makeIssue({ story: 'Story Alpha', status: 'Preparation' }),
|
|
306
|
+
makeIssue({ story: 'Story Alpha', status: 'Failed Preparation' }),
|
|
307
|
+
makeIssue({ story: 'Story Alpha', status: 'Awaiting Quality Check' }),
|
|
308
|
+
makeIssue({ story: 'Story Alpha', status: 'Todo by human' }),
|
|
309
|
+
makeIssue({ story: 'Story Alpha', status: 'Todo by agent' }),
|
|
310
|
+
makeIssue({ story: 'Story Alpha', status: 'In Tmux by human' }),
|
|
311
|
+
makeIssue({ story: 'Story Alpha', status: 'Done' }),
|
|
312
|
+
makeIssue({ story: 'Story Alpha', status: 'Icebox' }),
|
|
313
|
+
]);
|
|
314
|
+
expect(result.triage.items).toHaveLength(0);
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
it('keeps a no-story item whose status is written in a different case', () => {
|
|
263
318
|
const result = run([
|
|
264
319
|
makeIssue({ story: 'no story', status: 'unread' }),
|
|
265
320
|
makeIssue({ story: 'no story', status: 'awaiting workspace' }),
|
|
@@ -268,6 +323,19 @@ describe('GenerateConsoleListsUseCase', () => {
|
|
|
268
323
|
expect(result.triage.items.map((item) => item.status)).toEqual([
|
|
269
324
|
'unread',
|
|
270
325
|
'awaiting workspace',
|
|
326
|
+
'failed preparation',
|
|
327
|
+
]);
|
|
328
|
+
});
|
|
329
|
+
|
|
330
|
+
it('keeps an item carrying the story option this tool assigns automatically once its status has advanced', () => {
|
|
331
|
+
const result = run([
|
|
332
|
+
makeIssue({
|
|
333
|
+
story: 'regular / NO STORY; SET STORY FIELD',
|
|
334
|
+
status: 'Awaiting Quality Check',
|
|
335
|
+
}),
|
|
336
|
+
]);
|
|
337
|
+
expect(result.triage.items.map((item) => item.status)).toEqual([
|
|
338
|
+
'Awaiting Quality Check',
|
|
271
339
|
]);
|
|
272
340
|
});
|
|
273
341
|
});
|
|
@@ -357,14 +425,15 @@ describe('GenerateConsoleListsUseCase', () => {
|
|
|
357
425
|
expect(allTabItems(result)).toHaveLength(1);
|
|
358
426
|
});
|
|
359
427
|
|
|
360
|
-
it('
|
|
428
|
+
it('shows a no-story In Tmux by agent issue on the triage tab and nowhere else', () => {
|
|
361
429
|
const result = run([
|
|
362
430
|
makeIssue({
|
|
363
431
|
story: 'no story',
|
|
364
432
|
status: 'In Tmux by agent',
|
|
365
433
|
}),
|
|
366
434
|
]);
|
|
367
|
-
expect(
|
|
435
|
+
expect(result.triage.items).toHaveLength(1);
|
|
436
|
+
expect(allTabItems(result)).toHaveLength(1);
|
|
368
437
|
});
|
|
369
438
|
|
|
370
439
|
it('hides In Tmux by agent case-insensitively from every tab other than the workflow blocker tab', () => {
|
|
@@ -3,7 +3,6 @@ import { FieldOption, Project } from '../../entities/Project';
|
|
|
3
3
|
import {
|
|
4
4
|
IN_TMUX_BY_AGENT_STATUS_NAME,
|
|
5
5
|
LEGACY_TODO_STATUS_NAME,
|
|
6
|
-
STATUS_NAMES_BEFORE_WORK_STARTS,
|
|
7
6
|
TODO_BY_AGENT_STATUS_NAME,
|
|
8
7
|
TODO_STATUS_NAME,
|
|
9
8
|
} from '../../entities/WorkflowStatus';
|
|
@@ -187,13 +186,8 @@ export class GenerateConsoleListsUseCase {
|
|
|
187
186
|
storyOrder,
|
|
188
187
|
storyColors: this.buildStoryColorsString(storyOptions),
|
|
189
188
|
items: this.sortByStoryOrder(
|
|
190
|
-
|
|
191
|
-
.filter(
|
|
192
|
-
(issue) =>
|
|
193
|
-
issue.story !== null &&
|
|
194
|
-
issue.story.toLowerCase().includes('no story') &&
|
|
195
|
-
this.isBeforeWorkStarts(issue.status),
|
|
196
|
-
)
|
|
189
|
+
issues
|
|
190
|
+
.filter((issue) => this.needsStory(issue, assigneeLogin))
|
|
197
191
|
.map((issue) =>
|
|
198
192
|
this.projectItem(
|
|
199
193
|
issue,
|
|
@@ -206,11 +200,12 @@ export class GenerateConsoleListsUseCase {
|
|
|
206
200
|
};
|
|
207
201
|
};
|
|
208
202
|
|
|
209
|
-
private
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
203
|
+
private needsStory = (issue: Issue, assigneeLogin: string): boolean =>
|
|
204
|
+
issue.isClosed === false &&
|
|
205
|
+
issue.isPr === false &&
|
|
206
|
+
issue.assignees.includes(assigneeLogin) &&
|
|
207
|
+
issue.story !== null &&
|
|
208
|
+
issue.story.toLowerCase().includes('no story');
|
|
214
209
|
|
|
215
210
|
private isActionable = (issue: Issue, assigneeLogin: string): boolean =>
|
|
216
211
|
issue.isClosed === false &&
|
|
@@ -14,7 +14,6 @@ export declare const ICEBOX_STATUS_NAME = "Icebox";
|
|
|
14
14
|
export declare const LEGACY_TODO_STATUS_NAME = "Todo";
|
|
15
15
|
export declare const LEGACY_IN_TMUX_STATUS_NAME = "In Tmux";
|
|
16
16
|
export declare const LEGACY_AWAITING_TASK_BREAKDOWN_STATUS_NAME = "Awaiting Task Breakdown";
|
|
17
|
-
export declare const STATUS_NAMES_BEFORE_WORK_STARTS: string[];
|
|
18
17
|
export type WorkflowStatusDefinition = {
|
|
19
18
|
name: string;
|
|
20
19
|
color: FieldOption['color'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowStatus.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/WorkflowStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAC5C,eAAO,MAAM,8BAA8B,uBAAuB,CAAC;AACnE,eAAO,MAAM,uBAAuB,gBAAgB,CAAC;AACrD,eAAO,MAAM,8BAA8B,uBAAuB,CAAC;AACnE,eAAO,MAAM,kCAAkC,2BAA2B,CAAC;AAC3E,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,yBAAyB,kBAAkB,CAAC;AACzD,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAC7C,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AACtD,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAC/D,eAAO,MAAM,gBAAgB,SAAS,CAAC;AACvC,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAC9C,eAAO,MAAM,0BAA0B,YAAY,CAAC;AACpD,eAAO,MAAM,0CAA0C,4BAC5B,CAAC;AAE5B,
|
|
1
|
+
{"version":3,"file":"WorkflowStatus.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/WorkflowStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAC5C,eAAO,MAAM,8BAA8B,uBAAuB,CAAC;AACnE,eAAO,MAAM,uBAAuB,gBAAgB,CAAC;AACrD,eAAO,MAAM,8BAA8B,uBAAuB,CAAC;AACnE,eAAO,MAAM,kCAAkC,2BAA2B,CAAC;AAC3E,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,yBAAyB,kBAAkB,CAAC;AACzD,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAC7C,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AACtD,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAC/D,eAAO,MAAM,gBAAgB,SAAS,CAAC;AACvC,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAC9C,eAAO,MAAM,0BAA0B,YAAY,CAAC;AACpD,eAAO,MAAM,0CAA0C,4BAC5B,CAAC;AAE5B,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,wBAAwB,EA6ChE,CAAC"}
|
|
@@ -62,7 +62,7 @@ export type GenerateConsoleListsInput = {
|
|
|
62
62
|
};
|
|
63
63
|
export declare class GenerateConsoleListsUseCase {
|
|
64
64
|
run: (input: GenerateConsoleListsInput) => ConsoleLists;
|
|
65
|
-
private
|
|
65
|
+
private needsStory;
|
|
66
66
|
private isActionable;
|
|
67
67
|
private workflowBlockerSelector;
|
|
68
68
|
private buildRelatedOpenPullRequestUrlsByIssueUrl;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenerateConsoleListsUseCase.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/console/GenerateConsoleListsUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"GenerateConsoleListsUseCase.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/console/GenerateConsoleListsUseCase.ts"],"names":[],"mappings":"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"}
|