npm-cli-gh-issue-preparator 1.28.0 → 1.29.1

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.
@@ -0,0 +1,82 @@
1
+ name: Add to Project
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ issue_or_pr_url:
7
+ description: 'Issue or PR URL (https://github.com/<owner>/<repo>/issues/<number> or .../pull/<number>)'
8
+ required: true
9
+ default: ''
10
+
11
+ env:
12
+ PROJECT_V2_ID: PVT_kwHOAGJHa84AFWnr
13
+
14
+ jobs:
15
+ add-to-project:
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - name: Add to Project
19
+ env:
20
+ GH_TOKEN: ${{ secrets.GH_TOKEN }}
21
+ run: |
22
+ ISSUE_OR_PR_URL="${{ github.event.inputs.issue_or_pr_url }}"
23
+ ISSUE_OR_PR_URL="${ISSUE_OR_PR_URL%%\?*}"
24
+ ISSUE_OR_PR_URL="${ISSUE_OR_PR_URL%/}"
25
+
26
+ if ! echo "$ISSUE_OR_PR_URL" | grep -qE '^https://github\.com/[^/]+/[^/]+/(issues|pull)/[0-9]+$'; then
27
+ echo "Invalid URL format. Expected: https://github.com/<owner>/<repo>/issues/<number> or .../pull/<number>"
28
+ echo "Got: $ISSUE_OR_PR_URL"
29
+ exit 1
30
+ fi
31
+
32
+ REPO_PATH=$(echo "$ISSUE_OR_PR_URL" | awk -F'/' '{print $4"/"$5}')
33
+ NUMBER=$(echo "$ISSUE_OR_PR_URL" | grep -oE '[0-9]+$')
34
+
35
+ if echo "$ISSUE_OR_PR_URL" | grep -q "/pull/"; then
36
+ RESOURCE_TYPE="pulls"
37
+ else
38
+ RESOURCE_TYPE="issues"
39
+ fi
40
+
41
+ REST_RESPONSE=$(curl -s -w "\n%{http_code}" -H "Authorization: token $GH_TOKEN" \
42
+ "https://api.github.com/repos/$REPO_PATH/$RESOURCE_TYPE/$NUMBER")
43
+ HTTP_STATUS=$(echo "$REST_RESPONSE" | tail -n1)
44
+ REST_BODY=$(echo "$REST_RESPONSE" | sed '$d')
45
+
46
+ if [ "$HTTP_STATUS" != "200" ]; then
47
+ echo "REST API returned HTTP $HTTP_STATUS"
48
+ echo "$REST_BODY"
49
+ exit 1
50
+ fi
51
+
52
+ NODE_ID=$(echo "$REST_BODY" | jq -r '.node_id')
53
+
54
+ if [ -z "$NODE_ID" ] || [ "$NODE_ID" = "null" ]; then
55
+ echo "Failed to get node ID. REST response:"
56
+ echo "$REST_BODY"
57
+ exit 1
58
+ fi
59
+
60
+ echo "Node ID: $NODE_ID"
61
+
62
+ GRAPHQL_PAYLOAD=$(jq -n \
63
+ --arg nodeId "$NODE_ID" \
64
+ --arg projectId "$PROJECT_V2_ID" \
65
+ '{"query": "mutation($contentId: ID!, $projectId: ID!) { addProjectV2ItemById(input: { contentId: $contentId, projectId: $projectId }) { item { id } } }", "variables": {"contentId": $nodeId, "projectId": $projectId}}')
66
+
67
+ RESPONSE=$(curl -s -X POST \
68
+ -H "Authorization: bearer $GH_TOKEN" \
69
+ -H "Content-Type: application/json" \
70
+ https://api.github.com/graphql \
71
+ -d "$GRAPHQL_PAYLOAD")
72
+ echo "$RESPONSE"
73
+
74
+ if ! echo "$RESPONSE" | jq '.' > /dev/null 2>&1; then
75
+ echo "Non-JSON response received"
76
+ exit 1
77
+ fi
78
+
79
+ if echo "$RESPONSE" | jq -e '.errors' > /dev/null; then
80
+ echo "GraphQL error occurred"
81
+ exit 1
82
+ fi
@@ -108,7 +108,9 @@ jobs:
108
108
  github-token: ${{secrets.GH_TOKEN}}
109
109
  script: |
110
110
  const commentBody = context.payload.comment.body;
111
- const createIssueIndex = commentBody.indexOf('/createissue');
111
+ const commandMatch = /(^|\n)\s*\/createissue\b/m.exec(commentBody);
112
+ if (!commandMatch) return;
113
+ const createIssueIndex = commentBody.indexOf('/createissue', commandMatch.index);
112
114
  const issueTitle = commentBody.slice(createIssueIndex + 12).split('\n')[0].trim();
113
115
  const issueNumber = context.issue.number;
114
116
  const commentId = context.payload.comment.id;
