claude-task-worker 0.142.2 → 0.142.3
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/dist/{chunk-EYML7T7A.js → chunk-QCQA2UJO.js} +24 -10
- package/dist/index.js +1 -1
- package/dist/lib.js +1 -1
- package/dist/slack.d.ts +2 -0
- package/package.json +1 -1
|
@@ -2237,6 +2237,8 @@ var WEBHOOK_URL = process.env.CLAUDE_TASK_WORKER_SLACK_WEBHOOK_URL;
|
|
|
2237
2237
|
var USAGE_POLL_INTERVAL_SECONDS = 600;
|
|
2238
2238
|
var USAGE_BACKOFF_PATH = "/tmp/claude-usage-backoff.json";
|
|
2239
2239
|
var USAGE_RATE_LIMIT_DEFAULT_BACKOFF_SECONDS = 600;
|
|
2240
|
+
var USAGE_CACHE_PATH = "/tmp/claude-usage-cache.json";
|
|
2241
|
+
var USAGE_CACHE_TTL_SECONDS = 600;
|
|
2240
2242
|
async function send(payload) {
|
|
2241
2243
|
if (!WEBHOOK_URL) return;
|
|
2242
2244
|
try {
|
|
@@ -2297,24 +2299,34 @@ function writeBackoffUntil(until) {
|
|
|
2297
2299
|
} catch {
|
|
2298
2300
|
}
|
|
2299
2301
|
}
|
|
2302
|
+
function readUsageCache(now = Date.now()) {
|
|
2303
|
+
try {
|
|
2304
|
+
const { fetchedAt, usage } = JSON.parse(readFileSync2(USAGE_CACHE_PATH, "utf-8"));
|
|
2305
|
+
return now - Number(fetchedAt) < USAGE_CACHE_TTL_SECONDS * 1e3 ? usage : null;
|
|
2306
|
+
} catch {
|
|
2307
|
+
return null;
|
|
2308
|
+
}
|
|
2309
|
+
}
|
|
2310
|
+
function writeUsageCache(usage) {
|
|
2311
|
+
try {
|
|
2312
|
+
const tmp = `${USAGE_CACHE_PATH}.${process.pid}.tmp`;
|
|
2313
|
+
writeFileSync4(tmp, JSON.stringify({ fetchedAt: Date.now(), usage }));
|
|
2314
|
+
renameSync3(tmp, USAGE_CACHE_PATH);
|
|
2315
|
+
} catch {
|
|
2316
|
+
}
|
|
2317
|
+
}
|
|
2300
2318
|
async function fetchUsageInfo() {
|
|
2301
2319
|
const backoffUntil = readBackoffUntil();
|
|
2302
2320
|
if (Date.now() < backoffUntil) {
|
|
2303
2321
|
console.error(`[slack] Usage API rate limited; skipping until ${new Date(backoffUntil).toISOString()}`);
|
|
2304
2322
|
return null;
|
|
2305
2323
|
}
|
|
2324
|
+
const cached = readUsageCache();
|
|
2325
|
+
if (cached) return cached;
|
|
2306
2326
|
try {
|
|
2307
|
-
const envToken = process.env.CLAUDE_CODE_OAUTH_TOKEN?.trim();
|
|
2308
|
-
if (envToken) {
|
|
2309
|
-
const res = await requestUsage(envToken);
|
|
2310
|
-
if (res.status !== 401 && res.status !== 403) return await handleUsageResponse(res);
|
|
2311
|
-
console.error(
|
|
2312
|
-
`[slack] Usage API rejected CLAUDE_CODE_OAUTH_TOKEN (${res.status}); falling back to stored credentials`
|
|
2313
|
-
);
|
|
2314
|
-
}
|
|
2315
2327
|
const { token, expiresAt } = await getStoredCredential();
|
|
2316
2328
|
if (!token) {
|
|
2317
|
-
console.error("[slack] No OAuth token found (
|
|
2329
|
+
console.error("[slack] No OAuth token found (sign in to Claude Code)");
|
|
2318
2330
|
return null;
|
|
2319
2331
|
}
|
|
2320
2332
|
if (expiresAt !== void 0 && expiresAt <= Date.now()) {
|
|
@@ -2323,7 +2335,9 @@ async function fetchUsageInfo() {
|
|
|
2323
2335
|
);
|
|
2324
2336
|
return null;
|
|
2325
2337
|
}
|
|
2326
|
-
|
|
2338
|
+
const usage = await handleUsageResponse(await requestUsage(token));
|
|
2339
|
+
if (usage) writeUsageCache(usage);
|
|
2340
|
+
return usage;
|
|
2327
2341
|
} catch (err) {
|
|
2328
2342
|
console.error(`[slack] Failed to fetch usage info: ${err}`);
|
|
2329
2343
|
return null;
|
package/dist/index.js
CHANGED
package/dist/lib.js
CHANGED
package/dist/slack.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/** `usage` コマンドが利用状況をポーリングする間隔 */
|
|
2
2
|
export declare const USAGE_POLL_INTERVAL_SECONDS = 600;
|
|
3
|
+
/** 取得結果を使い回す期間。この間は usage API を叩かない */
|
|
4
|
+
export declare const USAGE_CACHE_TTL_SECONDS = 600;
|
|
3
5
|
export declare function send(payload: Record<string, unknown>): Promise<void>;
|
|
4
6
|
export interface UsageInfo {
|
|
5
7
|
fiveHourUtilization: number | null;
|