github-issue-tower-defence-management 1.134.0 → 1.135.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 (45) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +5 -4
  3. package/bin/adapter/entry-points/cli/index.js +11 -1
  4. package/bin/adapter/entry-points/cli/index.js.map +1 -1
  5. package/bin/adapter/entry-points/cli/projectConfig.js +21 -0
  6. package/bin/adapter/entry-points/cli/projectConfig.js.map +1 -1
  7. package/bin/adapter/entry-points/console/dashboardComposeService.js +18 -0
  8. package/bin/adapter/entry-points/console/dashboardComposeService.js.map +1 -1
  9. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +81 -54
  10. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
  11. package/bin/adapter/entry-points/handlers/machineStatusWriter.js +6 -0
  12. package/bin/adapter/entry-points/handlers/machineStatusWriter.js.map +1 -1
  13. package/bin/adapter/repositories/ProcHostMetricsRepository.js +4 -0
  14. package/bin/adapter/repositories/ProcHostMetricsRepository.js.map +1 -1
  15. package/bin/domain/usecases/dashboard/ComposeDashboardUseCase.js +26 -4
  16. package/bin/domain/usecases/dashboard/ComposeDashboardUseCase.js.map +1 -1
  17. package/package.json +1 -1
  18. package/src/adapter/entry-points/cli/index.test.ts +42 -1
  19. package/src/adapter/entry-points/cli/index.ts +20 -1
  20. package/src/adapter/entry-points/cli/projectConfig.test.ts +75 -0
  21. package/src/adapter/entry-points/cli/projectConfig.ts +31 -0
  22. package/src/adapter/entry-points/console/dashboardComposeService.test.ts +32 -0
  23. package/src/adapter/entry-points/console/dashboardComposeService.ts +20 -0
  24. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.test.ts +66 -0
  25. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +7 -1
  26. package/src/adapter/entry-points/handlers/machineStatusWriter.test.ts +61 -0
  27. package/src/adapter/entry-points/handlers/machineStatusWriter.ts +17 -0
  28. package/src/adapter/repositories/ProcHostMetricsRepository.test.ts +25 -0
  29. package/src/adapter/repositories/ProcHostMetricsRepository.ts +5 -0
  30. package/src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.test.ts +26 -3
  31. package/src/domain/usecases/dashboard/ComposeDashboardUseCase.test.ts +55 -0
  32. package/src/domain/usecases/dashboard/ComposeDashboardUseCase.ts +34 -5
  33. package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
  34. package/types/adapter/entry-points/cli/projectConfig.d.ts +5 -0
  35. package/types/adapter/entry-points/cli/projectConfig.d.ts.map +1 -1
  36. package/types/adapter/entry-points/console/dashboardComposeService.d.ts.map +1 -1
  37. package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts +1 -1
  38. package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
  39. package/types/adapter/entry-points/handlers/machineStatusWriter.d.ts +7 -0
  40. package/types/adapter/entry-points/handlers/machineStatusWriter.d.ts.map +1 -1
  41. package/types/adapter/repositories/ProcHostMetricsRepository.d.ts +1 -0
  42. package/types/adapter/repositories/ProcHostMetricsRepository.d.ts.map +1 -1
  43. package/types/domain/usecases/dashboard/ComposeDashboardUseCase.d.ts +6 -1
  44. package/types/domain/usecases/dashboard/ComposeDashboardUseCase.d.ts.map +1 -1
  45. package/types/index.d.ts +1 -1
