@veryfront/ext-llm-openai 0.1.991 → 0.1.992
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/esm/openai-provider.d.ts
CHANGED
|
@@ -14,7 +14,10 @@ export { buildProviderError, isNumberArray, mergeUsage, parseRetryAfterMs, Provi
|
|
|
14
14
|
export interface OpenAIRuntimeConfig {
|
|
15
15
|
apiKey: string;
|
|
16
16
|
baseURL?: string;
|
|
17
|
+
/** Display/telemetry label. */
|
|
17
18
|
name?: string;
|
|
19
|
+
/** Provider identity for OpenAI request defaults. Defaults to `name` in low-level factories. */
|
|
20
|
+
providerName?: string;
|
|
18
21
|
fetch?: typeof globalThis.fetch;
|
|
19
22
|
}
|
|
20
23
|
export declare function createOpenAIModelRuntime(config: OpenAIRuntimeConfig, modelId: string): ModelRuntime;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-provider.d.ts","sourceRoot":"","sources":["../src/openai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EACL,kBAAkB,EAMlB,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EAMpB,+BAA+B,EAC/B,8BAA8B,EAC/B,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"openai-provider.d.ts","sourceRoot":"","sources":["../src/openai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EACL,kBAAkB,EAMlB,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EAMpB,+BAA+B,EAC/B,8BAA8B,EAC/B,MAAM,2BAA2B,CAAC;AAenC,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,+BAA+B,EAC/B,8BAA8B,GAC/B,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gGAAgG;IAChG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAkWD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,YAAY,CAwEd;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,YAAY,CAwEd;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,gBAAgB,CAwClB;AAED,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,EAAE,YAAY;IAEvB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,YAAY;IA4BrE,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,gBAAgB;IAY7E,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,YAAY;CAY1E"}
|
package/esm/openai-provider.js
CHANGED
|
@@ -11,9 +11,22 @@ import { buildProviderError, createOpenAIRequestInit, createWarningCollector, ge
|
|
|
11
11
|
import { buildOpenAIChatRequest, } from "./openai-chat-request-builder.js";
|
|
12
12
|
import { streamOpenAICompatibleParts } from "./openai-chat-stream.js";
|
|
13
13
|
import { buildOpenAIResponsesRequest } from "./openai-responses-request-builder.js";
|
|
14
|
+
import { isOpenAIReasoningModel } from "./openai-reasoning-models.js";
|
|
14
15
|
import { extractOpenAIResponsesUsage, normalizeOpenAIResponsesFinishReason, streamOpenAIResponsesParts, } from "./openai-responses-stream.js";
|
|
15
16
|
// Re-export error classes so extension tests can import from this module.
|
|
16
17
|
export { buildProviderError, isNumberArray, mergeUsage, parseRetryAfterMs, ProviderError, ProviderOverloadedError, ProviderQuotaError, ProviderRateLimitError, ProviderRequestError, TOOL_INPUT_PENDING_THRESHOLD_MS, withToolInputStatusTransitions, };
|
|
18
|
+
function readNonEmptyString(value) {
|
|
19
|
+
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
20
|
+
}
|
|
21
|
+
function getOpenAIProviderLabel(config) {
|
|
22
|
+
return readNonEmptyString(config.name) ?? "openai";
|
|
23
|
+
}
|
|
24
|
+
function getRuntimeOpenAIProviderName(config) {
|
|
25
|
+
return readNonEmptyString(config.providerName) ?? getOpenAIProviderLabel(config);
|
|
26
|
+
}
|
|
27
|
+
function getLLMOpenAIProviderName(config) {
|
|
28
|
+
return readNonEmptyString(config.providerName) ?? "openai";
|
|
29
|
+
}
|
|
17
30
|
// ---------------------------------------------------------------------------
|
|
18
31
|
// Embedding helpers
|
|
19
32
|
// ---------------------------------------------------------------------------
|
|
@@ -256,8 +269,10 @@ function buildOpenAIResponsesGenerateResult(payload) {
|
|
|
256
269
|
// ---------------------------------------------------------------------------
|
|
257
270
|
export function createOpenAIModelRuntime(config, modelId) {
|
|
258
271
|
const fetchImpl = config.fetch ?? globalThis.fetch;
|
|
272
|
+
const providerLabel = getOpenAIProviderLabel(config);
|
|
273
|
+
const providerName = getRuntimeOpenAIProviderName(config);
|
|
259
274
|
return {
|
|
260
|
-
provider:
|
|
275
|
+
provider: providerLabel,
|
|
261
276
|
modelId,
|
|
262
277
|
specificationVersion: "v3",
|
|
263
278
|
supportedUrls: {},
|
|
@@ -265,11 +280,11 @@ export function createOpenAIModelRuntime(config, modelId) {
|
|
|
265
280
|
const options = optionsForRuntime;
|
|
266
281
|
const url = getOpenAIChatCompletionsUrl(config.baseURL);
|
|
267
282
|
const warnings = createWarningCollector();
|
|
268
|
-
const body = buildOpenAIChatRequest(modelId,
|
|
283
|
+
const body = buildOpenAIChatRequest(modelId, providerName, options, false, warnings);
|
|
269
284
|
return requestJson({
|
|
270
285
|
url,
|
|
271
286
|
fetchImpl,
|
|
272
|
-
providerLabel
|
|
287
|
+
providerLabel,
|
|
273
288
|
providerKind: "openai",
|
|
274
289
|
init: createOpenAIRequestInit({
|
|
275
290
|
apiKey: config.apiKey,
|
|
@@ -289,11 +304,11 @@ export function createOpenAIModelRuntime(config, modelId) {
|
|
|
289
304
|
const options = optionsForRuntime;
|
|
290
305
|
const url = getOpenAIChatCompletionsUrl(config.baseURL);
|
|
291
306
|
const warnings = createWarningCollector();
|
|
292
|
-
const body = buildOpenAIChatRequest(modelId,
|
|
307
|
+
const body = buildOpenAIChatRequest(modelId, providerName, options, true, warnings);
|
|
293
308
|
return requestStream({
|
|
294
309
|
url,
|
|
295
310
|
fetchImpl,
|
|
296
|
-
providerLabel
|
|
311
|
+
providerLabel,
|
|
297
312
|
providerKind: "openai",
|
|
298
313
|
init: createOpenAIRequestInit({
|
|
299
314
|
apiKey: config.apiKey,
|
|
@@ -313,8 +328,10 @@ export function createOpenAIModelRuntime(config, modelId) {
|
|
|
313
328
|
}
|
|
314
329
|
export function createOpenAIResponsesRuntime(config, modelId) {
|
|
315
330
|
const fetchImpl = config.fetch ?? globalThis.fetch;
|
|
331
|
+
const providerLabel = getOpenAIProviderLabel(config);
|
|
332
|
+
const providerName = getRuntimeOpenAIProviderName(config);
|
|
316
333
|
return {
|
|
317
|
-
provider:
|
|
334
|
+
provider: providerLabel,
|
|
318
335
|
modelId,
|
|
319
336
|
specificationVersion: "v3",
|
|
320
337
|
supportedUrls: {},
|
|
@@ -322,11 +339,11 @@ export function createOpenAIResponsesRuntime(config, modelId) {
|
|
|
322
339
|
const options = optionsForRuntime;
|
|
323
340
|
const url = getOpenAIResponsesUrl(config.baseURL);
|
|
324
341
|
const warnings = createWarningCollector();
|
|
325
|
-
const body = buildOpenAIResponsesRequest(modelId,
|
|
342
|
+
const body = buildOpenAIResponsesRequest(modelId, providerName, options, false, warnings);
|
|
326
343
|
return requestJson({
|
|
327
344
|
url,
|
|
328
345
|
fetchImpl,
|
|
329
|
-
providerLabel
|
|
346
|
+
providerLabel,
|
|
330
347
|
providerKind: "openai",
|
|
331
348
|
init: createOpenAIRequestInit({
|
|
332
349
|
apiKey: config.apiKey,
|
|
@@ -346,11 +363,11 @@ export function createOpenAIResponsesRuntime(config, modelId) {
|
|
|
346
363
|
const options = optionsForRuntime;
|
|
347
364
|
const url = getOpenAIResponsesUrl(config.baseURL);
|
|
348
365
|
const warnings = createWarningCollector();
|
|
349
|
-
const body = buildOpenAIResponsesRequest(modelId,
|
|
366
|
+
const body = buildOpenAIResponsesRequest(modelId, providerName, options, true, warnings);
|
|
350
367
|
return requestStream({
|
|
351
368
|
url,
|
|
352
369
|
fetchImpl,
|
|
353
|
-
providerLabel
|
|
370
|
+
providerLabel,
|
|
354
371
|
providerKind: "openai",
|
|
355
372
|
init: createOpenAIRequestInit({
|
|
356
373
|
apiKey: config.apiKey,
|
|
@@ -370,8 +387,9 @@ export function createOpenAIResponsesRuntime(config, modelId) {
|
|
|
370
387
|
}
|
|
371
388
|
export function createOpenAIEmbeddingRuntime(config, modelId) {
|
|
372
389
|
const fetchImpl = config.fetch ?? globalThis.fetch;
|
|
390
|
+
const providerLabel = getOpenAIProviderLabel(config);
|
|
373
391
|
return {
|
|
374
|
-
provider:
|
|
392
|
+
provider: providerLabel,
|
|
375
393
|
modelId,
|
|
376
394
|
supportsParallelCalls: true,
|
|
377
395
|
doEmbed({ values, abortSignal }) {
|
|
@@ -386,7 +404,7 @@ export function createOpenAIEmbeddingRuntime(config, modelId) {
|
|
|
386
404
|
return requestJson({
|
|
387
405
|
url,
|
|
388
406
|
fetchImpl,
|
|
389
|
-
providerLabel
|
|
407
|
+
providerLabel,
|
|
390
408
|
providerKind: "openai",
|
|
391
409
|
init: createOpenAIRequestInit({
|
|
392
410
|
apiKey: config.apiKey,
|
|
@@ -410,10 +428,22 @@ export function createOpenAIEmbeddingRuntime(config, modelId) {
|
|
|
410
428
|
export class OpenAIProvider {
|
|
411
429
|
id = "openai";
|
|
412
430
|
createModel(modelId, config) {
|
|
431
|
+
const providerLabel = getOpenAIProviderLabel(config);
|
|
432
|
+
const providerName = getLLMOpenAIProviderName(config);
|
|
433
|
+
if (isOpenAIReasoningModel(modelId, providerName)) {
|
|
434
|
+
return createOpenAIResponsesRuntime({
|
|
435
|
+
apiKey: config.credential,
|
|
436
|
+
baseURL: config.baseURL,
|
|
437
|
+
name: providerLabel,
|
|
438
|
+
providerName,
|
|
439
|
+
fetch: config.fetch,
|
|
440
|
+
}, modelId);
|
|
441
|
+
}
|
|
413
442
|
return createOpenAIModelRuntime({
|
|
414
443
|
apiKey: config.credential,
|
|
415
444
|
baseURL: config.baseURL,
|
|
416
|
-
name:
|
|
445
|
+
name: providerLabel,
|
|
446
|
+
providerName,
|
|
417
447
|
fetch: config.fetch,
|
|
418
448
|
}, modelId);
|
|
419
449
|
}
|
|
@@ -421,7 +451,7 @@ export class OpenAIProvider {
|
|
|
421
451
|
return createOpenAIEmbeddingRuntime({
|
|
422
452
|
apiKey: config.credential,
|
|
423
453
|
baseURL: config.baseURL,
|
|
424
|
-
name: config
|
|
454
|
+
name: getOpenAIProviderLabel(config),
|
|
425
455
|
fetch: config.fetch,
|
|
426
456
|
}, modelId);
|
|
427
457
|
}
|
|
@@ -429,7 +459,8 @@ export class OpenAIProvider {
|
|
|
429
459
|
return createOpenAIResponsesRuntime({
|
|
430
460
|
apiKey: config.credential,
|
|
431
461
|
baseURL: config.baseURL,
|
|
432
|
-
name: config
|
|
462
|
+
name: getOpenAIProviderLabel(config),
|
|
463
|
+
providerName: getLLMOpenAIProviderName(config),
|
|
433
464
|
fetch: config.fetch,
|
|
434
465
|
}, modelId);
|
|
435
466
|
}
|
|
@@ -9,6 +9,7 @@ export type ResolvedOpenAIReasoning = {
|
|
|
9
9
|
effort: OpenAIReasoningEffort;
|
|
10
10
|
source: "default" | "explicit";
|
|
11
11
|
};
|
|
12
|
+
export declare function supportsDefaultReasoningParams(providerName: string): boolean;
|
|
12
13
|
export declare function getDefaultOpenAIReasoningEffort(modelId: string, providerName?: string): OpenAIReasoningEffort | undefined;
|
|
13
14
|
export declare function resolveOpenAIReasoningConfig(modelId: string, providerName: string, option: OpenAIProviderReasoningOption | undefined): ResolvedOpenAIReasoning | undefined;
|
|
14
15
|
export declare function shouldRequestOpenAIReasoningSummary(providerName: string, reasoning: ResolvedOpenAIReasoning): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-reasoning-models.d.ts","sourceRoot":"","sources":["../src/openai-reasoning-models.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE9D,MAAM,MAAM,6BAA6B,GAAG,qBAAqB,GAAG,KAAK,CAAC;AAE1E,MAAM,MAAM,6BAA6B,GAAG;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,6BAA6B,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC;CAChC,CAAC;
|
|
1
|
+
{"version":3,"file":"openai-reasoning-models.d.ts","sourceRoot":"","sources":["../src/openai-reasoning-models.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE9D,MAAM,MAAM,6BAA6B,GAAG,qBAAqB,GAAG,KAAK,CAAC;AAE1E,MAAM,MAAM,6BAA6B,GAAG;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,6BAA6B,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC;CAChC,CAAC;AAIF,wBAAgB,8BAA8B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAG5E;AAuBD,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,MAAM,EACf,YAAY,SAAW,GACtB,qBAAqB,GAAG,SAAS,CAwBnC;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,6BAA6B,GAAG,SAAS,GAChD,uBAAuB,GAAG,SAAS,CAoBrC;AAED,wBAAgB,mCAAmC,CACjD,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,uBAAuB,GACjC,OAAO,CAET;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,SAAW,GAAG,OAAO,CAExF;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAIpE"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const DEFAULT_REASONING_EFFORT = "medium";
|
|
2
|
-
function supportsDefaultReasoningParams(providerName) {
|
|
3
|
-
|
|
2
|
+
export function supportsDefaultReasoningParams(providerName) {
|
|
3
|
+
const normalizedProvider = providerName.toLowerCase();
|
|
4
|
+
return normalizedProvider === "openai" || normalizedProvider === "veryfront-cloud";
|
|
4
5
|
}
|
|
5
6
|
function isGpt5ChatSnapshot(modelId) {
|
|
6
7
|
return /^gpt-5-chat($|-)/.test(modelId);
|
|
@@ -20,8 +21,7 @@ function isReasoningCapableGpt5(modelId) {
|
|
|
20
21
|
}
|
|
21
22
|
export function getDefaultOpenAIReasoningEffort(modelId, providerName = "openai") {
|
|
22
23
|
const normalized = modelId.toLowerCase();
|
|
23
|
-
|
|
24
|
-
if (!supportsDefaultReasoningParams(normalizedProvider)) {
|
|
24
|
+
if (!supportsDefaultReasoningParams(providerName)) {
|
|
25
25
|
return undefined;
|
|
26
26
|
}
|
|
27
27
|
if (isGpt5ChatSnapshot(normalized)) {
|
|
@@ -59,7 +59,7 @@ export function resolveOpenAIReasoningConfig(modelId, providerName, option) {
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
export function shouldRequestOpenAIReasoningSummary(providerName, reasoning) {
|
|
62
|
-
return reasoning.source === "explicit" || providerName
|
|
62
|
+
return reasoning.source === "explicit" || supportsDefaultReasoningParams(providerName);
|
|
63
63
|
}
|
|
64
64
|
export function isOpenAIReasoningModel(modelId, providerName = "openai") {
|
|
65
65
|
return getDefaultOpenAIReasoningEffort(modelId, providerName) !== undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@veryfront/ext-llm-openai",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.992",
|
|
4
4
|
"description": "Veryfront first-party extension package for ext-llm-openai",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"veryfront",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"capabilities": []
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
|
-
"veryfront": "^0.1.
|
|
48
|
+
"veryfront": "^0.1.992"
|
|
49
49
|
},
|
|
50
50
|
"type": "module",
|
|
51
51
|
"types": "./esm/index.d.ts",
|