@vymalo/opencode-ratelimit 0.11.0 → 0.14.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/dist/config.d.ts CHANGED
@@ -4,20 +4,20 @@ export declare const DEFAULT_MAX_RETRIES = 5;
4
4
  export declare const DEFAULT_HEADER_PREFIX = "x-ratelimit";
5
5
  export declare const DEFAULT_SCOPE: RateLimitScope;
6
6
  /**
7
- * Parse a provider's `options.meta.rateLimit` block into resolved
8
- * {@link RateLimitOptions}. Returns `null` when the provider has NOT opted in
9
- * (no `meta.rateLimit`) or has explicitly disabled it (`enabled: false`).
10
- *
11
- * Two config styles, both supported:
12
- * - **Flat**: `maxWaitMs` / `maxRetries` → normalized into a single catch-all
13
- * `"wait"` tier (the 0.5.0 behavior).
14
- * - **Tiered**: a `tiers` array, each entry `{ maxResetSeconds?, action?,
15
- * maxWaitMs?, maxRetries? }`, matched by reset magnitude.
16
- */
7
+ * Parse a provider's `options.meta.rateLimit` block into resolved
8
+ * {@link RateLimitOptions}. Returns `null` when the provider has NOT opted in
9
+ * (no `meta.rateLimit`) or has explicitly disabled it (`enabled: false`).
10
+ *
11
+ * Two config styles, both supported:
12
+ * - **Flat**: `maxWaitMs` / `maxRetries` → normalized into a single catch-all
13
+ * `"wait"` tier (the 0.5.0 behavior).
14
+ * - **Tiered**: a `tiers` array, each entry `{ maxResetSeconds?, action?,
15
+ * maxWaitMs?, maxRetries? }`, matched by reset magnitude.
16
+ */
17
17
  export declare function parseRateLimitOptions(providerOptions: Record<string, unknown> | undefined): RateLimitOptions | null;
18
18
  /**
19
- * Select the policy tier for an observed reset. `tiers` is pre-sorted ascending
20
- * with a catch-all last, so the first tier whose bound covers `resetSeconds`
21
- * wins. An unknown reset is treated as the smallest band (wait a default backoff).
22
- */
19
+ * Select the policy tier for an observed reset. `tiers` is pre-sorted ascending
20
+ * with a catch-all last, so the first tier whose bound covers `resetSeconds`
21
+ * wins. An unknown reset is treated as the smallest band (wait a default backoff).
22
+ */
23
23
  export declare function selectTier(tiers: RateLimitTier[], resetSeconds: number | undefined): RateLimitTier;
package/dist/config.js CHANGED
@@ -1,143 +1,138 @@
1
- export const DEFAULT_MAX_WAIT_MS = 0; // 0 = unlimited (wait the full reset window)
1
+ export const DEFAULT_MAX_WAIT_MS = 0;
2
2
  export const DEFAULT_MAX_RETRIES = 5;
3
3
  export const DEFAULT_HEADER_PREFIX = "x-ratelimit";
4
4
  export const DEFAULT_SCOPE = "model";
5
5
  const META_KEY = "meta";
6
6
  const RATE_LIMIT_KEY = "rateLimit";
7
7
  function asRecord(value) {
8
- if (!value || typeof value !== "object" || Array.isArray(value)) {
9
- return undefined;
10
- }
11
- return value;
8
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
9
+ return undefined;
10
+ }
11
+ return value;
12
12
  }
13
13
  function asString(value) {
14
- return typeof value === "string" && value.trim().length > 0 ? value.trim() : undefined;
14
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : undefined;
15
15
  }
16
16
  function asBoolean(value, fallback) {
17
- return typeof value === "boolean" ? value : fallback;
17
+ return typeof value === "boolean" ? value : fallback;
18
18
  }
19
19
  function asPositiveInt(value, fallback) {
20
- if (typeof value === "number" && Number.isFinite(value) && value > 0) {
21
- return Math.floor(value);
22
- }
23
- return fallback;
20
+ if (typeof value === "number" && Number.isFinite(value) && value > 0) {
21
+ return Math.floor(value);
22
+ }
23
+ return fallback;
24
24
  }
25
25
  /** Like {@link asPositiveInt} but accepts `0` — used for `maxWaitMs` where 0 means unlimited. */
