@fgv/ts-extras 5.1.0-20 → 5.1.0-22
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/packlets/ai-assist/apiClient.js +30 -25
- package/dist/packlets/ai-assist/apiClient.js.map +1 -1
- package/dist/packlets/ai-assist/converters.js +2 -1
- package/dist/packlets/ai-assist/converters.js.map +1 -1
- package/dist/packlets/ai-assist/endpoint.js +78 -0
- package/dist/packlets/ai-assist/endpoint.js.map +1 -0
- package/dist/packlets/ai-assist/index.js +2 -0
- package/dist/packlets/ai-assist/index.js.map +1 -1
- package/dist/packlets/ai-assist/jsonCompletion.js +95 -0
- package/dist/packlets/ai-assist/jsonCompletion.js.map +1 -0
- package/dist/packlets/ai-assist/jsonResponse.js +149 -0
- package/dist/packlets/ai-assist/jsonResponse.js.map +1 -0
- package/dist/packlets/ai-assist/model.js.map +1 -1
- package/dist/packlets/ai-assist/registry.js +26 -0
- package/dist/packlets/ai-assist/registry.js.map +1 -1
- package/dist/packlets/ai-assist/streamingAdapters/common.js.map +1 -1
- package/dist/packlets/ai-assist/streamingAdapters/openaiChat.js +2 -1
- package/dist/packlets/ai-assist/streamingAdapters/openaiChat.js.map +1 -1
- package/dist/packlets/ai-assist/streamingAdapters/openaiResponses.js +2 -1
- package/dist/packlets/ai-assist/streamingAdapters/openaiResponses.js.map +1 -1
- package/dist/packlets/ai-assist/streamingClient.js +11 -5
- package/dist/packlets/ai-assist/streamingClient.js.map +1 -1
- package/dist/packlets/crypto-utils/keyPairAlgorithmParams.js +6 -0
- package/dist/packlets/crypto-utils/keyPairAlgorithmParams.js.map +1 -1
- package/dist/packlets/crypto-utils/keystore/keyStore.js +81 -0
- package/dist/packlets/crypto-utils/keystore/keyStore.js.map +1 -1
- package/dist/packlets/crypto-utils/model.js +2 -1
- package/dist/packlets/crypto-utils/model.js.map +1 -1
- package/dist/packlets/crypto-utils/nodeCryptoProvider.js +21 -2
- package/dist/packlets/crypto-utils/nodeCryptoProvider.js.map +1 -1
- package/dist/ts-extras.d.ts +301 -6
- package/lib/packlets/ai-assist/apiClient.d.ts +29 -0
- package/lib/packlets/ai-assist/apiClient.d.ts.map +1 -1
- package/lib/packlets/ai-assist/apiClient.js +30 -25
- package/lib/packlets/ai-assist/apiClient.js.map +1 -1
- package/lib/packlets/ai-assist/converters.d.ts.map +1 -1
- package/lib/packlets/ai-assist/converters.js +2 -1
- package/lib/packlets/ai-assist/converters.js.map +1 -1
- package/lib/packlets/ai-assist/endpoint.d.ts +28 -0
- package/lib/packlets/ai-assist/endpoint.d.ts.map +1 -0
- package/lib/packlets/ai-assist/endpoint.js +82 -0
- package/lib/packlets/ai-assist/endpoint.js.map +1 -0
- package/lib/packlets/ai-assist/index.d.ts +2 -0
- package/lib/packlets/ai-assist/index.d.ts.map +1 -1
- package/lib/packlets/ai-assist/index.js +7 -1
- package/lib/packlets/ai-assist/index.js.map +1 -1
- package/lib/packlets/ai-assist/jsonCompletion.d.ts +93 -0
- package/lib/packlets/ai-assist/jsonCompletion.d.ts.map +1 -0
- package/lib/packlets/ai-assist/jsonCompletion.js +99 -0
- package/lib/packlets/ai-assist/jsonCompletion.js.map +1 -0
- package/lib/packlets/ai-assist/jsonResponse.d.ts +91 -0
- package/lib/packlets/ai-assist/jsonResponse.d.ts.map +1 -0
- package/lib/packlets/ai-assist/jsonResponse.js +154 -0
- package/lib/packlets/ai-assist/jsonResponse.js.map +1 -0
- package/lib/packlets/ai-assist/model.d.ts +9 -1
- package/lib/packlets/ai-assist/model.d.ts.map +1 -1
- package/lib/packlets/ai-assist/model.js.map +1 -1
- package/lib/packlets/ai-assist/registry.d.ts.map +1 -1
- package/lib/packlets/ai-assist/registry.js +26 -0
- package/lib/packlets/ai-assist/registry.js.map +1 -1
- package/lib/packlets/ai-assist/streamingAdapters/common.d.ts +8 -0
- package/lib/packlets/ai-assist/streamingAdapters/common.d.ts.map +1 -1
- package/lib/packlets/ai-assist/streamingAdapters/common.js.map +1 -1
- package/lib/packlets/ai-assist/streamingAdapters/openaiChat.d.ts.map +1 -1
- package/lib/packlets/ai-assist/streamingAdapters/openaiChat.js +2 -1
- package/lib/packlets/ai-assist/streamingAdapters/openaiChat.js.map +1 -1
- package/lib/packlets/ai-assist/streamingAdapters/openaiResponses.d.ts.map +1 -1
- package/lib/packlets/ai-assist/streamingAdapters/openaiResponses.js +2 -1
- package/lib/packlets/ai-assist/streamingAdapters/openaiResponses.js.map +1 -1
- package/lib/packlets/ai-assist/streamingClient.d.ts.map +1 -1
- package/lib/packlets/ai-assist/streamingClient.js +11 -5
- package/lib/packlets/ai-assist/streamingClient.js.map +1 -1
- package/lib/packlets/crypto-utils/keyPairAlgorithmParams.d.ts +14 -3
- package/lib/packlets/crypto-utils/keyPairAlgorithmParams.d.ts.map +1 -1
- package/lib/packlets/crypto-utils/keyPairAlgorithmParams.js +6 -0
- package/lib/packlets/crypto-utils/keyPairAlgorithmParams.js.map +1 -1
- package/lib/packlets/crypto-utils/keystore/keyStore.d.ts +43 -1
- package/lib/packlets/crypto-utils/keystore/keyStore.d.ts.map +1 -1
- package/lib/packlets/crypto-utils/keystore/keyStore.js +81 -0
- package/lib/packlets/crypto-utils/keystore/keyStore.js.map +1 -1
- package/lib/packlets/crypto-utils/model.d.ts +16 -2
- package/lib/packlets/crypto-utils/model.d.ts.map +1 -1
- package/lib/packlets/crypto-utils/model.js +2 -1
- package/lib/packlets/crypto-utils/model.js.map +1 -1
- package/lib/packlets/crypto-utils/nodeCryptoProvider.d.ts +7 -1
- package/lib/packlets/crypto-utils/nodeCryptoProvider.d.ts.map +1 -1
- package/lib/packlets/crypto-utils/nodeCryptoProvider.js +20 -1
- package/lib/packlets/crypto-utils/nodeCryptoProvider.js.map +1 -1
- package/package.json +7 -7
|
@@ -33,6 +33,7 @@ import { isJsonObject } from '@fgv/ts-json-base';
|
|
|
33
33
|
import { fail, mapResults, succeed, Validators } from '@fgv/ts-utils';
|
|
34
34
|
import { resolveModel } from './model';
|
|
35
35
|
import { buildAnthropicMessages, buildGeminiContents, buildMessages, buildOpenAiChatUserContent, buildOpenAiResponsesUserContent } from './chatRequestBuilders';
|
|
36
|
+
import { bearerAuthHeader, resolveEffectiveBaseUrl } from './endpoint';
|
|
36
37
|
import { DEFAULT_MODEL_CAPABILITY_CONFIG, resolveImageCapability, supportsImageGeneration } from './registry';
|
|
37
38
|
import { toAnthropicTools, toGeminiTools, toResponsesApiTools } from './toolFormats';
|
|
38
39
|
// ============================================================================
|
|
@@ -279,9 +280,7 @@ async function callOpenAiCompletion(config, prompt, additionalMessages, temperat
|
|
|
279
280
|
tail: additionalMessages
|
|
280
281
|
});
|
|
281
282
|
const body = { model: config.model, messages, temperature };
|
|
282
|
-
const headers =
|
|
283
|
-
Authorization: `Bearer ${config.apiKey}`
|
|
284
|
-
};
|
|
283
|
+
const headers = bearerAuthHeader(config.apiKey);
|
|
285
284
|
/* c8 ignore next 1 - optional logger */
|
|
286
285
|
logger === null || logger === void 0 ? void 0 : logger.info(`OpenAI completion: model=${config.model}`);
|
|
287
286
|
const jsonResult = await fetchJson(url, headers, body, logger, signal);
|
|
@@ -334,9 +333,7 @@ async function callOpenAiResponsesCompletion(config, prompt, tools, additionalMe
|
|
|
334
333
|
tools: toResponsesApiTools(tools),
|
|
335
334
|
temperature
|
|
336
335
|
};
|
|
337
|
-
const headers =
|
|
338
|
-
Authorization: `Bearer ${config.apiKey}`
|
|
339
|
-
};
|
|
336
|
+
const headers = bearerAuthHeader(config.apiKey);
|
|
340
337
|
/* c8 ignore next 1 - optional logger */
|
|
341
338
|
logger === null || logger === void 0 ? void 0 : logger.info(`OpenAI Responses API: model=${config.model}, tools=${tools.map((t) => t.type).join(',')}`);
|
|
342
339
|
const jsonResult = await fetchJson(url, headers, body, logger, signal);
|
|
@@ -501,19 +498,24 @@ async function callGeminiCompletion(config, prompt, additionalMessages, temperat
|
|
|
501
498
|
* @public
|
|
502
499
|
*/
|
|
503
500
|
export async function callProviderCompletion(params) {
|
|
504
|
-
const { descriptor, apiKey, prompt, additionalMessages, temperature = 0.7, modelOverride, logger, tools, signal } = params;
|
|
505
|
-
|
|
506
|
-
|
|
501
|
+
const { descriptor, apiKey, prompt, additionalMessages, temperature = 0.7, modelOverride, logger, tools, signal, endpoint } = params;
|
|
502
|
+
const baseUrlResult = resolveEffectiveBaseUrl(descriptor, endpoint);
|
|
503
|
+
if (baseUrlResult.isFailure()) {
|
|
504
|
+
return fail(baseUrlResult.message);
|
|
507
505
|
}
|
|
508
506
|
if (prompt.attachments.length > 0 && !descriptor.acceptsImageInput) {
|
|
509
507
|
return fail(`provider "${descriptor.id}" does not accept image input`);
|
|
510
508
|
}
|
|
511
509
|
const hasTools = tools !== undefined && tools.length > 0;
|
|
512
510
|
const modelContext = hasTools ? 'tools' : undefined;
|
|
511
|
+
const model = resolveModel(modelOverride !== null && modelOverride !== void 0 ? modelOverride : descriptor.defaultModel, modelContext);
|
|
512
|
+
if (model.length === 0) {
|
|
513
|
+
return fail(`provider "${descriptor.id}": no model resolved; pass modelOverride or set descriptor.defaultModel`);
|
|
514
|
+
}
|
|
513
515
|
const config = {
|
|
514
|
-
baseUrl:
|
|
516
|
+
baseUrl: baseUrlResult.value,
|
|
515
517
|
apiKey,
|
|
516
|
-
model
|
|
518
|
+
model
|
|
517
519
|
};
|
|
518
520
|
/* c8 ignore next 8 - optional logger diagnostic output */
|
|
519
521
|
if (logger) {
|
|
@@ -607,9 +609,7 @@ async function callOpenAiImageGeneration(config, request, defaultMimeType, logge
|
|
|
607
609
|
var _a, _b, _c;
|
|
608
610
|
const opts = (_a = request.options) !== null && _a !== void 0 ? _a : {};
|
|
609
611
|
const refs = (_b = request.referenceImages) !== null && _b !== void 0 ? _b : [];
|
|
610
|
-
const headers =
|
|
611
|
-
Authorization: `Bearer ${config.apiKey}`
|
|
612
|
-
};
|
|
612
|
+
const headers = bearerAuthHeader(config.apiKey);
|
|
613
613
|
const n = (_c = opts.count) !== null && _c !== void 0 ? _c : 1;
|
|
614
614
|
const fetched = refs.length > 0
|
|
615
615
|
? await callOpenAiImagesEdits(config, request, headers, n, refs, logger, signal)
|
|
@@ -795,14 +795,20 @@ async function callImagenGeneration(config, request, logger, signal) {
|
|
|
795
795
|
*/
|
|
796
796
|
export async function callProviderImageGeneration(params) {
|
|
797
797
|
var _a, _b;
|
|
798
|
-
const { descriptor, apiKey, params: request, modelOverride, logger, signal } = params;
|
|
798
|
+
const { descriptor, apiKey, params: request, modelOverride, logger, signal, endpoint } = params;
|
|
799
799
|
if (!supportsImageGeneration(descriptor)) {
|
|
800
800
|
return fail(`provider "${descriptor.id}" does not support image generation`);
|
|
801
801
|
}
|
|
802
|
-
|
|
803
|
-
|
|
802
|
+
const baseUrlResult = resolveEffectiveBaseUrl(descriptor, endpoint);
|
|
803
|
+
if (baseUrlResult.isFailure()) {
|
|
804
|
+
return fail(baseUrlResult.message);
|
|
804
805
|
}
|
|
805
806
|
const model = resolveModel(modelOverride !== null && modelOverride !== void 0 ? modelOverride : descriptor.defaultModel, 'image');
|
|
807
|
+
if (model.length === 0) {
|
|
808
|
+
return fail(`provider "${descriptor.id}": no image model resolved; ` +
|
|
809
|
+
`pass modelOverride or set descriptor.defaultModel ` +
|
|
810
|
+
`(a plain string, or an object with an "image" entry)`);
|
|
811
|
+
}
|
|
806
812
|
const capability = resolveImageCapability(descriptor, model);
|
|
807
813
|
if (capability === undefined) {
|
|
808
814
|
return fail(`provider "${descriptor.id}" does not support image generation for model "${model}"`);
|
|
@@ -811,7 +817,7 @@ export async function callProviderImageGeneration(params) {
|
|
|
811
817
|
return fail(`model "${model}" does not support reference images`);
|
|
812
818
|
}
|
|
813
819
|
const config = {
|
|
814
|
-
baseUrl:
|
|
820
|
+
baseUrl: baseUrlResult.value,
|
|
815
821
|
apiKey,
|
|
816
822
|
model
|
|
817
823
|
};
|
|
@@ -938,9 +944,7 @@ function buildModelInfo(providerId, id, nativeCapabilities, nativeDisplayName, c
|
|
|
938
944
|
*/
|
|
939
945
|
async function callOpenAiListModels(config, providerId, capabilityConfig, logger, signal) {
|
|
940
946
|
const url = `${config.baseUrl}/models`;
|
|
941
|
-
const headers =
|
|
942
|
-
Authorization: `Bearer ${config.apiKey}`
|
|
943
|
-
};
|
|
947
|
+
const headers = bearerAuthHeader(config.apiKey);
|
|
944
948
|
/* c8 ignore next 1 - optional logger */
|
|
945
949
|
logger === null || logger === void 0 ? void 0 : logger.info(`List models: provider=${providerId}, format=openai`);
|
|
946
950
|
const jsonResult = await fetchGetJson(url, headers, logger, signal);
|
|
@@ -1027,12 +1031,13 @@ async function callGeminiListModels(config, providerId, capabilityConfig, logger
|
|
|
1027
1031
|
* @public
|
|
1028
1032
|
*/
|
|
1029
1033
|
export async function callProviderListModels(params) {
|
|
1030
|
-
const { descriptor, apiKey, capability, capabilityConfig, logger, signal } = params;
|
|
1031
|
-
|
|
1032
|
-
|
|
1034
|
+
const { descriptor, apiKey, capability, capabilityConfig, logger, signal, endpoint } = params;
|
|
1035
|
+
const baseUrlResult = resolveEffectiveBaseUrl(descriptor, endpoint);
|
|
1036
|
+
if (baseUrlResult.isFailure()) {
|
|
1037
|
+
return fail(baseUrlResult.message);
|
|
1033
1038
|
}
|
|
1034
1039
|
const config = {
|
|
1035
|
-
baseUrl:
|
|
1040
|
+
baseUrl: baseUrlResult.value,
|
|
1036
1041
|
apiKey,
|
|
1037
1042
|
model: '' // unused by listing
|
|
1038
1043
|
};
|