npm-cli-gh-issue-preparator 1.0.4 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/bin/adapter/repositories/OauthAPIClaudeRepository.js +235 -0
- package/bin/adapter/repositories/OauthAPIClaudeRepository.js.map +1 -0
- package/bin/domain/entities/ClaudeWindowUsage.js +3 -0
- package/bin/domain/entities/ClaudeWindowUsage.js.map +1 -0
- package/bin/domain/usecases/adapter-interfaces/ClaudeRepository.js +3 -0
- package/bin/domain/usecases/adapter-interfaces/ClaudeRepository.js.map +1 -0
- package/package.json +1 -1
- package/src/adapter/repositories/OauthAPIClaudeRepository.test.ts +841 -0
- package/src/adapter/repositories/OauthAPIClaudeRepository.ts +279 -0
- package/src/domain/entities/ClaudeWindowUsage.ts +5 -0
- package/src/domain/usecases/adapter-interfaces/ClaudeRepository.ts +6 -0
- package/types/adapter/repositories/OauthAPIClaudeRepository.d.ts +13 -0
- package/types/adapter/repositories/OauthAPIClaudeRepository.d.ts.map +1 -0
- package/types/domain/entities/ClaudeWindowUsage.d.ts +6 -0
- package/types/domain/entities/ClaudeWindowUsage.d.ts.map +1 -0
- package/types/domain/usecases/adapter-interfaces/ClaudeRepository.d.ts +6 -0
- package/types/domain/usecases/adapter-interfaces/ClaudeRepository.d.ts.map +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
# [1.2.0](https://github.com/HiromiShikata/npm-cli-gh-issue-preparator/compare/v1.1.0...v1.2.0) (2026-01-12)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **src:** add isClaudeAvailable method to rotate Claude credentials ([7b966bd](https://github.com/HiromiShikata/npm-cli-gh-issue-preparator/commit/7b966bd123eb9474fd9f675e7addb4b54b509abe))
|
|
7
|
+
|
|
8
|
+
# [1.1.0](https://github.com/HiromiShikata/npm-cli-gh-issue-preparator/compare/v1.0.4...v1.1.0) (2026-01-12)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **core:** add Claude usage repository for OAuth API integration ([57ab791](https://github.com/HiromiShikata/npm-cli-gh-issue-preparator/commit/57ab7914f9574a4e6746183457e643dac47f7261))
|
|
14
|
+
|
|
1
15
|
## [1.0.4](https://github.com/HiromiShikata/npm-cli-gh-issue-preparator/compare/v1.0.3...v1.0.4) (2026-01-10)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.OauthAPIClaudeRepository = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const os = __importStar(require("os"));
|
|
40
|
+
const isCredentialsFile = (value) => {
|
|
41
|
+
if (typeof value !== 'object' || value === null)
|
|
42
|
+
return false;
|
|
43
|
+
return true;
|
|
44
|
+
};
|
|
45
|
+
const isUsageResponse = (value) => {
|
|
46
|
+
if (typeof value !== 'object' || value === null)
|
|
47
|
+
return false;
|
|
48
|
+
return true;
|
|
49
|
+
};
|
|
50
|
+
const findCredentials = (filePathList) => {
|
|
51
|
+
const credentials = [];
|
|
52
|
+
const baseFileName = '.credentials.json';
|
|
53
|
+
for (const filePath of filePathList) {
|
|
54
|
+
const fileName = path.basename(filePath);
|
|
55
|
+
if (fileName === baseFileName) {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
const suffix = fileName.slice(baseFileName.length + 1);
|
|
59
|
+
const parts = suffix.split('.');
|
|
60
|
+
if (parts.length !== 2) {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
const name = parts[0];
|
|
64
|
+
const priorityStr = parts[1];
|
|
65
|
+
const priority = parseInt(priorityStr, 10);
|
|
66
|
+
if (isNaN(priority)) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
credentials.push({
|
|
70
|
+
name,
|
|
71
|
+
priority,
|
|
72
|
+
filePath,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return credentials.sort((a, b) => a.priority - b.priority);
|
|
76
|
+
};
|
|
77
|
+
class OauthAPIClaudeRepository {
|
|
78
|
+
constructor() {
|
|
79
|
+
this.claudeDir = path.join(os.homedir(), '.claude');
|
|
80
|
+
this.credentialsPath = path.join(this.claudeDir, '.credentials.json');
|
|
81
|
+
}
|
|
82
|
+
getAccessToken() {
|
|
83
|
+
if (!fs.existsSync(this.credentialsPath)) {
|
|
84
|
+
throw new Error(`Claude credentials file not found at ${this.credentialsPath}. Please login to Claude Code first using: claude login`);
|
|
85
|
+
}
|
|
86
|
+
const fileContent = fs.readFileSync(this.credentialsPath, 'utf-8');
|
|
87
|
+
const credentials = JSON.parse(fileContent);
|
|
88
|
+
if (!isCredentialsFile(credentials)) {
|
|
89
|
+
throw new Error('Invalid credentials file format');
|
|
90
|
+
}
|
|
91
|
+
const accessToken = credentials.claudeAiOauth?.accessToken;
|
|
92
|
+
if (!accessToken) {
|
|
93
|
+
throw new Error('No access token found in credentials file');
|
|
94
|
+
}
|
|
95
|
+
return accessToken;
|
|
96
|
+
}
|
|
97
|
+
async getUsage() {
|
|
98
|
+
const accessToken = this.getAccessToken();
|
|
99
|
+
const response = await fetch('https://api.anthropic.com/api/oauth/usage', {
|
|
100
|
+
method: 'GET',
|
|
101
|
+
headers: {
|
|
102
|
+
Accept: 'application/json, text/plain, */*',
|
|
103
|
+
'Content-Type': 'application/json',
|
|
104
|
+
'User-Agent': 'claude-code/2.0.32',
|
|
105
|
+
Authorization: `Bearer ${accessToken}`,
|
|
106
|
+
'anthropic-beta': 'oauth-2025-04-20',
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
if (!response.ok) {
|
|
110
|
+
const errorText = await response.text();
|
|
111
|
+
throw new Error(`Claude API error: ${errorText}`);
|
|
112
|
+
}
|
|
113
|
+
const responseData = await response.json();
|
|
114
|
+
if (!isUsageResponse(responseData)) {
|
|
115
|
+
throw new Error('Invalid API response format');
|
|
116
|
+
}
|
|
117
|
+
if (responseData.error) {
|
|
118
|
+
throw new Error(`API error: ${responseData.error}`);
|
|
119
|
+
}
|
|
120
|
+
const usages = [];
|
|
121
|
+
if (responseData.five_hour?.utilization !== undefined) {
|
|
122
|
+
usages.push({
|
|
123
|
+
hour: 5,
|
|
124
|
+
utilizationPercentage: responseData.five_hour.utilization,
|
|
125
|
+
resetsAt: responseData.five_hour.resets_at
|
|
126
|
+
? new Date(responseData.five_hour.resets_at)
|
|
127
|
+
: new Date(),
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
if (responseData.seven_day?.utilization !== undefined) {
|
|
131
|
+
usages.push({
|
|
132
|
+
hour: 168,
|
|
133
|
+
utilizationPercentage: responseData.seven_day.utilization,
|
|
134
|
+
resetsAt: responseData.seven_day.resets_at
|
|
135
|
+
? new Date(responseData.seven_day.resets_at)
|
|
136
|
+
: new Date(),
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
if (responseData.seven_day_opus?.utilization !== undefined) {
|
|
140
|
+
usages.push({
|
|
141
|
+
hour: 168,
|
|
142
|
+
utilizationPercentage: responseData.seven_day_opus.utilization,
|
|
143
|
+
resetsAt: responseData.seven_day_opus.resets_at
|
|
144
|
+
? new Date(responseData.seven_day_opus.resets_at)
|
|
145
|
+
: new Date(),
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
if (responseData.seven_day_sonnet?.utilization !== undefined) {
|
|
149
|
+
usages.push({
|
|
150
|
+
hour: 168,
|
|
151
|
+
utilizationPercentage: responseData.seven_day_sonnet.utilization,
|
|
152
|
+
resetsAt: responseData.seven_day_sonnet.resets_at
|
|
153
|
+
? new Date(responseData.seven_day_sonnet.resets_at)
|
|
154
|
+
: new Date(),
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
return usages;
|
|
158
|
+
}
|
|
159
|
+
async getUsageWithToken(accessToken) {
|
|
160
|
+
const response = await fetch('https://api.anthropic.com/api/oauth/usage', {
|
|
161
|
+
method: 'GET',
|
|
162
|
+
headers: {
|
|
163
|
+
Accept: 'application/json, text/plain, */*',
|
|
164
|
+
'Content-Type': 'application/json',
|
|
165
|
+
'User-Agent': 'claude-code/2.0.32',
|
|
166
|
+
Authorization: `Bearer ${accessToken}`,
|
|
167
|
+
'anthropic-beta': 'oauth-2025-04-20',
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
if (!response.ok) {
|
|
171
|
+
const errorText = await response.text();
|
|
172
|
+
throw new Error(`Claude API error: ${errorText}`);
|
|
173
|
+
}
|
|
174
|
+
const responseData = await response.json();
|
|
175
|
+
if (!isUsageResponse(responseData)) {
|
|
176
|
+
throw new Error('Invalid API response format');
|
|
177
|
+
}
|
|
178
|
+
if (responseData.error) {
|
|
179
|
+
throw new Error(`API error: ${responseData.error}`);
|
|
180
|
+
}
|
|
181
|
+
return responseData;
|
|
182
|
+
}
|
|
183
|
+
isUsageUnderThreshold(usageResponse, threshold) {
|
|
184
|
+
const windows = [
|
|
185
|
+
usageResponse.five_hour,
|
|
186
|
+
usageResponse.seven_day,
|
|
187
|
+
usageResponse.seven_day_opus,
|
|
188
|
+
usageResponse.seven_day_sonnet,
|
|
189
|
+
];
|
|
190
|
+
for (const window of windows) {
|
|
191
|
+
if (window?.utilization !== undefined &&
|
|
192
|
+
window.utilization >= threshold) {
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
async isClaudeAvailable(threshold) {
|
|
199
|
+
if (!fs.existsSync(this.claudeDir)) {
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
const files = fs.readdirSync(this.claudeDir);
|
|
203
|
+
const filePathList = files
|
|
204
|
+
.filter((file) => file.startsWith('.credentials.json'))
|
|
205
|
+
.map((file) => path.join(this.claudeDir, file));
|
|
206
|
+
const credentials = findCredentials(filePathList);
|
|
207
|
+
if (credentials.length === 0) {
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
for (const credential of credentials) {
|
|
211
|
+
const fileContent = fs.readFileSync(credential.filePath, 'utf-8');
|
|
212
|
+
const credentialData = JSON.parse(fileContent);
|
|
213
|
+
if (!isCredentialsFile(credentialData)) {
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
const accessToken = credentialData.claudeAiOauth?.accessToken;
|
|
217
|
+
if (!accessToken) {
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
try {
|
|
221
|
+
const usageResponse = await this.getUsageWithToken(accessToken);
|
|
222
|
+
if (this.isUsageUnderThreshold(usageResponse, threshold)) {
|
|
223
|
+
fs.copyFileSync(credential.filePath, this.credentialsPath);
|
|
224
|
+
return true;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return false;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
exports.OauthAPIClaudeRepository = OauthAPIClaudeRepository;
|
|
235
|
+
//# sourceMappingURL=OauthAPIClaudeRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OauthAPIClaudeRepository.js","sourceRoot":"","sources":["../../../src/adapter/repositories/OauthAPIClaudeRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeWindowUsage.js","sourceRoot":"","sources":["../../../src/domain/entities/ClaudeWindowUsage.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeRepository.js","sourceRoot":"","sources":["../../../../src/domain/usecases/adapter-interfaces/ClaudeRepository.ts"],"names":[],"mappings":""}
|