26
26
  function asNonNegativeInt(value, fallback) {
27
- if (typeof value === "number" && Number.isFinite(value) && value >= 0) {
28
- return Math.floor(value);
29
- }
30
- return fallback;
27
+ if (typeof value === "number" && Number.isFinite(value) && value >= 0) {
28
+ return Math.floor(value);
29
+ }
30
+ return fallback;
31
31
  }
32
32
  function asScope(value) {
33
- return value === "provider" || value === "model" ? value : DEFAULT_SCOPE;
33
+ return value === "provider" || value === "model" ? value : DEFAULT_SCOPE;
34
34
  }
35
35
  function asAction(value) {
36
- return value === "error" ? "error" : "wait";
36
+ return value === "error" ? "error" : "wait";
37
37
  }
38
38
  /** A positive int, or `null` (the catch-all sentinel) when absent/non-positive. */
39
39
  function asMaxResetSeconds(value) {
40
- if (typeof value === "number" && Number.isFinite(value) && value > 0) {
41
- return Math.floor(value);
42
- }
43
- return null;
40
+ if (typeof value === "number" && Number.isFinite(value) && value > 0) {
41
+ return Math.floor(value);
42
+ }
43
+ return null;
44
44
  }
45
45
  function parseTier(raw) {
46
- return {
47
- maxResetSeconds: asMaxResetSeconds(raw.maxResetSeconds),
48
- action: asAction(raw.action),
49
- maxWaitMs: asNonNegativeInt(raw.maxWaitMs, DEFAULT_MAX_WAIT_MS),
50
- maxRetries: asPositiveInt(raw.maxRetries, DEFAULT_MAX_RETRIES)
51
- };
46
+ return {
47
+ maxResetSeconds: asMaxResetSeconds(raw.maxResetSeconds),
48
+ action: asAction(raw.action),
49
+ maxWaitMs: asNonNegativeInt(raw.maxWaitMs, DEFAULT_MAX_WAIT_MS),
50
+ maxRetries: asPositiveInt(raw.maxRetries, DEFAULT_MAX_RETRIES)
51
+ };
52
52
  }
53
53
  /**
54
- * Sort ascending by `maxResetSeconds` (catch-all `null` last) and guarantee a
55
- * trailing catch-all so every reset magnitude matches some tier. Without an
56
- * explicit catch-all the ultimate fallback is "wait the full window" — the safe
57
- * direction (never hammer the gateway).
58
- */
54
+ * Sort ascending by `maxResetSeconds` (catch-all `null` last) and guarantee a
55
+ * trailing catch-all so every reset magnitude matches some tier. Without an
56
+ * explicit catch-all the ultimate fallback is "wait the full window" — the safe
57
+ * direction (never hammer the gateway).
58
+ */
59
59
  function normalizeTiers(tiers) {
60
- const sorted = [...tiers].sort((a, b) => {
61
- if (a.maxResetSeconds === b.maxResetSeconds)
62
- return 0; // equal (incl. both null)
63
- if (a.maxResetSeconds === null)
64
- return 1;
65
- if (b.maxResetSeconds === null)
66
- return -1;
67
- return a.maxResetSeconds - b.maxResetSeconds;
68
- });
69
- if (!sorted.some((t) => t.maxResetSeconds === null)) {
70
- sorted.push({
71
- maxResetSeconds: null,
72
- action: "wait",
73
- maxWaitMs: DEFAULT_MAX_WAIT_MS,
74
- maxRetries: DEFAULT_MAX_RETRIES
75
- });
76
- }
77
- return sorted;
60
+ const sorted = [...tiers].sort((a, b) => {
61
+ if (a.maxResetSeconds === b.maxResetSeconds) return 0;
62
+ if (a.maxResetSeconds === null) return 1;
63
+ if (b.maxResetSeconds === null) return -1;
64
+ return a.maxResetSeconds - b.maxResetSeconds;
65
+ });
66
+ if (!sorted.some((t) => t.maxResetSeconds === null)) {
67
+ sorted.push({
68
+ maxResetSeconds: null,
69
+ action: "wait",
70
+ maxWaitMs: DEFAULT_MAX_WAIT_MS,
71
+ maxRetries: DEFAULT_MAX_RETRIES
72
+ });
73
+ }
74
+ return sorted;
78
75
  }