@@ -2107,7 +2107,7 @@ describe('ApiV3CheerioRestIssueRepository', () => {
2107
2107
  fetchSpy: FetchSpy,
2108
2108
  predicate: (url: string, body: string) => boolean,
2109
2109
  ): number =>
2110
- fetchSpy.mock.calls.filter(([input, init]) =>
2110
+ fetchSpy.mock.calls.filter(([input, init]: Parameters<typeof fetch>) =>
2111
2111
  predicate(requestUrlOf(input), requestBodyOf(init)),
2112
2112
  ).length;
2113
2113
 
@@ -2287,6 +2287,28 @@ describe('ApiV3CheerioRestIssueRepository', () => {
2287
2287
  expect(result?.isCiStateSuccess).toBe(true);
2288
2288
  expect(result?.isPassedAllCiJob).toBe(true);
2289
2289
  });
2290
+
2291
+ it('returns isCiStateSuccess true when check run conclusions are neutral or skipped', async () => {
2292
+ mockFetchRoutes({
2293
+ slimPullRequest: () => buildSlimPullRequestResponse(),
2294
+ checkRuns: () => ({
2295
+ total_count: 2,
2296
+ check_runs: [
2297
+ { id: 100, name: 'lint', conclusion: 'neutral' },
2298
+ { id: 200, name: 'docs', conclusion: 'skipped' },
2299
+ ],
2300
+ }),
2301
+ });
2302
+
2303
+ const { repository } = createApiV3CheerioRestIssueRepository();
2304
+ const result = await repository.getOpenPullRequest(
2305
+ 'https://github.com/HiromiShikata/test-repository/pull/31',
2306
+ );
2307
+
2308
+ expect(result).not.toBeNull();
2309
+ expect(result?.isCiStateSuccess).toBe(true);
2310
+ expect(result?.isPassedAllCiJob).toBe(true);
2311
+ });
2290
2312
  });
2291
2313
 
2292
2314
  describe('getOpenPullRequest required check resolution via REST', () => {
@@ -2625,13 +2647,14 @@ describe('ApiV3CheerioRestIssueRepository', () => {
2625
2647
  ),
2626
2648
  ).toBe(2);
2627
2649
  const secondSlimCall = fetchSpy.mock.calls
2628
- .map(([input, init]) =>
2650
+ .map(([input, init]): GraphqlRequestBody | null =>
2629
2651
  requestUrlOf(input) === 'https://api.github.com/graphql'
2630
2652
  ? parseGraphqlRequestBody(init)
2631
2653
  : null,
2632
2654
  )
2633
2655
  .filter(
2634
- (body) => body !== null && body.query.includes('headRefOid'),
2656
+ (body): body is GraphqlRequestBody =>
2657
+ body !== null && body.query.includes('headRefOid'),
2635
2658
  )[1];
2636
2659
  expect(secondSlimCall?.variables.reviewThreadsAfter).toBe('cursor-1');
2637
2660
  });
@@ -120,6 +120,61 @@ describe('formatMachineStatusLines', () => {
120
120
  ).toEqual(['M55% C62% D?% cy13', 'LA 16 23 40']);
121
121
  });
122
122
 
