github-issue-tower-defence-management 1.147.4 → 1.148.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/.github/workflows/umino-project.yml +12 -0
- package/CHANGELOG.md +14 -0
- package/README.md +4 -0
- package/bin/adapter/entry-points/console/ui-dist/assets/index-D7Yt5Ya6.js +82 -0
- package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
- package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js +3 -0
- package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js.map +1 -1
- package/bin/adapter/repositories/issue/RestIssueRepository.js +47 -0
- package/bin/adapter/repositories/issue/RestIssueRepository.js.map +1 -1
- package/bin/domain/entities/SearchedIssue.js +3 -0
- package/bin/domain/entities/SearchedIssue.js.map +1 -0
- package/bin/domain/usecases/AssignNoAssigneeIssueToManagerUseCase.js +68 -10
- package/bin/domain/usecases/AssignNoAssigneeIssueToManagerUseCase.js.map +1 -1
- package/bin/domain/usecases/HandleScheduledEventUseCase.js +3 -0
- package/bin/domain/usecases/HandleScheduledEventUseCase.js.map +1 -1
- package/package.json +1 -1
- package/src/adapter/entry-points/console/ui/e2e/consoleTestHarness.ts +1 -0
- package/src/adapter/entry-points/console/ui/src/features/console/lib/markdown.test.ts +48 -0
- package/src/adapter/entry-points/console/ui/src/features/console/lib/markdown.ts +55 -25
- package/src/adapter/entry-points/console/ui-dist/assets/index-D7Yt5Ya6.js +82 -0
- package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
- package/src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.ts +6 -1
- package/src/adapter/repositories/issue/RestIssueRepository.test.ts +107 -0
- package/src/adapter/repositories/issue/RestIssueRepository.ts +69 -2
- package/src/domain/entities/SearchedIssue.ts +11 -0
- package/src/domain/usecases/AssignNoAssigneeIssueToManagerUseCase.test.ts +208 -0
- package/src/domain/usecases/AssignNoAssigneeIssueToManagerUseCase.ts +104 -13
- package/src/domain/usecases/HandleScheduledEventUseCase.ts +5 -0
- package/src/domain/usecases/adapter-interfaces/IssueRepository.ts +3 -1
- package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts +5 -3
- package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts.map +1 -1
- package/types/adapter/repositories/issue/RestIssueRepository.d.ts +5 -2
- package/types/adapter/repositories/issue/RestIssueRepository.d.ts.map +1 -1
- package/types/domain/entities/SearchedIssue.d.ts +11 -0
- package/types/domain/entities/SearchedIssue.d.ts.map +1 -0
- package/types/domain/usecases/AssignNoAssigneeIssueToManagerUseCase.d.ts +10 -2
- package/types/domain/usecases/AssignNoAssigneeIssueToManagerUseCase.d.ts.map +1 -1
- package/types/domain/usecases/HandleScheduledEventUseCase.d.ts +2 -0
- package/types/domain/usecases/HandleScheduledEventUseCase.d.ts.map +1 -1
- package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts +3 -1
- package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts.map +1 -1
- package/bin/adapter/entry-points/console/ui-dist/assets/index-CtUryuGr.js +0 -82
- package/src/adapter/entry-points/console/ui-dist/assets/index-CtUryuGr.js +0 -82
|
@@ -101,6 +101,18 @@ jobs:
|
|
|
101
101
|
|
|
102
102
|
echo "Resolved ITEM_ID=$ITEM_ID"
|
|
103
103
|
|
|
104
|
+
if [ "${{ github.event.action }}" = "opened" ]; then
|
|
105
|
+
EXISTING_STATUS=$(gh api graphql \
|
|
106
|
+
-f query='query($itemId:ID!){node(id:$itemId){... on ProjectV2Item{fieldValueByName(name:"Status"){... on ProjectV2ItemFieldSingleSelectValue{name}}}}}' \
|
|
107
|
+
-f itemId="$ITEM_ID" \
|
|
108
|
+
--jq '.data.node.fieldValueByName.name // ""')
|
|
109
|
+
|
|
110
|
+
if [ -n "$EXISTING_STATUS" ]; then
|
|
111
|
+
echo "Status is already $EXISTING_STATUS; keeping it instead of overwriting with ${{ env.unread }}"
|
|
112
|
+
exit 0
|
|
113
|
+
fi
|
|
114
|
+
fi
|
|
115
|
+
|
|
104
116
|
gh api graphql \
|
|
105
117
|
-f query='mutation($projectId:ID!,$itemId:ID!,$fieldId:ID!,$optionId:String!){updateProjectV2ItemFieldValue(input:{projectId:$projectId,itemId:$itemId,fieldId:$fieldId,value:{singleSelectOptionId:$optionId}}){projectV2Item{id}}}' \
|
|
106
118
|
-f projectId="$PROJECT_V2_ID" \
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
# [1.148.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.147.5...v1.148.0) (2026-08-09)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **core:** assign manager to allow-listed authors' pull requests that are not project items ([#1467](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1467)) ([7d2a606](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/7d2a606e453b957578fdf75987974f6d8e5458c4))
|
|
7
|
+
|
|
8
|
+
## [1.147.5](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.147.4...v1.147.5) (2026-08-09)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **console:** render cross-repository issue references with the referenced repository ([#1462](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1462)) ([d415451](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/d415451727639a8f23bbcb44e4153184748fea0d))
|
|
14
|
+
|
|
1
15
|
## [1.147.4](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.147.3...v1.147.4) (2026-08-09)
|
|
2
16
|
|
|
3
17
|
|
package/README.md
CHANGED
|
@@ -216,6 +216,8 @@ labelsNotRequiringPullRequest?: string[] | null # Optional: List of issue labels
|
|
|
216
216
|
changeTargetPathAliases?: Record<string, string> | null # Optional: Map of short alias keys to full repository-root-relative directory paths, for use with `change-target:<alias>` labels. Allows deeply nested paths that exceed GitHub's 50-character label limit to be referenced via a short alias. Example: `{ "adapters": "src/domain/usecases/adapter-interfaces" }` — a label `change-target:adapters` then matches files under `src/domain/usecases/adapter-interfaces/`. Keys not matching any `change-target:` label value are ignored; values with leading or trailing slashes are normalized automatically. Declared at the top level (sibling of startPreparation), not inside it.
|
|
217
217
|
claudeCodeOauthTokenListJsonPath?: string # Optional: Path to a JSON file listing long-term Claude Code OAuth tokens to rotate across (see "Claude OAuth Token Rotation" below). Declared at the top level (sibling of startPreparation), not inside it.
|
|
218
218
|
autoAssignManagerAuthors?: string | string[] | null # Optional: Restrict which authors' open, unassigned issues and pull requests are auto-assigned to the manager. Accepts a comma-separated string or an array of GitHub author logins (bot logins carry the `[bot]` suffix, for example `renovate[bot]`). When set to a non-empty list, only items whose author is in the list are auto-assigned; when omitted, null, or empty, every open unassigned item is auto-assigned (current behavior). Author matching is exact equality. Declared at the top level (sibling of startPreparation), not inside it.
|
|
219
|
+
queryToAddProjectEnabled?: boolean # Optional: Enable the queryToAddProject search (default false). The search runs only when this is true, so setting queryToAddProject alone changes nothing. Declared at the top level (sibling of startPreparation), not inside it.
|
|
220
|
+
queryToAddProject?: string | null # Optional: GitHub search query string, used only when queryToAddProjectEnabled is true. Each schedule cycle, issues and pull requests matching this query that are not already on the project board are added to the project and, when their author satisfies autoAssignManagerAuthors, assigned to the manager. Omit or set to null to skip this search. Declared at the top level (sibling of startPreparation), not inside it.
|
|
219
221
|
dailySecurityScan?: # Optional: Run a daily OSV-Scanner security scan across locally cloned repositories of the org. Declared at the top level (sibling of startPreparation).
|
|
220
222
|
scanBaseDirectory: string # Base directory searched (4 levels deep) for cloned repositories to scan
|
|
221
223
|
targetHourUtc: number # UTC hour (0-23) at which the scan runs once per day; the scan runs only when a target date matches this hour at minute zero
|
|
@@ -286,6 +288,8 @@ maximumPreparingIssuesCount?: number # Optional: Max concurrent preparing issues
|
|
|
286
288
|
utilizationPercentageThreshold?: number # Optional: 5-hour utilization hard threshold (percentage, default 90). Tokens at or above this value are excluded from rotation
|
|
287
289
|
allowedIssueAuthors?: string # Optional: Comma-separated list of allowed issue authors
|
|
288
290
|
autoAssignManagerAuthors?: string # Optional: Comma-separated list of author logins whose open, unassigned issues and pull requests are auto-assigned to the manager. When set to a non-empty list, only items whose author is in the list are auto-assigned; when omitted or empty, every open unassigned item is auto-assigned (current behavior). Author matching is exact equality; bot logins carry the `[bot]` suffix (for example `renovate[bot]`)
|
|
291
|
+
queryToAddProjectEnabled?: boolean # Optional: Enable the queryToAddProject search (default false). The search runs only when this is true, so setting queryToAddProject alone changes nothing
|
|
292
|
+
queryToAddProject?: string # Optional: GitHub search query string, used only when queryToAddProjectEnabled is true. Each schedule cycle, issues and pull requests matching this query that are not already on the project board are added to the project and, when their author satisfies autoAssignManagerAuthors, assigned to the manager. Omit to skip this search.
|
|
289
293
|
thresholdForAutoReject?: number # Optional: Consecutive rejections before escalation (default: 3)
|
|
290
294
|
workflowBlockerResolvedWebhookUrl?: string # Optional: Webhook URL. Supports {URL} and {MESSAGE} placeholders
|
|
291
295
|
preparationProcessCheckCommand?: string # Optional: Shell command template with {URL} placeholder to check if a preparation process is alive. Orphaned Preparation issues (process exits non-zero, or stale aw log) are evaluated for completion: if work is done they advance to Awaiting Quality Check; otherwise an `Auto Status Check: REJECTED` comment is posted and the issue falls back to Awaiting Workspace, except that once `thresholdForAutoReject` cumulative orphan-time rejections accumulate within the recent comment window (and no earlier escalation marker is present) the issue is transitioned to Failed Preparation instead
|