79
76
  /**
80
- * Parse a provider's `options.meta.rateLimit` block into resolved
81
- * {@link RateLimitOptions}. Returns `null` when the provider has NOT opted in
82
- * (no `meta.rateLimit`) or has explicitly disabled it (`enabled: false`).
83
- *
84
- * Two config styles, both supported:
85
- * - **Flat**: `maxWaitMs` / `maxRetries` → normalized into a single catch-all
86
- * `"wait"` tier (the 0.5.0 behavior).
87
- * - **Tiered**: a `tiers` array, each entry `{ maxResetSeconds?, action?,
88
- * maxWaitMs?, maxRetries? }`, matched by reset magnitude.
89
- */
77
+ * Parse a provider's `options.meta.rateLimit` block into resolved
78
+ * {@link RateLimitOptions}. Returns `null` when the provider has NOT opted in
79
+ * (no `meta.rateLimit`) or has explicitly disabled it (`enabled: false`).
80
+ *
81
+ * Two config styles, both supported:
82
+ * - **Flat**: `maxWaitMs` / `maxRetries` → normalized into a single catch-all
83
+ * `"wait"` tier (the 0.5.0 behavior).
84
+ * - **Tiered**: a `tiers` array, each entry `{ maxResetSeconds?, action?,
85
+ * maxWaitMs?, maxRetries? }`, matched by reset magnitude.
86
+ */
90
87
  export function parseRateLimitOptions(providerOptions) {
91
- if (!providerOptions) {
92
- return null;
93
- }
94
- const meta = asRecord(providerOptions[META_KEY]);
95
- if (!meta) {
96
- return null;
97
- }
98
- const rateLimit = asRecord(meta[RATE_LIMIT_KEY]);
99
- if (!rateLimit) {
100
- return null;
101
- }
102
- const enabled = asBoolean(rateLimit.enabled, true);
103
- if (!enabled) {
104
- return null;
105
- }
106
- const rawTiers = Array.isArray(rateLimit.tiers) ? rateLimit.tiers : undefined;
107
- let tiers;
108
- if (rawTiers && rawTiers.length > 0) {
109
- tiers = normalizeTiers(rawTiers.map((t) => parseTier(asRecord(t) ?? {})));
110
- }
111
- else {
112
- // Flat config → one catch-all "wait" tier (backward compatible with 0.5.0).
113
- tiers = [
114
- {
115
- maxResetSeconds: null,
116
- action: "wait",
117
- maxWaitMs: asNonNegativeInt(rateLimit.maxWaitMs, DEFAULT_MAX_WAIT_MS),
118
- maxRetries: asPositiveInt(rateLimit.maxRetries, DEFAULT_MAX_RETRIES)
119
- }
120
- ];
121
- }
122
- return {
123
- enabled: true,
124
- scope: asScope(rateLimit.scope),
125
- headerPrefix: (asString(rateLimit.headerPrefix) ?? DEFAULT_HEADER_PREFIX).toLowerCase(),
126
- tiers
127
- };
88
+ if (!providerOptions) {
89
+ return null;
90
+ }
91
+ const meta = asRecord(providerOptions[META_KEY]);
92
+ if (!meta) {
93
+ return null;
94
+ }
95
+ const rateLimit = asRecord(meta[RATE_LIMIT_KEY]);
96
+ if (!rateLimit) {
97
+ return null;
98
+ }
99
+ const enabled = asBoolean(rateLimit.enabled, true);
100
+ if (!enabled) {
101
+ return null;
102
+ }
103
+ const rawTiers = Array.isArray(rateLimit.tiers) ? rateLimit.tiers : undefined;
104
+ let tiers;
105
+ if (rawTiers && rawTiers.length > 0) {
106
+ tiers = normalizeTiers(rawTiers.map((t) => parseTier(asRecord(t) ?? {})));
107
+ } else {
108
+ // Flat config → one catch-all "wait" tier (backward compatible with 0.5.0).
109
+ tiers = [{
110
+ maxResetSeconds: null,
111
+ action: "wait",
112
+ maxWaitMs: asNonNegativeInt(rateLimit.maxWaitMs, DEFAULT_MAX_WAIT_MS),
113
+ maxRetries: asPositiveInt(rateLimit.maxRetries, DEFAULT_MAX_RETRIES)
114
+ }];
115
+ }
116
+ return {
117
+ enabled: true,
118
+ scope: asScope(rateLimit.scope),
119
+ headerPrefix: (asString(rateLimit.headerPrefix) ?? DEFAULT_HEADER_PREFIX).toLowerCase(),
120
+ tiers
121
+ };
128
122
  }
