github-issue-tower-defence-management 1.128.1 → 1.130.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.
Files changed (60) hide show
  1. package/.github/workflows/console-ui.yml +1 -1
  2. package/.github/workflows/empty-format-test-job.yml +1 -1
  3. package/.github/workflows/format.yml +1 -1
  4. package/.github/workflows/publish.yml +1 -1
  5. package/.github/workflows/test.yml +1 -1
  6. package/CHANGELOG.md +14 -0
  7. package/README.md +9 -8
  8. package/bin/adapter/entry-points/console/consoleDataDelivery.js +1 -0
  9. package/bin/adapter/entry-points/console/consoleDataDelivery.js.map +1 -1
  10. package/bin/adapter/entry-points/console/consoleDoneStore.js +1 -0
  11. package/bin/adapter/entry-points/console/consoleDoneStore.js.map +1 -1
  12. package/bin/adapter/entry-points/console/ui-dist/assets/index-Bz0KvgIG.js +103 -0
  13. package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
  14. package/bin/adapter/entry-points/handlers/consoleListsWriter.js +1 -0
  15. package/bin/adapter/entry-points/handlers/consoleListsWriter.js.map +1 -1
  16. package/bin/domain/entities/WorkflowStatus.js +6 -1
  17. package/bin/domain/entities/WorkflowStatus.js.map +1 -1
  18. package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js +2 -0
  19. package/bin/domain/usecases/console/GenerateConsoleListsUseCase.js.map +1 -1
  20. package/package.json +3 -3
  21. package/src/adapter/entry-points/console/consoleDataDelivery.test.ts +6 -0
  22. package/src/adapter/entry-points/console/consoleDataDelivery.ts +1 -0
  23. package/src/adapter/entry-points/console/consoleDoneStore.test.ts +4 -0
  24. package/src/adapter/entry-points/console/consoleDoneStore.ts +1 -0
  25. package/src/adapter/entry-points/console/ui/e2e/consoleTestHarness.ts +10 -0
  26. package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleTabList.stories.tsx +4 -0
  27. package/src/adapter/entry-points/console/ui/src/features/console/components/layout/ConsoleTabList.test.tsx +2 -0
  28. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleNextActionDateActions.stories.tsx +2 -2
  29. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleNextActionDateActions.test.tsx +5 -5
  30. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleNextActionDateActions.tsx +3 -3
  31. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleOperationMenu.stories.tsx +8 -0
  32. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleOperationMenu.test.tsx +15 -0
  33. package/src/adapter/entry-points/console/ui/src/features/console/components/operations/ConsoleOperationMenu.tsx +2 -2
  34. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleNavigation.test.ts +1 -0
  35. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleTabData.test.ts +2 -1
  36. package/src/adapter/entry-points/console/ui/src/features/console/logic/actionToast.test.ts +6 -2
  37. package/src/adapter/entry-points/console/ui/src/features/console/logic/actionToast.ts +7 -6
  38. package/src/adapter/entry-points/console/ui/src/features/console/logic/operations.test.ts +7 -5
  39. package/src/adapter/entry-points/console/ui/src/features/console/logic/operations.ts +3 -2
  40. package/src/adapter/entry-points/console/ui/src/features/console/logic/tabAdvance.test.ts +11 -1
  41. package/src/adapter/entry-points/console/ui/src/features/console/logic/types.ts +3 -1
  42. package/src/adapter/entry-points/console/ui/src/features/console/testing/fixtures.ts +1 -0
  43. package/src/adapter/entry-points/console/ui-dist/assets/index-Bz0KvgIG.js +103 -0
  44. package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
  45. package/src/adapter/entry-points/console/webServer.test.ts +1 -0
  46. package/src/adapter/entry-points/handlers/consoleListsWriter.test.ts +21 -1
  47. package/src/adapter/entry-points/handlers/consoleListsWriter.ts +1 -0
  48. package/src/domain/entities/WorkflowStatus.ts +5 -0
  49. package/src/domain/usecases/SetupTowerDefenceProjectUseCase.test.ts +92 -2
  50. package/src/domain/usecases/console/GenerateConsoleListsUseCase.test.ts +28 -0
  51. package/src/domain/usecases/console/GenerateConsoleListsUseCase.ts +9 -1
  52. package/types/adapter/entry-points/console/consoleDataDelivery.d.ts.map +1 -1
  53. package/types/adapter/entry-points/console/consoleDoneStore.d.ts.map +1 -1
  54. package/types/adapter/entry-points/handlers/consoleListsWriter.d.ts.map +1 -1
  55. package/types/domain/entities/WorkflowStatus.d.ts +1 -0
  56. package/types/domain/entities/WorkflowStatus.d.ts.map +1 -1
  57. package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts +2 -1
  58. package/types/domain/usecases/console/GenerateConsoleListsUseCase.d.ts.map +1 -1
  59. package/bin/adapter/entry-points/console/ui-dist/assets/index-CufymFM1.js +0 -103
  60. package/src/adapter/entry-points/console/ui-dist/assets/index-CufymFM1.js +0 -103
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>TDPM Console</title>
7
- <script type="module" crossorigin src="/assets/index-CufymFM1.js"></script>
7
+ <script type="module" crossorigin src="/assets/index-Bz0KvgIG.js"></script>
8
8
  <link rel="stylesheet" crossorigin href="/assets/index-N9M1qhkw.css">