@@ -116,7 +118,7 @@ jobs:
116
118
  const issueBody = `
117
119
  ${commentBody.slice(createIssueIndex + 12).trim()}
118
120
  Created from a comment: ${commentLink}
119
- `;
121
+ `;
120
122
  const newIssue = await github.rest.issues.create({
121
123
  owner: context.repo.owner,
122
124
  repo: context.repo.repo,
@@ -130,6 +132,8 @@ jobs:
130
132
  with:
131
133
  github-token: ${{secrets.GH_TOKEN}}
132
134
  script: |
135
+ const body = context.payload.comment.body;
136
+ if (!/(^|\n)\s*\/(close|done)\b/m.test(body)) return;
133
137
  await github.rest.issues.update({
134
138
  owner: context.repo.owner,
135
139
  repo: context.repo.repo,
@@ -138,18 +142,42 @@ jobs:
138
142
  });
139
143
  - name: Update Date Field
140
144
  if: ${{ github.event_name == 'issue_comment' && github.event.action == 'created' && contains(github.event.comment.body, '/movenextactiondateto') }}
141
- run: |
142
- DATE_STRING=$(echo "${{ github.event.comment.body }}" | grep -oP '(?<=/movenextactiondateto )\d{8}')
143
- OWNER=$(echo ${{ github.repository }} | cut -d '/' -f 1)
144
- REPO=$(echo ${{ github.repository }} | cut -d '/' -f 2)
145
- ITEM_ID=$(curl -X POST -H "Authorization: bearer ${{ secrets.GH_TOKEN }}" -H "Content-Type: application/json" --data '{ "query": "query { repository(owner: \"'$OWNER'\", name: \"'$REPO'\") { issue(number: '${{ github.event.issue.number }}') { projectItems(first: 10) { nodes { id } } } } }" }' https://api.github.com/graphql | jq -r '.data.repository.issue.projectItems.nodes[0].id')
146
- UPDATE_FIELD_DATA="{\"query\":\"mutation { updateProjectV2ItemFieldValue(input: {projectId: \\\"${{ env.project_v2_id }}\\\", fieldId: \\\"${{ env.field_id }}\\\", itemId: \\\"$ITEM_ID\\\", value: { date: \\\"$DATE_STRING\\\" }}) { clientMutationId }}\"}"
147
- curl --request POST \
148
- -f \
149
- --url https://api.github.com/graphql \
150
- --header "Authorization: Bearer ${{ env.gh_project_token }}" \
151
- --header "Content-Type: application/json" \
152
- --data "$UPDATE_FIELD_DATA"
145
+ uses: actions/github-script@v9
146
+ env:
147
+ PROJECT_V2_ID: ${{ env.project_v2_id }}
148
+ FIELD_ID: ${{ env.field_id }}
149
+ with:
150
+ github-token: ${{ secrets.GH_TOKEN }}
151
+ script: |
152
+ const commentBody = context.payload.comment.body;
153
+ const commandMatch = /(^|\n)\s*\/movenextactiondateto\b/m.exec(commentBody);
154
+ if (!commandMatch) return;
155
+ const dateMatch = /\/movenextactiondateto\s+(\d{8})/.exec(commentBody.slice(commandMatch.index));
156
+ if (!dateMatch) return;
157
+ const dateString = dateMatch[1];
158
+ const projectId = process.env.PROJECT_V2_ID;
159
+ const fieldId = process.env.FIELD_ID;
160
+ const itemIdResult = await github.graphql(
161
+ `query($owner: String!, $repo: String!, $number: Int!) {
162
+ repository(owner: $owner, name: $repo) {
163
+ issue(number: $number) {
164
+ projectItems(first: 10) { nodes { id } }
165
+ }
166
+ }
167
+ }`,
168
+ { owner: context.repo.owner, repo: context.repo.repo, number: context.issue.number }
169
+ );
170
+ const itemId = itemIdResult.repository.issue.projectItems.nodes[0]?.id;
171
+ if (!itemId) { core.setFailed('No project item found for this issue'); return; }
172
+ await github.graphql(
173
+ `mutation($projectId: ID!, $fieldId: ID!, $itemId: ID!, $date: Date!) {
174
+ updateProjectV2ItemFieldValue(input: {
175
+ projectId: $projectId, fieldId: $fieldId, itemId: $itemId,
176
+ value: { date: $date }
177
+ }) { clientMutationId }
178
+ }`,
179
+ { projectId, fieldId, itemId, date: dateString }
180
+ );
153
181
  - name: Change Assignee
154
182
  if: ${{ github.event_name == 'issue_comment' && github.event.action == 'created' && contains(github.event.comment.body, '/changeassignee ') }}
155
183
  uses: actions/github-script@v9
@@ -157,8 +185,9 @@ jobs:
157
185
  github-token: ${{secrets.GH_TOKEN}}
158
186
  script: |
159
187
  const commentBody = context.payload.comment.body;
160
- const assigneeIndex = commentBody.indexOf('/changeassignee ') + 16;
161
- const assigneeName = commentBody.slice(assigneeIndex).split(' ')[0].trim();
188
+ const commandMatch = /(^|\n)\s*\/changeassignee\s+(\S+)/m.exec(commentBody);
189
+ if (!commandMatch) return;
190
+ const assigneeName = commandMatch[2].trim();
162
191
  await github.rest.issues.update({
163
192
  owner: context.repo.owner,
164
193
  repo: context.repo.repo,
package/CHANGELOG.md CHANGED
@@ -1,3 +1,29 @@
1
+ ## [1.29.1](https://github.com/HiromiShikata/npm-cli-gh-issue-preparator/compare/v1.29.0...v1.29.1) (2026-05-05)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **core:** call setPrNextActionDate in approved escalation path and strengthen test ([6ffcdce](https://github.com/HiromiShikata/npm-cli-gh-issue-preparator/commit/6ffcdcec4216a593e8a7718a6a5d0d839d730dbb))
7
+ * **core:** use distinct wording when APPROVED status triggers escalation threshold ([56b89c2](https://github.com/HiromiShikata/npm-cli-gh-issue-preparator/commit/56b89c21992e0e3617c2f40f41586cc12655eca4)), closes [#283](https://github.com/HiromiShikata/npm-cli-gh-issue-preparator/issues/283)
8
+
9
+ # [1.29.0](https://github.com/HiromiShikata/npm-cli-gh-issue-preparator/compare/v1.28.0...v1.29.0) (2026-05-05)
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * **core:** log error and skip issue instead of throwing when model is missing ([d01fd52](https://github.com/HiromiShikata/npm-cli-gh-issue-preparator/commit/d01fd52a96cf6e1c7915d6e2af90e6f6e511444e))
15
+
16
+
17
+ ### Features
18
+
19
+ * **core:** remove hardcoded LLM model default; require explicit config or label ([776b2b8](https://github.com/HiromiShikata/npm-cli-gh-issue-preparator/commit/776b2b8393af72a05a30273c548870e406b22296))
20
+
21
+ # [Unreleased]
22
+
23
+ ### Breaking Changes
24
+
25
+ * **core:** remove hardcoded default LLM model; `defaultLlmModelName` or an `llm-model:` label is now required — omitting both logs an error and skips the issue instead of silently using the old `claude-sonnet-4.6` literal (use CLI-executable forms such as `claude-sonnet-4-6` or alias `sonnet`)
26
+
1
27
  # [1.28.0](https://github.com/HiromiShikata/npm-cli-gh-issue-preparator/compare/v1.27.0...v1.28.0) (2026-05-03)
2
28
 
3
29
 
package/README.md CHANGED
@@ -62,7 +62,7 @@ You can use GitHub issue labels to customize the agent and model selection for i
62
62
  - `llm-agent:{agent-name}` - Overrides the default LLM agent for this issue
63
63
  - `llm-model:{model-name}` - Overrides the default LLM model for this issue
64
64
 
65
- Example: `llm-agent:custom-impl`, `llm-model:claude-sonnet`
65
+ Example: `llm-agent:custom-impl`, `llm-model:claude-sonnet-4-6`
66
66
 
67
67
  **Label priority for agent selection:**
68
68
 
@@ -76,6 +76,8 @@ Example: `llm-agent:custom-impl`, `llm-model:claude-sonnet`
76
76
  1. `llm-model:` label (highest priority)
77
77
  2. `defaultLlmModelName` parameter (lowest priority)
78
78
 
79
+ If neither is configured for an issue, the use case throws an error. A model must always be provided via `--defaultLlmModelName` or an `llm-model:` label.
80
+
79
81
  **Note:** The `category:` label serves an additional role beyond agent selection: in `notifyFinishedIssuePreparation`, issues with a non-e2e `category:` label skip the PR check. Issues using only `llm-agent:` for agent selection still require a `category:` label (other than `category:e2e`) to skip the PR check during notification.
80
82
 
81
83
  ## Example 📖
@@ -72,7 +72,13 @@ class NotifyFinishedIssuePreparationUseCase {
72
72
  .includes('failed to pass the check automatically'))) {
73
73
  issue.status = params.awaitingQualityCheckStatus;
74
74
  await this.issueRepository.update(issue, project);
75
- await this.issueCommentRepository.createComment(issue, `${rejectionStatusMessage}\n\nFailed to pass the check automatically for ${params.thresholdForAutoReject} times`);
75
+ const escalationStatusLine = rejections.length > 0
76
+ ? rejectionStatusMessage
77
+ : 'Auto Status Check: APPROVED (escalated due to prior failures)';
78
+ if (rejections.length === 0 && approvedPrUrl !== null) {
79
+ await this.setPrNextActionDate(approvedPrUrl, project);
80
+ }
81
+ await this.issueCommentRepository.createComment(issue, `${escalationStatusLine}\n\nFailed to pass the check automatically for ${params.thresholdForAutoReject} times`);
76
82
  await this.sendWorkflowBlockerNotification(params.issueUrl, params.workflowBlockerResolvedWebhookUrl, project);
77
83
  return;
78
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NotifyFinishedIssuePreparationUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NotifyFinishedIssuePreparationUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts"],"names":[],"mappings":"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"}
@@ -84,9 +84,11 @@ class StartPreparationUseCase {
84
84
  const model = issue.labels
85
85
  .find((label) => label.startsWith('llm-model:'))
86
86
  ?.replace('llm-model:', '')
87
- .trim() ||
88
- params.defaultLlmModelName ||
89
- 'claude-sonnet-4.6';
87
+ .trim() || params.defaultLlmModelName;
88
+ if (!model) {
89
+ console.error(`No LLM model configured for issue ${issue.url}. Provide --defaultLlmModelName or add an llm-model: label.`);
90
+ continue;
91
+ }
90
92
  const isPrUrl = issue.url.includes('/pull/');
91
93
  let existingPRBranchName = null;
92
94
  if (isPrUrl) {
@@ -1 +1 @@
1
- {"version":3,"file":"StartPreparationUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/StartPreparationUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StartPreparationUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/StartPreparationUseCase.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "npm-cli-gh-issue-preparator",
3
- "version": "1.28.0",
3
+ "version": "1.29.1",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -521,6 +521,66 @@ describe('NotifyFinishedIssuePreparationUseCase', () => {
521
521
  );
522
522
  });
523
523
 
524
+ it('should use APPROVED escalation wording and set PR next action date when current check passes but threshold is met', async () => {
525
+ const fakeNow = new Date('2024-06-15T00:00:00.000Z');
526
+ jest.useFakeTimers();
527
+ jest.setSystemTime(fakeNow);
528
+
529
+ const issue = createMockIssue({
530
+ url: 'https://github.com/user/repo/issues/1',
531
+ status: 'Preparation',
532
+ });
533
+
534
+ mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
535
+ mockIssueRepository.get.mockResolvedValue(issue);
536
+ mockIssueCommentRepository.getCommentsFromIssue.mockResolvedValue([
537
+ createMockComment({ content: 'Auto Status Check: REJECTED - first' }),
538
+ createMockComment({ content: 'Auto Status Check: REJECTED - second' }),
539
+ createMockComment({ content: 'Auto Status Check: REJECTED - third' }),
540
+ createMockComment({ content: 'From: :robot: Agent report - all done' }),
541
+ ]);
542
+ mockIssueRepository.findRelatedOpenPRs.mockResolvedValue([
543
+ {
544
+ url: 'https://github.com/user/repo/pull/1',
545
+ branchName: null,
546
+ isConflicted: false,
547
+ isPassedAllCiJob: true,
548
+ isCiStateSuccess: true,
549
+ isResolvedAllReviewComments: true,
550
+ isBranchOutOfDate: false,
551
+ missingRequiredCheckNames: [],
552
+ },
553
+ ]);
554
+
555
+ await useCase.run({
556
+ projectUrl: 'https://github.com/users/user/projects/1',
557
+ issueUrl: 'https://github.com/user/repo/issues/1',
558
+ preparationStatus: 'Preparation',
559
+ awaitingWorkspaceStatus: 'Awaiting Workspace',
560
+ awaitingQualityCheckStatus: 'Awaiting Quality Check',
561
+ thresholdForAutoReject: 3,
562
+ workflowBlockerResolvedWebhookUrl: null,
563
+ });
564
+
565
+ jest.useRealTimers();
566
+
567
+ const expectedDate = new Date('2024-06-15T00:00:00.000Z');
568
+ expectedDate.setMonth(expectedDate.getMonth() + 1);
569
+
570
+ const createCommentCall =
571
+ mockIssueCommentRepository.createComment.mock.calls[0];
572
+ expect(createCommentCall[1]).toContain(
573
+ 'Auto Status Check: APPROVED (escalated due to prior failures)',
574
+ );
575
+ expect(createCommentCall[1]).not.toContain('Auto Status Check: APPROVED\n');
576
+ expect(mockIssueRepository.updateNextActionDate).toHaveBeenCalledTimes(1);
577
+ expect(mockIssueRepository.updateNextActionDate).toHaveBeenCalledWith(
578
+ 'https://github.com/user/repo/pull/1',
579
+ mockProject,
580
+ expectedDate,
581
+ );
582
+ });
583
+
524
584
  it('should not auto-escalate when rejections are below threshold', async () => {
525
585
  const issue = createMockIssue({
526
586
  url: 'https://github.com/user/repo/issues/1',
@@ -163,9 +163,16 @@ export class NotifyFinishedIssuePreparationUseCase {
163
163
  ) {
164
164
  issue.status = params.awaitingQualityCheckStatus;
165
165
  await this.issueRepository.update(issue, project);
166
+ const escalationStatusLine =
167
+ rejections.length > 0
168
+ ? rejectionStatusMessage
169
+ : 'Auto Status Check: APPROVED (escalated due to prior failures)';
170
+ if (rejections.length === 0 && approvedPrUrl !== null) {
171
+ await this.setPrNextActionDate(approvedPrUrl, project);
172
+ }
166
173
  await this.issueCommentRepository.createComment(
167
174
  issue,
168
- `${rejectionStatusMessage}\n\nFailed to pass the check automatically for ${params.thresholdForAutoReject} times`,
175
+ `${escalationStatusLine}\n\nFailed to pass the check automatically for ${params.thresholdForAutoReject} times`,
169
176
  );
170
177
  await this.sendWorkflowBlockerNotification(
171
178
  params.issueUrl,
@@ -419,7 +419,7 @@ describe('StartPreparationUseCase', () => {
419
419
  awaitingWorkspaceStatus: 'Awaiting Workspace',
420
420
  preparationStatus: 'Preparation',
421
421
  defaultAgentName: 'agent1',
422
- defaultLlmModelName: null,
422
+ defaultLlmModelName: 'claude-sonnet-4-6',
423
423
  defaultLlmAgentName: null,
424
424
  logFilePath: null,
425
425
  maximumPreparingIssuesCount: null,
@@ -583,7 +583,7 @@ describe('StartPreparationUseCase', () => {
583
583
  awaitingWorkspaceStatus: 'Awaiting Workspace',
584
584
  preparationStatus: 'Preparation',
585
585
  defaultAgentName: 'agent1',
586
- defaultLlmModelName: null,
586
+ defaultLlmModelName: 'claude-sonnet-4-6',
587
587
  defaultLlmAgentName: 'default-llm-agent',
588
588
  logFilePath: null,
589
589
  maximumPreparingIssuesCount: null,
@@ -592,7 +592,7 @@ describe('StartPreparationUseCase', () => {
592
592
  });
593
593
  expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
594
594
  expect(mockLocalCommandRunner.runCommand.mock.calls[0][0]).toBe(
595
- `aw url1 research claude-sonnet-4.6 ${mockProject.url}`,
595
+ `aw url1 research claude-sonnet-4-6 ${mockProject.url}`,
596
596
  );
597
597
  });
598
598
  it('should use category label over defaultLlmAgentName when no llm-agent label', async () => {
@@ -619,7 +619,7 @@ describe('StartPreparationUseCase', () => {
619
619
  awaitingWorkspaceStatus: 'Awaiting Workspace',
620
620
  preparationStatus: 'Preparation',
621
621
  defaultAgentName: 'agent1',
622
- defaultLlmModelName: null,
622
+ defaultLlmModelName: 'claude-sonnet-4-6',
623
623
  defaultLlmAgentName: 'default-llm-agent',
624
624
  logFilePath: null,
625
625
  maximumPreparingIssuesCount: null,
@@ -628,7 +628,7 @@ describe('StartPreparationUseCase', () => {
628
628
  });
629
629
  expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
630
630
  expect(mockLocalCommandRunner.runCommand.mock.calls[0][0]).toBe(
631
- `aw url1 impl claude-sonnet-4.6 ${mockProject.url}`,
631
+ `aw url1 impl claude-sonnet-4-6 ${mockProject.url}`,
632
632
  );
633
633
  });
634
634
  it('should use defaultLlmAgentName over defaultAgentName when no label', async () => {
@@ -655,7 +655,7 @@ describe('StartPreparationUseCase', () => {
655
655
  awaitingWorkspaceStatus: 'Awaiting Workspace',
656
656
  preparationStatus: 'Preparation',
657
657
  defaultAgentName: 'agent1',
658
- defaultLlmModelName: null,
658
+ defaultLlmModelName: 'claude-sonnet-4-6',
659
659
  defaultLlmAgentName: 'default-llm-agent',
660
660
  logFilePath: null,
661
661
  maximumPreparingIssuesCount: null,
@@ -664,7 +664,7 @@ describe('StartPreparationUseCase', () => {
664
664
  });
665
665
  expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
666
666
  expect(mockLocalCommandRunner.runCommand.mock.calls[0][0]).toBe(
667
- `aw url1 default-llm-agent claude-sonnet-4.6 ${mockProject.url}`,
667
+ `aw url1 default-llm-agent claude-sonnet-4-6 ${mockProject.url}`,
668
668
  );
669
669
  });
670
670
  it('should use llm-model label over defaultLlmModelName', async () => {
@@ -703,7 +703,7 @@ describe('StartPreparationUseCase', () => {
703
703
  `aw url1 impl claude-sonnet ${mockProject.url}`,
704
704
  );
705
705
  });
706
- it('should use claude-sonnet-4.6 as default model when no llm-model label and no defaultLlmModelName', async () => {
706
+ it('should log error and skip issue when no llm-model label and no defaultLlmModelName', async () => {
707
707
  const awaitingIssues: Issue[] = [
708
708
  createMockIssue({
709
709
  url: 'url1',
@@ -722,6 +722,57 @@ describe('StartPreparationUseCase', () => {
722
722
  stderr: '',
723
723
  exitCode: 0,
724
724
  });
725
+ const consoleErrorSpy = jest
726
+ .spyOn(console, 'error')
727
+ .mockImplementation(() => {});
728
+ await useCase.run({
729
+ projectUrl: 'https://github.com/user/repo',
730
+ awaitingWorkspaceStatus: 'Awaiting Workspace',
731
+ preparationStatus: 'Preparation',
732
+ defaultAgentName: 'agent1',
733
+ defaultLlmModelName: null,
734
+ defaultLlmAgentName: null,
735
+ logFilePath: null,
736
+ maximumPreparingIssuesCount: null,
737
+ utilizationPercentageThreshold: 90,
738
+ allowedIssueAuthors: null,
739
+ });
740
+ expect(consoleErrorSpy).toHaveBeenCalledWith(
741
+ 'No LLM model configured for issue url1. Provide --defaultLlmModelName or add an llm-model: label.',
742
+ );
743
+ expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(0);
744
+ consoleErrorSpy.mockRestore();
745
+ });
746
+ it('should continue processing subsequent issues when one issue has no model configured', async () => {
747
+ const awaitingIssues: Issue[] = [
748
+ createMockIssue({
749
+ url: 'url1',
750
+ title: 'Issue 1 (no model)',
751
+ labels: ['category:impl'],
752
+ status: 'Awaiting Workspace',
753
+ }),
754
+ createMockIssue({
755
+ url: 'url2',
756
+ title: 'Issue 2 (with model label)',
757
+ labels: ['category:impl', 'llm-model:claude-sonnet-4-6'],
758
+ status: 'Awaiting Workspace',
759
+ number: 2,
760
+ itemId: 'item-2',
761
+ }),
762
+ ];
763
+ mockProjectRepository.getByUrl.mockResolvedValue(mockProject);
764
+ mockIssueRepository.getStoryObjectMap.mockResolvedValue(
765
+ createMockStoryObjectMap(awaitingIssues),
766
+ );
767
+ mockIssueRepository.getAllOpened.mockResolvedValueOnce(awaitingIssues);
768
+ mockLocalCommandRunner.runCommand.mockResolvedValue({
769
+ stdout: '',
770
+ stderr: '',
771
+ exitCode: 0,
772
+ });
773
+ const consoleErrorSpy = jest
774
+ .spyOn(console, 'error')
775
+ .mockImplementation(() => {});
725
776
  await useCase.run({
726
777
  projectUrl: 'https://github.com/user/repo',
727
778
  awaitingWorkspaceStatus: 'Awaiting Workspace',
@@ -734,10 +785,14 @@ describe('StartPreparationUseCase', () => {
734
785
  utilizationPercentageThreshold: 90,
735
786
  allowedIssueAuthors: null,
736
787
  });
788
+ expect(consoleErrorSpy).toHaveBeenCalledWith(
789
+ 'No LLM model configured for issue url1. Provide --defaultLlmModelName or add an llm-model: label.',
790
+ );
737
791
  expect(mockLocalCommandRunner.runCommand.mock.calls).toHaveLength(1);
738
- expect(mockLocalCommandRunner.runCommand.mock.calls[0][0]).toBe(
739
- `aw url1 impl claude-sonnet-4.6 ${mockProject.url}`,
792
+ expect(mockLocalCommandRunner.runCommand.mock.calls[0][0]).toContain(
793
+ 'url2 impl claude-sonnet-4-6',
740
794
  );
795
+ consoleErrorSpy.mockRestore();
741
796
  });
742
797
  it('should handle no awaiting workspace issues gracefully', async () => {
743
798
  // Test that the loop handles an empty awaiting workspace issues array
@@ -799,7 +854,7 @@ describe('StartPreparationUseCase', () => {
799
854
  awaitingWorkspaceStatus: 'Awaiting Workspace',
800
855
  preparationStatus: 'Preparation',
801
856
  defaultAgentName: 'agent1',
802
- defaultLlmModelName: null,
857
+ defaultLlmModelName: 'claude-sonnet-4-6',
803
858
  defaultLlmAgentName: null,
804
859
  logFilePath: null,
805
860
  maximumPreparingIssuesCount: 3,
@@ -833,7 +888,7 @@ describe('StartPreparationUseCase', () => {
833
888
  awaitingWorkspaceStatus: 'Awaiting Workspace',
834
889
  preparationStatus: 'Preparation',
835
890
  defaultAgentName: 'agent1',
836
- defaultLlmModelName: null,
891
+ defaultLlmModelName: 'claude-sonnet-4-6',
837
892
  defaultLlmAgentName: null,
838
893
  logFilePath: null,
839
894
  maximumPreparingIssuesCount: null,
@@ -900,7 +955,7 @@ describe('StartPreparationUseCase', () => {
900
955
  awaitingWorkspaceStatus: 'Awaiting Workspace',
901
956
  preparationStatus: 'Preparation',
902
957
  defaultAgentName: 'agent1',
903
- defaultLlmModelName: null,
958
+ defaultLlmModelName: 'claude-sonnet-4-6',
904
959
  defaultLlmAgentName: null,
905
960
  logFilePath: null,
906
961
  maximumPreparingIssuesCount: null,
@@ -983,7 +1038,7 @@ describe('StartPreparationUseCase', () => {
983
1038
  awaitingWorkspaceStatus: 'Awaiting Workspace',
984
1039
  preparationStatus: 'Preparation',
985
1040
  defaultAgentName: 'agent1',
986
- defaultLlmModelName: null,
1041
+ defaultLlmModelName: 'claude-sonnet-4-6',
987
1042
  defaultLlmAgentName: null,
988
1043
  logFilePath: null,
989
1044
  maximumPreparingIssuesCount: null,
@@ -1025,7 +1080,7 @@ describe('StartPreparationUseCase', () => {
1025
1080
  awaitingWorkspaceStatus: 'Awaiting Workspace',
1026
1081
  preparationStatus: 'Preparation',
1027
1082
  defaultAgentName: 'agent1',
1028
- defaultLlmModelName: null,
1083
+ defaultLlmModelName: 'claude-sonnet-4-6',
1029
1084
  defaultLlmAgentName: null,
1030
1085
  logFilePath: null,
1031
1086
  maximumPreparingIssuesCount: null,
@@ -1112,7 +1167,7 @@ describe('StartPreparationUseCase', () => {
1112
1167
  awaitingWorkspaceStatus: 'Awaiting Workspace',
1113
1168
  preparationStatus: 'Preparation',
1114
1169
  defaultAgentName: 'agent1',
1115
- defaultLlmModelName: null,
1170
+ defaultLlmModelName: 'claude-sonnet-4-6',
1116
1171
  defaultLlmAgentName: null,
1117
1172
  logFilePath: null,
1118
1173
  maximumPreparingIssuesCount: null,
@@ -1191,7 +1246,7 @@ describe('StartPreparationUseCase', () => {
1191
1246
  awaitingWorkspaceStatus: 'Awaiting Workspace',
1192
1247
  preparationStatus: 'Preparation',
1193
1248
  defaultAgentName: 'agent1',
1194
- defaultLlmModelName: null,
1249
+ defaultLlmModelName: 'claude-sonnet-4-6',
1195
1250
  defaultLlmAgentName: null,
1196
1251
  logFilePath: null,
1197
1252
  maximumPreparingIssuesCount: null,
@@ -1299,7 +1354,7 @@ describe('StartPreparationUseCase', () => {
1299
1354
  awaitingWorkspaceStatus: 'Awaiting Workspace',
1300
1355
  preparationStatus: 'Preparation',
1301
1356
  defaultAgentName: 'agent1',
1302
- defaultLlmModelName: null,
1357
+ defaultLlmModelName: 'claude-sonnet-4-6',
1303
1358
  defaultLlmAgentName: null,
1304
1359
  logFilePath: null,
1305
1360
  maximumPreparingIssuesCount: null,
@@ -1346,7 +1401,7 @@ describe('StartPreparationUseCase', () => {
1346
1401
  awaitingWorkspaceStatus: 'Awaiting Workspace',
1347
1402
  preparationStatus: 'Preparation',
1348
1403
  defaultAgentName: 'agent1',
1349
- defaultLlmModelName: null,
1404
+ defaultLlmModelName: 'claude-sonnet-4-6',
1350
1405
  defaultLlmAgentName: null,
1351
1406
  logFilePath: null,
1352
1407
  maximumPreparingIssuesCount: null,
@@ -1404,7 +1459,7 @@ describe('StartPreparationUseCase', () => {
1404
1459
  awaitingWorkspaceStatus: 'Awaiting Workspace',
1405
1460
  preparationStatus: 'Preparation',
1406
1461
  defaultAgentName: 'agent1',
1407
- defaultLlmModelName: null,
1462
+ defaultLlmModelName: 'claude-sonnet-4-6',
1408
1463
  defaultLlmAgentName: null,
1409
1464
  logFilePath: null,
1410
1465
  maximumPreparingIssuesCount: null,
@@ -1465,7 +1520,7 @@ describe('StartPreparationUseCase', () => {
1465
1520
  awaitingWorkspaceStatus: 'Awaiting Workspace',
1466
1521
  preparationStatus: 'Preparation',
1467
1522
  defaultAgentName: 'agent1',
1468
- defaultLlmModelName: null,
1523
+ defaultLlmModelName: 'claude-sonnet-4-6',
1469
1524
  defaultLlmAgentName: null,
1470
1525
  logFilePath: null,
1471
1526
  maximumPreparingIssuesCount: null,
@@ -1515,7 +1570,7 @@ describe('StartPreparationUseCase', () => {
1515
1570
  awaitingWorkspaceStatus: 'Awaiting Workspace',
1516
1571
  preparationStatus: 'Preparation',
1517
1572
  defaultAgentName: 'agent1',
1518
- defaultLlmModelName: null,
1573
+ defaultLlmModelName: 'claude-sonnet-4-6',
1519
1574
  defaultLlmAgentName: null,
1520
1575
  logFilePath: null,
1521
1576
  maximumPreparingIssuesCount: null,
@@ -1565,7 +1620,7 @@ describe('StartPreparationUseCase', () => {
1565
1620
  awaitingWorkspaceStatus: 'Awaiting Workspace',
1566
1621
  preparationStatus: 'Preparation',
1567
1622
  defaultAgentName: 'agent1',
1568
- defaultLlmModelName: null,
1623
+ defaultLlmModelName: 'claude-sonnet-4-6',
1569
1624
  defaultLlmAgentName: null,
1570
1625
  logFilePath: null,
1571
1626
  maximumPreparingIssuesCount: null,
@@ -1615,7 +1670,7 @@ describe('StartPreparationUseCase', () => {
1615
1670
  awaitingWorkspaceStatus: 'Awaiting Workspace',
1616
1671
  preparationStatus: 'Preparation',
1617
1672
  defaultAgentName: 'agent1',
1618
- defaultLlmModelName: null,
1673
+ defaultLlmModelName: 'claude-sonnet-4-6',
1619
1674
  defaultLlmAgentName: null,
1620
1675
  logFilePath: null,
1621
1676
  maximumPreparingIssuesCount: null,
@@ -1672,7 +1727,7 @@ describe('StartPreparationUseCase', () => {
1672
1727
  awaitingWorkspaceStatus: 'Awaiting Workspace',
1673
1728
  preparationStatus: 'Preparation',
1674
1729
  defaultAgentName: 'agent1',
1675
- defaultLlmModelName: null,
1730
+ defaultLlmModelName: 'claude-sonnet-4-6',
1676
1731
  defaultLlmAgentName: null,
1677
1732
  logFilePath: null,
1678
1733
  maximumPreparingIssuesCount: null,
@@ -1720,7 +1775,7 @@ describe('StartPreparationUseCase', () => {
1720
1775
  awaitingWorkspaceStatus: 'Awaiting Workspace',
1721
1776
  preparationStatus: 'Preparation',
1722
1777
  defaultAgentName: 'agent1',
1723
- defaultLlmModelName: null,
1778
+ defaultLlmModelName: 'claude-sonnet-4-6',
1724
1779
  defaultLlmAgentName: null,
1725
1780
  logFilePath: null,
1726
1781
  maximumPreparingIssuesCount: null,
@@ -1767,7 +1822,7 @@ describe('StartPreparationUseCase', () => {
1767
1822
  awaitingWorkspaceStatus: 'Awaiting Workspace',
1768
1823
  preparationStatus: 'Preparation',
1769
1824
  defaultAgentName: 'agent1',
1770
- defaultLlmModelName: null,
1825
+ defaultLlmModelName: 'claude-sonnet-4-6',
1771
1826
  defaultLlmAgentName: null,
1772
1827
  logFilePath: null,
1773
1828
  maximumPreparingIssuesCount: null,
@@ -1831,7 +1886,7 @@ describe('StartPreparationUseCase', () => {
1831
1886
  awaitingWorkspaceStatus: 'Awaiting Workspace',
1832
1887
  preparationStatus: 'Preparation',
1833
1888
  defaultAgentName: 'agent1',
1834
- defaultLlmModelName: null,
1889
+ defaultLlmModelName: 'claude-sonnet-4-6',
1835
1890
  defaultLlmAgentName: null,
1836
1891
  logFilePath: null,
1837
1892
  maximumPreparingIssuesCount: null,
@@ -164,9 +164,13 @@ export class StartPreparationUseCase {
164
164
  issue.labels
165
165
  .find((label: string) => label.startsWith('llm-model:'))
166
166
  ?.replace('llm-model:', '')
167
- .trim() ||
168
- params.defaultLlmModelName ||
169
- 'claude-sonnet-4.6';
167
+ .trim() || params.defaultLlmModelName;
168
+ if (!model) {
169
+ console.error(
170
+ `No LLM model configured for issue ${issue.url}. Provide --defaultLlmModelName or add an llm-model: label.`,
171
+ );
172
+ continue;
173
+ }
170
174
  const isPrUrl = issue.url.includes('/pull/');
171
175
  let existingPRBranchName: string | null = null;
172
176
  if (isPrUrl) {
@@ -1 +1 @@
1
- {"version":3,"file":"NotifyFinishedIssuePreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEhB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAE3E,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,QAAQ,EAAE,MAAM;CAI7B;AACD,qBAAa,uBAAwB,SAAQ,KAAK;gBAE9C,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,cAAc,EAAE,MAAM,GAAG,IAAI;CAOhC;AAWD,qBAAa,qCAAqC;IAE9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAIlC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAShC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IAIvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAjBjB,iBAAiB,EAAE,IAAI,CACtC,iBAAiB,EACjB,UAAU,GAAG,eAAe,CAC7B,EACgB,eAAe,EAAE,IAAI,CACpC,eAAe,EACb,KAAK,GACL,QAAQ,GACR,sBAAsB,GACtB,oBAAoB,GACpB,mBAAmB,GACnB,oBAAoB,CACvB,EACgB,sBAAsB,EAAE,IAAI,CAC3C,sBAAsB,EACtB,sBAAsB,GAAG,eAAe,CACzC,EACgB,iBAAiB,EAAE,IAAI,CACtC,iBAAiB,EACjB,gBAAgB,CACjB;IAGH,GAAG,GAAU,QAAQ;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,uBAAuB,EAAE,MAAM,CAAC;QAChC,0BAA0B,EAAE,MAAM,CAAC;QACnC,sBAAsB,EAAE,MAAM,CAAC;QAC/B,iCAAiC,EAAE,MAAM,GAAG,IAAI,CAAC;KAClD,KAAG,OAAO,CAAC,IAAI,CAAC,CAiIf;IAEF,OAAO,CAAC,iBAAiB,CAyFvB;IAEF,OAAO,CAAC,uBAAuB,CAQ7B;IAEF,OAAO,CAAC,qBAAqB,CAuB3B;IAEF,OAAO,CAAC,mBAAmB,CAWzB;IAEF,OAAO,CAAC,+BAA+B,CAgCrC;CACH"}
1
+ {"version":3,"file":"NotifyFinishedIssuePreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEhB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAE3E,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,QAAQ,EAAE,MAAM;CAI7B;AACD,qBAAa,uBAAwB,SAAQ,KAAK;gBAE9C,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,cAAc,EAAE,MAAM,GAAG,IAAI;CAOhC;AAWD,qBAAa,qCAAqC;IAE9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAIlC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAShC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IAIvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAjBjB,iBAAiB,EAAE,IAAI,CACtC,iBAAiB,EACjB,UAAU,GAAG,eAAe,CAC7B,EACgB,eAAe,EAAE,IAAI,CACpC,eAAe,EACb,KAAK,GACL,QAAQ,GACR,sBAAsB,GACtB,oBAAoB,GACpB,mBAAmB,GACnB,oBAAoB,CACvB,EACgB,sBAAsB,EAAE,IAAI,CAC3C,sBAAsB,EACtB,sBAAsB,GAAG,eAAe,CACzC,EACgB,iBAAiB,EAAE,IAAI,CACtC,iBAAiB,EACjB,gBAAgB,CACjB;IAGH,GAAG,GAAU,QAAQ;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,uBAAuB,EAAE,MAAM,CAAC;QAChC,0BAA0B,EAAE,MAAM,CAAC;QACnC,sBAAsB,EAAE,MAAM,CAAC;QAC/B,iCAAiC,EAAE,MAAM,GAAG,IAAI,CAAC;KAClD,KAAG,OAAO,CAAC,IAAI,CAAC,CAwIf;IAEF,OAAO,CAAC,iBAAiB,CAyFvB;IAEF,OAAO,CAAC,uBAAuB,CAQ7B;IAEF,OAAO,CAAC,qBAAqB,CAuB3B;IAEF,OAAO,CAAC,mBAAmB,CAWzB;IAEF,OAAO,CAAC,+BAA+B,CAgCrC;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"StartPreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/StartPreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAEzE,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAIlC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAQhC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAblB,iBAAiB,EAAE,IAAI,CACtC,iBAAiB,EACjB,UAAU,GAAG,eAAe,CAC7B,EACgB,eAAe,EAAE,IAAI,CACpC,eAAe,EACb,cAAc,GACd,mBAAmB,GACnB,QAAQ,GACR,oBAAoB,GACpB,oBAAoB,CACvB,EACgB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,EACpD,kBAAkB,EAAE,kBAAkB;IAGzD,GAAG,GAAU,QAAQ;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,uBAAuB,EAAE,MAAM,CAAC;QAChC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3C,8BAA8B,EAAE,MAAM,CAAC;QACvC,mBAAmB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;KACtC,KAAG,OAAO,CAAC,IAAI,CAAC,CAkKf;CACH"}
1
+ {"version":3,"file":"StartPreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/StartPreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAEzE,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAIlC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAQhC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAblB,iBAAiB,EAAE,IAAI,CACtC,iBAAiB,EACjB,UAAU,GAAG,eAAe,CAC7B,EACgB,eAAe,EAAE,IAAI,CACpC,eAAe,EACb,cAAc,GACd,mBAAmB,GACnB,QAAQ,GACR,oBAAoB,GACpB,oBAAoB,CACvB,EACgB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,EACpD,kBAAkB,EAAE,kBAAkB;IAGzD,GAAG,GAAU,QAAQ;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,uBAAuB,EAAE,MAAM,CAAC;QAChC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3C,8BAA8B,EAAE,MAAM,CAAC;QACvC,mBAAmB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;KACtC,KAAG,OAAO,CAAC,IAAI,CAAC,CAsKf;CACH"}