129
123
  /**
130
- * Select the policy tier for an observed reset. `tiers` is pre-sorted ascending
131
- * with a catch-all last, so the first tier whose bound covers `resetSeconds`
132
- * wins. An unknown reset is treated as the smallest band (wait a default backoff).
133
- */
124
+ * Select the policy tier for an observed reset. `tiers` is pre-sorted ascending
125
+ * with a catch-all last, so the first tier whose bound covers `resetSeconds`
126
+ * wins. An unknown reset is treated as the smallest band (wait a default backoff).
127
+ */
134
128
  export function selectTier(tiers, resetSeconds) {
135
- const reset = resetSeconds ?? 0;
136
- for (const tier of tiers) {
137
- if (tier.maxResetSeconds === null || reset <= tier.maxResetSeconds) {
138
- return tier;
139
- }
140
- }
141
- return tiers[tiers.length - 1];
129
+ const reset = resetSeconds ?? 0;
130
+ for (const tier of tiers) {
131
+ if (tier.maxResetSeconds === null || reset <= tier.maxResetSeconds) {
132
+ return tier;
133
+ }
134
+ }
135
+ return tiers[tiers.length - 1];
142
136
  }
137
+
143
138
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"mappings":"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","names":[],"sources":["../src/config.ts"],"version":3,"file":"config.js","sourceRoot":""}
package/dist/headers.d.ts CHANGED
@@ -1,18 +1,18 @@
1
1
  import type { RateLimitSnapshot } from "./types.js";
2
2
  /**
3
- * Parse the IETF draft-03 rate-limit triple (as emitted by Envoy Gateway's
4
- * global rate limit) plus an optional `Retry-After` fallback into a
5
- * {@link RateLimitSnapshot}.
6
- *
7
- * Envoy emits these on BOTH 200 and 429 responses, e.g.:
8
- * x-ratelimit-limit: 3, 3;w=60
9
- * x-ratelimit-remaining: 2
10
- * x-ratelimit-reset: 48 (seconds until the bucket resets)
11
- *
12
- * `Retry-After` is NOT emitted by Envoy Gateway today, so it is only consulted
13
- * as a fallback when present (all-digits → seconds; otherwise an HTTP-date).
14
- *
15
- * Header names are case-insensitive (the Fetch `Headers` object lowercases
16
- * them); `prefix` should already be lowercased by the caller.
17
- */
3
+ * Parse the IETF draft-03 rate-limit triple (as emitted by Envoy Gateway's
4
+ * global rate limit) plus an optional `Retry-After` fallback into a
5
+ * {@link RateLimitSnapshot}.
6
+ *
7
+ * Envoy emits these on BOTH 200 and 429 responses, e.g.:
8
+ * x-ratelimit-limit: 3, 3;w=60
9
+ * x-ratelimit-remaining: 2
10
+ * x-ratelimit-reset: 48 (seconds until the bucket resets)
11
+ *
12
+ * `Retry-After` is NOT emitted by Envoy Gateway today, so it is only consulted
13
+ * as a fallback when present (all-digits → seconds; otherwise an HTTP-date).
14
+ *
15
+ * Header names are case-insensitive (the Fetch `Headers` object lowercases
16
+ * them); `prefix` should already be lowercased by the caller.
17
+ */
18
18
  export declare function parseRateLimit(headers: Headers, prefix: string, nowMs: number): RateLimitSnapshot;