9
9
  </head>
10
10
  <body>
@@ -15,6 +15,7 @@ const CONSOLE_TAB_NAMES = [
15
15
  'unread',
16
16
  'failed-preparation',
17
17
  'todo-by-human',
18
+ 'todo-by-agent',
18
19
  ];
19
20
  const formatConsoleGeneratedAt = (date) => date.toISOString().replace(/\.\d{3}Z$/, 'Z');
20
21
  exports.formatConsoleGeneratedAt = formatConsoleGeneratedAt;
@@ -1 +1 @@
1
- {"version":3,"file":"consoleListsWriter.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/consoleListsWriter.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAGxB,8GAIsE;AACtE,kEAAgF;AAYhF,MAAM,iBAAiB,GAAqB;IAC1C,kBAAkB;IAClB,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,oBAAoB;IACpB,eAAe;CAChB,CAAC;AAEK,MAAM,wBAAwB,GAAG,CAAC,IAAU,EAAU,EAAE,CAC7D,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AADlC,QAAA,wBAAwB,4BACU;AAE/C,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,IAAa,EAAQ,EAAE;IAChE,MAAM,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,YAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,GAAG,QAAQ,MAAM,CAAC;IAClC,YAAE,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,YAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACnC,CAAC,CAAC;AAEK,MAAM,iBAAiB,GAAG,CAAC,MAAgC,EAAQ,EAAE;IAC1E,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IAC/D,IAAI,CAAC,oBAAoB,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QACvD,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GACf,MAAM,CAAC,WAAW,IAAI,IAAA,gCAAwB,EAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAiB,IAAI,yDAA2B,EAAE,CAAC,GAAG,CAAC;QAChE,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM;QACN,aAAa;QACb,WAAW;QACX,wBAAwB,EAAE,MAAM,CAAC,wBAAwB,IAAI,IAAI;KAClE,CAAC,CAAC;IAEH,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACpC,eAAe,CACb,cAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EACzD,KAAK,CAAC,GAAG,CAAC,CACX,CAAC;IACJ,CAAC;IAED,IAAA,oDAAiC,EAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;AAClE,CAAC,CAAC;AAzBW,QAAA,iBAAiB,qBAyB5B"}
1
+ {"version":3,"file":"consoleListsWriter.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/consoleListsWriter.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAGxB,8GAIsE;AACtE,kEAAgF;AAYhF,MAAM,iBAAiB,GAAqB;IAC1C,kBAAkB;IAClB,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,oBAAoB;IACpB,eAAe;IACf,eAAe;CAChB,CAAC;AAEK,MAAM,wBAAwB,GAAG,CAAC,IAAU,EAAU,EAAE,CAC7D,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AADlC,QAAA,wBAAwB,4BACU;AAE/C,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,IAAa,EAAQ,EAAE;IAChE,MAAM,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,YAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,GAAG,QAAQ,MAAM,CAAC;IAClC,YAAE,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,YAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACnC,CAAC,CAAC;AAEK,MAAM,iBAAiB,GAAG,CAAC,MAAgC,EAAQ,EAAE;IAC1E,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IAC/D,IAAI,CAAC,oBAAoB,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QACvD,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GACf,MAAM,CAAC,WAAW,IAAI,IAAA,gCAAwB,EAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAiB,IAAI,yDAA2B,EAAE,CAAC,GAAG,CAAC;QAChE,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM;QACN,aAAa;QACb,WAAW;QACX,wBAAwB,EAAE,MAAM,CAAC,wBAAwB,IAAI,IAAI;KAClE,CAAC,CAAC;IAEH,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACpC,eAAe,CACb,cAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EACzD,KAAK,CAAC,GAAG,CAAC,CACX,CAAC;IACJ,CAAC;IAED,IAAA,oDAAiC,EAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;AAClE,CAAC,CAAC;AAzBW,QAAA,iBAAiB,qBAyB5B"}
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
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_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;
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';
7
7
  exports.FAILED_PREPARATION_STATUS_NAME = 'Failed Preparation';
