@truefoundry/ai-gateway-sdk 0.0.10 → 0.0.12-rc.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/autogen/models.d.ts +5 -0
- package/dist/autogen/schema.json +4 -0
- package/dist/constants.d.ts +8 -0
- package/dist/constants.js +6 -0
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/parity/providerResponseCapture.d.ts +13 -0
- package/dist/parity/providerResponseCapture.js +14 -0
- package/dist/parity/providerResponseCapture.js.map +1 -0
- package/dist/providers/truefoundry-models/api.d.ts +3 -0
- package/dist/providers/truefoundry-models/api.js +29 -0
- package/dist/providers/truefoundry-models/api.js.map +1 -0
- package/dist/providers/truefoundry-models/index.d.ts +3 -0
- package/dist/providers/truefoundry-models/index.js +27 -0
- package/dist/providers/truefoundry-models/index.js.map +1 -0
- package/dist/services/execute.js +80 -66
- package/dist/services/execute.js.map +1 -1
- package/dist/types/contracts.d.ts +4 -0
- package/dist/utils/sdkRequestUrl.d.ts +5 -0
- package/dist/utils/sdkRequestUrl.js +31 -0
- package/dist/utils/sdkRequestUrl.js.map +1 -1
- package/package.json +1 -1
package/dist/autogen/models.d.ts
CHANGED
|
@@ -21066,6 +21066,11 @@ export interface McpServerSource {
|
|
|
21066
21066
|
* +sort=200
|
|
21067
21067
|
*/
|
|
21068
21068
|
enabled_tools?: string[];
|
|
21069
|
+
/**
|
|
21070
|
+
* +label=Tool Slug
|
|
21071
|
+
* +usage=Optional suffix used in virtual MCP tool names for this source. When unset, the gateway keeps the auto-generated suffix.
|
|
21072
|
+
*/
|
|
21073
|
+
tool_slug?: string;
|
|
21069
21074
|
auth_data?: MCPServerHeaderOverrideAuth;
|
|
21070
21075
|
}
|
|
21071
21076
|
/**
|
package/dist/autogen/schema.json
CHANGED
|
@@ -16269,6 +16269,10 @@
|
|
|
16269
16269
|
"type": "string"
|
|
16270
16270
|
}
|
|
16271
16271
|
},
|
|
16272
|
+
"tool_slug": {
|
|
16273
|
+
"description": "+label=Tool Slug\n+usage=Optional suffix used in virtual MCP tool names for this source. When unset, the gateway keeps the auto-generated suffix.",
|
|
16274
|
+
"type": "string"
|
|
16275
|
+
},
|
|
16272
16276
|
"auth_data": {
|
|
16273
16277
|
"$ref": "#/definitions/MCPServerHeaderOverrideAuth"
|
|
16274
16278
|
}
|
package/dist/constants.d.ts
CHANGED
|
@@ -25,6 +25,12 @@ export declare const TFY_ERROR_TYPES: {
|
|
|
25
25
|
readonly UPSTREAM_HEADERS_TIMEOUT: "upstream-headers-timeout";
|
|
26
26
|
readonly UPSTREAM_BODY_TIMEOUT: "upstream-body-timeout";
|
|
27
27
|
readonly UPSTREAM_TLS_ERROR: "upstream-tls-error";
|
|
28
|
+
/** The gateway itself rejected the request. */
|
|
29
|
+
readonly INPUT_GUARDRAIL: "tfy-input-guardrail";
|
|
30
|
+
/** An output guardrail failed after the provider had responded. */
|
|
31
|
+
readonly OUTPUT_GUARDRAIL: "tfy-output-guardrail";
|
|
32
|
+
readonly VALIDATION: "tfy-validation";
|
|
33
|
+
readonly CREDENTIALS: "tfy-credentials";
|
|
28
34
|
readonly CLIENT_DISCONNECTED: "client-disconnected";
|
|
29
35
|
readonly PROVIDER_STREAMING_TERMINATED: "provider-streaming-terminated";
|
|
30
36
|
/** Provider reported a failure inside an HTTP 200 stream (e.g. a Responses `response.failed` frame). */
|
|
@@ -32,5 +38,7 @@ export declare const TFY_ERROR_TYPES: {
|
|
|
32
38
|
readonly TTFT_TIMEOUT: "ttft-timeout";
|
|
33
39
|
readonly UNKNOWN_ERROR: "unknown-error";
|
|
34
40
|
};
|
|
41
|
+
/** Failures where the gateway itself rejected the request or its response. */
|
|
42
|
+
export type GatewayRejectionErrorType = typeof TFY_ERROR_TYPES.INPUT_GUARDRAIL | typeof TFY_ERROR_TYPES.OUTPUT_GUARDRAIL | typeof TFY_ERROR_TYPES.VALIDATION | typeof TFY_ERROR_TYPES.CREDENTIALS;
|
|
35
43
|
/** Failures where the gateway never got an HTTP response from the provider. */
|
|
36
44
|
export type GatewayFailureErrorType = typeof TFY_ERROR_TYPES.UPSTREAM_CONNECT_FAILURE | typeof TFY_ERROR_TYPES.UPSTREAM_HEADERS_TIMEOUT | typeof TFY_ERROR_TYPES.UPSTREAM_BODY_TIMEOUT | typeof TFY_ERROR_TYPES.UPSTREAM_TLS_ERROR;
|
package/dist/constants.js
CHANGED
|
@@ -25,6 +25,12 @@ export const TFY_ERROR_TYPES = {
|
|
|
25
25
|
UPSTREAM_HEADERS_TIMEOUT: 'upstream-headers-timeout',
|
|
26
26
|
UPSTREAM_BODY_TIMEOUT: 'upstream-body-timeout',
|
|
27
27
|
UPSTREAM_TLS_ERROR: 'upstream-tls-error',
|
|
28
|
+
/** The gateway itself rejected the request. */
|
|
29
|
+
INPUT_GUARDRAIL: 'tfy-input-guardrail',
|
|
30
|
+
/** An output guardrail failed after the provider had responded. */
|
|
31
|
+
OUTPUT_GUARDRAIL: 'tfy-output-guardrail',
|
|
32
|
+
VALIDATION: 'tfy-validation',
|
|
33
|
+
CREDENTIALS: 'tfy-credentials',
|
|
28
34
|
CLIENT_DISCONNECTED: 'client-disconnected',
|
|
29
35
|
PROVIDER_STREAMING_TERMINATED: 'provider-streaming-terminated',
|
|
30
36
|
/** Provider reported a failure inside an HTTP 200 stream (e.g. a Responses `response.failed` frame). */
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAC5D,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAuB,CAAC;AAClE,kHAAkH;AAClH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAA0B,CAAC;AACxE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,SAAS,CAAU,CAAC;AAC9D,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AACxD,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAAsB,CAAC;AAChE,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAC5D,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAAC;AAC9D,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAgC,CAAC;AACpF,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAA0B,CAAC;AACxE,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;AAC1C,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAC;AAE1D,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,UAAU,EAAE,gBAAgB;IAC5B,YAAY,EAAE,kBAAkB;IAChC,aAAa,EAAE,eAAe;IAC9B,qGAAqG;IACrG,eAAe,EAAE,qBAAqB;IACtC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,uFAAuF;IACvF,wBAAwB,EAAE,0BAA0B;IACpD,wBAAwB,EAAE,0BAA0B;IACpD,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,6BAA6B,EAAE,+BAA+B;IAC9D,wGAAwG;IACxG,qBAAqB,EAAE,uBAAuB;IAC9C,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;CACtB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAC5D,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAuB,CAAC;AAClE,kHAAkH;AAClH,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAA0B,CAAC;AACxE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,SAAS,CAAU,CAAC;AAC9D,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AACxD,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAAsB,CAAC;AAChE,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAC5D,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAAC;AAC9D,MAAM,CAAC,MAAM,mCAAmC,GAAG,gCAAgC,CAAC;AACpF,MAAM,CAAC,MAAM,6BAA6B,GAAG,0BAA0B,CAAC;AACxE,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;AAC1C,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAC;AAE1D,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,UAAU,EAAE,gBAAgB;IAC5B,YAAY,EAAE,kBAAkB;IAChC,aAAa,EAAE,eAAe;IAC9B,qGAAqG;IACrG,eAAe,EAAE,qBAAqB;IACtC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,uFAAuF;IACvF,wBAAwB,EAAE,0BAA0B;IACpD,wBAAwB,EAAE,0BAA0B;IACpD,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,oBAAoB;IACxC,+CAA+C;IAC/C,eAAe,EAAE,qBAAqB;IACtC,mEAAmE;IACnE,gBAAgB,EAAE,sBAAsB;IACxC,UAAU,EAAE,gBAAgB;IAC5B,WAAW,EAAE,iBAAiB;IAC9B,mBAAmB,EAAE,qBAAqB;IAC1C,6BAA6B,EAAE,+BAA+B;IAC9D,wGAAwG;IACxG,qBAAqB,EAAE,uBAAuB;IAC9C,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;CACtB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,3 +14,4 @@ export type { BilledUsageOverlay, EndReason, Endpoint, ExecutionFinishReason, Ex
|
|
|
14
14
|
export type { AnthropicServerToolColumn, AnthropicServerToolMapping, BetaColumn, CatalogProviderConfig, CatalogProviderConfigs, ModelConfigMap, ProviderModelConfigs, } from './types/modelConfig.js';
|
|
15
15
|
export type { AnthropicOptions, AwsOptions, AwsSagemakerOptions, AzureAiInferenceOptions, AzureOptions, CommonHeaderOptions, FireworksAiOptions, HuggingFaceOptions, MistralOptions, OpenAIOptions, ProviderHeaderOptions, SnowflakeCortexOptions, StabilityAiOptions, VertexOptions, WorkersAiOptions, } from './types/options.js';
|
|
16
16
|
export { deriveProviderHeaderOptions } from './utils/deriveProviderHeaderOptions.js';
|
|
17
|
+
export { EXECUTE_TRACING_BODY, EXECUTE_TRACING_URL, redactTracingRequestUrl } from './utils/sdkRequestUrl.js';
|
package/dist/index.js
CHANGED
|
@@ -8,4 +8,5 @@ export { getSdkRequestTenantName, runWithSdkRequestContext } from './requestCont
|
|
|
8
8
|
export { LlmGatewaySdk } from './sdk.js';
|
|
9
9
|
export { classifyAwsStreamEventKey, getStreamModeSplitPattern, pumpProviderAwsEventStream, pumpProviderSseStream, readSseFrames, shouldReadAwsEventStream, } from './stream/index.js';
|
|
10
10
|
export { deriveProviderHeaderOptions } from './utils/deriveProviderHeaderOptions.js';
|
|
11
|
+
export { EXECUTE_TRACING_BODY, EXECUTE_TRACING_URL, redactTracingRequestUrl } from './utils/sdkRequestUrl.js';
|
|
11
12
|
//# 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;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAU1C,OAAO,EACL,iCAAiC,GAIlC,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,0BAA0B,EAC1B,qBAAqB,EACrB,aAAa,EACb,wBAAwB,GACzB,MAAM,UAAU,CAAC;AAkElB,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAU1C,OAAO,EACL,iCAAiC,GAIlC,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,0BAA0B,EAC1B,qBAAqB,EACrB,aAAa,EACb,wBAAwB,GACzB,MAAM,UAAU,CAAC;AAkElB,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Endpoint } from '../providers/types.js';
|
|
2
|
+
import type { SdkRequestBody } from '../types/contracts.js';
|
|
3
|
+
export interface ProviderResponseCaptureMeta {
|
|
4
|
+
url: string;
|
|
5
|
+
endpoint: Endpoint;
|
|
6
|
+
postAdapterBody: SdkRequestBody;
|
|
7
|
+
needsResponseTranslation: boolean;
|
|
8
|
+
openaiUseResponsesApi?: boolean;
|
|
9
|
+
contentType: string;
|
|
10
|
+
}
|
|
11
|
+
export type ProviderResponseCaptureHandler = (body: ReadableStream<Uint8Array>, meta: ProviderResponseCaptureMeta) => void;
|
|
12
|
+
export declare function runWithProviderResponseCapture<T>(handler: ProviderResponseCaptureHandler, fn: () => Promise<T>): Promise<T>;
|
|
13
|
+
export declare function emitProviderResponseCapture(response: Response, meta: Omit<ProviderResponseCaptureMeta, 'contentType'>): Response;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
const providerResponseCaptureAls = new AsyncLocalStorage();
|
|
3
|
+
export function runWithProviderResponseCapture(handler, fn) {
|
|
4
|
+
return providerResponseCaptureAls.run(handler, fn);
|
|
5
|
+
}
|
|
6
|
+
export function emitProviderResponseCapture(response, meta) {
|
|
7
|
+
const handler = providerResponseCaptureAls.getStore();
|
|
8
|
+
if (!handler || response.status !== 200 || !response.body)
|
|
9
|
+
return response;
|
|
10
|
+
const [live, capture] = response.body.tee();
|
|
11
|
+
handler(capture, { ...meta, contentType: response.headers.get('content-type') || '' });
|
|
12
|
+
return new Response(live, response);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=providerResponseCapture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerResponseCapture.js","sourceRoot":"","sources":["../../src/parity/providerResponseCapture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAkBrD,MAAM,0BAA0B,GAAG,IAAI,iBAAiB,EAAkC,CAAC;AAE3F,MAAM,UAAU,8BAA8B,CAC5C,OAAuC,EACvC,EAAoB;IAEpB,OAAO,0BAA0B,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,QAAkB,EAClB,IAAsD;IAEtD,MAAM,OAAO,GAAG,0BAA0B,CAAC,QAAQ,EAAE,CAAC;IACtD,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;QAAE,OAAO,QAAQ,CAAC;IAC3E,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IAC5C,OAAO,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvF,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const TRAILING_SLASHES_REGEX = /\/+$/;
|
|
2
|
+
const TrueFoundryModelsAPIConfig = {
|
|
3
|
+
getBaseURL: ({ providerOptions }) => {
|
|
4
|
+
const manifest = providerOptions.providerAccount.manifest;
|
|
5
|
+
return (manifest.base_url ?? '').replace(TRAILING_SLASHES_REGEX, '');
|
|
6
|
+
},
|
|
7
|
+
headers: ({ providerOptions }) => {
|
|
8
|
+
const manifest = providerOptions.providerAccount.manifest;
|
|
9
|
+
return {
|
|
10
|
+
Authorization: `Bearer ${manifest.auth_data?.api_key}`,
|
|
11
|
+
};
|
|
12
|
+
},
|
|
13
|
+
getEndpoint: ({ endpoint }) => {
|
|
14
|
+
switch (endpoint) {
|
|
15
|
+
case 'chatComplete':
|
|
16
|
+
return '/chat/completions';
|
|
17
|
+
case 'complete':
|
|
18
|
+
return '/completions';
|
|
19
|
+
case 'embed':
|
|
20
|
+
return '/embeddings';
|
|
21
|
+
case 'createModelResponse':
|
|
22
|
+
return '/responses';
|
|
23
|
+
default:
|
|
24
|
+
return '';
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
export default TrueFoundryModelsAPIConfig;
|
|
29
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/providers/truefoundry-models/api.ts"],"names":[],"mappings":"AAUA,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAEtC,MAAM,0BAA0B,GAAsB;IACpD,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,eAAe,CAAC,eAAe,CAAC,QAA4C,CAAC;QAC9F,OAAO,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE;QAC/B,MAAM,QAAQ,GAAG,eAAe,CAAC,eAAe,CAAC,QAA4C,CAAC;QAC9F,OAAO;YACL,aAAa,EAAE,UAAU,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE;SACvD,CAAC;IACJ,CAAC;IACD,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC5B,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,cAAc;gBACjB,OAAO,mBAAmB,CAAC;YAC7B,KAAK,UAAU;gBACb,OAAO,cAAc,CAAC;YACxB,KAAK,OAAO;gBACV,OAAO,aAAa,CAAC;YACvB,KAAK,qBAAqB;gBACxB,OAAO,YAAY,CAAC;YACtB;gBACE,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC;CACF,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ================================
|
|
3
|
+
* TFY Managed File
|
|
4
|
+
* TrueFoundry Models provider config
|
|
5
|
+
* ================================
|
|
6
|
+
*/
|
|
7
|
+
import { TRUEFOUNDRY_MODELS } from '../../globals.js';
|
|
8
|
+
import { chatCompleteParams, completeParams, createModelResponseParams, embedParams, OpenAICreateModelResponseTransformer, responseTransformers, } from '../open-ai-base/index.js';
|
|
9
|
+
import { OpenAILikeChatCompleteResponseTransform, OpenAILikeChatCompleteStreamChunkTransform, } from '../openai-like/chatComplete.js';
|
|
10
|
+
import { OpenAILikeEmbedResponseTransform } from '../openai-like/embed.js';
|
|
11
|
+
import TrueFoundryModelsAPIConfig from './api.js';
|
|
12
|
+
const TrueFoundryModelsConfig = {
|
|
13
|
+
chatComplete: chatCompleteParams([]),
|
|
14
|
+
complete: completeParams([]),
|
|
15
|
+
createModelResponse: createModelResponseParams([]),
|
|
16
|
+
embed: embedParams([]),
|
|
17
|
+
api: TrueFoundryModelsAPIConfig,
|
|
18
|
+
responseTransforms: {
|
|
19
|
+
...responseTransformers(TRUEFOUNDRY_MODELS, { complete: true }),
|
|
20
|
+
chatComplete: OpenAILikeChatCompleteResponseTransform(TRUEFOUNDRY_MODELS),
|
|
21
|
+
embed: OpenAILikeEmbedResponseTransform(TRUEFOUNDRY_MODELS),
|
|
22
|
+
createModelResponse: OpenAICreateModelResponseTransformer(TRUEFOUNDRY_MODELS),
|
|
23
|
+
'stream-chatComplete': OpenAILikeChatCompleteStreamChunkTransform(TRUEFOUNDRY_MODELS),
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
export default TrueFoundryModelsConfig;
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/truefoundry-models/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,yBAAyB,EACzB,WAAW,EACX,oCAAoC,EACpC,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,uCAAuC,EACvC,0CAA0C,GAC3C,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,0BAA0B,MAAM,OAAO,CAAC;AAE/C,MAAM,uBAAuB,GAAoB;IAC/C,YAAY,EAAE,kBAAkB,CAAC,EAAE,CAAC;IACpC,QAAQ,EAAE,cAAc,CAAC,EAAE,CAAC;IAC5B,mBAAmB,EAAE,yBAAyB,CAAC,EAAE,CAAC;IAClD,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC;IACtB,GAAG,EAAE,0BAA0B;IAC/B,kBAAkB,EAAE;QAClB,GAAG,oBAAoB,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC/D,YAAY,EAAE,uCAAuC,CAAC,kBAAkB,CAAC;QACzE,KAAK,EAAE,gCAAgC,CAAC,kBAAkB,CAAC;QAC3D,mBAAmB,EAAE,oCAAoC,CAAC,kBAAkB,CAAC;QAC7E,qBAAqB,EAAE,0CAA0C,CAAC,kBAAkB,CAAC;KACtF;CACF,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
|
package/dist/services/execute.js
CHANGED
|
@@ -14,7 +14,7 @@ import { deriveProviderHeaderOptions, toLowercaseHeaders } from '../utils/derive
|
|
|
14
14
|
import { logIgnoredFailure } from '../utils/ignoreWithLog.js';
|
|
15
15
|
import { isStreamingEnabledSdk } from '../utils/isStreamingEnabled.js';
|
|
16
16
|
import { logProviderCallFailure } from '../utils/providerFailureLogging.js';
|
|
17
|
-
import { sdkRequestUrl } from '../utils/sdkRequestUrl.js';
|
|
17
|
+
import { EXECUTE_TRACING_BODY, EXECUTE_TRACING_URL, redactTracingRequestUrl, sdkRequestUrl, } from '../utils/sdkRequestUrl.js';
|
|
18
18
|
import { buildFetchInit } from './buildFetchInit.js';
|
|
19
19
|
import { createProviderRequest } from './createProviderRequest.js';
|
|
20
20
|
import { handleProviderResponse } from './handleProviderResponse.js';
|
|
@@ -162,73 +162,87 @@ export async function executeCall(call) {
|
|
|
162
162
|
}
|
|
163
163
|
const originalBody = cloneOriginalBody(call.request.body);
|
|
164
164
|
const built = await createProviderRequest(call);
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
if (
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
165
|
+
try {
|
|
166
|
+
const streaming = isStreamingEnabledSdk({
|
|
167
|
+
body: built.postAdapterBody,
|
|
168
|
+
endpoint: built.endpoint,
|
|
169
|
+
path: call.request.path,
|
|
170
|
+
});
|
|
171
|
+
const provider = call.providerOptions.providerAccount.provider;
|
|
172
|
+
const foundationModelId = getFoundationModelId(call.providerOptions.model);
|
|
173
|
+
const yieldRawBytes = deriveYieldRawBytes({
|
|
174
|
+
streaming,
|
|
175
|
+
inboundEndpoint: call.request.endpoint,
|
|
176
|
+
provider,
|
|
177
|
+
foundationModelId,
|
|
178
|
+
});
|
|
179
|
+
const fetchInit = buildFetchInit(built, call);
|
|
180
|
+
const fetchStartMs = performance.now();
|
|
181
|
+
const retried = await retryFromExecution(built.url, fetchInit, call.execution);
|
|
182
|
+
const { response, attempt } = retried;
|
|
183
|
+
const latencyMs = performance.now() - fetchStartMs;
|
|
184
|
+
const gatewayFailure = await recordProviderFailure({ retried, url: built.url, call, latencyMs, streaming });
|
|
185
|
+
const modelId = getActualModelId(call.providerOptions.model) || undefined;
|
|
186
|
+
const modelMetadata = {
|
|
187
|
+
provider,
|
|
188
|
+
endpoint: built.endpoint,
|
|
189
|
+
...(modelId ? { modelId } : {}),
|
|
190
|
+
};
|
|
191
|
+
const headerOptions = deriveProviderHeaderOptions(call.request.headers);
|
|
192
|
+
const handled = await handleProviderResponse({
|
|
193
|
+
response,
|
|
194
|
+
endpoint: built.endpoint,
|
|
195
|
+
provider,
|
|
196
|
+
providerOptions: call.providerOptions,
|
|
197
|
+
execution: call.execution,
|
|
198
|
+
streaming,
|
|
199
|
+
yieldRawBytes,
|
|
200
|
+
// Client body for billed chars/seconds (TTS/Veo). Not returned from createProviderRequest.
|
|
201
|
+
gatewayRequestBody: call.request.body,
|
|
202
|
+
postAdapterBody: built.postAdapterBody,
|
|
203
|
+
requestUrl: built.url,
|
|
204
|
+
inboundPath: call.request.path, // NEW: live ctx.req.url for CLONE usage routers
|
|
205
|
+
attempts: attempt ?? 0,
|
|
206
|
+
timings: { latencyMs, fetchStartMs }, // NEW: fetchStartMs on ExecutionTimings
|
|
207
|
+
fetchStartMs,
|
|
208
|
+
modelMetadata,
|
|
209
|
+
strictOpenAiCompliance: call.callConfig.strictOpenAiCompliance ?? true,
|
|
210
|
+
headerOptions,
|
|
211
|
+
callConfig: call.callConfig,
|
|
212
|
+
inboundEndpoint: call.request.endpoint,
|
|
213
|
+
gatewayFailure,
|
|
214
|
+
});
|
|
215
|
+
let finalResponse = handled.response;
|
|
216
|
+
if (built.needsResponseTranslation) {
|
|
217
|
+
const inboundAdapter = resolveAdapter(call.request.endpoint);
|
|
218
|
+
if (inboundAdapter) {
|
|
219
|
+
if (streaming && handled.response.status === 200) {
|
|
220
|
+
finalResponse = adaptStreamingResponse(handled.response, inboundAdapter, originalBody, {
|
|
221
|
+
abortSignal: call.execution.abortSignal,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
finalResponse = await adaptNonStreamingResponse(handled.response, inboundAdapter, provider, originalBody);
|
|
226
|
+
}
|
|
225
227
|
}
|
|
226
228
|
}
|
|
229
|
+
return {
|
|
230
|
+
response: finalResponse,
|
|
231
|
+
executionReport: handled.executionReport,
|
|
232
|
+
servedEndpoint: built.endpoint,
|
|
233
|
+
requestUrl: redactTracingRequestUrl(built.url),
|
|
234
|
+
providerRequestBody: built.outboundBody,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
catch (err) {
|
|
238
|
+
// First-chunk and timeout throws never reach the result. The gateway reads these off the error.
|
|
239
|
+
if (err && typeof err === 'object') {
|
|
240
|
+
Object.assign(err, {
|
|
241
|
+
[EXECUTE_TRACING_URL]: redactTracingRequestUrl(built.url),
|
|
242
|
+
[EXECUTE_TRACING_BODY]: built.outboundBody,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
throw err;
|
|
227
246
|
}
|
|
228
|
-
return {
|
|
229
|
-
response: finalResponse,
|
|
230
|
-
executionReport: handled.executionReport,
|
|
231
|
-
servedEndpoint: built.endpoint,
|
|
232
|
-
};
|
|
233
247
|
}
|
|
234
248
|
//# sourceMappingURL=execute.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/services/execute.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACzG,OAAO,EAAE,kBAAkB,EAAiC,MAAM,gCAAgC,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAKjG,OAAO,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/services/execute.ts"],"names":[],"mappings":"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"}
|
|
@@ -160,4 +160,8 @@ export interface SdkExecuteResult {
|
|
|
160
160
|
executionReport: Promise<ExecutionReport>;
|
|
161
161
|
/** Post-adapter endpoint that drove transforms / usage (`chatComplete`, `embed`, …). */
|
|
162
162
|
servedEndpoint: Endpoint;
|
|
163
|
+
/** Tracing URL; credential query values are redacted. Absent for requestHandlers. */
|
|
164
|
+
requestUrl?: string;
|
|
165
|
+
/** Body after transformToProviderRequest. Absent for requestHandlers. */
|
|
166
|
+
providerRequestBody?: SdkRequestBody;
|
|
163
167
|
}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import type { SdkRequest } from '../types/contracts.js';
|
|
2
|
+
/** Stamped onto errors thrown after the outbound URL exists, so the gateway can still fill the Model span. */
|
|
3
|
+
export declare const EXECUTE_TRACING_URL = "tracingRequestUrl";
|
|
4
|
+
export declare const EXECUTE_TRACING_BODY = "tracingProviderBody";
|
|
2
5
|
/**
|
|
3
6
|
* Reconstruct a URL string from `SdkRequest.path` + `SdkRequest.search` for
|
|
4
7
|
* providers that still split path segments / query the way they did with
|
|
5
8
|
* `gatewayRequestURL`. Host is a placeholder and must not be fetched.
|
|
6
9
|
*/
|
|
7
10
|
export declare function sdkRequestUrl(request: Pick<SdkRequest, 'path' | 'search'>): string;
|
|
11
|
+
/** Tracing copy of an outbound URL. Credential query values (`?key=`) are replaced; the fetch URL is unchanged. */
|
|
12
|
+
export declare function redactTracingRequestUrl(url: string): string;
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
const REDACTED_QUERY_VALUE = '***REDACTED***';
|
|
2
|
+
/** Stamped onto errors thrown after the outbound URL exists, so the gateway can still fill the Model span. */
|
|
3
|
+
export const EXECUTE_TRACING_URL = 'tracingRequestUrl';
|
|
4
|
+
export const EXECUTE_TRACING_BODY = 'tracingProviderBody';
|
|
1
5
|
/**
|
|
2
6
|
* Reconstruct a URL string from `SdkRequest.path` + `SdkRequest.search` for
|
|
3
7
|
* providers that still split path segments / query the way they did with
|
|
@@ -6,4 +10,31 @@
|
|
|
6
10
|
export function sdkRequestUrl(request) {
|
|
7
11
|
return new URL(request.path + request.search, 'https://gateway.invalid').toString();
|
|
8
12
|
}
|
|
13
|
+
function isCredentialQueryKey(key) {
|
|
14
|
+
const k = key.toLowerCase();
|
|
15
|
+
return (k.includes('key') ||
|
|
16
|
+
k.includes('token') ||
|
|
17
|
+
k.includes('secret') ||
|
|
18
|
+
k.includes('password') ||
|
|
19
|
+
k.includes('signature') ||
|
|
20
|
+
k.includes('auth') ||
|
|
21
|
+
k.includes('credential'));
|
|
22
|
+
}
|
|
23
|
+
/** Tracing copy of an outbound URL. Credential query values (`?key=`) are replaced; the fetch URL is unchanged. */
|
|
24
|
+
export function redactTracingRequestUrl(url) {
|
|
25
|
+
try {
|
|
26
|
+
const parsed = new URL(url);
|
|
27
|
+
let changed = false;
|
|
28
|
+
for (const name of [...parsed.searchParams.keys()]) {
|
|
29
|
+
if (!isCredentialQueryKey(name))
|
|
30
|
+
continue;
|
|
31
|
+
parsed.searchParams.set(name, REDACTED_QUERY_VALUE);
|
|
32
|
+
changed = true;
|
|
33
|
+
}
|
|
34
|
+
return changed ? parsed.toString() : url;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return url;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
9
40
|
//# sourceMappingURL=sdkRequestUrl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdkRequestUrl.js","sourceRoot":"","sources":["../../src/utils/sdkRequestUrl.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAA4C;IACxE,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtF,CAAC"}
|
|
1
|
+
{"version":3,"file":"sdkRequestUrl.js","sourceRoot":"","sources":["../../src/utils/sdkRequestUrl.ts"],"names":[],"mappings":"AAEA,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AAE9C,8GAA8G;AAC9G,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AACvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAA4C;IACxE,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtF,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW;IACvC,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC5B,OAAO,CACL,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QACjB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACpB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;QACvB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAClB,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CACzB,CAAC;AACJ,CAAC;AAED,mHAAmH;AACnH,MAAM,UAAU,uBAAuB,CAAC,GAAW;IACjD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC1C,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;YACpD,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC"}
|