github-issue-tower-defence-management 1.87.0 → 1.88.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.
- package/CHANGELOG.md +7 -0
- package/README.md +42 -0
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +54 -12
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
- package/bin/adapter/entry-points/handlers/inTmuxByHumanDataWriter.js +67 -0
- package/bin/adapter/entry-points/handlers/inTmuxByHumanDataWriter.js.map +1 -0
- package/bin/domain/usecases/intmux/GenerateInTmuxByHumanDataUseCase.js +91 -0
- package/bin/domain/usecases/intmux/GenerateInTmuxByHumanDataUseCase.js.map +1 -0
- package/package.json +1 -1
- package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +26 -0
- package/src/adapter/entry-points/handlers/inTmuxByHumanDataWriter.test.ts +266 -0
- package/src/adapter/entry-points/handlers/inTmuxByHumanDataWriter.ts +103 -0
- package/src/domain/usecases/intmux/GenerateInTmuxByHumanDataUseCase.test.ts +285 -0
- package/src/domain/usecases/intmux/GenerateInTmuxByHumanDataUseCase.ts +182 -0
- package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
- package/types/adapter/entry-points/handlers/inTmuxByHumanDataWriter.d.ts +16 -0
- package/types/adapter/entry-points/handlers/inTmuxByHumanDataWriter.d.ts.map +1 -0
- package/types/domain/usecases/intmux/GenerateInTmuxByHumanDataUseCase.d.ts +57 -0
- package/types/domain/usecases/intmux/GenerateInTmuxByHumanDataUseCase.d.ts.map +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# [1.88.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.87.0...v1.88.0) (2026-06-18)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* generate in-tmux-by-human per-project and index JSON files in the scheduled daemon cycle ([#841](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/841)) ([704701f](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/704701f4bcb33b2963962388889cdd6aa7b88838)), closes [#840](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/840)
|
|
7
|
+
|
|
1
8
|
# [1.87.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.86.0...v1.87.0) (2026-06-18)
|
|
2
9
|
|
|
3
10
|
|
package/README.md
CHANGED
|
@@ -212,6 +212,10 @@ awLogDirectoryPath?: string # Optional: Directory path where aw log files named
|
|
|
212
212
|
awLogStaleThresholdMinutes?: number # Optional: Minutes since last aw log mtime after which a Preparation issue is considered orphaned even when pgrep still returns 0. Requires awLogDirectoryPath
|
|
213
213
|
labelsAsLlmAgentName?: string[] # Optional: List of issue labels that are themselves agent names. When an issue carries any label that is included in this list, that label name is used as the agent name. Selection precedence is: (1) explicit `llm-agent:` label, (2) labelsAsLlmAgentName entry match, (3) `category:` label, (4) defaultLlmAgentName, (5) defaultAgentName
|
|
214
214
|
consoleDataOutputDir?: string # Optional: Base output directory for the per-project Console list.json files written each schedule cycle. When unset, Console list generation is skipped
|
|
215
|
+
inTmuxDataOutputDir?: string # Optional: Base output directory for the in-tmux-by-human per-project and index JSON files written each schedule cycle. When unset, in-tmux-by-human generation is skipped
|
|
216
|
+
inTmuxConsoleBaseUrl?: string # Optional: Console base URL used to build the tdpmConsoleUrl in the v3/v4 in-tmux-by-human files (for example https://console.example.com). When unset, the v3 and v4 files are skipped
|
|
217
|
+
inTmuxConsoleToken?: string # Optional: Token embedded in the ?k= query string of the v4 in-tmux-by-human files. When unset, the v4 per-project file and index.v4.json are skipped
|
|
218
|
+
inTmuxProjectOrder?: string[] # Optional: Ordered list of project codes used to build the in-tmux-by-human index files. When unset or empty, the index files are skipped
|
|
215
219
|
changeTargetPathAliases?: # Optional: Map of short alias keys to full repository-root-relative directory paths. Allows `change-target:<alias>` labels to reference deeply nested paths that exceed GitHub's 50-character label limit. When a `change-target:` label's value matches a key in this map, it is expanded to the corresponding full path before confinement checking. Values with leading or trailing slashes are normalized automatically. Example below
|
|
216
220
|
adapter-interfaces: src/domain/usecases/adapter-interfaces
|
|
217
221
|
```
|
|
@@ -406,6 +410,44 @@ The `triage` tab omits `statusOptions`, adds `storyOptions` (all story field opt
|
|
|
406
410
|
- `storyColors`: Map from story name to its color. Object value (`{ "color": ... }`) for `prs`/`unread`/`failed-preparation`; plain string value for `triage`.
|
|
407
411
|
- `items`: Selected issues, stable-sorted by their story's position in `storyOrder` (unknown stories sorted last). No item carries a `body` field.
|
|
408
412
|
|
|
413
|
+
## In-Tmux-by-Human Data
|
|
414
|
+
|
|
415
|
+
When `inTmuxDataOutputDir` is configured, each schedule cycle also writes the in-tmux-by-human data files for the current project, generated from the same in-memory project and issue data already loaded for the cycle (no additional GitHub API calls). Each file is written atomically (written to a `.tmp` file then renamed) so external readers never see a partial write. When `inTmuxDataOutputDir` is unset the generation is skipped, and any error during generation is logged and swallowed so the schedule cycle is never affected.
|
|
416
|
+
|
|
417
|
+
### Item Selection
|
|
418
|
+
|
|
419
|
+
An issue is selected when its status equals `In Tmux by human` (exact match), it is open, and its assignees include the project manager. Selected issues are grouped by their story value (a null story maps to the empty string). Groups are ordered by the project story option display order; a group whose story is not among the story options is placed at the tail, ordered by the story string. Within a group, issues keep their input order.
|
|
420
|
+
|
|
421
|
+
### Files
|
|
422
|
+
|
|
423
|
+
For the current project code `{pjcode}` (the configured `projectName`):
|
|
424
|
+
|
|
425
|
+
```
|
|
426
|
+
{inTmuxDataOutputDir}/{pjcode}.json # v1: [{ story, urls: string[] }]
|
|
427
|
+
{inTmuxDataOutputDir}/{pjcode}.v2.json # v2: [{ story, urls: [{ url, title }] }]
|
|
428
|
+
{inTmuxDataOutputDir}/{pjcode}.v3.json # v3: { version, overviewUrl, tdpmConsoleUrl, groups: [{ story, urls: [{ url, title }] }] }
|
|
429
|
+
{inTmuxDataOutputDir}/{pjcode}.v4.json # v4: { version, overviewUrl, tdpmConsoleUrl, newIssueUrl, groups: [{ story, sessions: [{ name, description }] }] }
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
and the cross-project index files:
|
|
433
|
+
|
|
434
|
+
```
|
|
435
|
+
{inTmuxDataOutputDir}/index.json # { projects: string[] }
|
|
436
|
+
{inTmuxDataOutputDir}/index.v2.json # { version: 2, projects: string[] }
|
|
437
|
+
{inTmuxDataOutputDir}/index.v3.json # { version: 3, projects: string[] }
|
|
438
|
+
{inTmuxDataOutputDir}/index.v4.json # { version: 4, projects: [{ name, path }] }
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
The index files list every project in `inTmuxProjectOrder` whose `{name}.json` already exists in the output directory, so successive per-project schedule cycles incrementally build the same shared index. In `index.v4.json`, each `path` is `/{basename of inTmuxDataOutputDir}/{name}.v4.json?k={token}`.
|
|
442
|
+
|
|
443
|
+
### Field Descriptions
|
|
444
|
+
|
|
445
|
+
- `overviewUrl`: The GitHub Project board URL, taken from the project `url`.
|
|
446
|
+
- `tdpmConsoleUrl`: `{inTmuxConsoleBaseUrl}/projects/{pjcode}/prs`. The v4 variant appends `?k={token}`. The v3 and v4 files are skipped when `inTmuxConsoleBaseUrl` is unset.
|
|
447
|
+
- `newIssueUrl` (v4 only): `https://github.com/{org}/{workingReport.repo}/issues/new?assignees={manager}`, derived from existing config values.
|
|
448
|
+
- `groups`: Story groups. The v3 `groups` carry a `urls` array using the v2 `{ url, title }` entry shape. The v4 `groups` use tmux terminology: each group carries a `sessions` array and each session is `{ name, description }` where `name` is the GitHub issue URL and `description` is the issue title.
|
|
449
|
+
- Token handling: The v4 per-project file and `index.v4.json` are skipped when `inTmuxConsoleToken` is unset. The token value is never written to source code, tests, or documentation; it is supplied through configuration only.
|
|
450
|
+
|
|
409
451
|
## Token Rotation Order File
|
|
410
452
|
|
|
411
453
|
After each schedule cycle where Claude OAuth token rotation is active, TDPM writes the computed rotation order to:
|
|
@@ -44,6 +44,7 @@ const typia_1 = __importDefault(require("typia"));
|
|
|
44
44
|
const fs_1 = __importDefault(require("fs"));
|
|
45
45
|
const situationFileWriter_1 = require("./situationFileWriter");
|
|
46
46
|
const consoleListsWriter_1 = require("./consoleListsWriter");
|
|
47
|
+
const inTmuxByHumanDataWriter_1 = require("./inTmuxByHumanDataWriter");
|
|
47
48
|
const rotationOrderFileWriter_1 = require("./rotationOrderFileWriter");
|
|
48
49
|
const projectConfig_1 = require("../cli/projectConfig");
|
|
49
50
|
const SystemDateRepository_1 = require("../../repositories/SystemDateRepository");
|
|
@@ -87,13 +88,13 @@ class HandleScheduledEventUseCaseHandler {
|
|
|
87
88
|
this.handle = async (configFilePath, _verbose) => {
|
|
88
89
|
const configFileContent = fs_1.default.readFileSync(configFilePath, 'utf8');
|
|
89
90
|
const input = yaml_1.default.parse(configFileContent);
|
|
90
|
-
if (!(() => { const _io0 = input => "string" === typeof input.projectName && "string" === typeof input.org && "string" === typeof input.projectUrl && "string" === typeof input.manager && ("object" === typeof input.workingReport && null !== input.workingReport && _io1(input.workingReport)) && "string" === typeof input.urlOfStoryView && "boolean" === typeof input.disabled && "number" === typeof input.allowIssueCacheMinutes && (null === input.labelsAsLlmAgentName || undefined === input.labelsAsLlmAgentName || Array.isArray(input.labelsAsLlmAgentName) && input.labelsAsLlmAgentName.every(elem => "string" === typeof elem)) && (null === input.changeTargetPathAliases || undefined === input.changeTargetPathAliases || "object" === typeof input.changeTargetPathAliases && null !== input.changeTargetPathAliases && false === Array.isArray(input.changeTargetPathAliases) && _io2(input.changeTargetPathAliases)) && (null === input.startPreparation || undefined === input.startPreparation || "object" === typeof input.startPreparation && null !== input.startPreparation && _io3(input.startPreparation)) && (undefined === input.thresholdForAutoReject || "number" === typeof input.thresholdForAutoReject) && (null === input.dailySecurityScan || undefined === input.dailySecurityScan || "object" === typeof input.dailySecurityScan && null !== input.dailySecurityScan && _io4(input.dailySecurityScan)) && (undefined === input.claudeCodeOauthTokenListJsonPath || "string" === typeof input.claudeCodeOauthTokenListJsonPath) && (undefined === input.consoleDataOutputDir || "string" === typeof input.consoleDataOutputDir) && ("object" === typeof input.credentials && null !== input.credentials && _io5(input.credentials)); const _io1 = input => "string" === typeof input.repo && (Array.isArray(input.members) && input.members.every(elem => "string" === typeof elem)) && "string" === typeof input.spreadsheetUrl; const _io2 = input => Object.keys(input).every(key => {
|
|
91
|
+
if (!(() => { const _io0 = input => "string" === typeof input.projectName && "string" === typeof input.org && "string" === typeof input.projectUrl && "string" === typeof input.manager && ("object" === typeof input.workingReport && null !== input.workingReport && _io1(input.workingReport)) && "string" === typeof input.urlOfStoryView && "boolean" === typeof input.disabled && "number" === typeof input.allowIssueCacheMinutes && (null === input.labelsAsLlmAgentName || undefined === input.labelsAsLlmAgentName || Array.isArray(input.labelsAsLlmAgentName) && input.labelsAsLlmAgentName.every(elem => "string" === typeof elem)) && (null === input.changeTargetPathAliases || undefined === input.changeTargetPathAliases || "object" === typeof input.changeTargetPathAliases && null !== input.changeTargetPathAliases && false === Array.isArray(input.changeTargetPathAliases) && _io2(input.changeTargetPathAliases)) && (null === input.startPreparation || undefined === input.startPreparation || "object" === typeof input.startPreparation && null !== input.startPreparation && _io3(input.startPreparation)) && (undefined === input.thresholdForAutoReject || "number" === typeof input.thresholdForAutoReject) && (null === input.dailySecurityScan || undefined === input.dailySecurityScan || "object" === typeof input.dailySecurityScan && null !== input.dailySecurityScan && _io4(input.dailySecurityScan)) && (undefined === input.claudeCodeOauthTokenListJsonPath || "string" === typeof input.claudeCodeOauthTokenListJsonPath) && (undefined === input.consoleDataOutputDir || "string" === typeof input.consoleDataOutputDir) && (undefined === input.inTmuxDataOutputDir || "string" === typeof input.inTmuxDataOutputDir) && (undefined === input.inTmuxConsoleBaseUrl || "string" === typeof input.inTmuxConsoleBaseUrl) && (undefined === input.inTmuxConsoleToken || "string" === typeof input.inTmuxConsoleToken) && (undefined === input.inTmuxProjectOrder || Array.isArray(input.inTmuxProjectOrder) && input.inTmuxProjectOrder.every(elem => "string" === typeof elem)) && ("object" === typeof input.credentials && null !== input.credentials && _io5(input.credentials)); const _io1 = input => "string" === typeof input.repo && (Array.isArray(input.members) && input.members.every(elem => "string" === typeof elem)) && "string" === typeof input.spreadsheetUrl; const _io2 = input => Object.keys(input).every(key => {
|
|
91
92
|
const value = input[key];
|
|
92
93
|
if (undefined === value)
|
|
93
94
|
return true;
|
|
94
95
|
return "string" === typeof value;
|
|
95
96
|
}); const _io3 = input => "string" === typeof input.defaultAgentName && (null === input.defaultLlmModelName || undefined === input.defaultLlmModelName || "string" === typeof input.defaultLlmModelName) && (null === input.fallbackLlmModelName || undefined === input.fallbackLlmModelName || "string" === typeof input.fallbackLlmModelName) && (null === input.defaultLlmAgentName || undefined === input.defaultLlmAgentName || "string" === typeof input.defaultLlmAgentName) && "string" === typeof input.configFilePath && (null === input.maximumPreparingIssuesCount || "number" === typeof input.maximumPreparingIssuesCount) && (undefined === input.utilizationPercentageThreshold || "number" === typeof input.utilizationPercentageThreshold) && (null === input.allowedIssueAuthors || undefined === input.allowedIssueAuthors || Array.isArray(input.allowedIssueAuthors) && input.allowedIssueAuthors.every(elem => "string" === typeof elem)) && (undefined === input.preparationProcessCheckCommand || "string" === typeof input.preparationProcessCheckCommand) && (null === input.codexHomeCandidates || undefined === input.codexHomeCandidates || Array.isArray(input.codexHomeCandidates) && input.codexHomeCandidates.every(elem => "string" === typeof elem)) && (undefined === input.awLogDirectoryPath || "string" === typeof input.awLogDirectoryPath) && (undefined === input.awLogStaleThresholdMinutes || "number" === typeof input.awLogStaleThresholdMinutes) && (null === input.awaitingQualityCheckStatus || undefined === input.awaitingQualityCheckStatus || "string" === typeof input.awaitingQualityCheckStatus) && (null === input.labelsAsLlmAgentName || undefined === input.labelsAsLlmAgentName || Array.isArray(input.labelsAsLlmAgentName) && input.labelsAsLlmAgentName.every(elem => "string" === typeof elem)); const _io4 = input => "string" === typeof input.scanBaseDirectory && "number" === typeof input.targetHourUtc && (undefined === input.enableKevNvdReport || "boolean" === typeof input.enableKevNvdReport) && (undefined === input.kevReportRepo || "string" === typeof input.kevReportRepo); const _io5 = input => "object" === typeof input.manager && null !== input.manager && _io6(input.manager) && ("object" === typeof input.bot && null !== input.bot && _io10(input.bot)); const _io6 = input => "object" === typeof input.github && null !== input.github && _io7(input.github) && ("object" === typeof input.slack && null !== input.slack && _io8(input.slack)) && ("object" === typeof input.googleServiceAccount && null !== input.googleServiceAccount && _io9(input.googleServiceAccount)); const _io7 = input => "string" === typeof input.token; const _io8 = input => "string" === typeof input.userToken; const _io9 = input => "string" === typeof input.serviceAccountKey; const _io10 = input => "object" === typeof input.github && null !== input.github && _io11(input.github); const _io11 = input => "string" === typeof input.token; return input => "object" === typeof input && null !== input && _io0(input); })()(input)) {
|
|
96
|
-
throw new Error(`Invalid input: ${JSON.stringify(input)}\n\n${JSON.stringify((() => { const _io0 = input => "string" === typeof input.projectName && "string" === typeof input.org && "string" === typeof input.projectUrl && "string" === typeof input.manager && ("object" === typeof input.workingReport && null !== input.workingReport && _io1(input.workingReport)) && "string" === typeof input.urlOfStoryView && "boolean" === typeof input.disabled && "number" === typeof input.allowIssueCacheMinutes && (null === input.labelsAsLlmAgentName || undefined === input.labelsAsLlmAgentName || Array.isArray(input.labelsAsLlmAgentName) && input.labelsAsLlmAgentName.every(elem => "string" === typeof elem)) && (null === input.changeTargetPathAliases || undefined === input.changeTargetPathAliases || "object" === typeof input.changeTargetPathAliases && null !== input.changeTargetPathAliases && false === Array.isArray(input.changeTargetPathAliases) && _io2(input.changeTargetPathAliases)) && (null === input.startPreparation || undefined === input.startPreparation || "object" === typeof input.startPreparation && null !== input.startPreparation && _io3(input.startPreparation)) && (undefined === input.thresholdForAutoReject || "number" === typeof input.thresholdForAutoReject) && (null === input.dailySecurityScan || undefined === input.dailySecurityScan || "object" === typeof input.dailySecurityScan && null !== input.dailySecurityScan && _io4(input.dailySecurityScan)) && (undefined === input.claudeCodeOauthTokenListJsonPath || "string" === typeof input.claudeCodeOauthTokenListJsonPath) && (undefined === input.consoleDataOutputDir || "string" === typeof input.consoleDataOutputDir) && ("object" === typeof input.credentials && null !== input.credentials && _io5(input.credentials)); const _io1 = input => "string" === typeof input.repo && (Array.isArray(input.members) && input.members.every(elem => "string" === typeof elem)) && "string" === typeof input.spreadsheetUrl; const _io2 = input => Object.keys(input).every(key => {
|
|
97
|
+
throw new Error(`Invalid input: ${JSON.stringify(input)}\n\n${JSON.stringify((() => { const _io0 = input => "string" === typeof input.projectName && "string" === typeof input.org && "string" === typeof input.projectUrl && "string" === typeof input.manager && ("object" === typeof input.workingReport && null !== input.workingReport && _io1(input.workingReport)) && "string" === typeof input.urlOfStoryView && "boolean" === typeof input.disabled && "number" === typeof input.allowIssueCacheMinutes && (null === input.labelsAsLlmAgentName || undefined === input.labelsAsLlmAgentName || Array.isArray(input.labelsAsLlmAgentName) && input.labelsAsLlmAgentName.every(elem => "string" === typeof elem)) && (null === input.changeTargetPathAliases || undefined === input.changeTargetPathAliases || "object" === typeof input.changeTargetPathAliases && null !== input.changeTargetPathAliases && false === Array.isArray(input.changeTargetPathAliases) && _io2(input.changeTargetPathAliases)) && (null === input.startPreparation || undefined === input.startPreparation || "object" === typeof input.startPreparation && null !== input.startPreparation && _io3(input.startPreparation)) && (undefined === input.thresholdForAutoReject || "number" === typeof input.thresholdForAutoReject) && (null === input.dailySecurityScan || undefined === input.dailySecurityScan || "object" === typeof input.dailySecurityScan && null !== input.dailySecurityScan && _io4(input.dailySecurityScan)) && (undefined === input.claudeCodeOauthTokenListJsonPath || "string" === typeof input.claudeCodeOauthTokenListJsonPath) && (undefined === input.consoleDataOutputDir || "string" === typeof input.consoleDataOutputDir) && (undefined === input.inTmuxDataOutputDir || "string" === typeof input.inTmuxDataOutputDir) && (undefined === input.inTmuxConsoleBaseUrl || "string" === typeof input.inTmuxConsoleBaseUrl) && (undefined === input.inTmuxConsoleToken || "string" === typeof input.inTmuxConsoleToken) && (undefined === input.inTmuxProjectOrder || Array.isArray(input.inTmuxProjectOrder) && input.inTmuxProjectOrder.every(elem => "string" === typeof elem)) && ("object" === typeof input.credentials && null !== input.credentials && _io5(input.credentials)); const _io1 = input => "string" === typeof input.repo && (Array.isArray(input.members) && input.members.every(elem => "string" === typeof elem)) && "string" === typeof input.spreadsheetUrl; const _io2 = input => Object.keys(input).every(key => {
|
|
97
98
|
const value = input[key];
|
|
98
99
|
if (undefined === value)
|
|
99
100
|
return true;
|
|
@@ -138,8 +139,8 @@ class HandleScheduledEventUseCaseHandler {
|
|
|
138
139
|
path: _path + ".labelsAsLlmAgentName",
|
|
139
140
|
expected: "(Array<string> | null | undefined)",
|
|
140
141
|
value: input.labelsAsLlmAgentName
|
|
141
|
-
})) && input.labelsAsLlmAgentName.map((elem,
|
|
142
|
-
path: _path + ".labelsAsLlmAgentName[" +
|
|
142
|
+
})) && input.labelsAsLlmAgentName.map((elem, _index7) => "string" === typeof elem || _report(_exceptionable, {
|
|
143
|
+
path: _path + ".labelsAsLlmAgentName[" + _index7 + "]",
|
|
143
144
|
expected: "string",
|
|
144
145
|
value: elem
|
|
145
146
|
})).every(flag => flag) || _report(_exceptionable, {
|
|
@@ -182,6 +183,30 @@ class HandleScheduledEventUseCaseHandler {
|
|
|
182
183
|
path: _path + ".consoleDataOutputDir",
|
|
183
184
|
expected: "(string | undefined)",
|
|
184
185
|
value: input.consoleDataOutputDir
|
|
186
|
+
}), undefined === input.inTmuxDataOutputDir || "string" === typeof input.inTmuxDataOutputDir || _report(_exceptionable, {
|
|
187
|
+
path: _path + ".inTmuxDataOutputDir",
|
|
188
|
+
expected: "(string | undefined)",
|
|
189
|
+
value: input.inTmuxDataOutputDir
|
|
190
|
+
}), undefined === input.inTmuxConsoleBaseUrl || "string" === typeof input.inTmuxConsoleBaseUrl || _report(_exceptionable, {
|
|
191
|
+
path: _path + ".inTmuxConsoleBaseUrl",
|
|
192
|
+
expected: "(string | undefined)",
|
|
193
|
+
value: input.inTmuxConsoleBaseUrl
|
|
194
|
+
}), undefined === input.inTmuxConsoleToken || "string" === typeof input.inTmuxConsoleToken || _report(_exceptionable, {
|
|
195
|
+
path: _path + ".inTmuxConsoleToken",
|
|
196
|
+
expected: "(string | undefined)",
|
|
197
|
+
value: input.inTmuxConsoleToken
|
|
198
|
+
}), undefined === input.inTmuxProjectOrder || (Array.isArray(input.inTmuxProjectOrder) || _report(_exceptionable, {
|
|
199
|
+
path: _path + ".inTmuxProjectOrder",
|
|
200
|
+
expected: "(Array<string> | undefined)",
|
|
201
|
+
value: input.inTmuxProjectOrder
|
|
202
|
+
})) && input.inTmuxProjectOrder.map((elem, _index8) => "string" === typeof elem || _report(_exceptionable, {
|
|
203
|
+
path: _path + ".inTmuxProjectOrder[" + _index8 + "]",
|
|
204
|
+
expected: "string",
|
|
205
|
+
value: elem
|
|
206
|
+
})).every(flag => flag) || _report(_exceptionable, {
|
|
207
|
+
path: _path + ".inTmuxProjectOrder",
|
|
208
|
+
expected: "(Array<string> | undefined)",
|
|
209
|
+
value: input.inTmuxProjectOrder
|
|
185
210
|
}), ("object" === typeof input.credentials && null !== input.credentials || _report(_exceptionable, {
|
|
186
211
|
path: _path + ".credentials",
|
|
187
212
|
expected: "__type.o2",
|
|
@@ -198,8 +223,8 @@ class HandleScheduledEventUseCaseHandler {
|
|
|
198
223
|
path: _path + ".members",
|
|
199
224
|
expected: "Array<string>",
|
|
200
225
|
value: input.members
|
|
201
|
-
})) && input.members.map((elem,
|
|
202
|
-
path: _path + ".members[" +
|
|
226
|
+
})) && input.members.map((elem, _index9) => "string" === typeof elem || _report(_exceptionable, {
|
|
227
|
+
path: _path + ".members[" + _index9 + "]",
|
|
203
228
|
expected: "string",
|
|
204
229
|
value: elem
|
|
205
230
|
})).every(flag => flag) || _report(_exceptionable, {
|
|
@@ -251,8 +276,8 @@ class HandleScheduledEventUseCaseHandler {
|
|
|
251
276
|
path: _path + ".allowedIssueAuthors",
|
|
252
277
|
expected: "(Array<string> | null | undefined)",
|
|
253
278
|
value: input.allowedIssueAuthors
|
|
254
|
-
})) && input.allowedIssueAuthors.map((elem,
|
|
255
|
-
path: _path + ".allowedIssueAuthors[" +
|
|
279
|
+
})) && input.allowedIssueAuthors.map((elem, _index10) => "string" === typeof elem || _report(_exceptionable, {
|
|
280
|
+
path: _path + ".allowedIssueAuthors[" + _index10 + "]",
|
|
256
281
|
expected: "string",
|
|
257
282
|
value: elem
|
|
258
283
|
})).every(flag => flag) || _report(_exceptionable, {
|
|
@@ -267,8 +292,8 @@ class HandleScheduledEventUseCaseHandler {
|
|
|
267
292
|
path: _path + ".codexHomeCandidates",
|
|
268
293
|
expected: "(Array<string> | null | undefined)",
|
|
269
294
|
value: input.codexHomeCandidates
|
|
270
|
-
})) && input.codexHomeCandidates.map((elem,
|
|
271
|
-
path: _path + ".codexHomeCandidates[" +
|
|
295
|
+
})) && input.codexHomeCandidates.map((elem, _index11) => "string" === typeof elem || _report(_exceptionable, {
|
|
296
|
+
path: _path + ".codexHomeCandidates[" + _index11 + "]",
|
|
272
297
|
expected: "string",
|
|
273
298
|
value: elem
|
|
274
299
|
})).every(flag => flag) || _report(_exceptionable, {
|
|
@@ -291,8 +316,8 @@ class HandleScheduledEventUseCaseHandler {
|
|
|
291
316
|
path: _path + ".labelsAsLlmAgentName",
|
|
292
317
|
expected: "(Array<string> | null | undefined)",
|
|
293
318
|
value: input.labelsAsLlmAgentName
|
|
294
|
-
})) && input.labelsAsLlmAgentName.map((elem,
|
|
295
|
-
path: _path + ".labelsAsLlmAgentName[" +
|
|
319
|
+
})) && input.labelsAsLlmAgentName.map((elem, _index12) => "string" === typeof elem || _report(_exceptionable, {
|
|
320
|
+
path: _path + ".labelsAsLlmAgentName[" + _index12 + "]",
|
|
296
321
|
expected: "string",
|
|
297
322
|
value: elem
|
|
298
323
|
})).every(flag => flag) || _report(_exceptionable, {
|
|
@@ -539,6 +564,23 @@ class HandleScheduledEventUseCaseHandler {
|
|
|
539
564
|
catch (error) {
|
|
540
565
|
console.error(`Failed to write console lists: ${error instanceof Error ? error.message : String(error)}`);
|
|
541
566
|
}
|
|
567
|
+
try {
|
|
568
|
+
(0, inTmuxByHumanDataWriter_1.writeInTmuxByHumanData)({
|
|
569
|
+
inTmuxDataOutputDir: mergedInput.inTmuxDataOutputDir ?? null,
|
|
570
|
+
inTmuxConsoleBaseUrl: mergedInput.inTmuxConsoleBaseUrl ?? null,
|
|
571
|
+
inTmuxConsoleToken: mergedInput.inTmuxConsoleToken ?? null,
|
|
572
|
+
inTmuxProjectOrder: mergedInput.inTmuxProjectOrder ?? null,
|
|
573
|
+
pjcode: input.projectName,
|
|
574
|
+
assigneeLogin: input.manager,
|
|
575
|
+
org: input.org,
|
|
576
|
+
repo: input.workingReport.repo,
|
|
577
|
+
project: result.project,
|
|
578
|
+
issues: result.issues,
|
|
579
|
+
});
|
|
580
|
+
}
|
|
581
|
+
catch (error) {
|
|
582
|
+
console.error(`Failed to write in-tmux-by-human data: ${error instanceof Error ? error.message : String(error)}`);
|
|
583
|
+
}
|
|
542
584
|
}
|
|
543
585
|
return result;
|
|
544
586
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HandleScheduledEventUseCaseHandler.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAwB;AACxB,kDAA0B;AAC1B,4CAAoB;AACpB,+DAA2D;AAC3D,6DAAyD;AACzD,uEAAmE;AACnE,wDAG8B;AAC9B,kFAA+E;AAC/E,sFAAmF;AACnF,gGAA6F;AAC7F,0FAAuF;AACvF,wFAAqF;AACrF,sFAAmF;AACnF,wGAAqG;AACrG,8GAA2G;AAC3G,sGAAmG;AACnG,gGAA6F;AAC7F,kGAA+F;AAC/F,gIAA6H;AAC7H,oHAAiH;AACjH,wGAAqG;AAIrG,0FAAuF;AACvF,wGAAqG;AACrG,gIAA6H;AAC7H,wGAAqG;AACrG,kIAA+H;AAC/H,8GAA2G;AAC3G,0GAAuG;AACvG,wGAAqG;AACrG,0HAAuH;AACvH,8GAA2G;AAC3G,8FAA2F;AAC3F,sFAAmF;AACnF,wGAAqG;AACrG,oGAAiG;AACjG,sGAAmG;AACnG,gHAA6G;AAC7G,0HAAuH;AACvH,kGAA+F;AAC/F,8GAA2G;AAC3G,gGAA6F;AAC7F,0EAAuE;AACvE,4EAKiD;AAEjD,MAAa,kCAAkC;IAA/C;QACE,WAAM,GAAG,KAAK,EACZ,cAAsB,EACtB,QAAiB,EAMT,EAAE;YACV,MAAM,iBAAiB,GAAG,YAAE,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YAClE,MAAM,KAAK,GAAY,cAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"HandleScheduledEventUseCaseHandler.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.writeInTmuxByHumanData = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const GenerateInTmuxByHumanDataUseCase_1 = require("../../../domain/usecases/intmux/GenerateInTmuxByHumanDataUseCase");
|
|
10
|
+
const writeJsonAtomic = (filePath, data) => {
|
|
11
|
+
const dir = path_1.default.dirname(filePath);
|
|
12
|
+
fs_1.default.mkdirSync(dir, { recursive: true });
|
|
13
|
+
const tmpPath = `${filePath}.tmp`;
|
|
14
|
+
fs_1.default.writeFileSync(tmpPath, `${JSON.stringify(data, null, 2)}\n`);
|
|
15
|
+
fs_1.default.renameSync(tmpPath, filePath);
|
|
16
|
+
};
|
|
17
|
+
const writeInTmuxByHumanData = (params) => {
|
|
18
|
+
const { inTmuxDataOutputDir, inTmuxConsoleBaseUrl, inTmuxConsoleToken, inTmuxProjectOrder, pjcode, assigneeLogin, org, repo, project, issues, } = params;
|
|
19
|
+
if (!inTmuxDataOutputDir || !pjcode || !assigneeLogin) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const data = new GenerateInTmuxByHumanDataUseCase_1.GenerateInTmuxByHumanDataUseCase().run({
|
|
23
|
+
project,
|
|
24
|
+
issues,
|
|
25
|
+
pjcode,
|
|
26
|
+
assigneeLogin,
|
|
27
|
+
org,
|
|
28
|
+
repo,
|
|
29
|
+
consoleBaseUrl: inTmuxConsoleBaseUrl ?? null,
|
|
30
|
+
consoleToken: inTmuxConsoleToken ?? null,
|
|
31
|
+
});
|
|
32
|
+
writeJsonAtomic(path_1.default.join(inTmuxDataOutputDir, `${pjcode}.json`), data.v1);
|
|
33
|
+
writeJsonAtomic(path_1.default.join(inTmuxDataOutputDir, `${pjcode}.v2.json`), data.v2);
|
|
34
|
+
if (data.v3) {
|
|
35
|
+
writeJsonAtomic(path_1.default.join(inTmuxDataOutputDir, `${pjcode}.v3.json`), data.v3);
|
|
36
|
+
}
|
|
37
|
+
if (data.v4) {
|
|
38
|
+
writeJsonAtomic(path_1.default.join(inTmuxDataOutputDir, `${pjcode}.v4.json`), data.v4);
|
|
39
|
+
}
|
|
40
|
+
if (!inTmuxProjectOrder || inTmuxProjectOrder.length === 0) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const presentProjects = inTmuxProjectOrder.filter((name) => fs_1.default.existsSync(path_1.default.join(inTmuxDataOutputDir, `${name}.json`)));
|
|
44
|
+
writeJsonAtomic(path_1.default.join(inTmuxDataOutputDir, 'index.json'), {
|
|
45
|
+
projects: presentProjects,
|
|
46
|
+
});
|
|
47
|
+
writeJsonAtomic(path_1.default.join(inTmuxDataOutputDir, 'index.v2.json'), {
|
|
48
|
+
version: 2,
|
|
49
|
+
projects: presentProjects,
|
|
50
|
+
});
|
|
51
|
+
writeJsonAtomic(path_1.default.join(inTmuxDataOutputDir, 'index.v3.json'), {
|
|
52
|
+
version: 3,
|
|
53
|
+
projects: presentProjects,
|
|
54
|
+
});
|
|
55
|
+
if (inTmuxConsoleToken) {
|
|
56
|
+
const outputDirBasename = path_1.default.basename(inTmuxDataOutputDir);
|
|
57
|
+
writeJsonAtomic(path_1.default.join(inTmuxDataOutputDir, 'index.v4.json'), {
|
|
58
|
+
version: 4,
|
|
59
|
+
projects: presentProjects.map((name) => ({
|
|
60
|
+
name,
|
|
61
|
+
path: `/${outputDirBasename}/${name}.v4.json?k=${inTmuxConsoleToken}`,
|
|
62
|
+
})),
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
exports.writeInTmuxByHumanData = writeInTmuxByHumanData;
|
|
67
|
+
//# sourceMappingURL=inTmuxByHumanDataWriter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inTmuxByHumanDataWriter.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/inTmuxByHumanDataWriter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GenerateInTmuxByHumanDataUseCase = void 0;
|
|
4
|
+
const IN_TMUX_BY_HUMAN_STATUS_NAME = 'In Tmux by human';
|
|
5
|
+
const UNKNOWN_STORY_SORT_INDEX = 999999;
|
|
6
|
+
class GenerateInTmuxByHumanDataUseCase {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.run = (input) => {
|
|
9
|
+
const { project, issues, pjcode, assigneeLogin, org, repo, consoleBaseUrl, consoleToken, } = input;
|
|
10
|
+
const storyOrder = project.story
|
|
11
|
+
? project.story.stories.map((option) => option.name)
|
|
12
|
+
: [];
|
|
13
|
+
const selectedIssues = issues.filter((issue) => this.isInTmuxByHuman(issue, assigneeLogin));
|
|
14
|
+
const groups = this.groupByStoryOrder(selectedIssues, storyOrder);
|
|
15
|
+
const v2 = groups.map((group) => ({
|
|
16
|
+
story: group.story,
|
|
17
|
+
urls: group.issues.map((issue) => ({
|
|
18
|
+
url: issue.url,
|
|
19
|
+
title: issue.title,
|
|
20
|
+
})),
|
|
21
|
+
}));
|
|
22
|
+
const v1 = groups.map((group) => ({
|
|
23
|
+
story: group.story,
|
|
24
|
+
urls: group.issues.map((issue) => issue.url),
|
|
25
|
+
}));
|
|
26
|
+
const v4Groups = groups.map((group) => ({
|
|
27
|
+
story: group.story,
|
|
28
|
+
sessions: group.issues.map((issue) => ({
|
|
29
|
+
name: issue.url,
|
|
30
|
+
description: issue.title,
|
|
31
|
+
})),
|
|
32
|
+
}));
|
|
33
|
+
const overviewUrl = project.url;
|
|
34
|
+
const tdpmConsoleUrl = consoleBaseUrl
|
|
35
|
+
? `${consoleBaseUrl}/projects/${pjcode}/prs`
|
|
36
|
+
: null;
|
|
37
|
+
const v3 = tdpmConsoleUrl
|
|
38
|
+
? {
|
|
39
|
+
version: 3,
|
|
40
|
+
overviewUrl,
|
|
41
|
+
tdpmConsoleUrl,
|
|
42
|
+
groups: v2,
|
|
43
|
+
}
|
|
44
|
+
: null;
|
|
45
|
+
const v4 = tdpmConsoleUrl && consoleToken
|
|
46
|
+
? {
|
|
47
|
+
version: 4,
|
|
48
|
+
overviewUrl,
|
|
49
|
+
tdpmConsoleUrl: `${tdpmConsoleUrl}?k=${consoleToken}`,
|
|
50
|
+
newIssueUrl: `https://github.com/${org}/${repo}/issues/new?assignees=${assigneeLogin}`,
|
|
51
|
+
groups: v4Groups,
|
|
52
|
+
}
|
|
53
|
+
: null;
|
|
54
|
+
return { v1, v2, v3, v4 };
|
|
55
|
+
};
|
|
56
|
+
this.isInTmuxByHuman = (issue, assigneeLogin) => issue.status === IN_TMUX_BY_HUMAN_STATUS_NAME &&
|
|
57
|
+
issue.isClosed === false &&
|
|
58
|
+
issue.assignees.includes(assigneeLogin);
|
|
59
|
+
this.groupByStoryOrder = (issues, storyOrder) => {
|
|
60
|
+
const indexByStory = new Map(storyOrder.map((name, index) => [name, index]));
|
|
61
|
+
const issuesByStory = new Map();
|
|
62
|
+
for (const issue of issues) {
|
|
63
|
+
const story = issue.story ?? '';
|
|
64
|
+
const existing = issuesByStory.get(story);
|
|
65
|
+
if (existing) {
|
|
66
|
+
existing.push(issue);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
issuesByStory.set(story, [issue]);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return [...issuesByStory.entries()]
|
|
73
|
+
.map(([story, groupedIssues]) => ({
|
|
74
|
+
story,
|
|
75
|
+
issues: groupedIssues,
|
|
76
|
+
sortIndex: indexByStory.get(story) ?? UNKNOWN_STORY_SORT_INDEX,
|
|
77
|
+
}))
|
|
78
|
+
.sort((left, right) => left.sortIndex !== right.sortIndex
|
|
79
|
+
? left.sortIndex - right.sortIndex
|
|
80
|
+
: left.story < right.story
|
|
81
|
+
? -1
|
|
82
|
+
: 1)
|
|
83
|
+
.map(({ story, issues: groupedIssues }) => ({
|
|
84
|
+
story,
|
|
85
|
+
issues: groupedIssues,
|
|
86
|
+
}));
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.GenerateInTmuxByHumanDataUseCase = GenerateInTmuxByHumanDataUseCase;
|
|
91
|
+
//# sourceMappingURL=GenerateInTmuxByHumanDataUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenerateInTmuxByHumanDataUseCase.js","sourceRoot":"","sources":["../../../../src/domain/usecases/intmux/GenerateInTmuxByHumanDataUseCase.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -3,6 +3,7 @@ import TYPIA from 'typia';
|
|
|
3
3
|
import fs from 'fs';
|
|
4
4
|
import { writeSituationFile } from './situationFileWriter';
|
|
5
5
|
import { writeConsoleLists } from './consoleListsWriter';
|
|
6
|
+
import { writeInTmuxByHumanData } from './inTmuxByHumanDataWriter';
|
|
6
7
|
import { writeRotationOrderFile } from './rotationOrderFileWriter';
|
|
7
8
|
import {
|
|
8
9
|
fetchProjectReadme,
|
|
@@ -68,6 +69,10 @@ export class HandleScheduledEventUseCaseHandler {
|
|
|
68
69
|
type inputType = Parameters<HandleScheduledEventUseCase['run']>[0] & {
|
|
69
70
|
claudeCodeOauthTokenListJsonPath?: string;
|
|
70
71
|
consoleDataOutputDir?: string;
|
|
72
|
+
inTmuxDataOutputDir?: string;
|
|
73
|
+
inTmuxConsoleBaseUrl?: string;
|
|
74
|
+
inTmuxConsoleToken?: string;
|
|
75
|
+
inTmuxProjectOrder?: string[];
|
|
71
76
|
credentials: {
|
|
72
77
|
manager: {
|
|
73
78
|
github: {
|
|
@@ -383,6 +388,27 @@ export class HandleScheduledEventUseCaseHandler {
|
|
|
383
388
|
}`,
|
|
384
389
|
);
|
|
385
390
|
}
|
|
391
|
+
|
|
392
|
+
try {
|
|
393
|
+
writeInTmuxByHumanData({
|
|
394
|
+
inTmuxDataOutputDir: mergedInput.inTmuxDataOutputDir ?? null,
|
|
395
|
+
inTmuxConsoleBaseUrl: mergedInput.inTmuxConsoleBaseUrl ?? null,
|
|
396
|
+
inTmuxConsoleToken: mergedInput.inTmuxConsoleToken ?? null,
|
|
397
|
+
inTmuxProjectOrder: mergedInput.inTmuxProjectOrder ?? null,
|
|
398
|
+
pjcode: input.projectName,
|
|
399
|
+
assigneeLogin: input.manager,
|
|
400
|
+
org: input.org,
|
|
401
|
+
repo: input.workingReport.repo,
|
|
402
|
+
project: result.project,
|
|
403
|
+
issues: result.issues,
|
|
404
|
+
});
|
|
405
|
+
} catch (error) {
|
|
406
|
+
console.error(
|
|
407
|
+
`Failed to write in-tmux-by-human data: ${
|
|
408
|
+
error instanceof Error ? error.message : String(error)
|
|
409
|
+
}`,
|
|
410
|
+
);
|
|
411
|
+
}
|
|
386
412
|
}
|
|
387
413
|
return result;
|
|
388
414
|
};
|