8
8
  exports.AWAITING_QUALITY_CHECK_STATUS_NAME = 'Awaiting Quality Check';
9
9
  exports.TODO_STATUS_NAME = 'Todo by human';
10
+ exports.TODO_BY_AGENT_STATUS_NAME = 'Todo by agent';
10
11
  exports.PC_TODO_STATUS_NAME = 'PC Todo';
11
12
  exports.IN_TMUX_STATUS_NAME = 'In Tmux by human';
12
13
  exports.IN_TMUX_BY_AGENT_STATUS_NAME = 'In Tmux by agent';
@@ -40,6 +41,10 @@ exports.REQUIRED_WORKFLOW_STATUSES = [
40
41
  name: exports.TODO_STATUS_NAME,
41
42
  color: 'PINK',
42
43
  },
44
+ {
45
+ name: exports.TODO_BY_AGENT_STATUS_NAME,
46
+ color: 'BLUE',
47
+ },
43
48
  {
44
49
  name: exports.IN_TMUX_STATUS_NAME,
45
50
  color: 'RED',
@@ -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,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,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"}
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"}
@@ -33,9 +33,11 @@ class GenerateConsoleListsUseCase {
33
33
  'unread',
34
34
  'in tmux by human',
35
35
  'in tmux by agent',
36
+ 'todo by agent',
36
37
  ]),
37
38
  'todo-by-human': buildStatusTab((issue) => issue.status === WorkflowStatus_1.TODO_STATUS_NAME ||
38
39
  issue.status === WorkflowStatus_1.LEGACY_TODO_STATUS_NAME, [WorkflowStatus_1.TODO_STATUS_NAME.toLowerCase(), 'done']),
