@apicity/xai 0.1.0-alpha.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.
@@ -0,0 +1,8 @@
1
+ export interface EndpointExample {
2
+ source: string;
3
+ payload: unknown;
4
+ }
5
+ declare const EXAMPLES: Record<string, EndpointExample>;
6
+ export default EXAMPLES;
7
+ export declare function attachExamples<T>(provider: T): T;
8
+ //# sourceMappingURL=example.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../../src/example.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,QAAA,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAiJ7C,CAAC;AAEF,eAAe,QAAQ,CAAC;AAOxB,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CA6ChD"}
@@ -0,0 +1,230 @@
1
+ // Auto-generated by `pnpm run gen:examples` — do not edit by hand.
2
+ // Source: tests/recordings/<provider>_*/<test>_*/recording.har
3
+ //
4
+ // Each entry is the green-path payload for one endpoint, mined from a real
5
+ // integration-test recording. `attachExamples` walks the provider tree and
6
+ // hangs the matching entry off each endpoint function as `.example`.
7
+ const EXAMPLES = {
8
+ "POST v1.batches": {
9
+ "source": "xai/batch-get",
10
+ "payload": {
11
+ "name": "Get Test Batch"
12
+ }
13
+ },
14
+ "POST v1.batches.cancel": {
15
+ "source": "xai/batch-cancel",
16
+ "payload": {}
17
+ },
18
+ "POST v1.batches.requests": {
19
+ "source": "xai/batch-requests",
20
+ "payload": {
21
+ "batch_requests": [
22
+ {
23
+ "batch_request_id": "test_req_0",
24
+ "batch_request": {
25
+ "chat_get_completion": {
26
+ "messages": [
27
+ {
28
+ "role": "user",
29
+ "content": "What is 2+2?"
30
+ }
31
+ ],
32
+ "model": "grok-3"
33
+ }
34
+ }
35
+ }
36
+ ]
37
+ }
38
+ },
39
+ "POST v1.chat.completions": {
40
+ "source": "xai/chat-hello",
41
+ "payload": {
42
+ "model": "grok-3-fast",
43
+ "messages": [
44
+ {
45
+ "role": "user",
46
+ "content": "Say hello in one sentence."
47
+ }
48
+ ],
49
+ "temperature": 0
50
+ }
51
+ },
52
+ "POST v1.collections": {
53
+ "source": "xai/collections-documents-add",
54
+ "payload": {}
55
+ },
56
+ "POST v1.collections.documents": {
57
+ "source": "xai/collections-docs",
58
+ "payload": {
59
+ "name": "test-delete-doc-1775143467493"
60
+ }
61
+ },
62
+ "POST v1.documents.search": {
63
+ "source": "xai/documents-search",
64
+ "payload": {
65
+ "query": "test",
66
+ "limit": 10,
67
+ "filters": {
68
+ "collection_id": "test-collection"
69
+ }
70
+ }
71
+ },
72
+ "POST v1.images.edits": {
73
+ "source": "xai/image-edits",
74
+ "payload": {
75
+ "model": "grok-2-image-1212",
76
+ "image": {},
77
+ "prompt": "Add a sunset background",
78
+ "n": 1
79
+ }
80
+ },
81
+ "POST v1.images.generations": {
82
+ "source": "xai/image-generate-basic",
83
+ "payload": {
84
+ "prompt": "A simple red apple on a white background",
85
+ "model": "grok-imagine-image",
86
+ "n": 1
87
+ }
88
+ },
89
+ "POST v1.realtime.clientSecrets": {
90
+ "source": "xai/realtime-client-secrets",
91
+ "payload": {
92
+ "model": "grok-2",
93
+ "voice": "echo"
94
+ }
95
+ },
96
+ "POST v1.responses": {
97
+ "source": "xai/responses-crud",
98
+ "payload": {
99
+ "model": "grok-2",
100
+ "input": "Delete this"
101
+ }
102
+ },
103
+ "POST v1.tokenizeText": {
104
+ "source": "xai/tokenize-text",
105
+ "payload": {
106
+ "model": "grok-3",
107
+ "text": "Hello world!"
108
+ }
109
+ },
110
+ "POST v1.tts": {
111
+ "source": "xai/tts-welcome",
112
+ "payload": {
113
+ "text": "Welcome to xAI. How can I help you today?",
114
+ "voice_id": "eve",
115
+ "language": "en"
116
+ }
117
+ },
118
+ "POST v1.videos.edits": {
119
+ "source": "xai/video-edit",
120
+ "payload": {
121
+ "model": "grok-imagine-video",
122
+ "prompt": "Give the woman a silver necklace",
123
+ "video": {
124
+ "url": "https://vidgen.x.ai/xai-vidgen-bucket/xai-video-sample.mp4"
125
+ }
126
+ }
127
+ },
128
+ "POST v1.videos.extensions": {
129
+ "source": "xai/video-extensions-basic",
130
+ "payload": {
131
+ "model": "grok-imagine-video",
132
+ "prompt": "The scene continues with the character walking into a magical forest",
133
+ "video": {
134
+ "url": "https://vidgen.x.ai/xai-vidgen-bucket/xai-video-sample.mp4"
135
+ },
136
+ "duration": 5
137
+ }
138
+ },
139
+ "POST v1.videos.generations": {
140
+ "source": "xai/video-get",
141
+ "payload": {
142
+ "model": "grok-video",
143
+ "prompt": "A cat playing with a ball"
144
+ }
145
+ },
146
+ "PUT v1.collections": {
147
+ "source": "xai/collections-put-update",
148
+ "payload": {
149
+ "collection_name": "updated-collection-name"
150
+ }
151
+ }
152
+ };
153
+ export default EXAMPLES;
154
+ // Walks each "<METHOD> <dotPath>" key onto the provider's tree. Tries the
155
+ // standard `provider.<method>.<dotPath>` shape first, then a few fallbacks
156
+ // to cover providers with non-standard layouts (fal's `.run.` namespace,
157
+ // kie's sub-providers, `free`'s flat root). Returns the same provider for
158
+ // drop-in use as `return attachExamples({ ... });`.
159
+ export function attachExamples(provider) {
160
+ const root = provider;
161
+ const HTTP_KEYS = new Set(["post", "get", "put", "delete", "patch", "head"]);
162
+ for (const [key, example] of Object.entries(EXAMPLES)) {
163
+ const sp = key.indexOf(" ");
164
+ if (sp < 0)
165
+ continue;
166
+ const method = key.slice(0, sp).toLowerCase();
167
+ const segs = key.slice(sp + 1).split(".");
168
+ const candidates = [
169
+ root[method],
170
+ root[method]?.run,
171
+ root,
172
+ ];
173
+ if (segs.length > 1) {
174
+ const sub = root[segs[0]];
175
+ if (sub && typeof sub === "object") {
176
+ const subMethod = sub[method];
177
+ if (subMethod)
178
+ candidates.push({ __nested: subMethod, __segs: segs.slice(1) });
179
+ }
180
+ }
181
+ let attached = false;
182
+ for (const c of candidates) {
183
+ const fn = walkToFn(c, segs);
184
+ if (fn) {
185
+ Object.assign(fn, { example });
186
+ attached = true;
187
+ break;
188
+ }
189
+ }
190
+ if (attached)
191
+ continue;
192
+ for (const k of Object.keys(root)) {
193
+ if (HTTP_KEYS.has(k))
194
+ continue;
195
+ if (!segs.includes(k))
196
+ continue;
197
+ const sub = root[k];
198
+ if (!sub || typeof sub !== "object")
199
+ continue;
200
+ const subMethod = sub[method];
201
+ if (!subMethod)
202
+ continue;
203
+ const fn = walkToFn(subMethod, segs);
204
+ if (fn) {
205
+ Object.assign(fn, { example });
206
+ break;
207
+ }
208
+ }
209
+ }
210
+ return provider;
211
+ }
212
+ function walkToFn(start, segs) {
213
+ if (start && typeof start === "object" && "__nested" in start) {
214
+ const wrapper = start;
215
+ return walkToFn(wrapper.__nested, wrapper.__segs);
216
+ }
217
+ let cur = start;
218
+ for (const seg of segs) {
219
+ if (cur === null || cur === undefined)
220
+ return null;
221
+ const t = typeof cur;
222
+ if (t !== "object" && t !== "function")
223
+ return null;
224
+ cur = cur[seg];
225
+ }
226
+ return typeof cur === "function"
227
+ ? cur
228
+ : null;
229
+ }
230
+ //# sourceMappingURL=example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.js","sourceRoot":"","sources":["../../src/example.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { xai } from "./xai";
2
+ export { XaiError } from "./types";
3
+ export { withRetry, withFallback, withRateLimit, createRateLimiter, XAI_RATE_LIMITS, } from "./middleware";
4
+ export type { RetryOptions, FallbackOptions, RateLimiterOptions, RateLimiter, RateLimitOptions, } from "./middleware";
5
+ export type { XaiOptions, XaiMessage, XaiToolFunction, XaiTool, XaiToolCall, XaiUsage, XaiChatChoice, XaiChatRequest, XaiChatResponse, XaiDeferredChatCompletionResult, XaiImageGenerateRequest, XaiImageEditRequest, XaiImageReference, XaiGeneratedImage, XaiImageResponse, XaiVideoGenerateRequest, XaiVideoEditRequest, XaiVideoExtendRequest, XaiVideoReference, XaiVideoAsyncResponse, XaiVideoData, XaiVideoResult, XaiFileObject, XaiFileListResponse, XaiBatchState, XaiBatch, XaiBatchCreateRequest, XaiBatchListResponse, XaiBatchListParams, XaiBatchRequestMetadata, XaiBatchRequestListResponse, XaiBatchRequestListParams, XaiBatchRequestItem, XaiBatchAddRequestsBody, XaiBatchResultItem, XaiBatchResultListResponse, XaiBatchResultListParams, XaiChunkConfiguration, XaiFieldDefinition, XaiCollectionCreateRequest, XaiCollection, XaiCollectionListParams, XaiCollectionListResponse, XaiCollectionUpdateRequest, XaiDocumentFileMetadata, XaiDocument, XaiDocumentListParams, XaiDocumentListResponse, XaiDocumentAddRequest, XaiDocumentSearchRequest, XaiDocumentSearchMatch, XaiDocumentSearchResponse, XaiResponseRequest, XaiResponseResponse, XaiResponseInputItem, XaiResponseInputMessage, XaiResponseInputContent, XaiResponseInputTextContent, XaiResponseInputImageContent, XaiResponseFunctionCallOutput, XaiResponseItemReference, XaiResponseTool, XaiResponseFunctionTool, XaiResponseWebSearchTool, XaiResponseFileSearchTool, XaiResponseTextFormat, XaiResponseReasoning, XaiResponseSearchParameters, XaiResponseOutputItem, XaiResponseOutputMessage, XaiResponseOutputContent, XaiResponseOutputText, XaiResponseRefusal, XaiResponseAnnotation, XaiResponseFunctionCallItem, XaiResponseWebSearchCallItem, XaiResponseFileSearchCallItem, XaiResponseUsage, XaiResponseDeleteResponse, XaiModel, XaiModelListResponse, XaiLanguageModel, XaiLanguageModelListResponse, XaiImageGenerationModel, XaiImageGenerationModelListResponse, XaiVideoGenerationModel, XaiVideoGenerationModelListResponse, XaiTokenizeTextRequest, XaiToken, XaiTokenizeTextResponse, XaiRealtimeClientSecretRequest, XaiRealtimeClientSecretResponse, XaiRealtimeTurnDetection, XaiRealtimeAudioFormat, XaiRealtimeAudioConfig, XaiRealtimeFunctionTool, XaiRealtimeWebSearchTool, XaiRealtimeXSearchTool, XaiRealtimeFileSearchTool, XaiRealtimeMcpTool, XaiRealtimeTool, XaiRealtimeSession, XaiRealtimeClientEvent, XaiRealtimeSessionUpdate, XaiRealtimeInputAudioBufferAppend, XaiRealtimeInputAudioBufferCommit, XaiRealtimeConversationItemCreate, XaiRealtimeResponseCreate, XaiRealtimeResponseCancel, XaiRealtimeServerEvent, XaiRealtimeConversationCreated, XaiRealtimeSessionUpdated, XaiRealtimeSpeechStarted, XaiRealtimeSpeechStopped, XaiRealtimeAudioBufferCommitted, XaiRealtimeConversationItemAdded, XaiRealtimeTranscriptionCompleted, XaiRealtimeResponseCreated, XaiRealtimeResponseDone, XaiRealtimeOutputItemAdded, XaiRealtimeOutputItemDone, XaiRealtimeAudioDelta, XaiRealtimeAudioDone, XaiRealtimeAudioTranscriptDelta, XaiRealtimeAudioTranscriptDone, XaiRealtimeTextDelta, XaiRealtimeTextDone, XaiRealtimeFunctionCallDelta, XaiRealtimeFunctionCallDone, XaiRealtimeContentPartAdded, XaiRealtimeContentPartDone, XaiRealtimeError, XaiRealtimeConnectOptions, XaiRealtimeConnection, XaiTtsRequest, XaiSttRequest, XaiSttWord, XaiSttResponse, XaiCustomVoiceCreateRequest, XaiCustomVoice, XaiProvider, } from "./types";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ // Export main provider function
2
+ export { xai } from "./xai.js";
3
+ // Export error class
4
+ export { XaiError } from "./types.js";
5
+ // Export middleware
6
+ export { withRetry, withFallback, withRateLimit, createRateLimiter, XAI_RATE_LIMITS, } from "./middleware.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,qBAAqB;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,oBAAoB;AACpB,OAAO,EACL,SAAS,EACT,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,eAAe,GAChB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,56 @@
1
+ export interface RetryOptions {
2
+ retries?: number;
3
+ baseMs?: number;
4
+ factor?: number;
5
+ jitter?: boolean;
6
+ }
7
+ export interface FallbackOptions {
8
+ onFallback?: (error: unknown, index: number) => void;
9
+ }
10
+ export declare function withRetry<TReq, TRes>(fn: (req: TReq, signal?: AbortSignal) => Promise<TRes>, opts?: RetryOptions): (req: TReq, signal?: AbortSignal) => Promise<TRes>;
11
+ export declare function withFallback<TReq, TRes>(fns: Array<(req: TReq, signal?: AbortSignal) => Promise<TRes>>, opts?: FallbackOptions): (req: TReq, signal?: AbortSignal) => Promise<TRes>;
12
+ export interface RateLimiterOptions {
13
+ /** Maximum requests per minute (sliding window). Default: Infinity */
14
+ rpm?: number;
15
+ /** Maximum concurrent in-flight requests. Default: Infinity */
16
+ concurrent?: number;
17
+ /** Maximum time (ms) a request will wait in queue. Default: 60000 */
18
+ maxQueueMs?: number;
19
+ }
20
+ export interface RateLimiter {
21
+ /** Current number of in-flight requests */
22
+ readonly active: number;
23
+ /** Current number of queued requests waiting for a slot */
24
+ readonly queued: number;
25
+ /** Reject all queued requests and clean up timers */
26
+ dispose(): void;
27
+ }
28
+ export interface RateLimitOptions {
29
+ /** Override maxQueueMs for this particular wrapped function */
30
+ maxQueueMs?: number;
31
+ }
32
+ export declare function createRateLimiter(opts?: RateLimiterOptions): RateLimiter;
33
+ export declare function withRateLimit<TReq, TRes>(fn: (req: TReq, signal?: AbortSignal) => Promise<TRes>, limiter: RateLimiter, opts?: RateLimitOptions): (req: TReq, signal?: AbortSignal) => Promise<TRes>;
34
+ export declare const XAI_RATE_LIMITS: {
35
+ readonly free: {
36
+ readonly rpm: 5;
37
+ readonly concurrent: 2;
38
+ };
39
+ readonly tier1: {
40
+ readonly rpm: 60;
41
+ readonly concurrent: 10;
42
+ };
43
+ readonly tier2: {
44
+ readonly rpm: 200;
45
+ readonly concurrent: 25;
46
+ };
47
+ readonly tier3: {
48
+ readonly rpm: 500;
49
+ readonly concurrent: 50;
50
+ };
51
+ readonly tier4: {
52
+ readonly rpm: 1000;
53
+ readonly concurrent: 100;
54
+ };
55
+ };
56
+ //# sourceMappingURL=middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACtD;AA+BD,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAClC,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,EACtD,IAAI,GAAE,YAAiB,GACtB,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CA2BpD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EACrC,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,EAC9D,IAAI,GAAE,eAAoB,GACzB,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAiBpD;AAED,MAAM,WAAW,kBAAkB;IACjC,sEAAsE;IACtE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAkED,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,kBAAuB,GAAG,WAAW,CAqH5E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EACtC,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,EACtD,OAAO,EAAE,WAAW,EACpB,IAAI,GAAE,gBAAqB,GAC1B,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAcpD;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;CAM2B,CAAC"}
@@ -0,0 +1,226 @@
1
+ function isTransientError(e) {
2
+ const status = (typeof e === "object" &&
3
+ e !== null &&
4
+ "status" in e &&
5
+ typeof e.status === "number" &&
6
+ e.status) ||
7
+ (typeof e === "object" &&
8
+ e !== null &&
9
+ "statusCode" in e &&
10
+ typeof e.statusCode === "number" &&
11
+ e.statusCode) ||
12
+ (typeof e === "object" &&
13
+ e !== null &&
14
+ "code" in e &&
15
+ typeof e.code === "number" &&
16
+ e.code) ||
17
+ null;
18
+ if (typeof status === "number") {
19
+ return status === 429 || status >= 500;
20
+ }
21
+ return true;
22
+ }
23
+ function sleep(ms) {
24
+ return new Promise((resolve) => setTimeout(resolve, ms));
25
+ }
26
+ export function withRetry(fn, opts = {}) {
27
+ const retries = opts.retries ?? 2;
28
+ const baseMs = opts.baseMs ?? 300;
29
+ const factor = opts.factor ?? 2;
30
+ const jitter = opts.jitter ?? true;
31
+ return async (req, signal) => {
32
+ let attempt = 0;
33
+ while (true) {
34
+ try {
35
+ return await fn(req, signal);
36
+ }
37
+ catch (e) {
38
+ attempt += 1;
39
+ if (attempt > retries || !isTransientError(e) || signal?.aborted) {
40
+ throw e;
41
+ }
42
+ const delay = baseMs * Math.pow(factor, attempt - 1);
43
+ const wait = jitter
44
+ ? Math.floor(delay * (0.8 + Math.random() * 0.4))
45
+ : delay;
46
+ await sleep(wait);
47
+ }
48
+ }
49
+ };
50
+ }
51
+ export function withFallback(fns, opts = {}) {
52
+ if (fns.length === 0) {
53
+ throw new Error("withFallback requires at least one function");
54
+ }
55
+ return async (req, signal) => {
56
+ let lastError;
57
+ for (let i = 0; i < fns.length; i++) {
58
+ try {
59
+ return await fns[i](req, signal);
60
+ }
61
+ catch (e) {
62
+ lastError = e;
63
+ opts.onFallback?.(e, i);
64
+ }
65
+ }
66
+ throw lastError;
67
+ };
68
+ }
69
+ function pruneTimestamps(state, now) {
70
+ const cutoff = now - 60_000;
71
+ while (state.timestamps.length > 0 && state.timestamps[0] <= cutoff) {
72
+ state.timestamps.shift();
73
+ }
74
+ }
75
+ function tryDrain(state) {
76
+ const now = Date.now();
77
+ pruneTimestamps(state, now);
78
+ while (state.queue.length > 0) {
79
+ if (state.timestamps.length >= state.rpm)
80
+ break;
81
+ if (state.activeCount >= state.concurrent)
82
+ break;
83
+ const entry = state.queue.shift();
84
+ clearTimeout(entry.timeoutId);
85
+ if (entry.signal && entry.abortHandler) {
86
+ entry.signal.removeEventListener("abort", entry.abortHandler);
87
+ }
88
+ state.timestamps.push(now);
89
+ state.activeCount++;
90
+ entry.resolve();
91
+ }
92
+ if (state.drainTimerId !== null) {
93
+ clearTimeout(state.drainTimerId);
94
+ state.drainTimerId = null;
95
+ }
96
+ if (state.queue.length > 0 &&
97
+ state.timestamps.length >= state.rpm &&
98
+ state.timestamps.length > 0) {
99
+ const oldestExpiry = state.timestamps[0] + 60_000;
100
+ const delay = Math.max(1, oldestExpiry - now);
101
+ state.drainTimerId = setTimeout(() => {
102
+ state.drainTimerId = null;
103
+ tryDrain(state);
104
+ }, delay);
105
+ }
106
+ }
107
+ export function createRateLimiter(opts = {}) {
108
+ const state = {
109
+ rpm: opts.rpm ?? Infinity,
110
+ concurrent: opts.concurrent ?? Infinity,
111
+ maxQueueMs: opts.maxQueueMs ?? 60_000,
112
+ timestamps: [],
113
+ activeCount: 0,
114
+ queue: [],
115
+ drainTimerId: null,
116
+ disposed: false,
117
+ };
118
+ function acquire(signal, maxQueueMs) {
119
+ if (state.disposed) {
120
+ return Promise.reject(new Error("RateLimiter is disposed"));
121
+ }
122
+ const now = Date.now();
123
+ pruneTimestamps(state, now);
124
+ if (state.timestamps.length < state.rpm &&
125
+ state.activeCount < state.concurrent) {
126
+ state.timestamps.push(now);
127
+ state.activeCount++;
128
+ return Promise.resolve();
129
+ }
130
+ if (signal?.aborted) {
131
+ return Promise.reject(new DOMException("Rate limit queue aborted", "AbortError"));
132
+ }
133
+ const queueTimeout = maxQueueMs ?? state.maxQueueMs;
134
+ return new Promise((resolve, reject) => {
135
+ const entry = {
136
+ resolve,
137
+ reject,
138
+ timeoutId: setTimeout(() => {
139
+ const idx = state.queue.indexOf(entry);
140
+ if (idx !== -1) {
141
+ state.queue.splice(idx, 1);
142
+ if (entry.signal && entry.abortHandler) {
143
+ entry.signal.removeEventListener("abort", entry.abortHandler);
144
+ }
145
+ reject(new Error(`Rate limit queue timeout after ${queueTimeout}ms`));
146
+ }
147
+ }, queueTimeout),
148
+ abortHandler: null,
149
+ signal,
150
+ };
151
+ if (signal) {
152
+ const abortHandler = () => {
153
+ const idx = state.queue.indexOf(entry);
154
+ if (idx !== -1) {
155
+ state.queue.splice(idx, 1);
156
+ clearTimeout(entry.timeoutId);
157
+ reject(new DOMException("Rate limit queue aborted", "AbortError"));
158
+ }
159
+ };
160
+ signal.addEventListener("abort", abortHandler, { once: true });
161
+ entry.abortHandler = abortHandler;
162
+ }
163
+ state.queue.push(entry);
164
+ if (state.timestamps.length >= state.rpm && state.timestamps.length > 0) {
165
+ if (state.drainTimerId === null) {
166
+ const oldestExpiry = state.timestamps[0] + 60_000;
167
+ const delay = Math.max(1, oldestExpiry - now);
168
+ state.drainTimerId = setTimeout(() => {
169
+ state.drainTimerId = null;
170
+ tryDrain(state);
171
+ }, delay);
172
+ }
173
+ }
174
+ });
175
+ }
176
+ function release() {
177
+ state.activeCount--;
178
+ tryDrain(state);
179
+ }
180
+ const limiter = {
181
+ get active() {
182
+ return state.activeCount;
183
+ },
184
+ get queued() {
185
+ return state.queue.length;
186
+ },
187
+ dispose() {
188
+ state.disposed = true;
189
+ if (state.drainTimerId !== null) {
190
+ clearTimeout(state.drainTimerId);
191
+ state.drainTimerId = null;
192
+ }
193
+ for (const entry of state.queue) {
194
+ clearTimeout(entry.timeoutId);
195
+ if (entry.signal && entry.abortHandler) {
196
+ entry.signal.removeEventListener("abort", entry.abortHandler);
197
+ }
198
+ entry.reject(new Error("RateLimiter disposed"));
199
+ }
200
+ state.queue.length = 0;
201
+ },
202
+ _acquire: acquire,
203
+ _release: release,
204
+ };
205
+ return limiter;
206
+ }
207
+ export function withRateLimit(fn, limiter, opts = {}) {
208
+ const internal = limiter;
209
+ return async (req, signal) => {
210
+ await internal._acquire(signal, opts.maxQueueMs);
211
+ try {
212
+ return await fn(req, signal);
213
+ }
214
+ finally {
215
+ internal._release();
216
+ }
217
+ };
218
+ }
219
+ export const XAI_RATE_LIMITS = {
220
+ free: { rpm: 5, concurrent: 2 },
221
+ tier1: { rpm: 60, concurrent: 10 },
222
+ tier2: { rpm: 200, concurrent: 25 },
223
+ tier3: { rpm: 500, concurrent: 50 },
224
+ tier4: { rpm: 1000, concurrent: 100 },
225
+ };
226
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":"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"}