package/dist/headers.js CHANGED
@@ -1,82 +1,83 @@
1
1
  /**
2
- * Parse the IETF draft-03 rate-limit triple (as emitted by Envoy Gateway's
3
- * global rate limit) plus an optional `Retry-After` fallback into a
4
- * {@link RateLimitSnapshot}.
5
- *
6
- * Envoy emits these on BOTH 200 and 429 responses, e.g.:
7
- * x-ratelimit-limit: 3, 3;w=60
8
- * x-ratelimit-remaining: 2
9
- * x-ratelimit-reset: 48 (seconds until the bucket resets)
10
- *
11
- * `Retry-After` is NOT emitted by Envoy Gateway today, so it is only consulted
12
- * as a fallback when present (all-digits → seconds; otherwise an HTTP-date).
13
- *
14
- * Header names are case-insensitive (the Fetch `Headers` object lowercases
15
- * them); `prefix` should already be lowercased by the caller.
16
- */
2
+ * Parse the IETF draft-03 rate-limit triple (as emitted by Envoy Gateway's
3
+ * global rate limit) plus an optional `Retry-After` fallback into a
4
+ * {@link RateLimitSnapshot}.
5
+ *
6
+ * Envoy emits these on BOTH 200 and 429 responses, e.g.:
7
+ * x-ratelimit-limit: 3, 3;w=60
8
+ * x-ratelimit-remaining: 2
9
+ * x-ratelimit-reset: 48 (seconds until the bucket resets)
10
+ *
11
+ * `Retry-After` is NOT emitted by Envoy Gateway today, so it is only consulted
12
+ * as a fallback when present (all-digits → seconds; otherwise an HTTP-date).
13
+ *
14
+ * Header names are case-insensitive (the Fetch `Headers` object lowercases
15
+ * them); `prefix` should already be lowercased by the caller.
16
+ */
17
17
  export function parseRateLimit(headers, prefix, nowMs) {
18
- const snapshot = {};
19
- const limit = parseLimit(headers.get(`${prefix}-limit`));
20
- if (limit !== undefined) {
21
- snapshot.limit = limit;
22
- }
23
- const remaining = parseInteger(headers.get(`${prefix}-remaining`));
24
- if (remaining !== undefined) {
25
- snapshot.remaining = remaining;
26
- }
27
- const resetSeconds = parseInteger(headers.get(`${prefix}-reset`));
28
- if (resetSeconds !== undefined) {
29
- snapshot.resetSeconds = resetSeconds;
30
- snapshot.resetAtMs = nowMs + resetSeconds * 1000;
31
- }
32
- const retryAfterMs = parseRetryAfter(headers.get("retry-after"), nowMs);
33
- if (retryAfterMs !== undefined) {
34
- snapshot.retryAfterMs = retryAfterMs;
35
- }
36
- return snapshot;
18
+ const snapshot = {};
19
+ const limit = parseLimit(headers.get(`${prefix}-limit`));
20
+ if (limit !== undefined) {
21
+ snapshot.limit = limit;
22
+ }
23
+ const remaining = parseInteger(headers.get(`${prefix}-remaining`));
24
+ if (remaining !== undefined) {
25
+ snapshot.remaining = remaining;
26
+ }
27
+ const resetSeconds = parseInteger(headers.get(`${prefix}-reset`));
28
+ if (resetSeconds !== undefined) {
29
+ snapshot.resetSeconds = resetSeconds;
30
+ snapshot.resetAtMs = nowMs + resetSeconds * 1e3;
31
+ }
32
+ const retryAfterMs = parseRetryAfter(headers.get("retry-after"), nowMs);
33
+ if (retryAfterMs !== undefined) {
34
+ snapshot.retryAfterMs = retryAfterMs;
35
+ }
36
+ return snapshot;
37
37
  }
38
38
  /**
39
- * `x-ratelimit-limit` carries the effective limit followed by optional
40
- * window descriptors, e.g. `"3, 3;w=60"`. We take the first comma-separated
41
- * token and strip any `;w=...` quota-policy suffix → `3`. A plain `"3"` works too.
42
- */
39
+ * `x-ratelimit-limit` carries the effective limit followed by optional
40
+ * window descriptors, e.g. `"3, 3;w=60"`. We take the first comma-separated
41
+ * token and strip any `;w=...` quota-policy suffix → `3`. A plain `"3"` works too.
42
+ */
43
43
  function parseLimit(raw) {
44
- if (raw === null) {
45
- return undefined;
46
- }
47
- const firstToken = raw.split(",", 1)[0]?.split(";", 1)[0];
48
- return parseInteger(firstToken);
44
+ if (raw === null) {
45
+ return undefined;
46
+ }
47
+ const firstToken = raw.split(",", 1)[0]?.split(";", 1)[0];
48
+ return parseInteger(firstToken);
49
49
  }
