@kindgi/adapter-model-openai-compat 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -35,7 +35,7 @@ export interface OpenAICompatProviderOptions {
35
35
  /** Metadata surfaced to the router — required. */
36
36
  readonly metadata: ProviderMetadata;
37
37
  /** Optional HTTP overrides passed through to the OpenAI SDK. */
38
- readonly clientOptions?: Omit<ConstructorParameters<typeof OpenAI>[0], 'apiKey' | 'baseURL'>;
38
+ readonly clientOptions?: Omit<NonNullable<ConstructorParameters<typeof OpenAI>[0]>, 'apiKey' | 'baseURL'>;
39
39
  /**
40
40
  * Fields merged into every Chat Completions request body: settings an
41
41
  * endpoint takes that the OpenAI format has no field for. A Qwen
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,OAAO,EAKP,aAAa,EAGb,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAsB9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,gEAAgE;IAChE,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC;IAC7F;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACxD;AAED,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,mGAQtB,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,2BAA2B,GACnC,aAAa,CAuFf;AAoFD;;;;GAIG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;CAYZ,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC;AAE/B,uDAAuD;AACvD,eAAO,MAAM,wBAAwB,wCAAwC,CAAC;AAK9E;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,EAAE,cAWxC,CAAC;AAEF,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAQtE;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAK9C;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,mBAAmB,GACzB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAoB/C"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,OAAO,EAKP,aAAa,EAGb,gBAAgB,EAEjB,MAAM,sBAAsB,CAAC;AAuB9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,gEAAgE;IAChE,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,CAC3B,WAAW,CAAC,qBAAqB,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EACpD,QAAQ,GAAG,SAAS,CACrB,CAAC;IACF;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACxD;AAED,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,mGAQtB,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,2BAA2B,GACnC,aAAa,CAuGf;AAoFD;;;;GAIG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;CAYZ,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC;AAE/B,uDAAuD;AACvD,eAAO,MAAM,wBAAwB,wCAAwC,CAAC;AAK9E;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,EAAE,cAWxC,CAAC;AAEF,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAQtE;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAK9C;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,mBAAmB,GACzB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAoB/C"}
package/dist/provider.js CHANGED
@@ -1,6 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  // Copyright (C) 2026 Kindgi Inc.
3
3
  import OpenAI from 'openai';
4
+ import { createAttemptCounter } from '@kindgi/capabilities/attempts';
4
5
  /**
5
6
  * OpenAI (and every downstream compat endpoint — Ollama, vLLM, Groq,
6
7
  * OpenRouter, Together, Fireworks, LiteLLM, ...) constrains
@@ -45,6 +46,9 @@ export function createOpenAICompatModelProvider(options) {
45
46
  // One client per key: reused while the resolver returns the same key
46
47
  // (the SDK keeps its connection pool), rebuilt when it rotates.
47
48
  let cached;
49
+ // Counts each call's HTTP attempts, the SDK's own retries included (its
50
+ // retry policy stays the SDK's), through the `fetch` the client sends with.
51
+ const attempts = createAttemptCounter(options.clientOptions?.fetch);
48
52
  async function clientForCall() {
49
53
  const key = typeof options.apiKey === 'function' ? await options.apiKey() : options.apiKey;
50
54
  if (cached !== undefined && cached.key === key)
@@ -53,6 +57,7 @@ export function createOpenAICompatModelProvider(options) {
53
57
  apiKey: key,
54
58
  baseURL: options.baseURL,
55
59
  ...(options.clientOptions ?? {}),
60
+ fetch: attempts.fetch,
56
61
  });
57
62
  cached = { key, client };
58
63
  return client;
@@ -79,7 +84,7 @@ export function createOpenAICompatModelProvider(options) {
79
84
  },
80
85
  }
81
86
  : undefined;
82
- const completion = await openai.chat.completions.create({
87
+ const counted = await attempts.count(() => openai.chat.completions.create({
83
88
  ...extraBody,
84
89
  model: input.model,
85
90
  messages,
@@ -88,7 +93,8 @@ export function createOpenAICompatModelProvider(options) {
88
93
  ...(input.temperature !== undefined && { temperature: input.temperature }),
89
94
  ...(input.maxOutputTokens !== undefined && { max_tokens: input.maxOutputTokens }),
90
95
  stream: false,
91
- }, input.abortSignal !== undefined ? { signal: input.abortSignal } : undefined);
96
+ }, input.abortSignal !== undefined ? { signal: input.abortSignal } : undefined));
97
+ const completion = counted.value;
92
98
  const durationMs = Date.now() - startedAt;
93
99
  const choice = completion.choices[0];
94
100
  const contentText = choice?.message.content ?? '';
@@ -98,15 +104,24 @@ export function createOpenAICompatModelProvider(options) {
98
104
  content: contentText,
99
105
  ...(toolCalls.length > 0 && { toolCalls }),
100
106
  };
101
- const promptTokens = completion.usage?.prompt_tokens ?? 0;
102
- const completionTokens = completion.usage?.completion_tokens ?? 0;
107
+ const usage = toFrameworkUsage(completion.usage);
103
108
  return {
104
109
  message: responseMessage,
105
110
  finishReason: mapFinishReason(choice?.finish_reason),
106
- usage: { promptTokens, completionTokens },
107
- costUsd: computeCost(modelInfo, promptTokens, completionTokens),
111
+ usage,
112
+ costUsd: computeCost(modelInfo, usage.promptTokens, usage.completionTokens),
108
113
  durationMs,
109
114
  provider: { id: metadata.id, model: input.model },
115
+ ...(completion.model !== undefined &&
116
+ completion.model !== '' && {
117
+ servedModel: completion.model,
118
+ }),
119
+ ...(typeof completion._request_id === 'string' && {
120
+ providerRequestId: completion._request_id,
121
+ }),
122
+ // An injected client sends with its own fetch: nothing was counted.
123
+ ...(counted.attempts > 0 && { attempts: counted.attempts }),
124
+ ...(completion.usage !== undefined && { rawUsage: { ...completion.usage } }),
110
125
  };
111
126
  },
112
127
  };
@@ -316,4 +331,22 @@ function extraBodyProblem(value) {
316
331
  ? `extraBody can't set ${reserved.join(', ')}: the adapter sets ${reserved.length === 1 ? 'it' : 'them'}`
317
332
  : undefined;
318
333
  }
334
+ /**
335
+ * The completion's usage as the framework's counters. The endpoint's
336
+ * `prompt_tokens` include cached ones (`prompt_tokens_details.cached_tokens`),
337
+ * and its `completion_tokens` include reasoning
338
+ * (`completion_tokens_details.reasoning_tokens`): reported apart when the
339
+ * endpoint gives them. OpenAI doesn't report cache writes.
340
+ */
341
+ function toFrameworkUsage(usage) {
342
+ const cacheRead = usage?.prompt_tokens_details?.cached_tokens;
343
+ const reasoning = usage?.completion_tokens_details?.reasoning_tokens;
344
+ return {
345
+ promptTokens: usage?.prompt_tokens ?? 0,
346
+ completionTokens: usage?.completion_tokens ?? 0,
347
+ // A part the endpoint reports is kept, 0 included.
348
+ ...(typeof cacheRead === 'number' && { cacheReadTokens: cacheRead }),
349
+ ...(typeof reasoning === 'number' && { reasoningTokens: reasoning }),
350
+ };
351
+ }
319
352
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kindgi/adapter-model-openai-compat",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "OpenAI-compatible ModelProvider for @kindgi/capabilities. Points at any endpoint speaking the OpenAI Chat Completions wire format — OpenAI proper, Ollama (/v1), vLLM, llama-server, LM Studio, OpenRouter, Groq, Together, Fireworks, DeepInfra, LiteLLM proxy (base URLs exported as BASE_URLS), or any other compatible endpoint. One adapter, many backends. Cost per 1K tokens is supplied by the caller (from the provider's public pricing) since the API surface itself doesn't expose it.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -28,7 +28,7 @@
28
28
  "README.md"
29
29
  ],
30
30
  "dependencies": {
31
- "@kindgi/capabilities": "0.1.2",
31
+ "@kindgi/capabilities": "0.1.3",
32
32
  "openai": "^7.17.0"
33
33
  },
34
34
  "engines": {
package/src/provider.ts CHANGED
@@ -15,7 +15,9 @@ import type {
15
15
  ModelToolCall,
16
16
  ModelToolDefinition,
17
17
  ProviderMetadata,
18
+ UsageCounters,
18
19
  } from '@kindgi/capabilities';
20
+ import { createAttemptCounter } from '@kindgi/capabilities/attempts';
19
21
 
20
22
  /**
21
23
  * OpenAI (and every downstream compat endpoint — Ollama, vLLM, Groq,
@@ -72,7 +74,10 @@ export interface OpenAICompatProviderOptions {
72
74
  /** Metadata surfaced to the router — required. */
73
75
  readonly metadata: ProviderMetadata;
74
76
  /** Optional HTTP overrides passed through to the OpenAI SDK. */
75
- readonly clientOptions?: Omit<ConstructorParameters<typeof OpenAI>[0], 'apiKey' | 'baseURL'>;
77
+ readonly clientOptions?: Omit<
78
+ NonNullable<ConstructorParameters<typeof OpenAI>[0]>,
79
+ 'apiKey' | 'baseURL'
80
+ >;
76
81
  /**
77
82
  * Fields merged into every Chat Completions request body: settings an
78
83
  * endpoint takes that the OpenAI format has no field for. A Qwen
@@ -113,6 +118,9 @@ export function createOpenAICompatModelProvider(
113
118
  // One client per key: reused while the resolver returns the same key
114
119
  // (the SDK keeps its connection pool), rebuilt when it rotates.
115
120
  let cached: { readonly key: string; readonly client: OpenAI } | undefined;
121
+ // Counts each call's HTTP attempts, the SDK's own retries included (its
122
+ // retry policy stays the SDK's), through the `fetch` the client sends with.
123
+ const attempts = createAttemptCounter(options.clientOptions?.fetch);
116
124
  async function clientForCall(): Promise<OpenAI> {
117
125
  const key = typeof options.apiKey === 'function' ? await options.apiKey() : options.apiKey;
118
126
  if (cached !== undefined && cached.key === key) return cached.client;
@@ -120,6 +128,7 @@ export function createOpenAICompatModelProvider(
120
128
  apiKey: key,
121
129
  baseURL: options.baseURL,
122
130
  ...(options.clientOptions ?? {}),
131
+ fetch: attempts.fetch,
123
132
  });
124
133
  cached = { key, client };
125
134
  return client;
@@ -152,19 +161,22 @@ export function createOpenAICompatModelProvider(
152
161
  }
153
162
  : undefined;
154
163
 
155
- const completion = await openai.chat.completions.create(
156
- {
157
- ...extraBody,
158
- model: input.model,
159
- messages,
160
- ...(tools !== undefined && tools.length > 0 && { tools }),
161
- ...(responseFormat !== undefined && { response_format: responseFormat }),
162
- ...(input.temperature !== undefined && { temperature: input.temperature }),
163
- ...(input.maxOutputTokens !== undefined && { max_tokens: input.maxOutputTokens }),
164
- stream: false,
165
- },
166
- input.abortSignal !== undefined ? { signal: input.abortSignal } : undefined,
164
+ const counted = await attempts.count(() =>
165
+ openai.chat.completions.create(
166
+ {
167
+ ...extraBody,
168
+ model: input.model,
169
+ messages,
170
+ ...(tools !== undefined && tools.length > 0 && { tools }),
171
+ ...(responseFormat !== undefined && { response_format: responseFormat }),
172
+ ...(input.temperature !== undefined && { temperature: input.temperature }),
173
+ ...(input.maxOutputTokens !== undefined && { max_tokens: input.maxOutputTokens }),
174
+ stream: false,
175
+ },
176
+ input.abortSignal !== undefined ? { signal: input.abortSignal } : undefined,
177
+ ),
167
178
  );
179
+ const completion = counted.value;
168
180
 
169
181
  const durationMs = Date.now() - startedAt;
170
182
  const choice = completion.choices[0];
@@ -176,16 +188,25 @@ export function createOpenAICompatModelProvider(
176
188
  ...(toolCalls.length > 0 && { toolCalls }),
177
189
  };
178
190
 
179
- const promptTokens = completion.usage?.prompt_tokens ?? 0;
180
- const completionTokens = completion.usage?.completion_tokens ?? 0;
191
+ const usage = toFrameworkUsage(completion.usage);
181
192
 
182
193
  return {
183
194
  message: responseMessage,
184
195
  finishReason: mapFinishReason(choice?.finish_reason),
185
- usage: { promptTokens, completionTokens },
186
- costUsd: computeCost(modelInfo, promptTokens, completionTokens),
196
+ usage,
197
+ costUsd: computeCost(modelInfo, usage.promptTokens, usage.completionTokens),
187
198
  durationMs,
188
199
  provider: { id: metadata.id, model: input.model },
200
+ ...(completion.model !== undefined &&
201
+ completion.model !== '' && {
202
+ servedModel: completion.model,
203
+ }),
204
+ ...(typeof completion._request_id === 'string' && {
205
+ providerRequestId: completion._request_id,
206
+ }),
207
+ // An injected client sends with its own fetch: nothing was counted.
208
+ ...(counted.attempts > 0 && { attempts: counted.attempts }),
209
+ ...(completion.usage !== undefined && { rawUsage: { ...completion.usage } }),
189
210
  };
190
211
  },
191
212
  };
@@ -408,3 +429,22 @@ function extraBodyProblem(value: unknown): string | undefined {
408
429
  ? `extraBody can't set ${reserved.join(', ')}: the adapter sets ${reserved.length === 1 ? 'it' : 'them'}`
409
430
  : undefined;
410
431
  }
432
+
433
+ /**
434
+ * The completion's usage as the framework's counters. The endpoint's
435
+ * `prompt_tokens` include cached ones (`prompt_tokens_details.cached_tokens`),
436
+ * and its `completion_tokens` include reasoning
437
+ * (`completion_tokens_details.reasoning_tokens`): reported apart when the
438
+ * endpoint gives them. OpenAI doesn't report cache writes.
439
+ */
440
+ function toFrameworkUsage(usage: OpenAI.CompletionUsage | undefined): UsageCounters {
441
+ const cacheRead = usage?.prompt_tokens_details?.cached_tokens;
442
+ const reasoning = usage?.completion_tokens_details?.reasoning_tokens;
443
+ return {
444
+ promptTokens: usage?.prompt_tokens ?? 0,
445
+ completionTokens: usage?.completion_tokens ?? 0,
446
+ // A part the endpoint reports is kept, 0 included.
447
+ ...(typeof cacheRead === 'number' && { cacheReadTokens: cacheRead }),
448
+ ...(typeof reasoning === 'number' && { reasoningTokens: reasoning }),
449
+ };
450
+ }