123
+ it('renders each configured partition as title and percent on a disk line', () => {
124
+ expect(
125
+ formatMachineStatusLines({
126
+ memPct: 55,
127
+ cpuPct: 62,
128
+ diskPct: 89,
129
+ disks: [
130
+ { title: 'D', pct: 89 },
131
+ { title: 'S', pct: 41 },
132
+ ],
133
+ load: [16, 23, 40],
134
+ cycleMinutes: 13,
135
+ }),
136
+ ).toEqual(['M55% C62% cy13', 'D89% S41%', 'LA 16 23 40']);
137
+ });
138
+
139
+ it('wraps partitions onto a second disk line when they exceed the width budget', () => {
140
+ const lines = formatMachineStatusLines({
141
+ memPct: 55,
142
+ cpuPct: 62,
143
+ diskPct: 89,
144
+ disks: [
145
+ { title: 'D', pct: 100 },
146
+ { title: 'S', pct: 100 },
147
+ { title: 'A', pct: 100 },
148
+ { title: 'B', pct: 100 },
149
+ { title: 'C', pct: 100 },
150
+ { title: 'E', pct: 100 },
151
+ { title: 'F', pct: 100 },
152
+ ],
153
+ load: [16, 23, 40],
154
+ cycleMinutes: 13,
155
+ });
156
+ expect(lines[0]).toBe('M55% C62% cy13');
157
+ expect(lines[lines.length - 1]).toBe('LA 16 23 40');
158
+ expect(lines.length).toBeGreaterThan(3);
159
+ for (const line of lines) {
160
+ expect(codePointLength(line)).toBeLessThanOrEqual(
161
+ PROJECT_ROW_WIDTH_BUDGET,
162
+ );
163
+ }
164
+ });
165
+
166
+ it('renders the single disk percent when no disks list is present', () => {
167
+ expect(
168
+ formatMachineStatusLines({
169
+ memPct: 55,
170
+ cpuPct: 62,
171
+ diskPct: 89,
172
+ load: [16, 23, 40],
173
+ cycleMinutes: 13,
174
+ }),
175
+ ).toEqual(['M55% C62% D89% cy13', 'LA 16 23 40']);
176
+ });
177
+
123
178
  it('keeps both lines within the 32 character width budget at worst case', () => {
124
179
  const lines = formatMachineStatusLines({
125
180
  memPct: 100,
@@ -8,10 +8,16 @@ export type ComposeDashboardProject = {
8
8
  row: DashboardRow | null;
9
9
  };
10
10
 
11
+ export type ComposeDashboardDisk = {
12
+ title: string;
13
+ pct: number;
14
+ };
15
+
11
16
  export type ComposeDashboardMachineStatus = {
12
17
  memPct: number | null;
13
18
  cpuPct: number | null;
14
19
  diskPct: number | null;
20
+ disks?: ComposeDashboardDisk[] | null;
15
21
  load: [number, number, number] | null;
16
22
  cycleMinutes: number | null;
17
23
  };
@@ -98,9 +104,27 @@ export const formatResetCountdown = (totalSeconds: number): string => {
98
104
  )}`;
99
105
  };
100
106
 
107
+ const packTokensWithinBudget = (tokens: string[]): string[] => {
108
+ const lines: string[] = [];
109
+ let current = '';
110
+ for (const token of tokens) {
111
+ const candidate = current === '' ? token : `${current} ${token}`;
112
+ if (current !== '' && candidate.length > PROJECT_ROW_WIDTH_BUDGET) {
113
+ lines.push(current);
114
+ current = token;
115
+ } else {
116
+ current = candidate;
117
+ }
118
+ }
119
+ if (current !== '') {
120
+ lines.push(current);
121
+ }
122
+ return lines;
123
+ };
124
+
101
125
  export const formatMachineStatusLines = (
102
126
  machineStatus: ComposeDashboardMachineStatus | null,
103
- ): [string, string] => {
127
+ ): string[] => {
104
128
  const memText =
105
129
  machineStatus !== null && machineStatus.memPct !== null
106
130
  ? `${machineStatus.memPct}%`
@@ -121,10 +145,15 @@ export const formatMachineStatusLines = (
121
145
  machineStatus !== null && machineStatus.cycleMinutes !== null
122
146
  ? `cy${machineStatus.cycleMinutes}`
123
147
  : 'cy-';
124
- return [
125
- `M${memText} C${cpuText} D${diskText} ${cycle}`,
126
- `LA ${oneMinute} ${fiveMinute} ${fifteenMinute}`,
127
- ];
148
+ const loadLine = `LA ${oneMinute} ${fiveMinute} ${fifteenMinute}`;
149
+ const disks =
150
+ machineStatus !== null && machineStatus.disks ? machineStatus.disks : null;
151
+ if (disks !== null && disks.length > 0) {
152
+ const diskTokens = disks.map((disk) => `${disk.title}${disk.pct}%`);
153
+ const diskLines = packTokensWithinBudget(diskTokens);
154
+ return [`M${memText} C${cpuText} ${cycle}`, ...diskLines, loadLine];
155
+ }
156
+ return [`M${memText} C${cpuText} D${diskText} ${cycle}`, loadLine];
128
157
  };
129
158
 
130
159
  const capThreeDigits = (value: number): string =>
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,UAAU,EACV,cAAc,EACd,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAqIzB,eAAO,MAAM,OAAO,SAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,UAAU,EACV,cAAc,EACd,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAgJzB,eAAO,MAAM,OAAO,SAAgB,CAAC"}
@@ -21,6 +21,11 @@ export type ConfigFile = {
21
21
  changeTargetPathAliases?: Record<string, string>;
22
22
  consoleAccessToken?: string;
23
23
  consoleProjects?: Record<string, string>;
24
+ disks?: DiskConfig[];
25
+ };
26
+ export type DiskConfig = {
27
+ title: string;
28
+ mountpoint: string;
24
29
  };
25
30
  export declare const isRecord: (value: unknown) => value is Record<string, unknown>;
26
31
  export declare const loadConfigFile: (configFilePath: string) => ConfigFile;
@@ -1 +1 @@
1
- {"version":3,"file":"projectConfig.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/projectConfig.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C,CAAC;AAsDF,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CACH,CAAC;AAqBvE,eAAO,MAAM,cAAc,GAAI,gBAAgB,MAAM,KAAG,UA8DvD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,aAAa,MAAM,KAClB,UAuEF,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,YAAY,UAAU,EACtB,cAAc,UAAU,EACxB,iBAAiB,UAAU,KAC1B,UA2ED,CAAC;AAkBH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,MAAM,EAClB,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAoDvB,CAAC"}
1
+ {"version":3,"file":"projectConfig.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/projectConfig.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAsDF,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CACH,CAAC;AA4CvE,eAAO,MAAM,cAAc,GAAI,gBAAgB,MAAM,KAAG,UA+DvD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,aAAa,MAAM,KAClB,UAuEF,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,YAAY,UAAU,EACtB,cAAc,UAAU,EACxB,iBAAiB,UAAU,KAC1B,UA4ED,CAAC;AAkBH,eAAO,MAAM,kBAAkB,GAC7B,YAAY,MAAM,EAClB,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAoDvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"dashboardComposeService.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/dashboardComposeService.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,qBAAqB,EAItB,MAAM,4DAA4D,CAAC;AAQpE,MAAM,MAAM,uBAAuB,GAAG;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AA8IF,eAAO,MAAM,0BAA0B,GACrC,SAAS,uBAAuB,KAC/B,qBAYF,CAAC;AAUF,eAAO,MAAM,4BAA4B,GACvC,SAAS,uBAAuB,KAC/B,OAYF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,uBAAuB,KAC/B,MACqE,CAAC"}
1
+ {"version":3,"file":"dashboardComposeService.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/console/dashboardComposeService.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,qBAAqB,EAItB,MAAM,4DAA4D,CAAC;AAQpE,MAAM,MAAM,uBAAuB,GAAG;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAiKF,eAAO,MAAM,0BAA0B,GACrC,SAAS,uBAAuB,KAC/B,qBAYF,CAAC;AAUF,eAAO,MAAM,4BAA4B,GACvC,SAAS,uBAAuB,KAC/B,OAYF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,uBAAuB,KAC/B,MACqE,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { Issue } from '../../../domain/entities/Issue';
2
2
  import { Project } from '../../../domain/entities/Project';
3
3
  export declare class HandleScheduledEventUseCaseHandler {
4
- handle: (configFilePath: string, _verbose: boolean) => Promise<{
4
+ handle: (configFilePath: string, _verbose: boolean, inTmuxProjectOrderOverride?: string[] | null) => Promise<{
5
5
  project: Project;
6
6
  issues: Issue[];
7
7
  cacheUsed: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"HandleScheduledEventUseCaseHandler.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts"],"names":[],"mappings":"AAkCA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAiD3D,qBAAa,kCAAkC;IAC7C,MAAM,GACJ,gBAAgB,MAAM,EACtB,UAAU,OAAO,KAChB,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,eAAe,EAAE,IAAI,EAAE,CAAC;KACzB,GAAG,IAAI,CAAC,CAklBP;CACH"}
1
+ {"version":3,"file":"HandleScheduledEventUseCaseHandler.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts"],"names":[],"mappings":"AAkCA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAiD3D,qBAAa,kCAAkC;IAC7C,MAAM,GACJ,gBAAgB,MAAM,EACtB,UAAU,OAAO,EACjB,6BAA4B,MAAM,EAAE,GAAG,IAAW,KACjD,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,eAAe,EAAE,IAAI,EAAE,CAAC;KACzB,GAAG,IAAI,CAAC,CAulBP;CACH"}
@@ -1,14 +1,21 @@
1
+ import { DiskConfig } from '../cli/projectConfig';
1
2
  import { ProcHostMetricsRepository } from '../../repositories/ProcHostMetricsRepository';
2
3
  export type MachineStatusWriterParams = {
3
4
  dashboardDataDir: string | null | undefined;
4
5
  allIssuesCacheDir: string | null | undefined;
6
+ disks?: DiskConfig[] | null;
5
7
  hostMetricsRepository?: ProcHostMetricsRepository;
6
8
  now?: Date;
7
9
  };
10
+ export type MachineStatusDisk = {
11
+ title: string;
12
+ pct: number;
13
+ };
8
14
  export type MachineStatusFile = {
9
15
  memPct: number;
10
16
  cpuPct: number;
11
17
  diskPct: number;
18
+ disks?: MachineStatusDisk[];
12
19
  load: [number, number, number];
13
20
  cycleMinutes: number | null;
14
21
  lastFetchedAt: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"machineStatusWriter.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/machineStatusWriter.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,yBAAyB,EAE1B,MAAM,8CAA8C,CAAC;AAEtD,MAAM,MAAM,yBAAyB,GAAG;IACtC,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7C,qBAAqB,CAAC,EAAE,yBAAyB,CAAC;IAClD,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAgCF,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,yBAAyB,KAChC,OAAO,CAAC,IAAI,CAoCd,CAAC"}
1
+ {"version":3,"file":"machineStatusWriter.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/machineStatusWriter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EACL,yBAAyB,EAE1B,MAAM,8CAA8C,CAAC;AAEtD,MAAM,MAAM,yBAAyB,GAAG;IACtC,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7C,KAAK,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAC5B,qBAAqB,CAAC,EAAE,yBAAyB,CAAC;IAClD,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAgCF,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,yBAAyB,KAChC,OAAO,CAAC,IAAI,CA6Cd,CAAC"}
@@ -28,5 +28,6 @@ export declare class ProcHostMetricsRepository {
28
28
  readCpuUsedPercent: () => Promise<number>;
29
29
  readLoadAverages: () => LoadAverages;
30
30
  readDiskUsedPercent: () => number;
31
+ readDiskUsedPercentForMountpoint: (mountpoint: string) => number;
31
32
  }
32
33
  //# sourceMappingURL=ProcHostMetricsRepository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProcHostMetricsRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/ProcHostMetricsRepository.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAMF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,aAAa,MAAM,KAAG,MA2B5D,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,UAAU,MAAM,KAAG,SAiBjD,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,OAAO,SAAS,EAChB,QAAQ,SAAS,KAChB,MAQF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,EACd,OAAO,MAAM,EACb,QAAQ,MAAM,KACb,MAOF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,aAAa,MAAM,KAAG,YAavD,CAAC;AAEF,eAAO,MAAM,+BAA+B,GAC1C,sBAAsB,MAAM,GAAG,IAAI,EACnC,qBAAqB,MAAM,GAAG,IAAI,KACjC,MAAM,GAAG,IAUX,CAAC;AAEF,qBAAa,yBAAyB;IAElC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAMtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAU/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAjBR,aAAa,GAAE,MAA+B,EAC9C,KAAK,GAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAK1D,EACa,cAAc,GAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,UAStD,EACgB,QAAQ,GAAE,MAA0B;IAGvD,qBAAqB,QAAO,MAAM,CAG9B;IAEJ,kBAAkB,QAAa,OAAO,CAAC,MAAM,CAAC,CAS5C;IAEF,gBAAgB,QAAO,YAAY,CAG/B;IAEJ,mBAAmB,QAAO,MAAM,CAG9B;CACH"}
1
+ {"version":3,"file":"ProcHostMetricsRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/ProcHostMetricsRepository.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAMF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,aAAa,MAAM,KAAG,MA2B5D,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,UAAU,MAAM,KAAG,SAiBjD,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,OAAO,SAAS,EAChB,QAAQ,SAAS,KAChB,MAQF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,EACd,OAAO,MAAM,EACb,QAAQ,MAAM,KACb,MAOF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,aAAa,MAAM,KAAG,YAavD,CAAC;AAEF,eAAO,MAAM,+BAA+B,GAC1C,sBAAsB,MAAM,GAAG,IAAI,EACnC,qBAAqB,MAAM,GAAG,IAAI,KACjC,MAAM,GAAG,IAUX,CAAC;AAEF,qBAAa,yBAAyB;IAElC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAMtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAU/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAjBR,aAAa,GAAE,MAA+B,EAC9C,KAAK,GAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAK1D,EACa,cAAc,GAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,UAStD,EACgB,QAAQ,GAAE,MAA0B;IAGvD,qBAAqB,QAAO,MAAM,CAG9B;IAEJ,kBAAkB,QAAa,OAAO,CAAC,MAAM,CAAC,CAS5C;IAEF,gBAAgB,QAAO,YAAY,CAG/B;IAEJ,mBAAmB,QAAO,MAAM,CAG9B;IAEF,gCAAgC,GAAI,YAAY,MAAM,KAAG,MAAM,CAG7D;CACH"}
@@ -5,10 +5,15 @@ export type ComposeDashboardProject = {
5
5
  code: string;
6
6
  row: DashboardRow | null;
7
7
  };
8
+ export type ComposeDashboardDisk = {
9
+ title: string;
10
+ pct: number;
11
+ };
8
12
  export type ComposeDashboardMachineStatus = {
9
13
  memPct: number | null;
10
14
  cpuPct: number | null;
11
15
  diskPct: number | null;
16
+ disks?: ComposeDashboardDisk[] | null;
12
17
  load: [number, number, number] | null;
13
18
  cycleMinutes: number | null;
14
19
  };
@@ -19,7 +24,7 @@ export type ComposeDashboardInput = {
19
24
  };
20
25
  export declare const roundHalfToEven: (value: number) => number;
21
26
  export declare const formatResetCountdown: (totalSeconds: number) => string;
22
- export declare const formatMachineStatusLines: (machineStatus: ComposeDashboardMachineStatus | null) => [string, string];
27
+ export declare const formatMachineStatusLines: (machineStatus: ComposeDashboardMachineStatus | null) => string[];
23
28
  export declare const formatProjectHeaderLine: () => string;
24
29
  export declare const formatProjectRowLine: (project: ComposeDashboardProject) => string;
25
30
  export declare const formatTokenRowLine: (token: TokenStatus) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"ComposeDashboardUseCase.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/dashboard/ComposeDashboardUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAoB,MAAM,8BAA8B,CAAC;AAE7E,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACtC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,aAAa,EAAE,6BAA6B,GAAG,IAAI,CAAC;IACpD,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB,CAAC;AAmDF,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,KAAG,MAU/C,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,cAAc,MAAM,KAAG,MAa3D,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,eAAe,6BAA6B,GAAG,IAAI,KAClD,CAAC,MAAM,EAAE,MAAM,CAyBjB,CAAC;AAKF,eAAO,MAAM,uBAAuB,QAAO,MAM1C,CAAC;AAkBF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,uBAAuB,KAC/B,MAQF,CAAC;AA6BF,eAAO,MAAM,kBAAkB,GAAI,OAAO,WAAW,KAAG,MAcvD,CAAC;AAKF,qBAAa,uBAAuB;IAClC,GAAG,GAAI,OAAO,qBAAqB,KAAG,MAAM,CAW1C;CACH"}
1
+ {"version":3,"file":"ComposeDashboardUseCase.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/dashboard/ComposeDashboardUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAoB,MAAM,8BAA8B,CAAC;AAE7E,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;IACtC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACtC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,aAAa,EAAE,6BAA6B,GAAG,IAAI,CAAC;IACpD,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB,CAAC;AAmDF,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,KAAG,MAU/C,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,cAAc,MAAM,KAAG,MAa3D,CAAC;AAoBF,eAAO,MAAM,wBAAwB,GACnC,eAAe,6BAA6B,GAAG,IAAI,KAClD,MAAM,EA8BR,CAAC;AAKF,eAAO,MAAM,uBAAuB,QAAO,MAM1C,CAAC;AAkBF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,uBAAuB,KAC/B,MAQF,CAAC;AA6BF,eAAO,MAAM,kBAAkB,GAAI,OAAO,WAAW,KAAG,MAcvD,CAAC;AAKF,qBAAa,uBAAuB;IAClC,GAAG,GAAI,OAAO,qBAAqB,KAAG,MAAM,CAW1C;CACH"}
package/types/index.d.ts CHANGED
@@ -2,7 +2,7 @@ import { getStoryObjectMap } from './adapter/entry-points/function/getStoryObjec
2
2
  export declare const hello: (name: string) => string;
3
3
  export { Project } from './domain/entities/Project';
4
4
  export { Issue } from './domain/entities/Issue';
5
- export declare const scheduledEvent: (configFilePath: string, _verbose: boolean) => Promise<{
5
+ export declare const scheduledEvent: (configFilePath: string, _verbose: boolean, inTmuxProjectOrderOverride?: string[] | null) => Promise<{
6
6
  project: import("./domain/entities/Project").Project;
7
7
  issues: import("./domain/entities/Issue").Issue[];
8
8
  cacheUsed: boolean;