50
50
  function parseInteger(raw) {
51
- if (raw === null || raw === undefined) {
52
- return undefined;
53
- }
54
- const trimmed = raw.trim();
55
- if (trimmed.length === 0 || !/^-?\d+$/.test(trimmed)) {
56
- return undefined;
57
- }
58
- const value = Number.parseInt(trimmed, 10);
59
- return Number.isFinite(value) ? value : undefined;
51
+ if (raw === null || raw === undefined) {
52
+ return undefined;
53
+ }
54
+ const trimmed = raw.trim();
55
+ if (trimmed.length === 0 || !/^-?\d+$/.test(trimmed)) {
56
+ return undefined;
57
+ }
58
+ const value = Number.parseInt(trimmed, 10);
59
+ return Number.isFinite(value) ? value : undefined;
60
60
  }
61
61
  /**
62
- * `Retry-After` is either a non-negative integer (delay-seconds) or an
63
- * HTTP-date. Returns the wait in ms, never negative.
64
- */
62
+ * `Retry-After` is either a non-negative integer (delay-seconds) or an
63
+ * HTTP-date. Returns the wait in ms, never negative.
64
+ */
65
65
  function parseRetryAfter(raw, nowMs) {
66
- if (raw === null) {
67
- return undefined;
68
- }
69
- const trimmed = raw.trim();
70
- if (trimmed.length === 0) {
71
- return undefined;
72
- }
73
- if (/^\d+$/.test(trimmed)) {
74
- return Number.parseInt(trimmed, 10) * 1000;
75
- }
76
- const dateMs = Date.parse(trimmed);
77
- if (Number.isNaN(dateMs)) {
78
- return undefined;
79
- }
80
- return Math.max(0, dateMs - nowMs);
66
+ if (raw === null) {
67
+ return undefined;
68
+ }
69
+ const trimmed = raw.trim();
70
+ if (trimmed.length === 0) {
71
+ return undefined;
72
+ }
73
+ if (/^\d+$/.test(trimmed)) {
74
+ return Number.parseInt(trimmed, 10) * 1e3;
75
+ }
76
+ const dateMs = Date.parse(trimmed);
77
+ if (Number.isNaN(dateMs)) {
78
+ return undefined;
79
+ }
80
+ return Math.max(0, dateMs - nowMs);
81
81
  }
82
+
82
83
  //# sourceMappingURL=headers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"headers.js","sourceRoot":"","sources":["../src/headers.ts"],"names":[],"mappings":"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"}
1
+ {"mappings":";;;;;;;;;;;;;;;;AAkBA,OAAO,SAAS,eAAe,SAAkB,QAAgB,OAAkC;CACjG,MAAM,WAA8B,CAAC;CAErC,MAAM,QAAQ,WAAW,QAAQ,IAAI,GAAG,OAAO,OAAO,CAAC;CACvD,IAAI,UAAU,WAAW;EACvB,SAAS,QAAQ;CACnB;CAEA,MAAM,YAAY,aAAa,QAAQ,IAAI,GAAG,OAAO,WAAW,CAAC;CACjE,IAAI,cAAc,WAAW;EAC3B,SAAS,YAAY;CACvB;CAEA,MAAM,eAAe,aAAa,QAAQ,IAAI,GAAG,OAAO,OAAO,CAAC;CAChE,IAAI,iBAAiB,WAAW;EAC9B,SAAS,eAAe;EACxB,SAAS,YAAY,QAAQ,eAAe;CAC9C;CAEA,MAAM,eAAe,gBAAgB,QAAQ,IAAI,aAAa,GAAG,KAAK;CACtE,IAAI,iBAAiB,WAAW;EAC9B,SAAS,eAAe;CAC1B;CAEA,OAAO;AACT;;;;;;AAOA,SAAS,WAAW,KAAwC;CAC1D,IAAI,QAAQ,MAAM;EAChB,OAAO;CACT;CACA,MAAM,aAAa,IAAI,MAAM,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC;CACvD,OAAO,aAAa,UAAU;AAChC;AAEA,SAAS,aAAa,KAAoD;CACxE,IAAI,QAAQ,QAAQ,QAAQ,WAAW;EACrC,OAAO;CACT;CACA,MAAM,UAAU,IAAI,KAAK;CACzB,IAAI,QAAQ,WAAW,KAAK,CAAC,UAAU,KAAK,OAAO,GAAG;EACpD,OAAO;CACT;CACA,MAAM,QAAQ,OAAO,SAAS,SAAS,EAAE;CACzC,OAAO,OAAO,SAAS,KAAK,IAAI,QAAQ;AAC1C;;;;;AAMA,SAAS,gBAAgB,KAAoB,OAAmC;CAC9E,IAAI,QAAQ,MAAM;EAChB,OAAO;CACT;CACA,MAAM,UAAU,IAAI,KAAK;CACzB,IAAI,QAAQ,WAAW,GAAG;EACxB,OAAO;CACT;CACA,IAAI,QAAQ,KAAK,OAAO,GAAG;EACzB,OAAO,OAAO,SAAS,SAAS,EAAE,IAAI;CACxC;CACA,MAAM,SAAS,KAAK,MAAM,OAAO;CACjC,IAAI,OAAO,MAAM,MAAM,GAAG;EACxB,OAAO;CACT;CACA,OAAO,KAAK,IAAI,GAAG,SAAS,KAAK;AACnC","names":[],"sources":["../src/headers.ts"],"version":3,"file":"headers.js","sourceRoot":""}
package/dist/index.js CHANGED
@@ -2,4 +2,5 @@
2
2
  // and rejects any export that isn't a Plugin function (or { server: Plugin }).
