@jonit-dev/night-watch-cli 1.8.10-beta.1 → 1.8.10-beta.11

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 (208) hide show
  1. package/dist/cli.js +2453 -1378
  2. package/dist/commands/dashboard/tab-config.d.ts.map +1 -1
  3. package/dist/commands/queue.d.ts.map +1 -1
  4. package/dist/commands/shared/env-builder.d.ts.map +1 -1
  5. package/dist/scripts/night-watch-cron.sh +344 -53
  6. package/dist/scripts/night-watch-helpers.sh +182 -7
  7. package/dist/scripts/night-watch-merger-cron.sh +8 -2
  8. package/dist/scripts/night-watch-plan-cron.sh +1 -1
  9. package/dist/scripts/night-watch-pr-resolver-cron.sh +7 -3
  10. package/dist/scripts/night-watch-pr-reviewer-cron.sh +5 -0
  11. package/dist/scripts/night-watch-qa-cron.sh +5 -0
  12. package/dist/scripts/night-watch-slicer-cron.sh +1 -1
  13. package/dist/web/assets/index-B6E6kOoR.js +406 -0
  14. package/dist/web/assets/index-DIMUXIP8.css +1 -0
  15. package/dist/web/assets/index-Ds8OqaCa.css +1 -0
  16. package/dist/web/assets/index-NR27JE3b.js +406 -0
  17. package/dist/web/index.html +2 -2
  18. package/package.json +1 -1
  19. package/dist/cli.d.ts +0 -3
  20. package/dist/cli.js.map +0 -1
  21. package/dist/commands/analytics.d.ts +0 -14
  22. package/dist/commands/analytics.js +0 -69
  23. package/dist/commands/analytics.js.map +0 -1
  24. package/dist/commands/audit.d.ts +0 -19
  25. package/dist/commands/audit.js +0 -144
  26. package/dist/commands/audit.js.map +0 -1
  27. package/dist/commands/board.d.ts +0 -9
  28. package/dist/commands/board.js +0 -702
  29. package/dist/commands/board.js.map +0 -1
  30. package/dist/commands/cancel.d.ts +0 -46
  31. package/dist/commands/cancel.js +0 -239
  32. package/dist/commands/cancel.js.map +0 -1
  33. package/dist/commands/cron.d.ts +0 -8
  34. package/dist/commands/cron.js +0 -134
  35. package/dist/commands/cron.js.map +0 -1
  36. package/dist/commands/dashboard/tab-actions.d.ts +0 -10
  37. package/dist/commands/dashboard/tab-actions.js +0 -247
  38. package/dist/commands/dashboard/tab-actions.js.map +0 -1
  39. package/dist/commands/dashboard/tab-config.d.ts +0 -21
  40. package/dist/commands/dashboard/tab-config.js +0 -873
  41. package/dist/commands/dashboard/tab-config.js.map +0 -1
  42. package/dist/commands/dashboard/tab-logs.d.ts +0 -10
  43. package/dist/commands/dashboard/tab-logs.js +0 -202
  44. package/dist/commands/dashboard/tab-logs.js.map +0 -1
  45. package/dist/commands/dashboard/tab-schedules.d.ts +0 -21
  46. package/dist/commands/dashboard/tab-schedules.js +0 -320
  47. package/dist/commands/dashboard/tab-schedules.js.map +0 -1
  48. package/dist/commands/dashboard/tab-status.d.ts +0 -32
  49. package/dist/commands/dashboard/tab-status.js +0 -424
  50. package/dist/commands/dashboard/tab-status.js.map +0 -1
  51. package/dist/commands/dashboard/types.d.ts +0 -42
  52. package/dist/commands/dashboard/types.js +0 -5
  53. package/dist/commands/dashboard/types.js.map +0 -1
  54. package/dist/commands/dashboard.d.ts +0 -11
  55. package/dist/commands/dashboard.js +0 -242
  56. package/dist/commands/dashboard.js.map +0 -1
  57. package/dist/commands/doctor.d.ts +0 -16
  58. package/dist/commands/doctor.js +0 -195
  59. package/dist/commands/doctor.js.map +0 -1
  60. package/dist/commands/history.d.ts +0 -7
  61. package/dist/commands/history.js +0 -49
  62. package/dist/commands/history.js.map +0 -1
  63. package/dist/commands/init.d.ts +0 -45
  64. package/dist/commands/init.js +0 -777
  65. package/dist/commands/init.js.map +0 -1
  66. package/dist/commands/install.d.ts +0 -65
  67. package/dist/commands/install.js +0 -405
  68. package/dist/commands/install.js.map +0 -1
  69. package/dist/commands/logs.d.ts +0 -15
  70. package/dist/commands/logs.js +0 -155
  71. package/dist/commands/logs.js.map +0 -1
  72. package/dist/commands/merge.d.ts +0 -26
  73. package/dist/commands/merge.js +0 -159
  74. package/dist/commands/merge.js.map +0 -1
  75. package/dist/commands/notify.d.ts +0 -7
  76. package/dist/commands/notify.js +0 -43
  77. package/dist/commands/notify.js.map +0 -1
  78. package/dist/commands/plan.d.ts +0 -19
  79. package/dist/commands/plan.js +0 -88
  80. package/dist/commands/plan.js.map +0 -1
  81. package/dist/commands/prd-state.d.ts +0 -12
  82. package/dist/commands/prd-state.js +0 -47
  83. package/dist/commands/prd-state.js.map +0 -1
  84. package/dist/commands/prd.d.ts +0 -18
  85. package/dist/commands/prd.js +0 -363
  86. package/dist/commands/prd.js.map +0 -1
  87. package/dist/commands/prds.d.ts +0 -13
  88. package/dist/commands/prds.js +0 -194
  89. package/dist/commands/prds.js.map +0 -1
  90. package/dist/commands/prs.d.ts +0 -14
  91. package/dist/commands/prs.js +0 -104
  92. package/dist/commands/prs.js.map +0 -1
  93. package/dist/commands/qa.d.ts +0 -34
  94. package/dist/commands/qa.js +0 -214
  95. package/dist/commands/qa.js.map +0 -1
  96. package/dist/commands/queue.d.ts +0 -8
  97. package/dist/commands/queue.js +0 -376
  98. package/dist/commands/queue.js.map +0 -1
  99. package/dist/commands/resolve.d.ts +0 -26
  100. package/dist/commands/resolve.js +0 -186
  101. package/dist/commands/resolve.js.map +0 -1
  102. package/dist/commands/retry.d.ts +0 -9
  103. package/dist/commands/retry.js +0 -71
  104. package/dist/commands/retry.js.map +0 -1
  105. package/dist/commands/review.d.ts +0 -82
  106. package/dist/commands/review.js +0 -479
  107. package/dist/commands/review.js.map +0 -1
  108. package/dist/commands/run.d.ts +0 -73
  109. package/dist/commands/run.js +0 -509
  110. package/dist/commands/run.js.map +0 -1
  111. package/dist/commands/serve.d.ts +0 -19
  112. package/dist/commands/serve.js +0 -142
  113. package/dist/commands/serve.js.map +0 -1
  114. package/dist/commands/shared/env-builder.d.ts +0 -49
  115. package/dist/commands/shared/env-builder.js +0 -150
  116. package/dist/commands/shared/env-builder.js.map +0 -1
  117. package/dist/commands/slice.d.ts +0 -35
  118. package/dist/commands/slice.js +0 -316
  119. package/dist/commands/slice.js.map +0 -1
  120. package/dist/commands/state.d.ts +0 -8
  121. package/dist/commands/state.js +0 -54
  122. package/dist/commands/state.js.map +0 -1
  123. package/dist/commands/status.d.ts +0 -14
  124. package/dist/commands/status.js +0 -297
  125. package/dist/commands/status.js.map +0 -1
  126. package/dist/commands/summary.d.ts +0 -14
  127. package/dist/commands/summary.js +0 -193
  128. package/dist/commands/summary.js.map +0 -1
  129. package/dist/commands/uninstall.d.ts +0 -25
  130. package/dist/commands/uninstall.js +0 -134
  131. package/dist/commands/uninstall.js.map +0 -1
  132. package/dist/commands/update.d.ts +0 -22
  133. package/dist/commands/update.js +0 -90
  134. package/dist/commands/update.js.map +0 -1
  135. package/dist/web/assets/index-2JY0x_Ij.js +0 -381
  136. package/dist/web/assets/index-3h8pgmqL.css +0 -1
  137. package/dist/web/assets/index-B-wbyZq7.js +0 -386
  138. package/dist/web/assets/index-B1BnOpiO.css +0 -1
  139. package/dist/web/assets/index-B3CnV08_.js +0 -365
  140. package/dist/web/assets/index-B5QjuFh9.css +0 -1
  141. package/dist/web/assets/index-B8FW2ecQ.js +0 -370
  142. package/dist/web/assets/index-BFxPiKyy.js +0 -381
  143. package/dist/web/assets/index-BGqNh_Da.js +0 -365
  144. package/dist/web/assets/index-BIONU0qz.css +0 -1
  145. package/dist/web/assets/index-B_l_3wnA.js +0 -370
  146. package/dist/web/assets/index-Ba-4YvTQ.js +0 -365
  147. package/dist/web/assets/index-Bbb4-39N.js +0 -370
  148. package/dist/web/assets/index-BdgdShEN.js +0 -365
  149. package/dist/web/assets/index-BhiC4Z-G.js +0 -381
  150. package/dist/web/assets/index-BjhCFjZi.js +0 -381
  151. package/dist/web/assets/index-BlRxmrnQ.css +0 -1
  152. package/dist/web/assets/index-BqwbXsHS.js +0 -365
  153. package/dist/web/assets/index-BsC7RT48.css +0 -1
  154. package/dist/web/assets/index-Bvh8XI8_.js +0 -370
  155. package/dist/web/assets/index-C01r2ymn.js +0 -381
  156. package/dist/web/assets/index-C51Rbsmk.js +0 -381
  157. package/dist/web/assets/index-C7lMNxRE.js +0 -370
  158. package/dist/web/assets/index-CJLObgsn.js +0 -386
  159. package/dist/web/assets/index-CLuRf7Zt.js +0 -381
  160. package/dist/web/assets/index-CM3xFd3e.css +0 -1
  161. package/dist/web/assets/index-CNkBtDK7.js +0 -370
  162. package/dist/web/assets/index-CPQbZ1BL.css +0 -1
  163. package/dist/web/assets/index-CTy5dUDU.css +0 -1
  164. package/dist/web/assets/index-CU15COKs.js +0 -370
  165. package/dist/web/assets/index-CiRJZI4z.js +0 -386
  166. package/dist/web/assets/index-Cp7RYjoy.css +0 -1
  167. package/dist/web/assets/index-CvPkZOWT.js +0 -381
  168. package/dist/web/assets/index-CvUk-33B.css +0 -1
  169. package/dist/web/assets/index-Cvmj-oF6.css +0 -1
  170. package/dist/web/assets/index-CxE5iQVO.js +0 -381
  171. package/dist/web/assets/index-D7lZQpFV.js +0 -365
  172. package/dist/web/assets/index-DAyP4GOi.css +0 -1
  173. package/dist/web/assets/index-DCG0n8Kg.js +0 -386
  174. package/dist/web/assets/index-DEEI8cyF.css +0 -1
  175. package/dist/web/assets/index-DF99BowV.js +0 -381
  176. package/dist/web/assets/index-DGWsvFj6.css +0 -1
  177. package/dist/web/assets/index-DGpU39Cp.css +0 -1
  178. package/dist/web/assets/index-DI4kFgOi.js +0 -370
  179. package/dist/web/assets/index-DIyTcPw5.css +0 -1
  180. package/dist/web/assets/index-DTsfDC7m.js +0 -381
  181. package/dist/web/assets/index-DcgNAi4A.js +0 -386
  182. package/dist/web/assets/index-DgOAgkZy.css +0 -1
  183. package/dist/web/assets/index-DnHkqbOa.js +0 -386
  184. package/dist/web/assets/index-DnR7Idcf.css +0 -1
  185. package/dist/web/assets/index-DpVirMEe.css +0 -1
  186. package/dist/web/assets/index-DsYIWZ86.css +0 -1
  187. package/dist/web/assets/index-DtrDkci5.js +0 -381
  188. package/dist/web/assets/index-DyjIth5M.js +0 -386
  189. package/dist/web/assets/index-FwIKfHPL.css +0 -1
  190. package/dist/web/assets/index-IKrZymWk.css +0 -1
  191. package/dist/web/assets/index-MA6fM0ab.js +0 -381
  192. package/dist/web/assets/index-N_QxaSEg.css +0 -1
  193. package/dist/web/assets/index-OcU-0TCQ.css +0 -1
  194. package/dist/web/assets/index-OyhrmG-L.js +0 -381
  195. package/dist/web/assets/index-SQlBKu_s.js +0 -386
  196. package/dist/web/assets/index-Sv2B60J4.js +0 -370
  197. package/dist/web/assets/index-Vgyivb5u.js +0 -365
  198. package/dist/web/assets/index-ZABWMEZR.js +0 -381
  199. package/dist/web/assets/index-ZE5lOeJp.js +0 -386
  200. package/dist/web/assets/index-aCHmkAcJ.css +0 -1
  201. package/dist/web/assets/index-bFijnpuU.js +0 -381
  202. package/dist/web/assets/index-bUPZgSoZ.css +0 -1
  203. package/dist/web/assets/index-mz1VIYsP.css +0 -1
  204. package/dist/web/assets/index-oOp_MFeE.js +0 -376
  205. package/dist/web/assets/index-rfU713Zm.js +0 -386
  206. package/dist/web/assets/index-tuNH9gmb.js +0 -448
  207. package/dist/web/assets/index-viSwHyDD.js +0 -365
  208. package/dist/web/assets/index-yKEQysks.js +0 -365
