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 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
@@ -1,7 +1,6 @@
1
1
  export type KeyRotatorConfig = {
2
2
  rotation: {
3
3
  enabled: boolean;
4
- dedupTtlMs: number;
5
4
  patterns: RegExp[];
6
5
  };
7
6
  storage: {
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 },
@@ -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;AAiBrE,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAC;AAE5I,MAAM,cAAc,GAAqB;IACvC,QAAQ,EAAE;QACR,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;QACzB,QAAQ,EAAE,yBAAyB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC7E;IACD,OAAO,EAAE;QACP,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,MAAM;KAClB;IACD,EAAE,EAAE;QACF,eAAe,EAAE,MAAM;KACxB;CACF,CAAC;AAOF,MAAM,UAAU,UAAU,CAAC,OAA2B;IACpD,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9C,OAAO,WAAW,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACxC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAC3D,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjD,MAAM,aAAa,GAAG;QACpB,QAAQ,EAAE;YACR,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO;YACxC,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,UAAU;YAC9C,QAAQ,EAAE,yBAAyB;SACpC;QACD,OAAO,EAAE;YACP,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,UAAU;YAC7C,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;SAC5C;QACD,EAAE,EAAE;YACF,eAAe,EAAE,cAAc,CAAC,EAAE,CAAC,eAAe;SACnD;KACF,CAAC;IAEF,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7F,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,iBAAiB,CAAC,OAA2B;IACpD,IAAI,OAAO,EAAE,UAAU;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,sBAAsB,EAAE,CAAC,SAAS,CAAC;IAC3E,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,EAAE,aAAa,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,8BAA8B,CAAC,CAAC;IACpG,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAExE,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9C,OAAO;QACL,QAAQ,EAAE;YACR,OAAO,EAAE,OAAO,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO;YACnG,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC;YAC1G,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC;SAC3C;QACD,OAAO,EAAE;YACP,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,oBAAoB,CAAC;YAC1G,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC;SACpG;QACD,EAAE,EAAE;YACF,eAAe,EAAE,cAAc,CAAC,EAAE,CAAC,eAAe,EAAE,cAAc,CAAC,EAAE,CAAC,eAAe,EAAE,oBAAoB,CAAC;SAC7G;KACF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7H,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IAClG,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,YAAY,CAAC,KAAc,EAAE,KAAa;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,0BAA0B,CAAC,CAAC;IACrG,IAAI,CAAC;QACH,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,2BAA2B,KAAK,EAAE,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,QAAgB,EAAE,IAAY;IACpE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,4BAA4B,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc,EAAE,QAAgB,EAAE,IAAY;IACvE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAClG,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,iCAAiC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,WAAW,CAAC,MAAwB;IAC3C,OAAO;QACL,QAAQ,EAAE;YACR,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO;YAChC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU;YACtC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;SAC/F;QACD,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE;QAC9B,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE;KACrB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -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;
@@ -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({ ...entry, message: sanitizeMessage(entry.message) });
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
@@ -1 +1 @@
1
- {"version":3,"file":"rotation-log.js","sourceRoot":"","sources":["../src/rotation-log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AA+B9B,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,MAAM,UAAU,gBAAgB,CAAC,KAAe,EAAE,KAAuB;IACvE,IAAI,CAAC;QACH,KAAK,CAAC,aAAa,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnF,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7E,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;IACjD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAe;IACtD,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC;YAAE,OAAO,SAAS,CAAC;QAClE,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtG,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAqB,CAAC;YAC3D,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc;gBAAE,OAAO,KAAK,CAAC;QACpD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAA2B;IACzD,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO,OAAO;SACX,OAAO,CAAC,gCAAgC,EAAE,mBAAmB,CAAC;SAC9D,OAAO,CAAC,qFAAqF,EAAE,eAAe,CAAC;SAC/G,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9D,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAkC,CAAC,EAAE,CAAC;QAC9E,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,UAAU,KAAK,aAAa,IAAI,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACzG,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,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 !== "session.error")
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
- await handleSessionError(client, config, genericEvent.properties);
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 message = isRecord(error) && typeof error.message === "string" ? error.message : undefined;
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
- return;
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: { message },
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
- if (currentAlias)
124
- markAliasCoolingDown(cooldownKey, currentAlias);
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 markAliasCoolingDown(cooldownKey, alias) {
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
- providerCooldowns.set(alias, Date.now() + FAILED_ALIAS_COOLDOWN_MS);
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: typeof data?.message === "string" ? data.message : errorToMessage(error),
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
@@ -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.0.0",
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",