3
3
  // Library API is exposed via the "./lib" subpath in package.json.
4
4
  export { default } from "./opencode.js";
5
+
5
6
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,+EAA+E;AAC/E,kEAAkE;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC"}
1
+ {"mappings":";;;AAGA,SAAS,eAAe","names":[],"sources":["../src/index.ts"],"version":3,"file":"index.js","sourceRoot":""}
package/dist/lib.js CHANGED
@@ -3,4 +3,5 @@ export { DEFAULT_HEADER_PREFIX, DEFAULT_MAX_RETRIES, DEFAULT_MAX_WAIT_MS, DEFAUL
3
3
  export { parseRateLimit } from "./headers.js";
4
4
  export { createJsonConsoleLogger, DEFAULT_LOG_LEVEL, fromOpenCodeLogLevel } from "./logging.js";
5
5
  export { createProviderState, DEFAULT_BACKOFF_MS, installRateLimiter, makeRateLimitFetch } from "./plugin.js";
6
+
6
7
  //# sourceMappingURL=lib.js.map
package/dist/lib.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,EAExB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,qBAAqB,EACrB,UAAU,EACX,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EAIrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAElB,kBAAkB,EAClB,kBAAkB,EAKnB,MAAM,aAAa,CAAC"}
1
+ {"mappings":"AAAA,SACE,+BACA,+BAEK;AAEP,SACE,uBACA,qBACA,qBACA,eACA,uBACA,kBACK;AAEP,SAAS,sBAAsB;AAE/B,SACE,yBACA,mBACA,4BAIK;AAEP,SACE,qBACA,oBAEA,oBACA,0BAKK","names":[],"sources":["../src/lib.ts"],"version":3,"file":"lib.js","sourceRoot":""}
package/dist/logging.d.ts CHANGED
@@ -3,14 +3,14 @@ export type { LogLevel } from "./types.js";
3
3
  export declare const LOG_LEVEL_PRIORITY: Record<LogLevel, number>;
4
4
  export declare const DEFAULT_LOG_LEVEL: LogLevel;
5
5
  export interface LogFields {
6
- [key: string]: unknown;
6
+ [key: string]: unknown;
7
7
  }
8
8
  export interface Logger {
9
- trace(event: string, fields?: LogFields): void;
10
- debug(event: string, fields?: LogFields): void;
11
- info(event: string, fields?: LogFields): void;
12
- warn(event: string, fields?: LogFields): void;
13
- error(event: string, fields?: LogFields): void;
9
+ trace(event: string, fields?: LogFields): void;
10
+ debug(event: string, fields?: LogFields): void;
11
+ info(event: string, fields?: LogFields): void;
12
+ warn(event: string, fields?: LogFields): void;
13
+ error(event: string, fields?: LogFields): void;
14
14
  }
15
15
  export declare function createJsonConsoleLogger(minLevel?: LogLevel): Logger;
16
16
  export declare function fromOpenCodeLogLevel(value: unknown): LogLevel | undefined;