@@ -1,32 +0,0 @@
1
- /**
2
- * Status tab for the dashboard TUI
3
- * Shows the original 4-pane layout: PRD Queue, Processes, Pull Requests, Logs
4
- */
5
- import { IStatusSnapshot } from '@night-watch/core';
6
- import { ITab } from './types.js';
7
- /**
8
- * Sort PRDs by priority order. PRDs in the priority list come first (in that order),
9
- * remaining PRDs follow alphabetically.
10
- */
11
- export declare function sortPrdsByPriority(prds: IStatusSnapshot['prds'], priority: string[]): IStatusSnapshot['prds'];
12
- /**
13
- * Render the PRD Queue pane content from snapshot data.
14
- */
15
- export declare function renderPrdPane(prds: IStatusSnapshot['prds'], priority?: string[]): string;
16
- /**
17
- * Render the Process Status pane content from snapshot data.
18
- */
19
- export declare function renderProcessPane(processes: IStatusSnapshot['processes']): string;
20
- /**
21
- * Render the PR Status pane content from snapshot data.
22
- */
23
- export declare function renderPrPane(prs: IStatusSnapshot['prs']): string;
24
- /**
25
- * Render the Log Tail pane content from snapshot data.
26
- */
27
- export declare function renderLogPane(projectDir: string, logs: IStatusSnapshot['logs']): string;
28
- /**
29
- * Create the Status tab with 4-pane layout
30
- */
31
- export declare function createStatusTab(): ITab;
32
- //# sourceMappingURL=tab-status.d.ts.map
@@ -1,424 +0,0 @@
1
- /**
2
- * Status tab for the dashboard TUI
3
- * Shows the original 4-pane layout: PRD Queue, Processes, Pull Requests, Logs
4
- */
5
- import blessed from 'blessed';
6
- import { getLastLogLines, saveConfig } from '@night-watch/core';
7
- import * as fs from 'fs';
8
- /**
9
- * Sort PRDs by priority order. PRDs in the priority list come first (in that order),
10
- * remaining PRDs follow alphabetically.
11
- */
12
- export function sortPrdsByPriority(prds, priority) {
13
- if (priority.length === 0)
14
- return prds;
15
- const priorityMap = new Map();
16
- for (let i = 0; i < priority.length; i++) {
17
- priorityMap.set(priority[i], i);
18
- }
19
- return [...prds].sort((a, b) => {
20
- const aIdx = priorityMap.has(a.name) ? priorityMap.get(a.name) : Infinity;
21
- const bIdx = priorityMap.has(b.name) ? priorityMap.get(b.name) : Infinity;
22
- if (aIdx !== bIdx)
23
- return aIdx - bIdx;
24
- return a.name.localeCompare(b.name);
25
- });
26
- }
27
- /**
28
- * Render the PRD Queue pane content from snapshot data.
29
- */
30
- export function renderPrdPane(prds, priority) {
31
- if (prds.length === 0) {
32
- return 'No PRD files found';
33
- }
34
- const sorted = priority ? sortPrdsByPriority(prds, priority) : prds;
35
- const lines = [];
36
- for (const prd of sorted) {
37
- let indicator;
38
- switch (prd.status) {
39
- case 'ready':
40
- indicator = '{green-fg}\u25cf{/green-fg}';
41
- break;
42
- case 'blocked':
43
- indicator = '{yellow-fg}\u25cf{/yellow-fg}';
44
- break;
45
- case 'in-progress':
46
- indicator = '{cyan-fg}\u25cf{/cyan-fg}';
47
- break;
48
- case 'pending-review':
49
- indicator = '{yellow-fg}\u25cf{/yellow-fg}';
50
- break;
51
- case 'done':
52
- indicator = '{#888888-fg}\u25cf{/#888888-fg}';
53
- break;
54
- default:
55
- indicator = '{white-fg}\u25cf{/white-fg}';
56
- }
57
- let line = `${indicator} ${prd.name}`;
58
- if (prd.dependencies.length > 0) {
59
- line += ` (deps: ${prd.dependencies.join(', ')})`;
60
- }
61
- lines.push(line);
62
- }
63
- return lines.join('\n');
64
- }
65
- /**
66
- * Render the Process Status pane content from snapshot data.
67
- */
68
- export function renderProcessPane(processes) {
69
- const lines = [];
70
- for (const proc of processes) {
71
- if (proc.running) {
72
- lines.push(`{green-fg}\u25cf{/green-fg} ${proc.name}: Running (PID: ${proc.pid})`);
73
- }
74
- else {
75
- lines.push(`{white-fg}\u25cb{/white-fg} ${proc.name}: Not running`);
76
- }
77
- }
78
- return lines.join('\n');
79
- }
80
- /**
81
- * Render the PR Status pane content from snapshot data.
82
- */
83
- export function renderPrPane(prs) {
84
- if (prs.length === 0) {
85
- return 'No matching pull requests';
86
- }
87
- const lines = [];
88
- for (const pr of prs) {
89
- let ciIndicator;
90
- switch (pr.ciStatus) {
91
- case 'pass':
92
- ciIndicator = '{green-fg}\u25cf{/green-fg}';
93
- break;
94
- case 'fail':
95
- ciIndicator = '{red-fg}\u25cf{/red-fg}';
96
- break;
97
- case 'pending':
98
- ciIndicator = '{yellow-fg}\u25cf{/yellow-fg}';
99
- break;
100
- default:
101
- ciIndicator = '{white-fg}\u25cf{/white-fg}';
102
- break;
103
- }
104
- const reviewLabel = pr.reviewScore !== null ? ` [Review: ${pr.reviewScore}%]` : '';
105
- lines.push(`${ciIndicator} #${pr.number} ${pr.title}${reviewLabel}`);
106
- lines.push(` ${pr.branch}`);
107
- }
108
- return lines.join('\n');
109
- }
110
- /**
111
- * Render the Log Tail pane content from snapshot data.
112
- */
113
- export function renderLogPane(projectDir, logs) {
114
- const existingLogs = logs.filter((l) => l.exists);
115
- if (existingLogs.length === 0) {
116
- return 'No log files found';
117
- }
118
- let newestLog = existingLogs[0];
119
- let newestMtime = 0;
120
- for (const log of existingLogs) {
121
- try {
122
- const stat = fs.statSync(log.path);
123
- if (stat.mtimeMs > newestMtime) {
124
- newestMtime = stat.mtimeMs;
125
- newestLog = log;
126
- }
127
- }
128
- catch {
129
- // Ignore stat errors
130
- }
131
- }
132
- const lines = getLastLogLines(newestLog.path, 20);
133
- if (lines.length === 0) {
134
- return `${newestLog.name}.log: (empty)`;
135
- }
136
- return `--- ${newestLog.name}.log ---\n${lines.join('\n')}`;
137
- }
138
- /**
139
- * Create the Status tab with 4-pane layout
140
- */
141
- export function createStatusTab() {
142
- const container = blessed.box({
143
- top: 0,
144
- left: 0,
145
- width: '100%',
146
- height: '100%',
147
- hidden: true,
148
- });
149
- const prdPane = blessed.box({
150
- top: 0,
151
- left: 0,
152
- width: '50%',
153
- height: '50%',
154
- label: '[ PRD Queue ]',
155
- border: { type: 'line' },
156
- scrollable: true,
157
- alwaysScroll: true,
158
- scrollbar: { style: { bg: 'blue' } },
159
- style: { border: { fg: 'white' } },
160
- tags: true,
161
- content: 'Loading...',
162
- });
163
- const processPane = blessed.box({
164
- top: 0,
165
- left: '50%',
166
- width: '50%',
167
- height: '50%',
168
- label: '[ Processes ]',
169
- border: { type: 'line' },
170
- scrollable: true,
171
- alwaysScroll: true,
172
- scrollbar: { style: { bg: 'blue' } },
173
- style: { border: { fg: 'white' } },
174
- tags: true,
175
- content: 'Loading...',
176
- });
177
- const prPane = blessed.box({
178
- top: '50%',
179
- left: 0,
180
- width: '50%',
181
- height: '50%',
182
- label: '[ Pull Requests ]',
183
- border: { type: 'line' },
184
- scrollable: true,
185
- alwaysScroll: true,
186
- scrollbar: { style: { bg: 'blue' } },
187
- style: { border: { fg: 'white' } },
188
- tags: true,
189
- content: 'Loading...',
190
- });
191
- const logPane = blessed.box({
192
- top: '50%',
193
- left: '50%',
194
- width: '50%',
195
- height: '50%',
196
- label: '[ Logs ]',
197
- border: { type: 'line' },
198
- scrollable: true,
199
- alwaysScroll: true,
200
- scrollbar: { style: { bg: 'blue' } },
201
- style: { border: { fg: 'white' } },
202
- tags: true,
203
- content: 'Loading...',
204
- });
205
- container.append(prdPane);
206
- container.append(processPane);
207
- container.append(prPane);
208
- container.append(logPane);
209
- const panes = [prdPane, processPane, prPane, logPane];
210
- let focusedPaneIndex = 0;
211
- let keyHandlers = [];
212
- let activeCtx = null;
213
- // Reorder mode state
214
- let reorderMode = false;
215
- let reorderList = [];
216
- let reorderIndex = 0;
217
- let reorderKeyHandlers = [];
218
- function updatePaneFocus(screen) {
219
- panes.forEach((pane, index) => {
220
- if (index === focusedPaneIndex) {
221
- pane.style.border = { fg: reorderMode && index === 0 ? 'yellow' : 'cyan' };
222
- pane.focus();
223
- }
224
- else {
225
- pane.style.border = { fg: 'white' };
226
- }
227
- });
228
- screen.render();
229
- }
230
- function renderPanes(ctx) {
231
- const snap = ctx.snapshot;
232
- prdPane.setContent(renderPrdPane(snap.prds, ctx.config.prdPriority));
233
- processPane.setContent(renderProcessPane(snap.processes));
234
- prPane.setContent(renderPrPane(snap.prs));
235
- logPane.setContent(renderLogPane(snap.projectDir, snap.logs));
236
- logPane.setScrollPerc(100);
237
- }
238
- function renderReorderList(screen) {
239
- const lines = reorderList.map((name, idx) => {
240
- const marker = idx === reorderIndex ? '{bold}{cyan-fg}> ' : ' ';
241
- const end = idx === reorderIndex ? '{/cyan-fg}{/bold}' : '';
242
- return `${marker}${idx + 1}. ${name}${end}`;
243
- });
244
- prdPane.setContent(lines.join('\n'));
245
- screen.render();
246
- }
247
- function enterReorderMode(ctx) {
248
- // Only reorder non-done PRDs
249
- const nonDone = ctx.snapshot.prds.filter((p) => p.status !== 'done');
250
- if (nonDone.length === 0) {
251
- ctx.showMessage('No PRDs to reorder', 'info');
252
- return;
253
- }
254
- // Start with current priority order
255
- const sorted = sortPrdsByPriority(nonDone, ctx.config.prdPriority);
256
- reorderList = sorted.map((p) => p.name);
257
- reorderIndex = 0;
258
- reorderMode = true;
259
- // Switch focus to PRD pane
260
- focusedPaneIndex = 0;
261
- prdPane.setLabel('[ PRD Queue - Reordering ]');
262
- prdPane.style.border = { fg: 'yellow' };
263
- ctx.setEditing(true);
264
- ctx.setFooter(' \u2191\u2193:Navigate K:Move Up J:Move Down Enter:Save Esc:Cancel');
265
- renderReorderList(ctx.screen);
266
- const handlers = [
267
- {
268
- key: ['up'],
269
- handler: () => {
270
- if (reorderIndex > 0)
271
- reorderIndex--;
272
- renderReorderList(ctx.screen);
273
- },
274
- },
275
- {
276
- key: ['down'],
277
- handler: () => {
278
- if (reorderIndex < reorderList.length - 1)
279
- reorderIndex++;
280
- renderReorderList(ctx.screen);
281
- },
282
- },
283
- {
284
- key: ['S-k'],
285
- handler: () => {
286
- if (reorderIndex > 0) {
287
- [reorderList[reorderIndex - 1], reorderList[reorderIndex]] = [
288
- reorderList[reorderIndex],
289
- reorderList[reorderIndex - 1],
290
- ];
291
- reorderIndex--;
292
- renderReorderList(ctx.screen);
293
- }
294
- },
295
- },
296
- {
297
- key: ['S-j'],
298
- handler: () => {
299
- if (reorderIndex < reorderList.length - 1) {
300
- [reorderList[reorderIndex], reorderList[reorderIndex + 1]] = [
301
- reorderList[reorderIndex + 1],
302
- reorderList[reorderIndex],
303
- ];
304
- reorderIndex++;
305
- renderReorderList(ctx.screen);
306
- }
307
- },
308
- },
309
- {
310
- key: ['enter'],
311
- handler: () => {
312
- // Save priority to config
313
- const result = saveConfig(ctx.projectDir, { prdPriority: reorderList });
314
- if (result.success) {
315
- ctx.config = ctx.reloadConfig();
316
- ctx.showMessage('PRD priority saved', 'success');
317
- }
318
- else {
319
- ctx.showMessage(`Save failed: ${result.error}`, 'error');
320
- }
321
- exitReorderMode(ctx);
322
- },
323
- },
324
- {
325
- key: ['escape'],
326
- handler: () => {
327
- exitReorderMode(ctx);
328
- },
329
- },
330
- ];
331
- for (const { key, handler } of handlers) {
332
- ctx.screen.key(key, handler);
333
- }
334
- reorderKeyHandlers = handlers;
335
- }
336
- function exitReorderMode(ctx) {
337
- reorderMode = false;
338
- ctx.setEditing(false);
339
- // Unbind reorder keys
340
- for (const { key, handler } of reorderKeyHandlers) {
341
- for (const k of key) {
342
- ctx.screen.unkey(k, handler);
343
- }
344
- }
345
- reorderKeyHandlers = [];
346
- prdPane.setLabel('[ PRD Queue ]');
347
- ctx.setFooter(' Tab:Focus \u2191\u2193:Scroll p:Priority r:Refresh q:Quit');
348
- renderPanes(ctx);
349
- updatePaneFocus(ctx.screen);
350
- }
351
- return {
352
- name: 'Status',
353
- container,
354
- activate(ctx) {
355
- ctx.setFooter(' Tab:Focus \u2191\u2193:Scroll p:Priority r:Refresh q:Quit');
356
- renderPanes(ctx);
357
- updatePaneFocus(ctx.screen);
358
- keyHandlers = [
359
- {
360
- key: ['tab'],
361
- handler: () => {
362
- focusedPaneIndex = (focusedPaneIndex + 1) % panes.length;
363
- updatePaneFocus(ctx.screen);
364
- },
365
- },
366
- {
367
- key: ['up'],
368
- handler: () => {
369
- panes[focusedPaneIndex].scroll(-1);
370
- ctx.screen.render();
371
- },
372
- },
373
- {
374
- key: ['down'],
375
- handler: () => {
376
- panes[focusedPaneIndex].scroll(1);
377
- ctx.screen.render();
378
- },
379
- },
380
- {
381
- key: ['p'],
382
- handler: () => {
383
- if (!reorderMode && focusedPaneIndex === 0) {
384
- enterReorderMode(ctx);
385
- }
386
- },
387
- },
388
- ];
389
- for (const { key, handler } of keyHandlers) {
390
- ctx.screen.key(key, handler);
391
- }
392
- activeCtx = ctx;
393
- },
394
- deactivate() {
395
- if (activeCtx) {
396
- for (const { key, handler } of keyHandlers) {
397
- for (const k of key) {
398
- activeCtx.screen.unkey(k, handler);
399
- }
400
- }
401
- // Clean up reorder mode if active
402
- for (const { key, handler } of reorderKeyHandlers) {
403
- for (const k of key) {
404
- activeCtx.screen.unkey(k, handler);
405
- }
406
- }
407
- reorderKeyHandlers = [];
408
- reorderMode = false;
409
- activeCtx = null;
410
- }
411
- keyHandlers = [];
412
- },
413
- refresh(ctx) {
414
- if (!reorderMode) {
415
- renderPanes(ctx);
416
- ctx.screen.render();
417
- }
418
- },
419
- destroy() {
420
- // Nothing to clean up
421
- },
422
- };
423
- }
424
- //# sourceMappingURL=tab-status.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tab-status.js","sourceRoot":"","sources":["../../../src/commands/dashboard/tab-status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAmB,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEjF,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAA6B,EAC7B,QAAkB;IAElB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC3E,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC3E,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,GAAG,IAAI,CAAC;QACtC,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAA6B,EAAE,QAAmB;IAC9E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEpE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,SAAiB,CAAC;QACtB,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,OAAO;gBACV,SAAS,GAAG,6BAA6B,CAAC;gBAC1C,MAAM;YACR,KAAK,SAAS;gBACZ,SAAS,GAAG,+BAA+B,CAAC;gBAC5C,MAAM;YACR,KAAK,aAAa;gBAChB,SAAS,GAAG,2BAA2B,CAAC;gBACxC,MAAM;YACR,KAAK,gBAAgB;gBACnB,SAAS,GAAG,+BAA+B,CAAC;gBAC5C,MAAM;YACR,KAAK,MAAM;gBACT,SAAS,GAAG,iCAAiC,CAAC;gBAC9C,MAAM;YACR;gBACE,SAAS,GAAG,6BAA6B,CAAC;QAC9C,CAAC;QAED,IAAI,IAAI,GAAG,GAAG,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,IAAI,WAAW,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACpD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAuC;IACvE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,+BAA+B,IAAI,CAAC,IAAI,mBAAmB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACrF,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,+BAA+B,IAAI,CAAC,IAAI,eAAe,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAA2B;IACtD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,2BAA2B,CAAC;IACrC,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,IAAI,WAAmB,CAAC;QACxB,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;YACpB,KAAK,MAAM;gBACT,WAAW,GAAG,6BAA6B,CAAC;gBAC5C,MAAM;YACR,KAAK,MAAM;gBACT,WAAW,GAAG,yBAAyB,CAAC;gBACxC,MAAM;YACR,KAAK,SAAS;gBACZ,WAAW,GAAG,+BAA+B,CAAC;gBAC9C,MAAM;YACR;gBACE,WAAW,GAAG,6BAA6B,CAAC;gBAC5C,MAAM;QACV,CAAC;QAED,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,KAAK,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,GAAG,WAAW,EAAE,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB,EAAE,IAA6B;IAC7E,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAElD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,IAAI,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,OAAO,GAAG,WAAW,EAAE,CAAC;gBAC/B,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC3B,SAAS,GAAG,GAAG,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAElD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,SAAS,CAAC,IAAI,eAAe,CAAC;IAC1C,CAAC;IAED,OAAO,OAAO,SAAS,CAAC,IAAI,aAAa,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;QAC5B,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;QAC1B,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,eAAe;QACtB,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QACxB,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;QACpC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;QAClC,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,YAAY;KACtB,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;QAC9B,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,eAAe;QACtB,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QACxB,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;QACpC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;QAClC,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,YAAY;KACtB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;QACzB,GAAG,EAAE,KAAK;QACV,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,mBAAmB;QAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QACxB,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;QACpC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;QAClC,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,YAAY;KACtB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;QAC1B,GAAG,EAAE,KAAK;QACV,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QACxB,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;QACpC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;QAClC,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,YAAY;KACtB,CAAC,CAAC;IAEH,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1B,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC9B,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzB,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE1B,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,WAAW,GAAkD,EAAE,CAAC;IACpE,IAAI,SAAS,GAAuB,IAAI,CAAC;IAEzC,qBAAqB;IACrB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,WAAW,GAAa,EAAE,CAAC;IAC/B,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,kBAAkB,GAAkD,EAAE,CAAC;IAE3E,SAAS,eAAe,CAAC,MAA8B;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC5B,IAAI,KAAK,KAAK,gBAAgB,EAAE,CAAC;gBAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,WAAW,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBAC3E,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;YACtC,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IAED,SAAS,WAAW,CAAC,GAAgB;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC1B,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QACrE,WAAW,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,SAAS,iBAAiB,CAAC,MAA8B;QACvD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAG,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;YACjE,MAAM,GAAG,GAAG,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,OAAO,GAAG,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,GAAG,EAAE,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IAED,SAAS,gBAAgB,CAAC,GAAgB;QACxC,6BAA6B;QAC7B,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACrE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,oCAAoC;QACpC,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACnE,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxC,YAAY,GAAG,CAAC,CAAC;QACjB,WAAW,GAAG,IAAI,CAAC;QAEnB,2BAA2B;QAC3B,gBAAgB,GAAG,CAAC,CAAC;QACrB,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;QAExC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACrB,GAAG,CAAC,SAAS,CAAC,wEAAwE,CAAC,CAAC;QAExF,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE9B,MAAM,QAAQ,GAAkD;YAC9D;gBACE,GAAG,EAAE,CAAC,IAAI,CAAC;gBACX,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,YAAY,GAAG,CAAC;wBAAE,YAAY,EAAE,CAAC;oBACrC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAChC,CAAC;aACF;YACD;gBACE,GAAG,EAAE,CAAC,MAAM,CAAC;gBACb,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,YAAY,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;wBAAE,YAAY,EAAE,CAAC;oBAC1D,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAChC,CAAC;aACF;YACD;gBACE,GAAG,EAAE,CAAC,KAAK,CAAC;gBACZ,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;wBACrB,CAAC,WAAW,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC,GAAG;4BAC3D,WAAW,CAAC,YAAY,CAAC;4BACzB,WAAW,CAAC,YAAY,GAAG,CAAC,CAAC;yBAC9B,CAAC;wBACF,YAAY,EAAE,CAAC;wBACf,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAChC,CAAC;gBACH,CAAC;aACF;YACD;gBACE,GAAG,EAAE,CAAC,KAAK,CAAC;gBACZ,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,YAAY,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC1C,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,WAAW,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG;4BAC3D,WAAW,CAAC,YAAY,GAAG,CAAC,CAAC;4BAC7B,WAAW,CAAC,YAAY,CAAC;yBAC1B,CAAC;wBACF,YAAY,EAAE,CAAC;wBACf,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAChC,CAAC;gBACH,CAAC;aACF;YACD;gBACE,GAAG,EAAE,CAAC,OAAO,CAAC;gBACd,OAAO,EAAE,GAAG,EAAE;oBACZ,0BAA0B;oBAC1B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;oBACxE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBACnB,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;wBAChC,GAAG,CAAC,WAAW,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;oBACnD,CAAC;yBAAM,CAAC;wBACN,GAAG,CAAC,WAAW,CAAC,gBAAgB,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;oBAC3D,CAAC;oBACD,eAAe,CAAC,GAAG,CAAC,CAAC;gBACvB,CAAC;aACF;YACD;gBACE,GAAG,EAAE,CAAC,QAAQ,CAAC;gBACf,OAAO,EAAE,GAAG,EAAE;oBACZ,eAAe,CAAC,GAAG,CAAC,CAAC;gBACvB,CAAC;aACF;SACF,CAAC;QAEF,KAAK,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,QAAQ,EAAE,CAAC;YACxC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC/B,CAAC;QACD,kBAAkB,GAAG,QAAQ,CAAC;IAChC,CAAC;IAED,SAAS,eAAe,CAAC,GAAgB;QACvC,WAAW,GAAG,KAAK,CAAC;QACpB,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEtB,sBAAsB;QACtB,KAAK,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,kBAAkB,EAAE,CAAC;YAClD,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;gBACpB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,kBAAkB,GAAG,EAAE,CAAC;QAExB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAClC,GAAG,CAAC,SAAS,CAAC,gEAAgE,CAAC,CAAC;QAChF,WAAW,CAAC,GAAG,CAAC,CAAC;QACjB,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,SAAS;QACT,QAAQ,CAAC,GAAgB;YACvB,GAAG,CAAC,SAAS,CAAC,gEAAgE,CAAC,CAAC;YAChF,WAAW,CAAC,GAAG,CAAC,CAAC;YACjB,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAE5B,WAAW,GAAG;gBACZ;oBACE,GAAG,EAAE,CAAC,KAAK,CAAC;oBACZ,OAAO,EAAE,GAAG,EAAE;wBACZ,gBAAgB,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;wBACzD,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC9B,CAAC;iBACF;gBACD;oBACE,GAAG,EAAE,CAAC,IAAI,CAAC;oBACX,OAAO,EAAE,GAAG,EAAE;wBACZ,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;wBACnC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;oBACtB,CAAC;iBACF;gBACD;oBACE,GAAG,EAAE,CAAC,MAAM,CAAC;oBACb,OAAO,EAAE,GAAG,EAAE;wBACZ,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;wBAClC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;oBACtB,CAAC;iBACF;gBACD;oBACE,GAAG,EAAE,CAAC,GAAG,CAAC;oBACV,OAAO,EAAE,GAAG,EAAE;wBACZ,IAAI,CAAC,WAAW,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;4BAC3C,gBAAgB,CAAC,GAAG,CAAC,CAAC;wBACxB,CAAC;oBACH,CAAC;iBACF;aACF,CAAC;YAEF,KAAK,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC;gBAC3C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC/B,CAAC;YACD,SAAS,GAAG,GAAG,CAAC;QAClB,CAAC;QACD,UAAU;YACR,IAAI,SAAS,EAAE,CAAC;gBACd,KAAK,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC;oBAC3C,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;wBACpB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;gBACD,kCAAkC;gBAClC,KAAK,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,kBAAkB,EAAE,CAAC;oBAClD,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;wBACpB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;gBACD,kBAAkB,GAAG,EAAE,CAAC;gBACxB,WAAW,GAAG,KAAK,CAAC;gBACpB,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;YACD,WAAW,GAAG,EAAE,CAAC;QACnB,CAAC;QACD,OAAO,CAAC,GAAgB;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,WAAW,CAAC,GAAG,CAAC,CAAC;gBACjB,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACtB,CAAC;QACH,CAAC;QACD,OAAO;YACL,sBAAsB;QACxB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,42 +0,0 @@
1
- /**
2
- * Shared interfaces for the dashboard tab system
3
- */
4
- import blessed from 'blessed';
5
- import { INightWatchConfig, IStatusSnapshot } from '@night-watch/core';
6
- /**
7
- * Context passed to each tab for accessing shared state and utilities
8
- */
9
- export interface ITabContext {
10
- screen: blessed.Widgets.Screen;
11
- projectDir: string;
12
- config: INightWatchConfig;
13
- snapshot: IStatusSnapshot;
14
- /** Reload config from disk after a save */
15
- reloadConfig: () => INightWatchConfig;
16
- /** Re-fetch status snapshot with current config */
17
- refreshSnapshot: () => Promise<IStatusSnapshot>;
18
- /** Update the footer text with tab-specific shortcuts */
19
- setFooter: (text: string) => void;
20
- /** Show a temporary flash message (success/error/info) */
21
- showMessage: (text: string, type: 'success' | 'error' | 'info', durationMs?: number) => void;
22
- /** Set the editing state to suppress global key handlers */
23
- setEditing: (editing: boolean) => void;
24
- }
25
- /**
26
- * Interface that each dashboard tab must implement
27
- */
28
- export interface ITab {
29
- /** Display name for the tab bar */
30
- name: string;
31
- /** The blessed container element for this tab's content */
32
- container: blessed.Widgets.BoxElement;
33
- /** Called when the tab becomes active */
34
- activate: (ctx: ITabContext) => void;
35
- /** Called when the tab is deactivated */
36
- deactivate: () => void;
37
- /** Called on the global refresh timer tick */
38
- refresh: (ctx: ITabContext) => void;
39
- /** Called to clean up before screen destruction */
40
- destroy: () => void;
41
- }
42
- //# sourceMappingURL=types.d.ts.map
@@ -1,5 +0,0 @@
1
- /**
2
- * Shared interfaces for the dashboard tab system
3
- */
4
- export {};
5
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/dashboard/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Dashboard command for Night Watch CLI
3
- * Tabbed TUI with Status, Config, Schedules, Actions, and Logs tabs
4
- */
5
- import { Command } from 'commander';
6
- export { renderPrdPane, renderProcessPane, renderPrPane, renderLogPane, } from './dashboard/tab-status.js';
7
- export interface IDashboardOptions {
8
- interval: string;
9
- }
10
- export declare function dashboardCommand(program: Command): void;
11
- //# sourceMappingURL=dashboard.d.ts.map