github-issue-tower-defence-management 1.60.2 → 1.64.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/publish.yml +13 -0
- package/.github/workflows/test.yml +0 -4
- package/CHANGELOG.md +14 -0
- package/README.md +53 -10
- package/bin/adapter/entry-points/cli/index.js +11 -11
- package/bin/adapter/entry-points/cli/index.js.map +1 -1
- package/bin/adapter/entry-points/handlers/GetStoryObjectMapUseCaseHandler.js +3 -22
- package/bin/adapter/entry-points/handlers/GetStoryObjectMapUseCaseHandler.js.map +1 -1
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +8 -22
- package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
- package/bin/adapter/entry-points/handlers/rotationOrderFileWriter.js +56 -0
- package/bin/adapter/entry-points/handlers/rotationOrderFileWriter.js.map +1 -0
- package/bin/adapter/entry-points/handlers/situationFileWriter.js +5 -0
- package/bin/adapter/entry-points/handlers/situationFileWriter.js.map +1 -1
- package/bin/adapter/proxy/TokenListLoader.js +21 -6
- package/bin/adapter/proxy/TokenListLoader.js.map +1 -1
- package/bin/adapter/proxy/proxyEntry.js +1 -0
- package/bin/adapter/proxy/proxyEntry.js.map +1 -1
- package/bin/adapter/repositories/BaseGitHubRepository.js +1 -113
- package/bin/adapter/repositories/BaseGitHubRepository.js.map +1 -1
- package/bin/adapter/repositories/ProxyClaudeTokenUsageRepository.js +5 -3
- package/bin/adapter/repositories/ProxyClaudeTokenUsageRepository.js.map +1 -1
- package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js +8 -7
- package/bin/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.js.map +1 -1
- package/bin/domain/usecases/HandleScheduledEventUseCase.js +14 -3
- package/bin/domain/usecases/HandleScheduledEventUseCase.js.map +1 -1
- package/bin/domain/usecases/IssueRejectionEvaluator.js +8 -1
- package/bin/domain/usecases/IssueRejectionEvaluator.js.map +1 -1
- package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js +5 -1
- package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js.map +1 -1
- package/bin/domain/usecases/RevertOrphanedPreparationUseCase.js +1 -1
- package/bin/domain/usecases/RevertOrphanedPreparationUseCase.js.map +1 -1
- package/bin/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.js +32 -1
- package/bin/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.js.map +1 -1
- package/bin/domain/usecases/StartPreparationUseCase.js +148 -28
- package/bin/domain/usecases/StartPreparationUseCase.js.map +1 -1
- package/package.json +1 -4
- package/src/adapter/entry-points/cli/index.test.ts +16 -16
- package/src/adapter/entry-points/cli/index.ts +8 -11
- package/src/adapter/entry-points/handlers/GetStoryObjectMapUseCaseHandler.test.ts +2 -55
- package/src/adapter/entry-points/handlers/GetStoryObjectMapUseCaseHandler.ts +1 -11
- package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.test.ts +6 -56
- package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +7 -11
- package/src/adapter/entry-points/handlers/rotationOrderFileWriter.test.ts +177 -0
- package/src/adapter/entry-points/handlers/rotationOrderFileWriter.ts +20 -0
- package/src/adapter/entry-points/handlers/situationFileWriter.test.ts +36 -0
- package/src/adapter/entry-points/handlers/situationFileWriter.ts +8 -0
- package/src/adapter/proxy/TokenListLoader.test.ts +50 -1
- package/src/adapter/proxy/TokenListLoader.ts +25 -5
- package/src/adapter/proxy/proxyEntry.test.ts +270 -1
- package/src/adapter/proxy/proxyEntry.ts +2 -1
- package/src/adapter/repositories/BaseGitHubRepository.test.ts +1 -186
- package/src/adapter/repositories/BaseGitHubRepository.ts +1 -139
- package/src/adapter/repositories/GraphqlProjectRepository.errorHandling.test.ts +0 -1
- package/src/adapter/repositories/GraphqlProjectRepository.fetchProjectId.test.ts +4 -1
- package/src/adapter/repositories/ProxyClaudeTokenUsageRepository.test.ts +60 -19
- package/src/adapter/repositories/ProxyClaudeTokenUsageRepository.ts +6 -4
- package/src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.ts +23 -13
- package/src/adapter/repositories/issue/ApiV3IssueRepository.test.ts +0 -1
- package/src/adapter/repositories/issue/GraphqlProjectItemRepository.test.ts +0 -8
- package/src/adapter/repositories/issue/RestIssueRepository.test.ts +0 -1
- package/src/domain/entities/ClaudeTokenUsage.ts +1 -0
- package/src/domain/usecases/HandleScheduledEventUseCase.test.ts +4 -0
- package/src/domain/usecases/HandleScheduledEventUseCase.ts +20 -5
- package/src/domain/usecases/IssueRejectionEvaluator.test.ts +153 -0
- package/src/domain/usecases/IssueRejectionEvaluator.ts +8 -0
- package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.test.ts +175 -31
- package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts +7 -1
- package/src/domain/usecases/RevertNotReadyAwaitingQualityCheckUseCase.test.ts +32 -0
- package/src/domain/usecases/RevertOrphanedPreparationUseCase.test.ts +39 -5
- package/src/domain/usecases/RevertOrphanedPreparationUseCase.ts +1 -1
- package/src/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.test.ts +139 -20
- package/src/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.ts +62 -2
- package/src/domain/usecases/StartPreparationUseCase.test.ts +614 -23
- package/src/domain/usecases/StartPreparationUseCase.ts +226 -35
- package/src/domain/usecases/adapter-interfaces/IssueRepository.ts +16 -0
- package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
- package/types/adapter/entry-points/handlers/GetStoryObjectMapUseCaseHandler.d.ts.map +1 -1
- package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
- package/types/adapter/entry-points/handlers/rotationOrderFileWriter.d.ts +3 -0
- package/types/adapter/entry-points/handlers/rotationOrderFileWriter.d.ts.map +1 -0
- package/types/adapter/entry-points/handlers/situationFileWriter.d.ts +1 -0
- package/types/adapter/entry-points/handlers/situationFileWriter.d.ts.map +1 -1
- package/types/adapter/proxy/TokenListLoader.d.ts +5 -0
- package/types/adapter/proxy/TokenListLoader.d.ts.map +1 -1
- package/types/adapter/proxy/proxyEntry.d.ts +2 -1
- package/types/adapter/proxy/proxyEntry.d.ts.map +1 -1
- package/types/adapter/repositories/BaseGitHubRepository.d.ts +1 -23
- package/types/adapter/repositories/BaseGitHubRepository.d.ts.map +1 -1
- package/types/adapter/repositories/ProxyClaudeTokenUsageRepository.d.ts.map +1 -1
- package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts +14 -5
- package/types/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.d.ts.map +1 -1
- package/types/domain/entities/ClaudeTokenUsage.d.ts +1 -0
- package/types/domain/entities/ClaudeTokenUsage.d.ts.map +1 -1
- package/types/domain/usecases/HandleScheduledEventUseCase.d.ts +5 -2
- package/types/domain/usecases/HandleScheduledEventUseCase.d.ts.map +1 -1
- package/types/domain/usecases/IssueRejectionEvaluator.d.ts +1 -1
- package/types/domain/usecases/IssueRejectionEvaluator.d.ts.map +1 -1
- package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts.map +1 -1
- package/types/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.d.ts +5 -2
- package/types/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.d.ts.map +1 -1
- package/types/domain/usecases/StartPreparationUseCase.d.ts +18 -2
- package/types/domain/usecases/StartPreparationUseCase.d.ts.map +1 -1
- package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts +14 -0
- package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts.map +1 -1
- package/bin/adapter/repositories/issue/CheerioIssueRepository.js +0 -136
- package/bin/adapter/repositories/issue/CheerioIssueRepository.js.map +0 -1
- package/bin/adapter/repositories/issue/InternalGraphqlIssueRepository.js +0 -1606
- package/bin/adapter/repositories/issue/InternalGraphqlIssueRepository.js.map +0 -1
- package/src/adapter/repositories/issue/CheerioIssueRepository.test.ts +0 -6552
- package/src/adapter/repositories/issue/CheerioIssueRepository.ts +0 -142
- package/src/adapter/repositories/issue/InternalGraphqlIssueRepository.test.ts +0 -118
- package/src/adapter/repositories/issue/InternalGraphqlIssueRepository.ts +0 -584
- package/types/adapter/repositories/issue/CheerioIssueRepository.d.ts +0 -40
- package/types/adapter/repositories/issue/CheerioIssueRepository.d.ts.map +0 -1
- package/types/adapter/repositories/issue/InternalGraphqlIssueRepository.d.ts +0 -220
- package/types/adapter/repositories/issue/InternalGraphqlIssueRepository.d.ts.map +0 -1
|
@@ -8,6 +8,25 @@ import {
|
|
|
8
8
|
PREPARATION_STATUS_NAME,
|
|
9
9
|
} from '../entities/WorkflowStatus';
|
|
10
10
|
|
|
11
|
+
const MAXIMUM_PREPARING_PROCESS_COUNT_PER_TOKEN = 6;
|
|
12
|
+
const PROCESS_COUNT_DECAY_START_UTILIZATION = 0.8;
|
|
13
|
+
const PROCESS_COUNT_ZERO_UTILIZATION = 0.95;
|
|
14
|
+
const PROCESS_COUNT_DECAY_STEEPNESS = 2;
|
|
15
|
+
|
|
16
|
+
type RotationToken = {
|
|
17
|
+
token: string;
|
|
18
|
+
model: string;
|
|
19
|
+
maximumPreparingProcessCount: number;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export type RotationOrderEntry = {
|
|
23
|
+
name: string;
|
|
24
|
+
fiveHourUtilization: number;
|
|
25
|
+
blocked: boolean;
|
|
26
|
+
rejected: boolean;
|
|
27
|
+
thresholdExcluded: boolean;
|
|
28
|
+
};
|
|
29
|
+
|
|
11
30
|
export class StartPreparationUseCase {
|
|
12
31
|
constructor(
|
|
13
32
|
private readonly projectRepository: Pick<ProjectRepository, 'getByUrl'>,
|
|
@@ -25,6 +44,11 @@ export class StartPreparationUseCase {
|
|
|
25
44
|
private readonly claudeTokenUsageRepository: ClaudeTokenUsageRepository,
|
|
26
45
|
) {}
|
|
27
46
|
|
|
47
|
+
private readonly KNOWN_MODEL_SPECIFIC_LIMIT_TYPES = [
|
|
48
|
+
'seven_day_sonnet',
|
|
49
|
+
'seven_day_opus',
|
|
50
|
+
];
|
|
51
|
+
|
|
28
52
|
private weeklyLimitTypeForModel = (modelName: string | null): string => {
|
|
29
53
|
const normalized = (modelName ?? '').toLowerCase();
|
|
30
54
|
if (normalized.includes('sonnet')) return 'seven_day_sonnet';
|
|
@@ -32,34 +56,184 @@ export class StartPreparationUseCase {
|
|
|
32
56
|
return 'seven_day';
|
|
33
57
|
};
|
|
34
58
|
|
|
35
|
-
private
|
|
59
|
+
private deriveFallbackModelName = (
|
|
60
|
+
limitType: string,
|
|
61
|
+
defaultModelName: string,
|
|
62
|
+
): string => {
|
|
63
|
+
if (limitType === this.weeklyLimitTypeForModel(defaultModelName)) {
|
|
64
|
+
return defaultModelName;
|
|
65
|
+
}
|
|
66
|
+
if (
|
|
67
|
+
limitType === 'seven_day_opus' &&
|
|
68
|
+
defaultModelName.toLowerCase().includes('sonnet')
|
|
69
|
+
) {
|
|
70
|
+
return defaultModelName.replace(/sonnet/gi, 'opus');
|
|
71
|
+
}
|
|
72
|
+
if (
|
|
73
|
+
limitType === 'seven_day_sonnet' &&
|
|
74
|
+
defaultModelName.toLowerCase().includes('opus')
|
|
75
|
+
) {
|
|
76
|
+
return defaultModelName.replace(/opus/gi, 'sonnet');
|
|
77
|
+
}
|
|
78
|
+
return defaultModelName;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
private selectModelForToken = (
|
|
36
82
|
usage: ClaudeTokenUsage,
|
|
37
|
-
|
|
38
|
-
):
|
|
39
|
-
const
|
|
40
|
-
if (
|
|
41
|
-
|
|
42
|
-
|
|
83
|
+
defaultModelName: string | null,
|
|
84
|
+
): string | null => {
|
|
85
|
+
const generalLimit = usage.modelWeeklyLimits['seven_day'];
|
|
86
|
+
if (generalLimit !== undefined && generalLimit.rejected) return null;
|
|
87
|
+
|
|
88
|
+
if (defaultModelName === null) return null;
|
|
89
|
+
|
|
90
|
+
const defaultLimitType = this.weeklyLimitTypeForModel(defaultModelName);
|
|
91
|
+
const candidateLimitTypes = [
|
|
92
|
+
defaultLimitType,
|
|
93
|
+
...this.KNOWN_MODEL_SPECIFIC_LIMIT_TYPES.filter(
|
|
94
|
+
(t) => t !== defaultLimitType,
|
|
95
|
+
),
|
|
96
|
+
];
|
|
97
|
+
|
|
98
|
+
for (const limitType of candidateLimitTypes) {
|
|
99
|
+
const limit = usage.modelWeeklyLimits[limitType];
|
|
100
|
+
if (limit === undefined || !limit.rejected) {
|
|
101
|
+
return this.deriveFallbackModelName(limitType, defaultModelName);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return null;
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
private maximumPreparingProcessCountForToken = (
|
|
109
|
+
fiveHourUtilization: number,
|
|
110
|
+
): number => {
|
|
111
|
+
if (fiveHourUtilization <= PROCESS_COUNT_DECAY_START_UTILIZATION) {
|
|
112
|
+
return MAXIMUM_PREPARING_PROCESS_COUNT_PER_TOKEN;
|
|
113
|
+
}
|
|
114
|
+
if (fiveHourUtilization >= PROCESS_COUNT_ZERO_UTILIZATION) {
|
|
115
|
+
return 0;
|
|
116
|
+
}
|
|
117
|
+
const decayProgress =
|
|
118
|
+
(fiveHourUtilization - PROCESS_COUNT_DECAY_START_UTILIZATION) /
|
|
119
|
+
(PROCESS_COUNT_ZERO_UTILIZATION - PROCESS_COUNT_DECAY_START_UTILIZATION);
|
|
120
|
+
const minimumMultiplier = Math.exp(-PROCESS_COUNT_DECAY_STEEPNESS);
|
|
121
|
+
const remainingRatio =
|
|
122
|
+
(Math.exp(-PROCESS_COUNT_DECAY_STEEPNESS * decayProgress) -
|
|
123
|
+
minimumMultiplier) /
|
|
124
|
+
(1 - minimumMultiplier);
|
|
125
|
+
return Math.max(
|
|
126
|
+
1,
|
|
127
|
+
Math.floor(MAXIMUM_PREPARING_PROCESS_COUNT_PER_TOKEN * remainingRatio),
|
|
128
|
+
);
|
|
43
129
|
};
|
|
44
130
|
|
|
45
131
|
private selectRotationTokens = (
|
|
132
|
+
tokenUsages: ClaudeTokenUsage[],
|
|
133
|
+
modelName: string | null,
|
|
134
|
+
): RotationToken[] => {
|
|
135
|
+
return tokenUsages
|
|
136
|
+
.filter((usage) => !usage.blocked)
|
|
137
|
+
.filter((usage) => !usage.rejected)
|
|
138
|
+
.flatMap((usage) => {
|
|
139
|
+
const selectedModel = this.selectModelForToken(usage, modelName);
|
|
140
|
+
if (selectedModel === null) return [];
|
|
141
|
+
return [
|
|
142
|
+
{
|
|
143
|
+
token: usage.token,
|
|
144
|
+
model: selectedModel,
|
|
145
|
+
fiveHourUtilization: usage.fiveHourUtilization,
|
|
146
|
+
maximumPreparingProcessCount:
|
|
147
|
+
this.maximumPreparingProcessCountForToken(
|
|
148
|
+
usage.fiveHourUtilization,
|
|
149
|
+
),
|
|
150
|
+
},
|
|
151
|
+
];
|
|
152
|
+
})
|
|
153
|
+
.filter((usage) => usage.maximumPreparingProcessCount > 0)
|
|
154
|
+
.sort((a, b) => a.fiveHourUtilization - b.fiveHourUtilization)
|
|
155
|
+
.map((usage) => ({
|
|
156
|
+
token: usage.token,
|
|
157
|
+
model: usage.model,
|
|
158
|
+
maximumPreparingProcessCount: usage.maximumPreparingProcessCount,
|
|
159
|
+
}));
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
private createRotationTokenSlots = (
|
|
163
|
+
rotationTokens: RotationToken[],
|
|
164
|
+
): Array<{ token: string; model: string }> => {
|
|
165
|
+
const slotCount = Math.max(
|
|
166
|
+
...rotationTokens.map((token) => token.maximumPreparingProcessCount),
|
|
167
|
+
);
|
|
168
|
+
const tokenSlots: Array<{ token: string; model: string }> = [];
|
|
169
|
+
for (let i = 0; i < slotCount; i++) {
|
|
170
|
+
tokenSlots.push(
|
|
171
|
+
...rotationTokens
|
|
172
|
+
.filter((token) => i < token.maximumPreparingProcessCount)
|
|
173
|
+
.map((token) => ({ token: token.token, model: token.model })),
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
return tokenSlots;
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
private resolveMaximumPreparingIssuesCount = (
|
|
180
|
+
configuredMaximumPreparingIssuesCount: number | null,
|
|
181
|
+
rotationTokenSlots: Array<{ token: string; model: string }> | null,
|
|
182
|
+
): number => {
|
|
183
|
+
if (rotationTokenSlots === null) {
|
|
184
|
+
return configuredMaximumPreparingIssuesCount ?? 6;
|
|
185
|
+
}
|
|
186
|
+
return Math.min(
|
|
187
|
+
configuredMaximumPreparingIssuesCount ?? rotationTokenSlots.length,
|
|
188
|
+
rotationTokenSlots.length,
|
|
189
|
+
);
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
buildRotationOrder = (
|
|
46
193
|
tokenUsages: ClaudeTokenUsage[],
|
|
47
194
|
utilizationPercentageThreshold: number,
|
|
48
195
|
modelName: string | null,
|
|
49
|
-
):
|
|
196
|
+
): RotationOrderEntry[] => {
|
|
50
197
|
const weeklyLimitType = this.weeklyLimitTypeForModel(modelName);
|
|
51
|
-
|
|
198
|
+
const isWeeklyLimitRejected = (usage: ClaudeTokenUsage): boolean =>
|
|
199
|
+
usage.modelWeeklyLimits[weeklyLimitType]?.rejected === true ||
|
|
200
|
+
usage.modelWeeklyLimits['seven_day']?.rejected === true;
|
|
201
|
+
const selectedTokens = tokenUsages
|
|
52
202
|
.filter((usage) => !usage.blocked)
|
|
53
203
|
.filter((usage) => !usage.rejected)
|
|
54
|
-
.filter(
|
|
55
|
-
(usage) => !this.isModelWeeklyLimitRejected(usage, weeklyLimitType),
|
|
56
|
-
)
|
|
204
|
+
.filter((usage) => !isWeeklyLimitRejected(usage))
|
|
57
205
|
.filter(
|
|
58
206
|
(usage) =>
|
|
59
|
-
usage.fiveHourUtilization
|
|
207
|
+
this.maximumPreparingProcessCountForToken(usage.fiveHourUtilization) >
|
|
208
|
+
0,
|
|
60
209
|
)
|
|
61
|
-
.sort((a, b) => a.fiveHourUtilization - b.fiveHourUtilization)
|
|
62
|
-
|
|
210
|
+
.sort((a, b) => a.fiveHourUtilization - b.fiveHourUtilization);
|
|
211
|
+
const selectedTokenValues = new Set(selectedTokens.map((u) => u.token));
|
|
212
|
+
const excluded: RotationOrderEntry[] = tokenUsages
|
|
213
|
+
.filter((usage) => !selectedTokenValues.has(usage.token))
|
|
214
|
+
.map((usage) => ({
|
|
215
|
+
name: usage.name ?? '',
|
|
216
|
+
fiveHourUtilization: usage.fiveHourUtilization,
|
|
217
|
+
blocked: usage.blocked,
|
|
218
|
+
rejected: usage.rejected,
|
|
219
|
+
thresholdExcluded:
|
|
220
|
+
!usage.blocked &&
|
|
221
|
+
!usage.rejected &&
|
|
222
|
+
!isWeeklyLimitRejected(usage) &&
|
|
223
|
+
this.maximumPreparingProcessCountForToken(
|
|
224
|
+
usage.fiveHourUtilization,
|
|
225
|
+
) === 0,
|
|
226
|
+
}));
|
|
227
|
+
const selectedEntries: RotationOrderEntry[] = selectedTokens.map(
|
|
228
|
+
(usage) => ({
|
|
229
|
+
name: usage.name ?? '',
|
|
230
|
+
fiveHourUtilization: usage.fiveHourUtilization,
|
|
231
|
+
blocked: false,
|
|
232
|
+
rejected: false,
|
|
233
|
+
thresholdExcluded: false,
|
|
234
|
+
}),
|
|
235
|
+
);
|
|
236
|
+
return [...selectedEntries, ...excluded];
|
|
63
237
|
};
|
|
64
238
|
|
|
65
239
|
run = async (params: {
|
|
@@ -73,29 +247,39 @@ export class StartPreparationUseCase {
|
|
|
73
247
|
allowedIssueAuthors: string[] | null;
|
|
74
248
|
codexHomeCandidates: string[] | null;
|
|
75
249
|
allowIssueCacheMinutes: number;
|
|
76
|
-
}): Promise<
|
|
77
|
-
const maximumPreparingIssuesCount = params.maximumPreparingIssuesCount ?? 6;
|
|
78
|
-
|
|
250
|
+
}): Promise<{ rotationOrder: RotationOrderEntry[] | null }> => {
|
|
79
251
|
const tokenUsages =
|
|
80
252
|
await this.claudeTokenUsageRepository.getAvailableTokenUsages();
|
|
81
|
-
let
|
|
253
|
+
let rotationTokenSlots: Array<{ token: string; model: string }> | null =
|
|
254
|
+
null;
|
|
82
255
|
let proxyBaseUrl: string | null = null;
|
|
256
|
+
const rotationOrder: RotationOrderEntry[] | null =
|
|
257
|
+
tokenUsages.length > 0
|
|
258
|
+
? this.buildRotationOrder(
|
|
259
|
+
tokenUsages,
|
|
260
|
+
params.utilizationPercentageThreshold,
|
|
261
|
+
params.defaultLlmModelName,
|
|
262
|
+
)
|
|
263
|
+
: null;
|
|
83
264
|
if (tokenUsages.length > 0) {
|
|
84
265
|
const ranked = this.selectRotationTokens(
|
|
85
266
|
tokenUsages,
|
|
86
|
-
params.utilizationPercentageThreshold,
|
|
87
267
|
params.defaultLlmModelName,
|
|
88
268
|
);
|
|
89
269
|
if (ranked.length === 0) {
|
|
90
270
|
console.warn(
|
|
91
|
-
`All ${tokenUsages.length} configured Claude OAuth token(s) are unavailable (blocked, rejected,
|
|
271
|
+
`All ${tokenUsages.length} configured Claude OAuth token(s) are unavailable (blocked, rejected, all model weekly limits exhausted, or 5h utilization >= 95%). Skipping starting preparation.`,
|
|
92
272
|
);
|
|
93
|
-
return;
|
|
273
|
+
return { rotationOrder };
|
|
94
274
|
}
|
|
95
275
|
await this.claudeTokenUsageRepository.ensureObservable();
|
|
96
|
-
|
|
276
|
+
rotationTokenSlots = this.createRotationTokenSlots(ranked);
|
|
97
277
|
proxyBaseUrl = this.claudeTokenUsageRepository.proxyBaseUrl();
|
|
98
278
|
}
|
|
279
|
+
const maximumPreparingIssuesCount = this.resolveMaximumPreparingIssuesCount(
|
|
280
|
+
params.maximumPreparingIssuesCount,
|
|
281
|
+
rotationTokenSlots,
|
|
282
|
+
);
|
|
99
283
|
|
|
100
284
|
const project = await this.projectRepository.getByUrl(params.projectUrl);
|
|
101
285
|
const storyObjectMap = await this.issueRepository.getStoryObjectMap(
|
|
@@ -113,7 +297,7 @@ export class StartPreparationUseCase {
|
|
|
113
297
|
console.error(
|
|
114
298
|
`Preparation status option '${PREPARATION_STATUS_NAME}' not found in project.`,
|
|
115
299
|
);
|
|
116
|
-
return;
|
|
300
|
+
return { rotationOrder };
|
|
117
301
|
}
|
|
118
302
|
|
|
119
303
|
const awaitingWorkspaceIssues = allOpenedIssues
|
|
@@ -182,7 +366,7 @@ export class StartPreparationUseCase {
|
|
|
182
366
|
.find((label: string) => label.startsWith('llm-model:'))
|
|
183
367
|
?.replace('llm-model:', '')
|
|
184
368
|
.trim() || params.defaultLlmModelName;
|
|
185
|
-
if (!model) {
|
|
369
|
+
if (!model && rotationTokenSlots === null) {
|
|
186
370
|
console.error(
|
|
187
371
|
`No LLM model configured for issue ${issue.url}. Provide --defaultLlmModelName or add an llm-model: label.`,
|
|
188
372
|
);
|
|
@@ -265,10 +449,25 @@ export class StartPreparationUseCase {
|
|
|
265
449
|
);
|
|
266
450
|
issue.status = PREPARATION_STATUS_NAME;
|
|
267
451
|
|
|
452
|
+
let spawnEnv: Record<string, string> | undefined;
|
|
453
|
+
let spawnModel = model ?? '';
|
|
454
|
+
if (rotationTokenSlots !== null && proxyBaseUrl !== null) {
|
|
455
|
+
const selected =
|
|
456
|
+
rotationTokenSlots[
|
|
457
|
+
(currentPreparationIssueCount + startedInThisRunCount) %
|
|
458
|
+
rotationTokenSlots.length
|
|
459
|
+
];
|
|
460
|
+
spawnModel = selected.model;
|
|
461
|
+
spawnEnv = {
|
|
462
|
+
CLAUDE_CODE_OAUTH_TOKEN: selected.token,
|
|
463
|
+
ANTHROPIC_BASE_URL: proxyBaseUrl,
|
|
464
|
+
};
|
|
465
|
+
}
|
|
466
|
+
|
|
268
467
|
const awArgs: string[] = [
|
|
269
468
|
issue.url,
|
|
270
469
|
agent,
|
|
271
|
-
|
|
470
|
+
spawnModel,
|
|
272
471
|
'--configFilePath',
|
|
273
472
|
params.configFilePath,
|
|
274
473
|
'--branch',
|
|
@@ -284,15 +483,6 @@ export class StartPreparationUseCase {
|
|
|
284
483
|
];
|
|
285
484
|
awArgs.push('--codexHome', codexHome);
|
|
286
485
|
}
|
|
287
|
-
let spawnEnv: Record<string, string> | undefined;
|
|
288
|
-
if (rotationTokens !== null && proxyBaseUrl !== null) {
|
|
289
|
-
const selected =
|
|
290
|
-
rotationTokens[startedInThisRunCount % rotationTokens.length];
|
|
291
|
-
spawnEnv = {
|
|
292
|
-
CLAUDE_CODE_OAUTH_TOKEN: selected,
|
|
293
|
-
ANTHROPIC_BASE_URL: proxyBaseUrl,
|
|
294
|
-
};
|
|
295
|
-
}
|
|
296
486
|
await this.localCommandRunner.runCommand(
|
|
297
487
|
'aw',
|
|
298
488
|
awArgs,
|
|
@@ -301,5 +491,6 @@ export class StartPreparationUseCase {
|
|
|
301
491
|
startedInThisRunCount++;
|
|
302
492
|
updatedCurrentPreparationIssueCount++;
|
|
303
493
|
}
|
|
494
|
+
return { rotationOrder };
|
|
304
495
|
};
|
|
305
496
|
}
|
|
@@ -7,6 +7,7 @@ export type RelatedPullRequest = {
|
|
|
7
7
|
url: string;
|
|
8
8
|
branchName: string | null;
|
|
9
9
|
createdAt: Date;
|
|
10
|
+
isDraft: boolean;
|
|
10
11
|
isConflicted: boolean;
|
|
11
12
|
isPassedAllCiJob: boolean;
|
|
12
13
|
isCiStateSuccess: boolean;
|
|
@@ -29,6 +30,21 @@ export interface IssueRepository {
|
|
|
29
30
|
assignees: Member['name'][],
|
|
30
31
|
labels: Label[],
|
|
31
32
|
) => Promise<number>;
|
|
33
|
+
searchIssue: (query: {
|
|
34
|
+
owner: string;
|
|
35
|
+
repositoryName: string;
|
|
36
|
+
type?: 'issue' | 'pr';
|
|
37
|
+
state?: 'open' | 'closed' | 'all';
|
|
38
|
+
title?: string;
|
|
39
|
+
createdFrom?: string;
|
|
40
|
+
assignee?: string;
|
|
41
|
+
}) => Promise<
|
|
42
|
+
{
|
|
43
|
+
url: string;
|
|
44
|
+
title: string;
|
|
45
|
+
number: string;
|
|
46
|
+
}[]
|
|
47
|
+
>;
|
|
32
48
|
updateIssue: (issue: Issue) => Promise<void>;
|
|
33
49
|
updateNextActionDate: (
|
|
34
50
|
issueUrl: 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;AAEpC,OAAO,EACL,UAAU,EACV,cAAc,EACd,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,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;AAEpC,OAAO,EACL,UAAU,EACV,cAAc,EACd,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AA6DzB,eAAO,MAAM,OAAO,SAAgB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GetStoryObjectMapUseCaseHandler.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/GetStoryObjectMapUseCaseHandler.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAG3D,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAEzE,qBAAa,+BAA+B;IAC1C,MAAM,GACJ,gBAAgB,MAAM,EACtB,UAAU,OAAO,EACjB,oBAAoB,MAAM,KACzB,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,cAAc,EAAE,cAAc,CAAC;KAChC,CAAC,
|
|
1
|
+
{"version":3,"file":"GetStoryObjectMapUseCaseHandler.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/GetStoryObjectMapUseCaseHandler.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAG3D,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAEzE,qBAAa,+BAA+B;IAC1C,MAAM,GACJ,gBAAgB,MAAM,EACtB,UAAU,OAAO,EACjB,oBAAoB,MAAM,KACzB,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,cAAc,EAAE,cAAc,CAAC;KAChC,CAAC,CA2DA;CACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HandleScheduledEventUseCaseHandler.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HandleScheduledEventUseCaseHandler.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AA2B3D,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,CAkPP;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rotationOrderFileWriter.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/rotationOrderFileWriter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AAO3F,eAAO,MAAM,sBAAsB,GACjC,eAAe,kBAAkB,EAAE,KAClC,IAOF,CAAC"}
|
|
@@ -8,6 +8,7 @@ export type SituationFileParams = {
|
|
|
8
8
|
awaitingQualityCheckStatus: string | null;
|
|
9
9
|
preparationStatus: string | null;
|
|
10
10
|
awaitingWorkspaceStatus: string | null;
|
|
11
|
+
failedPreparationStatus: string | null;
|
|
11
12
|
};
|
|
12
13
|
config: {
|
|
13
14
|
maximumPreparingIssuesCount: number | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"situationFileWriter.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/situationFileWriter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gEAAgE,CAAC;AAEzG,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,WAAW,EAAE;QACX,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1C,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;KACxC,CAAC;IACF,MAAM,EAAE;QACN,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3C,8BAA8B,EAAE,MAAM,CAAC;QACvC,sBAAsB,EAAE,MAAM,CAAC;QAC/B,sBAAsB,EAAE,MAAM,CAAC;KAChC,CAAC;IACF,8BAA8B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,KAAG,aAW9C,CAAC;AAiCF,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,mBAAmB,KAC1B,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"situationFileWriter.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/situationFileWriter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gEAAgE,CAAC;AAEzG,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,WAAW,EAAE;QACX,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1C,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;QACvC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;KACxC,CAAC;IACF,MAAM,EAAE;QACN,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3C,8BAA8B,EAAE,MAAM,CAAC;QACvC,sBAAsB,EAAE,MAAM,CAAC;QAC/B,sBAAsB,EAAE,MAAM,CAAC;KAChC,CAAC;IACF,8BAA8B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,KAAG,aAW9C,CAAC;AAiCF,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,mBAAmB,KAC1B,OAAO,CAAC,IAAI,CAkGd,CAAC"}
|
|
@@ -1,2 +1,7 @@
|
|
|
1
|
+
export type TokenEntry = {
|
|
2
|
+
name: string;
|
|
3
|
+
token: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const loadTokenEntries: (jsonPath: string) => TokenEntry[] | null;
|
|
1
6
|
export declare const loadTokens: (jsonPath: string) => string[] | null;
|
|
2
7
|
//# sourceMappingURL=TokenListLoader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenListLoader.d.ts","sourceRoot":"","sources":["../../../src/adapter/proxy/TokenListLoader.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,UAAU,GAAI,UAAU,MAAM,KAAG,MAAM,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"TokenListLoader.d.ts","sourceRoot":"","sources":["../../../src/adapter/proxy/TokenListLoader.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,KAAG,UAAU,EAAE,GAAG,IA0BlE,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,UAAU,MAAM,KAAG,MAAM,EAAE,GAAG,IAIxD,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import * as http from 'http';
|
|
1
2
|
import { ClaudeMessageResponseRepository } from '../../domain/usecases/adapter-interfaces/ClaudeMessageResponseRepository';
|
|
2
3
|
declare const extractToken: (authorization: string | string[] | undefined) => string | null;
|
|
3
|
-
declare const startProxy: (port: number, claudeMessageResponseRepository?: ClaudeMessageResponseRepository | null) =>
|
|
4
|
+
declare const startProxy: (port: number, claudeMessageResponseRepository?: ClaudeMessageResponseRepository | null) => http.Server;
|
|
4
5
|
export { startProxy, extractToken };
|
|
5
6
|
//# sourceMappingURL=proxyEntry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxyEntry.d.ts","sourceRoot":"","sources":["../../../src/adapter/proxy/proxyEntry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"proxyEntry.d.ts","sourceRoot":"","sources":["../../../src/adapter/proxy/proxyEntry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAS7B,OAAO,EAAE,+BAA+B,EAAE,MAAM,0EAA0E,CAAC;AAU3H,QAAA,MAAM,YAAY,GAChB,eAAe,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,KAC3C,MAAM,GAAG,IAQX,CAAC;AAEF,QAAA,MAAM,UAAU,GACd,MAAM,MAAM,EACZ,kCAAiC,+BAA+B,GAAG,IAAW,KAC7E,IAAI,CAAC,MA2EP,CAAC;AAQF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,35 +1,13 @@
|
|
|
1
1
|
import { LocalStorageRepository } from './LocalStorageRepository';
|
|
2
|
-
interface Cookie {
|
|
3
|
-
name: string;
|
|
4
|
-
value: string;
|
|
5
|
-
domain?: string;
|
|
6
|
-
path?: string;
|
|
7
|
-
expires?: number;
|
|
8
|
-
httpOnly?: boolean;
|
|
9
|
-
secure?: boolean;
|
|
10
|
-
sameSite?: 'lax' | 'strict' | 'none';
|
|
11
|
-
}
|
|
12
2
|
export declare class BaseGitHubRepository {
|
|
13
3
|
readonly localStorageRepository: LocalStorageRepository;
|
|
14
|
-
readonly jsonFilePath: string;
|
|
15
4
|
readonly ghToken: string;
|
|
16
|
-
|
|
17
|
-
readonly ghUserPassword: string | undefined;
|
|
18
|
-
readonly ghAuthenticatorKey: string | undefined;
|
|
19
|
-
cookie: string | null;
|
|
20
|
-
constructor(localStorageRepository: LocalStorageRepository, jsonFilePath?: string, ghToken?: string, ghUserName?: string | undefined, ghUserPassword?: string | undefined, ghAuthenticatorKey?: string | undefined);
|
|
5
|
+
constructor(localStorageRepository: LocalStorageRepository, ghToken?: string);
|
|
21
6
|
protected extractIssueFromUrl: (issueUrl: string) => {
|
|
22
7
|
owner: string;
|
|
23
8
|
repo: string;
|
|
24
9
|
issueNumber: number;
|
|
25
10
|
isIssue: boolean;
|
|
26
11
|
};
|
|
27
|
-
getCookie: () => Promise<string>;
|
|
28
|
-
createHeader: () => Promise<Record<string, string>>;
|
|
29
|
-
protected createCookieStringFromFile: () => Promise<string>;
|
|
30
|
-
protected isCookie: (cookie: object) => cookie is Cookie;
|
|
31
|
-
protected generateCookieHeaderFromJson: (cookieData: unknown) => Promise<string>;
|
|
32
|
-
refreshCookie: () => Promise<void>;
|
|
33
12
|
}
|
|
34
|
-
export {};
|
|
35
13
|
//# sourceMappingURL=BaseGitHubRepository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseGitHubRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/BaseGitHubRepository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BaseGitHubRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/BaseGitHubRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,qBAAa,oBAAoB;IAE7B,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB;IACvD,QAAQ,CAAC,OAAO,EAAE,MAAM;gBADf,sBAAsB,EAAE,sBAAsB,EAC9C,OAAO,GAAE,MAAwC;IAE5D,SAAS,CAAC,mBAAmB,GAC3B,UAAU,MAAM,KACf;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAevE;CACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProxyClaudeTokenUsageRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/ProxyClaudeTokenUsageRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,qEAAqE,CAAC;AAKjH,qBAAa,+BAAgC,YAAW,0BAA0B;IAE9E,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI;gBADJ,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,IAAI,GAAE,MAAmB;IAG5C,gBAAgB,QAAa,OAAO,CAAC,IAAI,CAAC,CAExC;IAEF,uBAAuB,QAAa,OAAO,CAAC,gBAAgB,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"ProxyClaudeTokenUsageRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/ProxyClaudeTokenUsageRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,qEAAqE,CAAC;AAKjH,qBAAa,+BAAgC,YAAW,0BAA0B;IAE9E,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI;gBADJ,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,IAAI,GAAE,MAAmB;IAG5C,gBAAgB,QAAa,OAAO,CAAC,IAAI,CAAC,CAExC;IAEF,uBAAuB,QAAa,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA0D7D;IAEF,YAAY,QAAO,MAAM,CAAoC;CAC9D"}
|
|
@@ -15,12 +15,8 @@ export declare class ApiV3CheerioRestIssueRepository extends BaseGitHubRepositor
|
|
|
15
15
|
readonly graphqlProjectItemRepository: Pick<GraphqlProjectItemRepository, 'fetchProjectItems' | 'fetchProjectItemByUrl' | 'updateProjectField' | 'clearProjectField' | 'updateProjectTextField' | 'addIssueToProject'>;
|
|
16
16
|
readonly localStorageCacheRepository: Pick<LocalStorageCacheRepository, 'getLatest' | 'set'>;
|
|
17
17
|
readonly localStorageRepository: LocalStorageRepository;
|
|
18
|
-
readonly jsonFilePath: string;
|
|
19
18
|
readonly ghToken: string;
|
|
20
|
-
|
|
21
|
-
readonly ghUserPassword: string | undefined;
|
|
22
|
-
readonly ghAuthenticatorKey: string | undefined;
|
|
23
|
-
constructor(apiV3IssueRepository: Pick<ApiV3IssueRepository, 'searchIssue'>, restIssueRepository: Pick<RestIssueRepository, 'createNewIssue' | 'updateIssue' | 'createComment' | 'getIssue' | 'updateLabels' | 'removeLabel' | 'updateAssigneeList'>, graphqlProjectItemRepository: Pick<GraphqlProjectItemRepository, 'fetchProjectItems' | 'fetchProjectItemByUrl' | 'updateProjectField' | 'clearProjectField' | 'updateProjectTextField' | 'addIssueToProject'>, localStorageCacheRepository: Pick<LocalStorageCacheRepository, 'getLatest' | 'set'>, localStorageRepository: LocalStorageRepository, jsonFilePath?: string, ghToken?: string, ghUserName?: string | undefined, ghUserPassword?: string | undefined, ghAuthenticatorKey?: string | undefined);
|
|
19
|
+
constructor(apiV3IssueRepository: Pick<ApiV3IssueRepository, 'searchIssue'>, restIssueRepository: Pick<RestIssueRepository, 'createNewIssue' | 'updateIssue' | 'createComment' | 'getIssue' | 'updateLabels' | 'removeLabel' | 'updateAssigneeList'>, graphqlProjectItemRepository: Pick<GraphqlProjectItemRepository, 'fetchProjectItems' | 'fetchProjectItemByUrl' | 'updateProjectField' | 'clearProjectField' | 'updateProjectTextField' | 'addIssueToProject'>, localStorageCacheRepository: Pick<LocalStorageCacheRepository, 'getLatest' | 'set'>, localStorageRepository: LocalStorageRepository, ghToken?: string);
|
|
24
20
|
updateStatus: (project: Project, issue: Issue, statusId: string) => Promise<void>;
|
|
25
21
|
convertProjectItemToIssue: (item: ProjectItem) => Issue;
|
|
26
22
|
getAllIssuesFromCache: (cacheKey: string, allowCacheMinutes: number) => Promise<Issue[] | null>;
|
|
@@ -30,6 +26,19 @@ export declare class ApiV3CheerioRestIssueRepository extends BaseGitHubRepositor
|
|
|
30
26
|
}>;
|
|
31
27
|
getAllIssuesFromGitHub: (projectId: Project["id"]) => Promise<Issue[]>;
|
|
32
28
|
createNewIssue: (org: string, repo: string, title: string, body: string, assignees: string[], labels: string[]) => Promise<number>;
|
|
29
|
+
searchIssue: (query: {
|
|
30
|
+
owner: string;
|
|
31
|
+
repositoryName: string;
|
|
32
|
+
type?: "issue" | "pr";
|
|
33
|
+
state?: "open" | "closed" | "all";
|
|
34
|
+
title?: string;
|
|
35
|
+
createdFrom?: string;
|
|
36
|
+
assignee?: string;
|
|
37
|
+
}) => Promise<{
|
|
38
|
+
url: string;
|
|
39
|
+
title: string;
|
|
40
|
+
number: string;
|
|
41
|
+
}[]>;
|
|
33
42
|
updateIssue: (issue: Issue) => Promise<void>;
|
|
34
43
|
getIssueByUrl: (url: string) => Promise<Issue | null>;
|
|
35
44
|
addIssueToProject: (project: Project, issueUrl: string) => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiV3CheerioRestIssueRepository.d.ts","sourceRoot":"","sources":["../../../../src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,kBAAkB,EACnB,MAAM,6DAA6D,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EACL,4BAA4B,EAC5B,WAAW,EACZ,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAE7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"ApiV3CheerioRestIssueRepository.d.ts","sourceRoot":"","sources":["../../../../src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaudeTokenUsage.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/ClaudeTokenUsage.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;CAC3D,CAAC"}
|
|
1
|
+
{"version":3,"file":"ClaudeTokenUsage.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/ClaudeTokenUsage.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;CAC3D,CAAC"}
|
|
@@ -19,7 +19,7 @@ import { SetNoStoryIssueToStoryUseCase } from './SetNoStoryIssueToStoryUseCase';
|
|
|
19
19
|
import { CreateNewStoryByLabelUseCase } from './CreateNewStoryByLabelUseCase';
|
|
20
20
|
import { AssignNoAssigneeIssueToManagerUseCase } from './AssignNoAssigneeIssueToManagerUseCase';
|
|
21
21
|
import { UpdateIssueStatusByLabelUseCase } from './UpdateIssueStatusByLabelUseCase';
|
|
22
|
-
import { StartPreparationUseCase } from './StartPreparationUseCase';
|
|
22
|
+
import { RotationOrderEntry, StartPreparationUseCase } from './StartPreparationUseCase';
|
|
23
23
|
import { RevertOrphanedPreparationUseCase } from './RevertOrphanedPreparationUseCase';
|
|
24
24
|
import { RevertNotReadyAwaitingQualityCheckUseCase } from './RevertNotReadyAwaitingQualityCheckUseCase';
|
|
25
25
|
import { SetupTowerDefenceProjectUseCase } from './SetupTowerDefenceProjectUseCase';
|
|
@@ -87,8 +87,11 @@ export declare class HandleScheduledEventUseCase {
|
|
|
87
87
|
cacheUsed: boolean;
|
|
88
88
|
targetDateTimes: Date[];
|
|
89
89
|
storyIssues: StoryObjectMap;
|
|
90
|
+
rotationOrder: RotationOrderEntry[] | null;
|
|
90
91
|
} | null>;
|
|
91
|
-
runEachUseCases: (input: Parameters<HandleScheduledEventUseCase["run"]>[0], project: Project, issues: Issue[], cacheUsed: boolean, targetDateTimes: Date[], storyObjectMap: StoryObjectMap, runSlowSweep: boolean) => Promise<
|
|
92
|
+
runEachUseCases: (input: Parameters<HandleScheduledEventUseCase["run"]>[0], project: Project, issues: Issue[], cacheUsed: boolean, targetDateTimes: Date[], storyObjectMap: StoryObjectMap, runSlowSweep: boolean) => Promise<{
|
|
93
|
+
rotationOrder: RotationOrderEntry[] | null;
|
|
94
|
+
}>;
|
|
92
95
|
runSlowSweepUseCases: (input: Parameters<HandleScheduledEventUseCase["run"]>[0], project: Project, issues: Issue[], cacheUsed: boolean, targetDateTimes: Date[], storyObjectMap: StoryObjectMap) => Promise<void>;
|
|
93
96
|
static createTargetDateTimes: (from: Date, to: Date) => Date[];
|
|
94
97
|
findTargetDateAndUpdateLastExecutionDateTime: (spreadsheetUrl: string, now: Date) => Promise<Date[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HandleScheduledEventUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/HandleScheduledEventUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,wCAAwC,EAAE,MAAM,4CAA4C,CAAC;AACtG,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,yCAAyC,EAAE,MAAM,6CAA6C,CAAC;AACxG,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,qCAAqC,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,
|
|
1
|
+
{"version":3,"file":"HandleScheduledEventUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/HandleScheduledEventUseCase.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IssueRepository } from './adapter-interfaces/IssueRepository';
|
|
2
|
-
export type PrRejectedReasonType = 'PULL_REQUEST_NOT_FOUND' | 'MULTIPLE_PULL_REQUESTS_FOUND' | 'PULL_REQUEST_CONFLICTED' | 'ANY_CI_JOB_FAILED_OR_IN_PROGRESS' | 'REQUIRED_CI_JOB_NEVER_STARTED' | 'ANY_REVIEW_COMMENT_NOT_RESOLVED';
|
|
2
|
+
export type PrRejectedReasonType = 'PULL_REQUEST_NOT_FOUND' | 'MULTIPLE_PULL_REQUESTS_FOUND' | 'PULL_REQUEST_IS_DRAFT' | 'PULL_REQUEST_CONFLICTED' | 'ANY_CI_JOB_FAILED_OR_IN_PROGRESS' | 'REQUIRED_CI_JOB_NEVER_STARTED' | 'ANY_REVIEW_COMMENT_NOT_RESOLVED';
|
|
3
3
|
export type PrRejectionResult = {
|
|
4
4
|
rejections: {
|
|
5
5
|
type: PrRejectedReasonType;
|