opencode-key-rotator 1.0.0 → 1.1.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.
- package/README.md +0 -1
- package/dist/config.d.ts +0 -1
- package/dist/config.js +0 -4
- package/dist/config.js.map +1 -1
- package/dist/rotation-log.d.ts +11 -1
- package/dist/rotation-log.js +27 -1
- package/dist/rotation-log.js.map +1 -1
- package/dist/server.js +178 -43
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -95,7 +95,6 @@ Create a sidecar config file at `~/.config/opencode/opencode-key-rotator/config.
|
|
|
95
95
|
{
|
|
96
96
|
"rotation": {
|
|
97
97
|
"enabled": true,
|
|
98
|
-
"dedupTtlMs": 300000,
|
|
99
98
|
"patterns": ["\\b429\\b", "rate\\s*limit", "quota", "resource exhausted", "usage limit", "insufficient quota"]
|
|
100
99
|
},
|
|
101
100
|
"storage": {
|
package/dist/config.d.ts
CHANGED
package/dist/config.js
CHANGED
|
@@ -6,7 +6,6 @@ export const DEFAULT_ROTATION_PATTERNS = ["\\b429\\b", "rate\\s*limit", "quota",
|
|
|
6
6
|
const DEFAULT_CONFIG = {
|
|
7
7
|
rotation: {
|
|
8
8
|
enabled: true,
|
|
9
|
-
dedupTtlMs: 5 * 60 * 1000,
|
|
10
9
|
patterns: DEFAULT_ROTATION_PATTERNS.map((source) => new RegExp(source, "i")),
|
|
11
10
|
},
|
|
12
11
|
storage: {
|
|
@@ -32,7 +31,6 @@ export function writeDefaultConfig(configDir) {
|
|
|
32
31
|
const defaultConfig = {
|
|
33
32
|
rotation: {
|
|
34
33
|
enabled: DEFAULT_CONFIG.rotation.enabled,
|
|
35
|
-
dedupTtlMs: DEFAULT_CONFIG.rotation.dedupTtlMs,
|
|
36
34
|
patterns: DEFAULT_ROTATION_PATTERNS,
|
|
37
35
|
},
|
|
38
36
|
storage: {
|
|
@@ -68,7 +66,6 @@ function mergeConfig(raw) {
|
|
|
68
66
|
return {
|
|
69
67
|
rotation: {
|
|
70
68
|
enabled: typeof rotation.enabled === "boolean" ? rotation.enabled : DEFAULT_CONFIG.rotation.enabled,
|
|
71
|
-
dedupTtlMs: positiveNumber(rotation.dedupTtlMs, DEFAULT_CONFIG.rotation.dedupTtlMs, "rotation.dedupTtlMs"),
|
|
72
69
|
patterns: parsePatterns(rotation.patterns),
|
|
73
70
|
},
|
|
74
71
|
storage: {
|
|
@@ -120,7 +117,6 @@ function cloneConfig(config) {
|
|
|
120
117
|
return {
|
|
121
118
|
rotation: {
|
|
122
119
|
enabled: config.rotation.enabled,
|
|
123
|
-
dedupTtlMs: config.rotation.dedupTtlMs,
|
|
124
120
|
patterns: config.rotation.patterns.map((pattern) => new RegExp(pattern.source, pattern.flags)),
|
|
125
121
|
},
|
|
126
122
|
storage: { ...config.storage },
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/rotation-log.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { KeyStore } from "./key-store.js";
|
|
2
|
-
export type RotationDecision = "rotated" | "rotated_on_retry" | "not_rotatable" | "no_alternative" | "provider_unknown" | "ignored" | "error" | "fingerprint_mismatch" | "all_keys_cooling_down";
|
|
2
|
+
export type RotationDecision = "rotated" | "rotated_on_retry" | "not_rotatable" | "no_alternative" | "provider_unknown" | "ignored" | "error" | "fingerprint_mismatch" | "all_keys_cooling_down" | "diagnostic";
|
|
3
3
|
export type RotationLogEntry = {
|
|
4
4
|
timestamp: string;
|
|
5
5
|
sessionID?: string;
|
|
@@ -11,10 +11,20 @@ export type RotationLogEntry = {
|
|
|
11
11
|
statusCode?: number;
|
|
12
12
|
message?: string;
|
|
13
13
|
rateLimitHeaders?: Record<string, string>;
|
|
14
|
+
eventType?: string;
|
|
15
|
+
propertyKeys?: string[];
|
|
16
|
+
errorKeys?: string[];
|
|
17
|
+
errorDataKeys?: string[];
|
|
18
|
+
payload?: unknown;
|
|
14
19
|
decision: RotationDecision;
|
|
15
20
|
reason: string;
|
|
16
21
|
activeAlias?: string;
|
|
17
22
|
nextAlias?: string;
|
|
23
|
+
coolingDownAlias?: string;
|
|
24
|
+
cooldownEnteredAt?: string;
|
|
25
|
+
cooldownExpiresAt?: string;
|
|
26
|
+
cooldownMs?: number;
|
|
27
|
+
cooldownState?: string;
|
|
18
28
|
};
|
|
19
29
|
export declare function writeRotationLog(store: KeyStore, entry: RotationLogEntry): void;
|
|
20
30
|
export declare function readLastRotationDecision(store: KeyStore): RotationLogEntry | undefined;
|
package/dist/rotation-log.js
CHANGED
|
@@ -3,7 +3,11 @@ const MAX_MESSAGE_LENGTH = 500;
|
|
|
3
3
|
export function writeRotationLog(store, entry) {
|
|
4
4
|
try {
|
|
5
5
|
store.ensureKeysDir();
|
|
6
|
-
const line = JSON.stringify({
|
|
6
|
+
const line = JSON.stringify({
|
|
7
|
+
...entry,
|
|
8
|
+
message: sanitizeMessage(entry.message),
|
|
9
|
+
payload: sanitizePayload(entry.payload),
|
|
10
|
+
});
|
|
7
11
|
fs.appendFileSync(store.paths.rotationLogFile, `${line}\n`, { mode: 0o600 });
|
|
8
12
|
fs.chmodSync(store.paths.rotationLogFile, 0o600);
|
|
9
13
|
}
|
|
@@ -47,4 +51,26 @@ export function sanitizeRateLimitHeaders(headers) {
|
|
|
47
51
|
}
|
|
48
52
|
return Object.keys(result).length > 0 ? result : undefined;
|
|
49
53
|
}
|
|
54
|
+
function sanitizePayload(value, depth = 0) {
|
|
55
|
+
if (value === null || value === undefined)
|
|
56
|
+
return value;
|
|
57
|
+
if (typeof value === "string")
|
|
58
|
+
return sanitizeMessage(value);
|
|
59
|
+
if (typeof value === "number" || typeof value === "boolean")
|
|
60
|
+
return value;
|
|
61
|
+
if (typeof value === "bigint")
|
|
62
|
+
return String(value);
|
|
63
|
+
if (depth >= 6)
|
|
64
|
+
return "[truncated]";
|
|
65
|
+
if (Array.isArray(value))
|
|
66
|
+
return value.slice(0, 50).map((entry) => sanitizePayload(entry, depth + 1));
|
|
67
|
+
if (typeof value === "object") {
|
|
68
|
+
const result = {};
|
|
69
|
+
for (const [key, entry] of Object.entries(value).slice(0, 100)) {
|
|
70
|
+
result[key] = sanitizePayload(entry, depth + 1);
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
return String(value);
|
|
75
|
+
}
|
|
50
76
|
//# sourceMappingURL=rotation-log.js.map
|
package/dist/rotation-log.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rotation-log.js","sourceRoot":"","sources":["../src/rotation-log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"rotation-log.js","sourceRoot":"","sources":["../src/rotation-log.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -3,12 +3,18 @@ import { KeyStoreError } from "./errors.js";
|
|
|
3
3
|
import { createKeyStore } from "./key-store.js";
|
|
4
4
|
import { sanitizeMessage, sanitizeRateLimitHeaders, writeRotationLog } from "./rotation-log.js";
|
|
5
5
|
import { loadConfig } from "./config.js";
|
|
6
|
-
// Track sessions for which we have already rotated a key, so we do not rotate
|
|
7
|
-
// again when the final session.error arrives after retries.
|
|
8
|
-
const rotatedSessions = new Map();
|
|
9
6
|
const CLIENT_CALL_TIMEOUT_MS = 1_000;
|
|
10
7
|
const FAILED_ALIAS_COOLDOWN_MS = 2 * 60 * 1_000;
|
|
11
8
|
const failedAliasCooldowns = new Map();
|
|
9
|
+
function toLocalISOString(date) {
|
|
10
|
+
const d = typeof date === "number" ? new Date(date) : date;
|
|
11
|
+
const pad2 = (n) => String(n).padStart(2, "0");
|
|
12
|
+
const offsetMinutes = -d.getTimezoneOffset();
|
|
13
|
+
const tzSign = offsetMinutes >= 0 ? "+" : "-";
|
|
14
|
+
const tzHours = pad2(Math.floor(Math.abs(offsetMinutes) / 60));
|
|
15
|
+
const tzMins = pad2(Math.abs(offsetMinutes) % 60);
|
|
16
|
+
return `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())}T${pad2(d.getHours())}:${pad2(d.getMinutes())}:${pad2(d.getSeconds())}${tzSign}${tzHours}:${tzMins}`;
|
|
17
|
+
}
|
|
12
18
|
export const server = async ({ client }) => {
|
|
13
19
|
const config = await loadConfigForClient(client);
|
|
14
20
|
if (!config.rotation.enabled) {
|
|
@@ -21,9 +27,15 @@ export const server = async ({ client }) => {
|
|
|
21
27
|
await handleSessionNextRetried(client, config, genericEvent.properties);
|
|
22
28
|
return;
|
|
23
29
|
}
|
|
24
|
-
if (genericEvent.type
|
|
30
|
+
if (genericEvent.type === "session.status") {
|
|
31
|
+
await handleSessionStatus(client, config, genericEvent.properties);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (genericEvent.type === "session.error") {
|
|
35
|
+
await handleSessionError(client, config, genericEvent.properties);
|
|
25
36
|
return;
|
|
26
|
-
|
|
37
|
+
}
|
|
38
|
+
await writeDiagnosticLog(client, config, diagnosticInfoForEvent(genericEvent.type, genericEvent.properties), new Date().toISOString(), "unhandled_event");
|
|
27
39
|
},
|
|
28
40
|
};
|
|
29
41
|
};
|
|
@@ -31,28 +43,65 @@ async function handleSessionNextRetried(client, config, properties) {
|
|
|
31
43
|
const sessionID = typeof properties?.sessionID === "string" ? properties.sessionID : undefined;
|
|
32
44
|
const attempt = typeof properties?.attempt === "number" ? properties.attempt : undefined;
|
|
33
45
|
const error = properties?.error;
|
|
34
|
-
const
|
|
46
|
+
const info = normalizeRetryError(error);
|
|
47
|
+
info.sessionID = sessionID;
|
|
48
|
+
info.attempt = attempt;
|
|
49
|
+
info.eventType = "session.next.retried";
|
|
50
|
+
info.propertyKeys = sortedKeys(properties);
|
|
51
|
+
info.payload = properties;
|
|
35
52
|
if (!sessionID || attempt !== 1)
|
|
36
53
|
return;
|
|
37
|
-
if (!message || !isRotatableMessage(message, config))
|
|
38
|
-
|
|
39
|
-
if (wasRotatedRecently(config, sessionID))
|
|
54
|
+
if (!info.message || !isRotatableMessage(info.message, config)) {
|
|
55
|
+
await writeDiagnosticLog(client, config, info, new Date().toISOString(), "retry_error_did_not_match_rotation_patterns");
|
|
40
56
|
return;
|
|
57
|
+
}
|
|
41
58
|
const timestamp = new Date().toISOString();
|
|
42
59
|
await rotateKeyForEvent(client, config, {
|
|
43
60
|
sessionID,
|
|
44
|
-
info
|
|
61
|
+
info,
|
|
45
62
|
timestamp,
|
|
46
63
|
decision: "rotated_on_retry",
|
|
47
64
|
unknownProviderReason: "rotatable_retry_without_provider_id",
|
|
48
65
|
toastOnSkip: false,
|
|
49
66
|
});
|
|
50
67
|
}
|
|
68
|
+
async function handleSessionStatus(client, config, properties) {
|
|
69
|
+
const sessionID = typeof properties?.sessionID === "string" ? properties.sessionID : undefined;
|
|
70
|
+
const status = isRecord(properties?.status) ? properties.status : undefined;
|
|
71
|
+
if (!status || status.type !== "retry")
|
|
72
|
+
return;
|
|
73
|
+
const attempt = typeof status.attempt === "number" ? status.attempt : undefined;
|
|
74
|
+
const info = normalizeStatusRetryError(status);
|
|
75
|
+
info.sessionID = sessionID;
|
|
76
|
+
info.attempt = attempt;
|
|
77
|
+
info.eventType = "session.status";
|
|
78
|
+
info.propertyKeys = sortedKeys(properties);
|
|
79
|
+
info.payload = properties;
|
|
80
|
+
if (!sessionID || attempt !== 1)
|
|
81
|
+
return;
|
|
82
|
+
if (!info.message || !isRotatableMessage(info.message, config)) {
|
|
83
|
+
await writeDiagnosticLog(client, config, info, new Date().toISOString(), "status_retry_did_not_match_rotation_patterns");
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const timestamp = new Date().toISOString();
|
|
87
|
+
await rotateKeyForEvent(client, config, {
|
|
88
|
+
sessionID,
|
|
89
|
+
info,
|
|
90
|
+
timestamp,
|
|
91
|
+
decision: "rotated_on_retry",
|
|
92
|
+
unknownProviderReason: "rotatable_status_retry_without_provider_id",
|
|
93
|
+
toastOnSkip: false,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
51
96
|
async function handleSessionError(client, config, properties) {
|
|
52
97
|
const error = properties?.error;
|
|
98
|
+
const sessionID = typeof properties?.sessionID === "string" ? properties.sessionID : undefined;
|
|
53
99
|
const info = normalizeError(error);
|
|
100
|
+
info.sessionID = sessionID;
|
|
101
|
+
info.eventType = "session.error";
|
|
102
|
+
info.propertyKeys = sortedKeys(properties);
|
|
103
|
+
info.payload = properties;
|
|
54
104
|
const timestamp = new Date().toISOString();
|
|
55
|
-
const sessionID = typeof properties?.sessionID === "string" ? properties.sessionID : undefined;
|
|
56
105
|
const store = await createStoreForClient(client, config);
|
|
57
106
|
if (!store) {
|
|
58
107
|
await showToast(client, config, "Key rotation skipped", "OpenCode data path is unavailable.", "warning");
|
|
@@ -87,8 +136,6 @@ async function rotateKeyForEvent(client, config, request) {
|
|
|
87
136
|
await showToast(client, config, "Key rotation skipped", "OpenCode data path is unavailable.", "warning");
|
|
88
137
|
return;
|
|
89
138
|
}
|
|
90
|
-
if (request.sessionID && wasRotatedRecently(config, request.sessionID))
|
|
91
|
-
return;
|
|
92
139
|
if (!request.info.providerID) {
|
|
93
140
|
const inferred = await inferProvider(client, request.sessionID);
|
|
94
141
|
if (inferred) {
|
|
@@ -120,15 +167,35 @@ async function rotateKeyForEvent(client, config, request) {
|
|
|
120
167
|
}
|
|
121
168
|
const currentAlias = store.readActiveAliases()[providerID];
|
|
122
169
|
const cooldownKey = providerCooldownKey(store, providerID);
|
|
123
|
-
|
|
124
|
-
|
|
170
|
+
const now = new Date();
|
|
171
|
+
const cooldownMs = computeCooldownMs(request.info.headers);
|
|
172
|
+
if (currentAlias) {
|
|
173
|
+
const expiresAt = markAliasCoolingDown(cooldownKey, currentAlias, cooldownMs);
|
|
174
|
+
writeRotationLog(store, {
|
|
175
|
+
...baseLogEntry(request.info, request.timestamp),
|
|
176
|
+
decision: "diagnostic",
|
|
177
|
+
reason: "alias_entered_cooldown",
|
|
178
|
+
coolingDownAlias: currentAlias,
|
|
179
|
+
cooldownEnteredAt: toLocalISOString(now),
|
|
180
|
+
cooldownExpiresAt: toLocalISOString(expiresAt),
|
|
181
|
+
cooldownMs: cooldownMs,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
125
184
|
const nextAlias = nextAvailableAlias(cooldownKey, keys.map((key) => key.alias), currentAlias);
|
|
126
185
|
if (!nextAlias) {
|
|
186
|
+
const cooldowns = failedAliasCooldowns.get(cooldownKey);
|
|
187
|
+
const cooldownState = [];
|
|
188
|
+
if (cooldowns) {
|
|
189
|
+
for (const [alias, expiresAt] of cooldowns) {
|
|
190
|
+
cooldownState.push(`${alias}: expires ${toLocalISOString(expiresAt)}`);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
127
193
|
writeRotationLog(store, {
|
|
128
194
|
...baseLogEntry(request.info, request.timestamp),
|
|
129
195
|
decision: "all_keys_cooling_down",
|
|
130
196
|
reason: "all_saved_keys_are_cooling_down",
|
|
131
197
|
activeAlias: currentAlias,
|
|
198
|
+
cooldownState: cooldownState.length ? cooldownState.join(", ") : undefined,
|
|
132
199
|
});
|
|
133
200
|
if (request.toastOnSkip)
|
|
134
201
|
await showToast(client, config, "Key rotation skipped", `${providerID} has no available key outside cooldown.`, "warning");
|
|
@@ -136,8 +203,6 @@ async function rotateKeyForEvent(client, config, request) {
|
|
|
136
203
|
}
|
|
137
204
|
try {
|
|
138
205
|
const result = store.switchProviderKey(providerID, nextAlias, "auto-rotate");
|
|
139
|
-
if (request.sessionID)
|
|
140
|
-
markRotated(config, request.sessionID);
|
|
141
206
|
writeRotationLog(store, {
|
|
142
207
|
...baseLogEntry(request.info, request.timestamp),
|
|
143
208
|
decision: request.decision,
|
|
@@ -154,13 +219,36 @@ async function rotateKeyForEvent(client, config, request) {
|
|
|
154
219
|
function providerCooldownKey(store, providerID) {
|
|
155
220
|
return `${store.paths.dataDir}\0${providerID}`;
|
|
156
221
|
}
|
|
157
|
-
function
|
|
222
|
+
function parseRetryAfterMs(headers) {
|
|
223
|
+
if (!headers)
|
|
224
|
+
return undefined;
|
|
225
|
+
const raw = headers["retry-after"] ?? headers["Retry-After"];
|
|
226
|
+
if (!raw)
|
|
227
|
+
return undefined;
|
|
228
|
+
const asSeconds = Number(raw);
|
|
229
|
+
if (!Number.isNaN(asSeconds))
|
|
230
|
+
return asSeconds * 1_000;
|
|
231
|
+
const parsed = Date.parse(raw);
|
|
232
|
+
if (!Number.isNaN(parsed))
|
|
233
|
+
return Math.max(0, parsed - Date.now());
|
|
234
|
+
return undefined;
|
|
235
|
+
}
|
|
236
|
+
function computeCooldownMs(headers) {
|
|
237
|
+
const retryAfterMs = parseRetryAfterMs(headers);
|
|
238
|
+
if (retryAfterMs !== undefined) {
|
|
239
|
+
return Math.max(FAILED_ALIAS_COOLDOWN_MS, retryAfterMs);
|
|
240
|
+
}
|
|
241
|
+
return FAILED_ALIAS_COOLDOWN_MS;
|
|
242
|
+
}
|
|
243
|
+
function markAliasCoolingDown(cooldownKey, alias, cooldownMs = FAILED_ALIAS_COOLDOWN_MS) {
|
|
158
244
|
let providerCooldowns = failedAliasCooldowns.get(cooldownKey);
|
|
159
245
|
if (!providerCooldowns) {
|
|
160
246
|
providerCooldowns = new Map();
|
|
161
247
|
failedAliasCooldowns.set(cooldownKey, providerCooldowns);
|
|
162
248
|
}
|
|
163
|
-
|
|
249
|
+
const expiresAt = Date.now() + cooldownMs;
|
|
250
|
+
providerCooldowns.set(alias, expiresAt);
|
|
251
|
+
return expiresAt;
|
|
164
252
|
}
|
|
165
253
|
function nextAvailableAlias(cooldownKey, aliases, currentAlias) {
|
|
166
254
|
const providerCooldowns = failedAliasCooldowns.get(cooldownKey);
|
|
@@ -184,6 +272,13 @@ function nextAvailableAlias(cooldownKey, aliases, currentAlias) {
|
|
|
184
272
|
function baseLogEntry(info, timestamp) {
|
|
185
273
|
return {
|
|
186
274
|
timestamp,
|
|
275
|
+
sessionID: info.sessionID,
|
|
276
|
+
attempt: info.attempt,
|
|
277
|
+
eventType: info.eventType,
|
|
278
|
+
propertyKeys: info.propertyKeys,
|
|
279
|
+
errorKeys: info.errorKeys,
|
|
280
|
+
errorDataKeys: info.errorDataKeys,
|
|
281
|
+
payload: info.payload,
|
|
187
282
|
providerID: info.providerID,
|
|
188
283
|
providerSource: info.providerSource,
|
|
189
284
|
errorName: info.name,
|
|
@@ -192,6 +287,16 @@ function baseLogEntry(info, timestamp) {
|
|
|
192
287
|
rateLimitHeaders: sanitizeRateLimitHeaders(info.headers),
|
|
193
288
|
};
|
|
194
289
|
}
|
|
290
|
+
async function writeDiagnosticLog(client, config, info, timestamp, reason) {
|
|
291
|
+
const store = await createStoreForClient(client, config);
|
|
292
|
+
if (!store)
|
|
293
|
+
return;
|
|
294
|
+
writeRotationLog(store, {
|
|
295
|
+
...baseLogEntry(info, timestamp),
|
|
296
|
+
decision: "diagnostic",
|
|
297
|
+
reason,
|
|
298
|
+
});
|
|
299
|
+
}
|
|
195
300
|
async function logRotationError(client, config, store, providerID, providerSource, message, timestamp, rotationError) {
|
|
196
301
|
const errorMessage = rotationError instanceof Error ? rotationError.message : String(rotationError);
|
|
197
302
|
const activeAlias = readActiveAliasSafely(store, providerID);
|
|
@@ -218,14 +323,67 @@ function normalizeError(error) {
|
|
|
218
323
|
const name = typeof record.name === "string" ? record.name : undefined;
|
|
219
324
|
const data = record.data && typeof record.data === "object" ? record.data : undefined;
|
|
220
325
|
return {
|
|
326
|
+
errorKeys: sortedKeys(record),
|
|
327
|
+
errorDataKeys: sortedKeys(data),
|
|
221
328
|
name,
|
|
222
329
|
providerID: typeof data?.providerID === "string" ? data.providerID : undefined,
|
|
223
330
|
providerSource: typeof data?.providerID === "string" ? "error" : undefined,
|
|
224
331
|
statusCode: typeof data?.statusCode === "number" ? data.statusCode : undefined,
|
|
225
|
-
message:
|
|
332
|
+
message: extractErrorMessage(record, data),
|
|
226
333
|
headers: data?.responseHeaders && typeof data.responseHeaders === "object" ? data.responseHeaders : undefined,
|
|
227
334
|
};
|
|
228
335
|
}
|
|
336
|
+
function normalizeRetryError(error) {
|
|
337
|
+
if (!error || typeof error !== "object")
|
|
338
|
+
return { message: String(error) };
|
|
339
|
+
const record = error;
|
|
340
|
+
const data = record.data && typeof record.data === "object" ? record.data : undefined;
|
|
341
|
+
return {
|
|
342
|
+
errorKeys: sortedKeys(record),
|
|
343
|
+
errorDataKeys: sortedKeys(data),
|
|
344
|
+
name: typeof record.name === "string" ? record.name : undefined,
|
|
345
|
+
providerID: typeof data?.providerID === "string" ? data.providerID : undefined,
|
|
346
|
+
providerSource: typeof data?.providerID === "string" ? "error" : undefined,
|
|
347
|
+
statusCode: typeof data?.statusCode === "number" ? data.statusCode : undefined,
|
|
348
|
+
message: extractErrorMessage(record, data),
|
|
349
|
+
headers: data?.responseHeaders && typeof data.responseHeaders === "object" ? data.responseHeaders : undefined,
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
function normalizeStatusRetryError(status) {
|
|
353
|
+
return {
|
|
354
|
+
errorKeys: sortedKeys(status),
|
|
355
|
+
message: typeof status.message === "string" ? status.message : undefined,
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
function diagnosticInfoForEvent(eventType, properties) {
|
|
359
|
+
const sessionID = typeof properties?.sessionID === "string" ? properties.sessionID : undefined;
|
|
360
|
+
const attempt = typeof properties?.attempt === "number" ? properties.attempt : undefined;
|
|
361
|
+
const error = properties?.error;
|
|
362
|
+
const base = isRecord(error) ? normalizeRetryError(error) : {};
|
|
363
|
+
return {
|
|
364
|
+
...base,
|
|
365
|
+
sessionID,
|
|
366
|
+
attempt,
|
|
367
|
+
eventType,
|
|
368
|
+
propertyKeys: sortedKeys(properties),
|
|
369
|
+
payload: properties,
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
function extractErrorMessage(record, data) {
|
|
373
|
+
if (typeof data?.message === "string")
|
|
374
|
+
return data.message;
|
|
375
|
+
if (typeof record.message === "string")
|
|
376
|
+
return record.message;
|
|
377
|
+
if (typeof record.error === "string")
|
|
378
|
+
return record.error;
|
|
379
|
+
return undefined;
|
|
380
|
+
}
|
|
381
|
+
function sortedKeys(record) {
|
|
382
|
+
if (!record)
|
|
383
|
+
return undefined;
|
|
384
|
+
const keys = Object.keys(record).sort();
|
|
385
|
+
return keys.length > 0 ? keys : undefined;
|
|
386
|
+
}
|
|
229
387
|
async function inferProvider(client, sessionID) {
|
|
230
388
|
const fromSession = sessionID ? await inferProviderFromMessages(client, sessionID) : undefined;
|
|
231
389
|
if (fromSession)
|
|
@@ -356,27 +514,4 @@ async function showToast(client, config, title, message, variant) {
|
|
|
356
514
|
console.warn(`[opencode-key-rotator] ${title}: ${message}`);
|
|
357
515
|
}
|
|
358
516
|
}
|
|
359
|
-
function markRotated(config, sessionID) {
|
|
360
|
-
rotatedSessions.set(sessionID, Date.now());
|
|
361
|
-
cleanupRotatedSessions(config);
|
|
362
|
-
}
|
|
363
|
-
function wasRotatedRecently(config, sessionID) {
|
|
364
|
-
if (!sessionID)
|
|
365
|
-
return false;
|
|
366
|
-
const timestamp = rotatedSessions.get(sessionID);
|
|
367
|
-
if (!timestamp)
|
|
368
|
-
return false;
|
|
369
|
-
if (Date.now() - timestamp > config.rotation.dedupTtlMs) {
|
|
370
|
-
rotatedSessions.delete(sessionID);
|
|
371
|
-
return false;
|
|
372
|
-
}
|
|
373
|
-
return true;
|
|
374
|
-
}
|
|
375
|
-
function cleanupRotatedSessions(config) {
|
|
376
|
-
const now = Date.now();
|
|
377
|
-
for (const [sessionID, timestamp] of rotatedSessions) {
|
|
378
|
-
if (now - timestamp > config.rotation.dedupTtlMs)
|
|
379
|
-
rotatedSessions.delete(sessionID);
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
517
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-key-rotator",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "Reactive OpenCode plugin that automatically rotates provider API keys on rate limits and quota errors, with built-in TUI key management.",
|
|
5
5
|
"author": "dmmop <2412013-dmmop@users.noreply.gitlab.com>",
|
|
6
6
|
"license": "MIT",
|