@jonit-dev/night-watch-cli 1.8.10-beta.8 → 1.8.12-beta.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 (136) hide show
  1. package/dist/cli.js +113 -29
  2. package/dist/commands/init.d.ts.map +1 -1
  3. package/dist/commands/init.js +3 -1
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/commands/review.d.ts.map +1 -1
  6. package/dist/commands/review.js +48 -7
  7. package/dist/commands/review.js.map +1 -1
  8. package/dist/commands/run.d.ts.map +1 -1
  9. package/dist/commands/run.js +8 -6
  10. package/dist/commands/run.js.map +1 -1
  11. package/dist/scripts/night-watch-audit-cron.sh +6 -0
  12. package/dist/scripts/night-watch-cron.sh +30 -9
  13. package/dist/scripts/night-watch-helpers.sh +77 -5
  14. package/dist/scripts/night-watch-pr-reviewer-cron.sh +176 -43
  15. package/dist/scripts/night-watch-qa-cron.sh +6 -0
  16. package/dist/templates/night-watch.config.json +21 -1
  17. package/dist/web/assets/index-B6E6kOoR.js +406 -0
  18. package/dist/web/assets/index-C3BV1Hoa.js +406 -0
  19. package/dist/web/assets/index-DIMUXIP8.css +1 -0
  20. package/dist/web/assets/index-Ds8OqaCa.css +1 -0
  21. package/dist/web/assets/index-NR27JE3b.js +406 -0
  22. package/dist/web/index.html +2 -2
  23. package/package.json +1 -1
  24. package/dist/cli.d.ts +0 -3
  25. package/dist/cli.js.map +0 -1
  26. package/dist/commands/analytics.d.ts +0 -14
  27. package/dist/commands/analytics.js +0 -69
  28. package/dist/commands/analytics.js.map +0 -1
  29. package/dist/commands/audit.d.ts +0 -19
  30. package/dist/commands/audit.js +0 -144
  31. package/dist/commands/audit.js.map +0 -1
  32. package/dist/commands/board.d.ts +0 -9
  33. package/dist/commands/board.js +0 -702
  34. package/dist/commands/board.js.map +0 -1
  35. package/dist/commands/cancel.d.ts +0 -46
  36. package/dist/commands/cancel.js +0 -239
  37. package/dist/commands/cancel.js.map +0 -1
  38. package/dist/commands/cron.d.ts +0 -8
  39. package/dist/commands/cron.js +0 -134
  40. package/dist/commands/cron.js.map +0 -1
  41. package/dist/commands/dashboard/tab-actions.d.ts +0 -10
  42. package/dist/commands/dashboard/tab-actions.js +0 -247
  43. package/dist/commands/dashboard/tab-actions.js.map +0 -1
  44. package/dist/commands/dashboard/tab-config.d.ts +0 -21
  45. package/dist/commands/dashboard/tab-config.js +0 -874
  46. package/dist/commands/dashboard/tab-config.js.map +0 -1
  47. package/dist/commands/dashboard/tab-logs.d.ts +0 -10
  48. package/dist/commands/dashboard/tab-logs.js +0 -202
  49. package/dist/commands/dashboard/tab-logs.js.map +0 -1
  50. package/dist/commands/dashboard/tab-schedules.d.ts +0 -21
  51. package/dist/commands/dashboard/tab-schedules.js +0 -320
  52. package/dist/commands/dashboard/tab-schedules.js.map +0 -1
  53. package/dist/commands/dashboard/tab-status.d.ts +0 -32
  54. package/dist/commands/dashboard/tab-status.js +0 -424
  55. package/dist/commands/dashboard/tab-status.js.map +0 -1
  56. package/dist/commands/dashboard/types.d.ts +0 -42
  57. package/dist/commands/dashboard/types.js +0 -5
  58. package/dist/commands/dashboard/types.js.map +0 -1
  59. package/dist/commands/dashboard.d.ts +0 -11
  60. package/dist/commands/dashboard.js +0 -242
  61. package/dist/commands/dashboard.js.map +0 -1
  62. package/dist/commands/doctor.d.ts +0 -16
  63. package/dist/commands/doctor.js +0 -195
  64. package/dist/commands/doctor.js.map +0 -1
  65. package/dist/commands/history.d.ts +0 -7
  66. package/dist/commands/history.js +0 -49
  67. package/dist/commands/history.js.map +0 -1
  68. package/dist/commands/init.d.ts +0 -45
  69. package/dist/commands/install.d.ts +0 -65
  70. package/dist/commands/install.js +0 -405
  71. package/dist/commands/install.js.map +0 -1
  72. package/dist/commands/logs.d.ts +0 -15
  73. package/dist/commands/logs.js +0 -155
  74. package/dist/commands/logs.js.map +0 -1
  75. package/dist/commands/merge.d.ts +0 -26
  76. package/dist/commands/merge.js +0 -159
  77. package/dist/commands/merge.js.map +0 -1
  78. package/dist/commands/notify.d.ts +0 -7
  79. package/dist/commands/notify.js +0 -43
  80. package/dist/commands/notify.js.map +0 -1
  81. package/dist/commands/plan.d.ts +0 -19
  82. package/dist/commands/plan.js +0 -88
  83. package/dist/commands/plan.js.map +0 -1
  84. package/dist/commands/prd-state.d.ts +0 -12
  85. package/dist/commands/prd-state.js +0 -47
  86. package/dist/commands/prd-state.js.map +0 -1
  87. package/dist/commands/prd.d.ts +0 -18
  88. package/dist/commands/prd.js +0 -363
  89. package/dist/commands/prd.js.map +0 -1
  90. package/dist/commands/prds.d.ts +0 -13
  91. package/dist/commands/prds.js +0 -194
  92. package/dist/commands/prds.js.map +0 -1
  93. package/dist/commands/prs.d.ts +0 -14
  94. package/dist/commands/prs.js +0 -104
  95. package/dist/commands/prs.js.map +0 -1
  96. package/dist/commands/qa.d.ts +0 -34
  97. package/dist/commands/qa.js +0 -214
  98. package/dist/commands/qa.js.map +0 -1
  99. package/dist/commands/queue.d.ts +0 -8
  100. package/dist/commands/queue.js +0 -378
  101. package/dist/commands/queue.js.map +0 -1
  102. package/dist/commands/resolve.d.ts +0 -26
  103. package/dist/commands/resolve.js +0 -186
  104. package/dist/commands/resolve.js.map +0 -1
  105. package/dist/commands/retry.d.ts +0 -9
  106. package/dist/commands/retry.js +0 -71
  107. package/dist/commands/retry.js.map +0 -1
  108. package/dist/commands/review.d.ts +0 -82
  109. package/dist/commands/run.d.ts +0 -73
  110. package/dist/commands/serve.d.ts +0 -19
  111. package/dist/commands/serve.js +0 -142
  112. package/dist/commands/serve.js.map +0 -1
  113. package/dist/commands/shared/env-builder.d.ts +0 -49
  114. package/dist/commands/shared/env-builder.js +0 -151
  115. package/dist/commands/shared/env-builder.js.map +0 -1
  116. package/dist/commands/slice.d.ts +0 -35
  117. package/dist/commands/slice.js +0 -316
  118. package/dist/commands/slice.js.map +0 -1
  119. package/dist/commands/state.d.ts +0 -8
  120. package/dist/commands/state.js +0 -54
  121. package/dist/commands/state.js.map +0 -1
  122. package/dist/commands/status.d.ts +0 -14
  123. package/dist/commands/status.js +0 -297
  124. package/dist/commands/status.js.map +0 -1
  125. package/dist/commands/summary.d.ts +0 -14
  126. package/dist/commands/summary.js +0 -193
  127. package/dist/commands/summary.js.map +0 -1
  128. package/dist/commands/uninstall.d.ts +0 -25
  129. package/dist/commands/uninstall.js +0 -134
  130. package/dist/commands/uninstall.js.map +0 -1
  131. package/dist/commands/update.d.ts +0 -22
  132. package/dist/commands/update.js +0 -90
  133. package/dist/commands/update.js.map +0 -1
  134. package/dist/web/assets/index-BmRrWWHn.js +0 -406
  135. package/dist/web/assets/index-CgXj_KM1.css +0 -1
  136. package/dist/web/assets/index-Dr4zlyJf.js +0 -406
@@ -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