40
+ 'todo-by-agent': buildStatusTab((issue) => issue.status === WorkflowStatus_1.TODO_BY_AGENT_STATUS_NAME, [WorkflowStatus_1.TODO_BY_AGENT_STATUS_NAME.toLowerCase(), 'done']),
39
41
  triage: {
40
42
  pjcode,
41
43
  generatedAt,
@@ -1 +1 @@
1
- {"version":3,"file":"GenerateConsoleListsUseCase.js","sourceRoot":"","sources":["../../../../src/domain/usecases/console/GenerateConsoleListsUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GenerateConsoleListsUseCase.js","sourceRoot":"","sources":["../../../../src/domain/usecases/console/GenerateConsoleListsUseCase.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-issue-tower-defence-management",
3
- "version": "1.128.1",
3
+ "version": "1.130.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -100,9 +100,9 @@
100
100
  "vite": "^6.3.0"
101
101
  },
102
102
  "dependencies": {
103
- "better-sqlite3": "12.10.0",
103
+ "better-sqlite3": "12.11.1",
104
104
  "commander": "^15.0.0",
105
- "dompurify": "3.4.11",
105
+ "dompurify": "3.4.12",
106
106
  "dotenv": "^17.0.0",
107
107
  "gemoji": "8.1.0",
108
108
  "googleapis": "^171.4.0",
@@ -22,6 +22,12 @@ describe('parseConsoleDataRoute', () => {
22
22
  ).toEqual({ kind: 'list', pjcode: 'umino', tab: 'todo-by-human' });
23
23
  });
24
24
 
25
+ it('parses a list route for todo-by-agent', () => {
26
+ expect(
27
+ parseConsoleDataRoute('/projects/umino/todo-by-agent/list.json'),
28
+ ).toEqual({ kind: 'list', pjcode: 'umino', tab: 'todo-by-agent' });
29
+ });
30
+
25
31
  it('parses a detail route', () => {
26
32
  expect(
27
33
  parseConsoleDataRoute('/projects/umino/triage/detail/123.json'),
@@ -9,6 +9,7 @@ export const CONSOLE_LIST_TAB_NAMES: string[] = [
9
9
  'unread',
10
10
  'failed-preparation',
11
11
  'todo-by-human',
12
+ 'todo-by-agent',
12
13
  ];
13
14
 
14
15
  export type ConsoleDataRoute =
@@ -97,6 +97,10 @@ describe('consoleDoneStore', () => {
97
97
  }
98
98
  });
99
99
 
100
+ it('includes the todo-by-agent tab so processed items are excluded', () => {
101
+ expect(CONSOLE_DONE_TAB_NAMES).toContain('todo-by-agent');
102
+ });
103
+
100
104
  it('includes the workflow-blocker tab so processed blockers are excluded', () => {
101
105
  expect(CONSOLE_DONE_TAB_NAMES).toContain('workflow-blocker');
102
106
  recordDoneProjectItemIdAcrossTabs(baseDir, 'umino', 'PVTI_7');
@@ -85,6 +85,7 @@ export const CONSOLE_DONE_TAB_NAMES: string[] = [
85
85
  'unread',
86
86
  'failed-preparation',
87
87
  'todo-by-human',
88
+ 'todo-by-agent',
88
89
  'in-tmux-by-human',
89
90
  ];
90
91
 
@@ -105,6 +105,7 @@ const STATUS_OPTIONS: ConsoleFixtureFieldOption[] = [
105
105
  { id: 'f57f1ce9', name: 'Preparation', color: 'YELLOW' },
106
106
  { id: 'fd313492', name: 'Failed Preparation', color: 'RED' },
107
107
  { id: 'e9931e57', name: 'Todo by human', color: 'PINK' },
108
+ { id: 'a1e4b7c9', name: 'Todo by agent', color: 'BLUE' },
108
109
  { id: 'c2d278b2', name: 'In Tmux by human', color: 'RED' },
109
110
  { id: 'e9f6a726', name: 'In Tmux by agent', color: 'YELLOW' },
110
111
  ];
@@ -255,6 +256,15 @@ export const CONSOLE_E2E_TAB_ITEMS: Record<string, ConsoleFixtureListItem[]> = {
255
256
  '2026-06-18T00:14:51.000Z',
256
257
  ),
257
258
  ],
259
+ 'todo-by-agent': [
260
+ issueItem(
261
+ 871,
262
+ 'Route console items into the Todo by agent manual triage bucket',
263
+ 'TDAG00871',
264
+ 'TDPM Console port',
265
+ '2026-06-18T00:41:27.000Z',
266
+ ),
267
+ ],
258
268
  };
259
269
 
260
270
  const writeFixtureData = (consoleDataOutputDir: string): void => {
@@ -25,6 +25,7 @@ const counts: Record<ConsoleTabName, number> = {
25
25
  unread: 18,
26
26
  'failed-preparation': 2,
27
27
  'todo-by-human': 66,
28
+ 'todo-by-agent': 24,
28
29
  };
29
30
 
30
31
  export const AllTabsWithCounts: Story = {
@@ -44,6 +45,7 @@ export const ZeroCountTabsHidden: Story = {
44
45
  unread: 18,
45
46
  'failed-preparation': 0,
46
47
  'todo-by-human': 0,
48
+ 'todo-by-agent': 0,
47
49
  },
48
50
  },
49
51
  };
@@ -58,6 +60,7 @@ export const ZeroCountActiveTabStaysVisible: Story = {
58
60
  unread: 18,
59
61
  'failed-preparation': 0,
60
62
  'todo-by-human': 0,
63
+ 'todo-by-agent': 0,
61
64
  },
62
65
  },
63
66
  };
@@ -72,6 +75,7 @@ export const AfterAutoAdvanceToNextTab: Story = {
72
75
  unread: 7,
73
76
  'failed-preparation': 2,
74
77
  'todo-by-human': 4,
78
+ 'todo-by-agent': 0,
75
79
  },
76
80
  onSelectTab: () => {},
77
81
  },
@@ -9,6 +9,7 @@ const counts: Record<ConsoleTabName, number> = {
9
9
  unread: 5,
10
10
  'failed-preparation': 0,
11
11
  'todo-by-human': 2,
12
+ 'todo-by-agent': 3,
12
13
  };
13
14
 
14
15
  const baseProps = {
@@ -26,6 +27,7 @@ describe('ConsoleTabList', () => {
26
27
  expect(queryByText('Awaiting Quality Check')).not.toBeNull();
27
28
  expect(queryByText('Unread')).not.toBeNull();
28
29
  expect(queryByText('Todo by human')).not.toBeNull();
30
+ expect(queryByText('Todo by agent')).not.toBeNull();
29
31
  expect(queryByText('Triage')).toBeNull();
30
32
  expect(queryByText('Failed Preparation')).toBeNull();
31
33
  });
@@ -12,9 +12,9 @@ export default meta;
12
12
  type Story = StoryObj<typeof ConsoleNextActionDateActions>;
13
13
 
14
14
  export const StandardTab: Story = {
15
- args: { isTodoByHuman: false },
15
+ args: { isManualTriage: false },
16
16
  };
17
17
 
18
18
  export const TodoByHumanTab: Story = {
19
- args: { isTodoByHuman: true },
19
+ args: { isManualTriage: true },
20
20
  };
@@ -2,10 +2,10 @@ import { fireEvent, render } from '@testing-library/react';
2
2
  import { ConsoleNextActionDateActions } from './ConsoleNextActionDateActions';
3
3
 
4
4
  describe('ConsoleNextActionDateActions', () => {
5
- it('shows +1 day and +1 week outside the todo-by-human tab', () => {
5
+ it('shows +1 day and +1 week outside manual triage tabs', () => {
6
6
  const { getByText, queryByText } = render(
7
7
  <ConsoleNextActionDateActions
8
- isTodoByHuman={false}
8
+ isManualTriage={false}
9
9
  onSetNextActionDate={() => {}}
10
10
  />,
11
11
  );
@@ -14,10 +14,10 @@ describe('ConsoleNextActionDateActions', () => {
14
14
  expect(queryByText('+1 week and skip')).toBeNull();
15
15
  });
16
16
 
17
- it('shows +1 week and skip on the todo-by-human tab', () => {
17
+ it('shows +1 week and skip on manual triage tabs', () => {
18
18
  const { getByText } = render(
19
19
  <ConsoleNextActionDateActions
20
- isTodoByHuman
20
+ isManualTriage
21
21
  onSetNextActionDate={() => {}}
22
22
  />,
23
23
  );
@@ -28,7 +28,7 @@ describe('ConsoleNextActionDateActions', () => {
28
28
  const onSetNextActionDate = jest.fn();
29
29
  const { getByText } = render(
30
30
  <ConsoleNextActionDateActions
31
- isTodoByHuman={false}
31
+ isManualTriage={false}
32
32
  onSetNextActionDate={onSetNextActionDate}
33
33
  />,
34
34
  );
@@ -1,12 +1,12 @@
1
1
  import type { ConsoleNextActionDateAction } from '../../logic/operations';
2
2
 
3
3
  export type ConsoleNextActionDateGroupProps = {
4
- isTodoByHuman: boolean;
4
+ isManualTriage: boolean;
5
5
  onSetNextActionDate: (action: ConsoleNextActionDateAction) => void;
6
6
  };
7
7
 
8
8
  export const ConsoleNextActionDateActions = ({
9
- isTodoByHuman,
9
+ isManualTriage,
10
10
  onSetNextActionDate,
11
11
  }: ConsoleNextActionDateGroupProps) => (
12
12
  <div className="console-op-group">
@@ -22,7 +22,7 @@ export const ConsoleNextActionDateActions = ({
22
22
  className="console-op-button console-op-button-snooze"
23
23
  onClick={() => onSetNextActionDate('snooze_1week')}
24
24
  >
25
- {isTodoByHuman ? '+1 week and skip' : '+1 week'}
25
+ {isManualTriage ? '+1 week and skip' : '+1 week'}
26
26
  </button>
27
27
  </div>
28
28
  );
@@ -63,3 +63,11 @@ export const TodoByHumanTabIssue: Story = {
63
63
  hasPullRequest: false,
64
64
  },
65
65
  };
66
+
67
+ export const TodoByAgentTabIssue: Story = {
68
+ args: {
69
+ tab: 'todo-by-agent',
70
+ item: consoleListItemsFixture[2],
71
+ hasPullRequest: false,
72
+ },
73
+ };
@@ -73,6 +73,21 @@ describe('ConsoleOperationMenu', () => {
73
73
  expect(getByText('+1 week and skip')).toBeInTheDocument();
74
74
  });
75
75
 
76
+ it('shows +1 week and skip on the todo-by-agent tab', () => {
77
+ const { getByText } = render(
78
+ <ConsoleOperationMenu
79
+ tab="todo-by-agent"
80
+ item={issueItem}
81
+ hasPullRequest={false}
82
+ rejectEnabled={false}
83
+ statusOptions={consoleStatusOptionsFixture}
84
+ storyOptions={consoleStoryOptionsFixture}
85
+ handlers={handlers}
86
+ />,
87
+ );
88
+ expect(getByText('+1 week and skip')).toBeInTheDocument();
89
+ });
90
+
76
91
  it('hides the review group when there is no pull request', () => {
77
92
  const { queryByText } = render(
78
93
  <ConsoleOperationMenu
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  type ConsoleOperationHandlers,
3
- isTodoByHumanTab,
3
+ isManualTriageTab,
4
4
  } from '../../logic/operations';
5
5
  import type {
6
6
  ConsoleFieldOption,
@@ -41,7 +41,7 @@ export const ConsoleOperationMenu = ({
41
41
  />
42
42
  )}
43
43
  <ConsoleNextActionDateActions
44
- isTodoByHuman={isTodoByHumanTab(tab)}
44
+ isManualTriage={isManualTriageTab(tab)}
45
45
  onSetNextActionDate={handlers.onSetNextActionDate}
46
46
  />
47
47
  {showStory && (
@@ -15,6 +15,7 @@ const counts = (
15
15
  unread: 0,
16
16
  'failed-preparation': 0,
17
17
  'todo-by-human': 0,
18
+ 'todo-by-agent': 0,
18
19
  ...overrides,
19
20
  });
20
21
 
@@ -1,4 +1,5 @@
1
1
  import { renderHook, waitFor } from '@testing-library/react';
2
+ import { CONSOLE_TABS } from '../logic/types';
2
3
  import { useConsoleTabData } from './useConsoleTabData';
3
4
 
4
5
  describe('useConsoleTabData', () => {
@@ -27,7 +28,7 @@ describe('useConsoleTabData', () => {
27
28
  await waitFor(() => {
28
29
  expect(result.current.isLoading).toBe(false);
29
30
  });
30
- expect(fetchMock).toHaveBeenCalledTimes(6);
31
+ expect(fetchMock).toHaveBeenCalledTimes(CONSOLE_TABS.length);
31
32
  expect(fetchMock).toHaveBeenCalledWith(
32
33
  expect.stringContaining('/projects/umino/prs/list.json'),
33
34
  );
@@ -44,7 +44,7 @@ describe('actionToastMessage', () => {
44
44
  ).toBe('Marked unnecessary');
45
45
  });
46
46
 
47
- it('labels the +1 week snooze differently on the todo-by-human tab', () => {
47
+ it('labels the +1 week snooze differently on the manual triage tabs', () => {
48
48
  const kind: ConsoleActionKind = {
49
49
  type: 'next_action_date',
50
50
  action: 'snooze_1week',
@@ -53,6 +53,9 @@ describe('actionToastMessage', () => {
53
53
  expect(actionToastMessage(kind, 'todo-by-human')).toBe(
54
54
  'Next Action Date +1 week and skip',
55
55
  );
56
+ expect(actionToastMessage(kind, 'todo-by-agent')).toBe(
57
+ 'Next Action Date +1 week and skip',
58
+ );
56
59
  });
57
60
 
58
61
  it('labels the +1 day snooze the same on every tab', () => {
@@ -134,13 +137,14 @@ describe('actionAdvances', () => {
134
137
  );
135
138
  });
136
139
 
137
- it('does not advance a snooze except on the todo-by-human tab', () => {
140
+ it('does not advance a snooze except on the manual triage tabs', () => {
138
141
  const kind: ConsoleActionKind = {
139
142
  type: 'next_action_date',
140
143
  action: 'snooze_1week',
141
144
  };
142
145
  expect(actionAdvances(kind, 'prs')).toBe(false);
143
146
  expect(actionAdvances(kind, 'todo-by-human')).toBe(true);
147
+ expect(actionAdvances(kind, 'todo-by-agent')).toBe(true);
144
148
  });
145
149
  });
146
150
 
@@ -1,7 +1,8 @@
1
- import type {
2
- ConsoleCloseAction,
3
- ConsoleNextActionDateAction,
4
- ConsoleReviewAction,
1
+ import {
2
+ type ConsoleCloseAction,
3
+ type ConsoleNextActionDateAction,
4
+ type ConsoleReviewAction,
5
+ isManualTriageTab,
5
6
  } from './operations';
6
7
  import type { ConsoleListItem, ConsoleTabName } from './types';
7
8
 
@@ -46,7 +47,7 @@ export const actionToastMessage = (
46
47
  if (kind.action === 'snooze_1day') {
47
48
  return 'Next Action Date +1 day';
48
49
  }
49
- return tab === 'todo-by-human'
50
+ return isManualTriageTab(tab)
50
51
  ? 'Next Action Date +1 week and skip'
51
52
  : 'Next Action Date +1 week';
52
53
  case 'set_story':
@@ -91,7 +92,7 @@ export const actionAdvances = (
91
92
  tab: ConsoleTabName,
92
93
  ): boolean => {
93
94
  if (kind.type === 'next_action_date') {
94
- return tab === 'todo-by-human';
95
+ return isManualTriageTab(tab);
95
96
  }
96
97
  return true;
97
98
  };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  buildRequestChangesBody,
3
3
  IN_TMUX_BY_HUMAN_NAME,
4
- isTodoByHumanTab,
4
+ isManualTriageTab,
5
5
  STATUS_BUTTON_NAMES,
6
6
  TOTALLY_WRONG_COMMENT_BODY,
7
7
  UNNECESSARY_COMMENT_BODY,
@@ -21,6 +21,7 @@ describe('operation constants', () => {
21
21
  'In Tmux by agent',
22
22
  'In Tmux by human',
23
23
  'Todo by human',
24
+ 'Todo by agent',
24
25
  'Awaiting Workspace',
25
26
  ]);
26
27
  });
@@ -30,10 +31,11 @@ describe('operation constants', () => {
30
31
  });
31
32
  });
32
33
 
33
- describe('isTodoByHumanTab', () => {
34
- it('is true only for the todo-by-human tab', () => {
35
- expect(isTodoByHumanTab('todo-by-human')).toBe(true);
36
- expect(isTodoByHumanTab('prs')).toBe(false);
34
+ describe('isManualTriageTab', () => {
35
+ it('is true for the manual triage tabs and false otherwise', () => {
36
+ expect(isManualTriageTab('todo-by-human')).toBe(true);
37
+ expect(isManualTriageTab('todo-by-agent')).toBe(true);
38
+ expect(isManualTriageTab('prs')).toBe(false);
37
39
  });
38
40
  });
39
41
 
@@ -41,10 +41,11 @@ export const STATUS_BUTTON_NAMES: string[] = [
41
41
  'In Tmux by agent',
42
42
  'In Tmux by human',
43
43
  'Todo by human',
44
+ 'Todo by agent',
44
45
  'Awaiting Workspace',
45
46
  ];
46
47
 
47
48
  export const IN_TMUX_BY_HUMAN_NAME = 'In Tmux by human';
48
49
 
49
- export const isTodoByHumanTab = (tab: ConsoleTabName): boolean =>
50
- tab === 'todo-by-human';
50
+ export const isManualTriageTab = (tab: ConsoleTabName): boolean =>
51
+ tab === 'todo-by-human' || tab === 'todo-by-agent';
@@ -13,6 +13,7 @@ const counts = (
13
13
  unread: 0,
14
14
  'failed-preparation': 0,
15
15
  'todo-by-human': 0,
16
+ 'todo-by-agent': 0,
16
17
  ...overrides,
17
18
  });
18
19
 
@@ -32,6 +33,15 @@ describe('findNextNonEmptyTabToRight', () => {
32
33
  ).toBe('todo-by-human');
33
34
  });
34
35
 
36
+ it('advances from todo-by-human to todo-by-agent when it has items', () => {
37
+ expect(
38
+ findNextNonEmptyTabToRight(
39
+ 'todo-by-human',
40
+ counts({ 'todo-by-agent': 2 }),
41
+ ),
42
+ ).toBe('todo-by-agent');
43
+ });
44
+
35
45
  it('returns the immediately adjacent tab when it is non-empty', () => {
36
46
  expect(
37
47
  findNextNonEmptyTabToRight('prs', counts({ triage: 12, unread: 7 })),
@@ -46,7 +56,7 @@ describe('findNextNonEmptyTabToRight', () => {
46
56
 
47
57
  it('returns null when the active tab is the last tab', () => {
48
58
  expect(
49
- findNextNonEmptyTabToRight('todo-by-human', counts({ prs: 35 })),
59
+ findNextNonEmptyTabToRight('todo-by-agent', counts({ prs: 35 })),
50
60
  ).toBeNull();
51
61
  });
52
62
  });
@@ -144,7 +144,8 @@ export type ConsoleTabName =
144
144
  | 'triage'
145
145
  | 'unread'
146
146
  | 'failed-preparation'
147
- | 'todo-by-human';
147
+ | 'todo-by-human'
148
+ | 'todo-by-agent';
148
149
 
149
150
  export type ConsoleTab = {
150
151
  name: ConsoleTabName;
@@ -158,4 +159,5 @@ export const CONSOLE_TABS: ConsoleTab[] = [
158
159
  { name: 'unread', label: 'Unread' },
159
160
  { name: 'failed-preparation', label: 'Failed Preparation' },
160
161
  { name: 'todo-by-human', label: 'Todo by human' },
162
+ { name: 'todo-by-agent', label: 'Todo by agent' },
161
163
  ];
@@ -15,6 +15,7 @@ export const consoleStatusOptionsFixture: ConsoleFieldOption[] = [
15
15
  { id: 'f57f1ce9', name: 'Preparation', color: 'YELLOW' },
16
16
  { id: 'fd313492', name: 'Failed Preparation', color: 'RED' },
17
17
  { id: 'e9931e57', name: 'Todo by human', color: 'PINK' },
18
+ { id: 'a1e4b7c9', name: 'Todo by agent', color: 'BLUE' },
18
19
  { id: 'c2d278b2', name: 'In Tmux by human', color: 'RED' },
19
20
  { id: 'e9f6a726', name: 'In Tmux by agent', color: 'YELLOW' },
20
21
  { id: 'bd8358eb', name: 'Icebox', color: 'GRAY' },