@tensorcost/sdk 0.3.0 → 0.5.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/CHANGELOG.md +74 -0
- package/README.md +150 -5
- package/dist/circuit.d.ts +56 -0
- package/dist/circuit.d.ts.map +1 -0
- package/dist/circuit.js +93 -0
- package/dist/circuit.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +17 -0
- package/dist/config.js.map +1 -1
- package/dist/errors.d.ts +67 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +84 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/providers/anthropic.d.ts +17 -1
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +179 -20
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/bedrock.d.ts +48 -0
- package/dist/providers/bedrock.d.ts.map +1 -0
- package/dist/providers/bedrock.js +277 -0
- package/dist/providers/bedrock.js.map +1 -0
- package/dist/providers/detect.d.ts +9 -3
- package/dist/providers/detect.d.ts.map +1 -1
- package/dist/providers/detect.js +24 -6
- package/dist/providers/detect.js.map +1 -1
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +1 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/openai.d.ts +19 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +217 -20
- package/dist/providers/openai.js.map +1 -1
- package/dist/proxy-client.d.ts +64 -0
- package/dist/proxy-client.d.ts.map +1 -0
- package/dist/proxy-client.js +259 -0
- package/dist/proxy-client.js.map +1 -0
- package/dist/retry.d.ts +50 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +80 -0
- package/dist/retry.js.map +1 -0
- package/dist/telemetry.d.ts +70 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +41 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/types.d.ts +63 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/wrap.d.ts +9 -0
- package/dist/wrap.d.ts.map +1 -1
- package/dist/wrap.js +47 -2
- package/dist/wrap.js.map +1 -1
- package/package.json +12 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bedrock.js","sourceRoot":"","sources":["../../src/providers/bedrock.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Provider detection — duck-typed.
|
|
3
3
|
*
|
|
4
|
-
* We avoid importing `openai
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* We avoid importing `openai`, `@anthropic-ai/sdk`, or
|
|
5
|
+
* `@aws-sdk/client-bedrock-runtime` at runtime so that the SDK has zero
|
|
6
|
+
* peer-dep cost when the customer only uses one provider. Detection
|
|
7
|
+
* inspects the shape of the client object instead.
|
|
8
|
+
*
|
|
9
|
+
* Bedrock detection uses the Smithy-generated `config.serviceId` field,
|
|
10
|
+
* which is the most precise available discriminator — it's set by the
|
|
11
|
+
* AWS SDK generator and does not depend on the constructor name (which
|
|
12
|
+
* minifiers can change).
|
|
7
13
|
*/
|
|
8
14
|
import type { Provider } from "../types.js";
|
|
9
15
|
export declare class UnsupportedClientError extends Error {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/providers/detect.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/providers/detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,CAiDxD"}
|
package/dist/providers/detect.js
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Provider detection — duck-typed.
|
|
3
3
|
*
|
|
4
|
-
* We avoid importing `openai
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* We avoid importing `openai`, `@anthropic-ai/sdk`, or
|
|
5
|
+
* `@aws-sdk/client-bedrock-runtime` at runtime so that the SDK has zero
|
|
6
|
+
* peer-dep cost when the customer only uses one provider. Detection
|
|
7
|
+
* inspects the shape of the client object instead.
|
|
8
|
+
*
|
|
9
|
+
* Bedrock detection uses the Smithy-generated `config.serviceId` field,
|
|
10
|
+
* which is the most precise available discriminator — it's set by the
|
|
11
|
+
* AWS SDK generator and does not depend on the constructor name (which
|
|
12
|
+
* minifiers can change).
|
|
7
13
|
*/
|
|
8
14
|
export class UnsupportedClientError extends Error {
|
|
9
15
|
constructor(message) {
|
|
@@ -13,9 +19,20 @@ export class UnsupportedClientError extends Error {
|
|
|
13
19
|
}
|
|
14
20
|
export function detectProvider(client) {
|
|
15
21
|
if (client === null || typeof client !== "object") {
|
|
16
|
-
throw new UnsupportedClientError("tensorcost: wrap() requires an object (an OpenAI or
|
|
22
|
+
throw new UnsupportedClientError("tensorcost: wrap() requires an object (an OpenAI, Anthropic, or BedrockRuntimeClient instance).");
|
|
17
23
|
}
|
|
18
24
|
const c = client;
|
|
25
|
+
// BedrockRuntimeClient (AWS SDK v3 / Smithy): has a `send()` method AND
|
|
26
|
+
// config.serviceId === "Bedrock Runtime". We check this first because
|
|
27
|
+
// Smithy clients have a generic enough shape that the OpenAI/Anthropic
|
|
28
|
+
// checks could theoretically collide on oddly-named properties.
|
|
29
|
+
const hasBedrockShape = typeof c.send === "function" &&
|
|
30
|
+
c.config != null &&
|
|
31
|
+
typeof c.config === "object" &&
|
|
32
|
+
c.config.serviceId === "Bedrock Runtime";
|
|
33
|
+
if (hasBedrockShape) {
|
|
34
|
+
return "bedrock";
|
|
35
|
+
}
|
|
19
36
|
// OpenAI: has chat.completions.create OR completions.create
|
|
20
37
|
const chat = c.chat;
|
|
21
38
|
const chatCompletions = chat && typeof chat === "object" ? chat.completions : undefined;
|
|
@@ -33,7 +50,8 @@ export function detectProvider(client) {
|
|
|
33
50
|
if (hasAnthropicShape) {
|
|
34
51
|
return "anthropic";
|
|
35
52
|
}
|
|
36
|
-
throw new UnsupportedClientError("tensorcost: client does not look like an OpenAI or
|
|
37
|
-
"(missing chat.completions.create / completions.create / messages.create
|
|
53
|
+
throw new UnsupportedClientError("tensorcost: client does not look like an OpenAI, Anthropic, or BedrockRuntimeClient instance " +
|
|
54
|
+
"(missing chat.completions.create / completions.create / messages.create / " +
|
|
55
|
+
"send+config.serviceId='Bedrock Runtime').");
|
|
38
56
|
}
|
|
39
57
|
//# sourceMappingURL=detect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/providers/detect.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/providers/detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,UAAU,cAAc,CAAC,MAAe;IAC5C,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAClD,MAAM,IAAI,sBAAsB,CAC9B,iGAAiG,CAClG,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,GAAG,MAA6B,CAAC;IAExC,wEAAwE;IACxE,sEAAsE;IACtE,uEAAuE;IACvE,gEAAgE;IAChE,MAAM,eAAe,GACnB,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU;QAC5B,CAAC,CAAC,MAAM,IAAI,IAAI;QAChB,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;QAC3B,CAAC,CAAC,MAAkC,CAAC,SAAS,KAAK,iBAAiB,CAAC;IAExE,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,4DAA4D;IAC5D,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACpB,MAAM,eAAe,GACnB,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,MAAM,cAAc,GAClB,CAAC,eAAe,IAAI,OAAO,eAAe,CAAC,MAAM,KAAK,UAAU,CAAC;QACjE,CAAC,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;IAEhE,iCAAiC;IACjC,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC5B,MAAM,iBAAiB,GACrB,QAAQ,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC;IAEpD,wEAAwE;IACxE,qEAAqE;IACrE,sEAAsE;IACtE,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,MAAM,IAAI,sBAAsB,CAC9B,+FAA+F;QAC7F,4EAA4E;QAC5E,2CAA2C,CAC9C,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,cAAc,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,iBAAiB,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,cAAc,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,iBAAiB,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,eAAe,MAAM,cAAc,CAAC"}
|
package/dist/providers/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,cAAc,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,iBAAiB,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,cAAc,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,iBAAiB,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,eAAe,MAAM,cAAc,CAAC"}
|
|
@@ -7,9 +7,27 @@
|
|
|
7
7
|
*
|
|
8
8
|
* We capture only metadata (model, token usage) — never prompt content.
|
|
9
9
|
* Customer prompts stay on their machine.
|
|
10
|
+
*
|
|
11
|
+
* Applied-mode hardening (v0.4.0): chat.completions.create routes through
|
|
12
|
+
* the proxy-client module, which handles retries, timeouts, typed errors,
|
|
13
|
+
* telemetry hooks, and the fail-open circuit breaker. When the circuit is
|
|
14
|
+
* open or the proxy errors after retries, and `failOpenEnabled=true`, the
|
|
15
|
+
* call falls back to the customer's direct provider path.
|
|
10
16
|
*/
|
|
11
17
|
import type { ObservationTransport } from "../transport.js";
|
|
12
|
-
|
|
18
|
+
import type { CircuitBreaker } from "../circuit.js";
|
|
19
|
+
import type { LifecycleEventCallback } from "../telemetry.js";
|
|
20
|
+
import type { RetryConfig } from "../retry.js";
|
|
21
|
+
export interface AppliedModeHardeningOpts {
|
|
22
|
+
appliedMode: boolean;
|
|
23
|
+
proxyUrl: string | null;
|
|
24
|
+
retry: RetryConfig;
|
|
25
|
+
timeoutMs: number;
|
|
26
|
+
onLifecycleEvent: LifecycleEventCallback | undefined;
|
|
27
|
+
failOpenEnabled: boolean;
|
|
28
|
+
circuit: CircuitBreaker;
|
|
29
|
+
}
|
|
30
|
+
export declare function install(client: unknown, transport: ObservationTransport, tenantId: string | null, environment: string | null, connectionId: string | null, hardening: AppliedModeHardeningOpts): void;
|
|
13
31
|
export declare const __test__: {
|
|
14
32
|
MARKER: string;
|
|
15
33
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAG5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,sBAAsB,GAAG,SAAS,CAAC;IACrD,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,cAAc,CAAC;CACzB;AAoSD,wBAAgB,OAAO,CACrB,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,oBAAoB,EAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,SAAS,EAAE,wBAAwB,GAClC,IAAI,CA0CN;AAED,eAAO,MAAM,QAAQ;;CAAa,CAAC"}
|
package/dist/providers/openai.js
CHANGED
|
@@ -7,9 +7,18 @@
|
|
|
7
7
|
*
|
|
8
8
|
* We capture only metadata (model, token usage) — never prompt content.
|
|
9
9
|
* Customer prompts stay on their machine.
|
|
10
|
+
*
|
|
11
|
+
* Applied-mode hardening (v0.4.0): chat.completions.create routes through
|
|
12
|
+
* the proxy-client module, which handles retries, timeouts, typed errors,
|
|
13
|
+
* telemetry hooks, and the fail-open circuit breaker. When the circuit is
|
|
14
|
+
* open or the proxy errors after retries, and `failOpenEnabled=true`, the
|
|
15
|
+
* call falls back to the customer's direct provider path.
|
|
10
16
|
*/
|
|
11
17
|
import { randomUUID } from "node:crypto";
|
|
12
|
-
|
|
18
|
+
import { proxyRequest } from "../proxy-client.js";
|
|
19
|
+
import { TensorCostProxyError } from "../errors.js";
|
|
20
|
+
import { emitEvent } from "../telemetry.js";
|
|
21
|
+
const SDK_VERSION = "tensorcost-node/0.4.0";
|
|
13
22
|
const MARKER = "__tensorcost_wrapped__";
|
|
14
23
|
function nowIso() {
|
|
15
24
|
return new Date().toISOString();
|
|
@@ -27,6 +36,31 @@ function extractUsage(response) {
|
|
|
27
36
|
const output = typeof u.completion_tokens === "number" ? u.completion_tokens : null;
|
|
28
37
|
return { input, output };
|
|
29
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Read the provider base URL from the client. Used to reconstruct the
|
|
41
|
+
* direct-provider endpoint for fail-open fallback calls.
|
|
42
|
+
*/
|
|
43
|
+
function readClientBaseUrl(client) {
|
|
44
|
+
if (!client || typeof client !== "object")
|
|
45
|
+
return "https://api.openai.com/v1";
|
|
46
|
+
const raw = client["baseURL"];
|
|
47
|
+
// After installAppliedMode, baseURL points at the proxy — so for the
|
|
48
|
+
// fallback we cannot use client.baseURL. We store the original URL in
|
|
49
|
+
// x-tc-provider-url which is already in the client's defaultHeaders.
|
|
50
|
+
const dh = client["defaultHeaders"];
|
|
51
|
+
if (dh && typeof dh === "object") {
|
|
52
|
+
const orig = dh["x-tc-provider-url"];
|
|
53
|
+
if (typeof orig === "string" && orig.length > 0)
|
|
54
|
+
return orig;
|
|
55
|
+
}
|
|
56
|
+
return typeof raw === "string" ? raw : "https://api.openai.com/v1";
|
|
57
|
+
}
|
|
58
|
+
function readClientApiKey(client) {
|
|
59
|
+
if (!client || typeof client !== "object")
|
|
60
|
+
return null;
|
|
61
|
+
const raw = client["apiKey"];
|
|
62
|
+
return typeof raw === "string" && raw.length > 0 ? raw : null;
|
|
63
|
+
}
|
|
30
64
|
function wrapMethod(bound, opts) {
|
|
31
65
|
const wrapped = async function (...args) {
|
|
32
66
|
const requestAt = nowIso();
|
|
@@ -34,6 +68,177 @@ function wrapMethod(bound, opts) {
|
|
|
34
68
|
const model = (firstArg && typeof firstArg === "object" && firstArg.model) ||
|
|
35
69
|
"unknown";
|
|
36
70
|
const correlationId = randomUUID();
|
|
71
|
+
// Applied-mode path: route through proxy-client with full hardening.
|
|
72
|
+
if (opts.hardening.appliedMode &&
|
|
73
|
+
opts.hardening.proxyUrl &&
|
|
74
|
+
opts.operation === "chat.completions") {
|
|
75
|
+
const providerUrl = readClientBaseUrl(opts.clientRef);
|
|
76
|
+
// x-tc-provider-auth is already in the client's defaultHeaders after
|
|
77
|
+
// installAppliedMode. We re-read it rather than reconstructing it so
|
|
78
|
+
// that key rotation on the client is respected.
|
|
79
|
+
const dh = opts.clientRef && typeof opts.clientRef === "object"
|
|
80
|
+
? opts.clientRef["defaultHeaders"]
|
|
81
|
+
: undefined;
|
|
82
|
+
const providerAuth = dh?.["x-tc-provider-auth"] ?? "";
|
|
83
|
+
const body = {
|
|
84
|
+
...(firstArg && typeof firstArg === "object" ? firstArg : {}),
|
|
85
|
+
model: String(model),
|
|
86
|
+
};
|
|
87
|
+
// Snapshot circuit state before the call to detect fallback events.
|
|
88
|
+
const circuitWasOpen = opts.hardening.circuit.shouldBypass();
|
|
89
|
+
let proxyResult;
|
|
90
|
+
let proxyFailed = false;
|
|
91
|
+
let proxyFailureError = null;
|
|
92
|
+
if (!circuitWasOpen) {
|
|
93
|
+
try {
|
|
94
|
+
const getToken = opts.getToken ?? (() => opts.transport.getToken());
|
|
95
|
+
const bearerToken = await getToken();
|
|
96
|
+
proxyResult = await proxyRequest({
|
|
97
|
+
proxyUrl: opts.hardening.proxyUrl,
|
|
98
|
+
bearerToken,
|
|
99
|
+
providerUrl,
|
|
100
|
+
providerAuth,
|
|
101
|
+
body,
|
|
102
|
+
model: String(model),
|
|
103
|
+
provider: "openai",
|
|
104
|
+
operation: String(opts.operation),
|
|
105
|
+
correlationId,
|
|
106
|
+
environment: opts.environment,
|
|
107
|
+
retry: opts.hardening.retry,
|
|
108
|
+
timeoutMs: opts.hardening.timeoutMs,
|
|
109
|
+
onLifecycleEvent: opts.hardening.onLifecycleEvent,
|
|
110
|
+
circuit: opts.hardening.circuit,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
catch (proxyErr) {
|
|
114
|
+
proxyFailed = true;
|
|
115
|
+
proxyFailureError = proxyErr;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
proxyFailed = true;
|
|
120
|
+
}
|
|
121
|
+
// Fail-open: try the direct provider call when the circuit is open
|
|
122
|
+
// or the proxy failed after retries.
|
|
123
|
+
if (proxyFailed || circuitWasOpen) {
|
|
124
|
+
if (!opts.hardening.failOpenEnabled) {
|
|
125
|
+
// Customer opted out of fail-open. Throw the proxy error.
|
|
126
|
+
const tcErr = proxyFailureError instanceof TensorCostProxyError
|
|
127
|
+
? proxyFailureError
|
|
128
|
+
: new TensorCostProxyError(proxyFailureError?.message ?? "proxy unavailable", { cause: proxyFailureError ?? undefined, attempt: 1 });
|
|
129
|
+
const obs = {
|
|
130
|
+
sdk_version: SDK_VERSION,
|
|
131
|
+
provider: "openai",
|
|
132
|
+
model: String(model),
|
|
133
|
+
operation: opts.operation,
|
|
134
|
+
request_at: requestAt,
|
|
135
|
+
response_at: nowIso(),
|
|
136
|
+
input_tokens: null,
|
|
137
|
+
output_tokens: null,
|
|
138
|
+
cost_usd_cents: null,
|
|
139
|
+
status: "error",
|
|
140
|
+
error_message: `${tcErr.name}: ${tcErr.message}`,
|
|
141
|
+
correlation_id: correlationId,
|
|
142
|
+
tenant_id: opts.tenantId,
|
|
143
|
+
...(opts.environment !== null ? { environment: opts.environment } : {}),
|
|
144
|
+
...(opts.connectionId !== null ? { connection_id: opts.connectionId } : {}),
|
|
145
|
+
};
|
|
146
|
+
try {
|
|
147
|
+
opts.transport.post(obs);
|
|
148
|
+
}
|
|
149
|
+
catch { /* belt-and-suspenders */ }
|
|
150
|
+
throw tcErr;
|
|
151
|
+
}
|
|
152
|
+
// Emit fallback event and call the provider directly.
|
|
153
|
+
emitEvent(opts.hardening.onLifecycleEvent, {
|
|
154
|
+
kind: "on_fallback",
|
|
155
|
+
provider: "openai",
|
|
156
|
+
model: String(model),
|
|
157
|
+
operation: String(opts.operation),
|
|
158
|
+
attemptNumber: 1,
|
|
159
|
+
elapsedMs: 0,
|
|
160
|
+
consecutiveFailures: opts.hardening.circuit.failures,
|
|
161
|
+
});
|
|
162
|
+
try {
|
|
163
|
+
const directResponse = await bound.apply(this, args);
|
|
164
|
+
const { input, output } = extractUsage(directResponse);
|
|
165
|
+
const obs = {
|
|
166
|
+
sdk_version: SDK_VERSION,
|
|
167
|
+
provider: "openai",
|
|
168
|
+
model: String(model),
|
|
169
|
+
operation: opts.operation,
|
|
170
|
+
request_at: requestAt,
|
|
171
|
+
response_at: nowIso(),
|
|
172
|
+
input_tokens: input,
|
|
173
|
+
output_tokens: output,
|
|
174
|
+
cost_usd_cents: null,
|
|
175
|
+
status: "success",
|
|
176
|
+
error_message: null,
|
|
177
|
+
correlation_id: correlationId,
|
|
178
|
+
tenant_id: opts.tenantId,
|
|
179
|
+
...(opts.environment !== null ? { environment: opts.environment } : {}),
|
|
180
|
+
...(opts.connectionId !== null ? { connection_id: opts.connectionId } : {}),
|
|
181
|
+
};
|
|
182
|
+
try {
|
|
183
|
+
opts.transport.post(obs);
|
|
184
|
+
}
|
|
185
|
+
catch { /* belt-and-suspenders */ }
|
|
186
|
+
return directResponse;
|
|
187
|
+
}
|
|
188
|
+
catch (directErr) {
|
|
189
|
+
const obs = {
|
|
190
|
+
sdk_version: SDK_VERSION,
|
|
191
|
+
provider: "openai",
|
|
192
|
+
model: String(model),
|
|
193
|
+
operation: opts.operation,
|
|
194
|
+
request_at: requestAt,
|
|
195
|
+
response_at: nowIso(),
|
|
196
|
+
input_tokens: null,
|
|
197
|
+
output_tokens: null,
|
|
198
|
+
cost_usd_cents: null,
|
|
199
|
+
status: "error",
|
|
200
|
+
error_message: `${directErr.name}: ${directErr.message}`,
|
|
201
|
+
correlation_id: correlationId,
|
|
202
|
+
tenant_id: opts.tenantId,
|
|
203
|
+
...(opts.environment !== null ? { environment: opts.environment } : {}),
|
|
204
|
+
...(opts.connectionId !== null ? { connection_id: opts.connectionId } : {}),
|
|
205
|
+
};
|
|
206
|
+
try {
|
|
207
|
+
opts.transport.post(obs);
|
|
208
|
+
}
|
|
209
|
+
catch { /* belt-and-suspenders */ }
|
|
210
|
+
throw directErr;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// Proxy call succeeded.
|
|
214
|
+
const respBody = proxyResult;
|
|
215
|
+
const usageRaw = respBody?.usage;
|
|
216
|
+
const input = typeof usageRaw?.prompt_tokens === "number" ? usageRaw.prompt_tokens : null;
|
|
217
|
+
const output = typeof usageRaw?.completion_tokens === "number" ? usageRaw.completion_tokens : null;
|
|
218
|
+
const obs = {
|
|
219
|
+
sdk_version: SDK_VERSION,
|
|
220
|
+
provider: "openai",
|
|
221
|
+
model: String(model),
|
|
222
|
+
operation: opts.operation,
|
|
223
|
+
request_at: requestAt,
|
|
224
|
+
response_at: nowIso(),
|
|
225
|
+
input_tokens: input,
|
|
226
|
+
output_tokens: output,
|
|
227
|
+
cost_usd_cents: null,
|
|
228
|
+
status: "success",
|
|
229
|
+
error_message: null,
|
|
230
|
+
correlation_id: correlationId,
|
|
231
|
+
tenant_id: opts.tenantId,
|
|
232
|
+
...(opts.environment !== null ? { environment: opts.environment } : {}),
|
|
233
|
+
...(opts.connectionId !== null ? { connection_id: opts.connectionId } : {}),
|
|
234
|
+
};
|
|
235
|
+
try {
|
|
236
|
+
opts.transport.post(obs);
|
|
237
|
+
}
|
|
238
|
+
catch { /* belt-and-suspenders */ }
|
|
239
|
+
return proxyResult;
|
|
240
|
+
}
|
|
241
|
+
// Observe-only path (non-applied-mode, or legacy completions.create).
|
|
37
242
|
try {
|
|
38
243
|
const response = await bound.apply(this, args);
|
|
39
244
|
const { input, output } = extractUsage(response);
|
|
@@ -51,19 +256,13 @@ function wrapMethod(bound, opts) {
|
|
|
51
256
|
error_message: null,
|
|
52
257
|
correlation_id: correlationId,
|
|
53
258
|
tenant_id: opts.tenantId,
|
|
54
|
-
...(opts.environment !== null
|
|
55
|
-
|
|
56
|
-
: {}),
|
|
57
|
-
...(opts.connectionId !== null
|
|
58
|
-
? { connection_id: opts.connectionId }
|
|
59
|
-
: {}),
|
|
259
|
+
...(opts.environment !== null ? { environment: opts.environment } : {}),
|
|
260
|
+
...(opts.connectionId !== null ? { connection_id: opts.connectionId } : {}),
|
|
60
261
|
};
|
|
61
262
|
try {
|
|
62
263
|
opts.transport.post(obs);
|
|
63
264
|
}
|
|
64
|
-
catch {
|
|
65
|
-
// belt-and-suspenders: transport itself is fail-open
|
|
66
|
-
}
|
|
265
|
+
catch { /* belt-and-suspenders */ }
|
|
67
266
|
return response;
|
|
68
267
|
}
|
|
69
268
|
catch (err) {
|
|
@@ -81,26 +280,20 @@ function wrapMethod(bound, opts) {
|
|
|
81
280
|
error_message: `${err.name}: ${err.message}`,
|
|
82
281
|
correlation_id: correlationId,
|
|
83
282
|
tenant_id: opts.tenantId,
|
|
84
|
-
...(opts.environment !== null
|
|
85
|
-
|
|
86
|
-
: {}),
|
|
87
|
-
...(opts.connectionId !== null
|
|
88
|
-
? { connection_id: opts.connectionId }
|
|
89
|
-
: {}),
|
|
283
|
+
...(opts.environment !== null ? { environment: opts.environment } : {}),
|
|
284
|
+
...(opts.connectionId !== null ? { connection_id: opts.connectionId } : {}),
|
|
90
285
|
};
|
|
91
286
|
try {
|
|
92
287
|
opts.transport.post(obs);
|
|
93
288
|
}
|
|
94
|
-
catch {
|
|
95
|
-
// see above
|
|
96
|
-
}
|
|
289
|
+
catch { /* belt-and-suspenders */ }
|
|
97
290
|
throw err;
|
|
98
291
|
}
|
|
99
292
|
};
|
|
100
293
|
Object.defineProperty(wrapped, MARKER, { value: true, enumerable: false });
|
|
101
294
|
return wrapped;
|
|
102
295
|
}
|
|
103
|
-
export function install(client, transport, tenantId, environment, connectionId) {
|
|
296
|
+
export function install(client, transport, tenantId, environment, connectionId, hardening) {
|
|
104
297
|
if (!client || typeof client !== "object")
|
|
105
298
|
return;
|
|
106
299
|
const c = client;
|
|
@@ -116,6 +309,8 @@ export function install(client, transport, tenantId, environment, connectionId)
|
|
|
116
309
|
tenantId,
|
|
117
310
|
environment,
|
|
118
311
|
connectionId,
|
|
312
|
+
hardening,
|
|
313
|
+
clientRef: client,
|
|
119
314
|
});
|
|
120
315
|
}
|
|
121
316
|
const legacy = c.completions;
|
|
@@ -130,6 +325,8 @@ export function install(client, transport, tenantId, environment, connectionId)
|
|
|
130
325
|
tenantId,
|
|
131
326
|
environment,
|
|
132
327
|
connectionId,
|
|
328
|
+
hardening: { ...hardening, appliedMode: false }, // legacy completions not proxied
|
|
329
|
+
clientRef: client,
|
|
133
330
|
});
|
|
134
331
|
}
|
|
135
332
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAC5C,MAAM,MAAM,GAAG,wBAAwB,CAAC;AAYxC,SAAS,MAAM;IACb,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,YAAY,CACnB,QAAiB;IAEjB,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IACD,MAAM,KAAK,GAAI,QAAgC,CAAC,KAAK,CAAC;IACtD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IACD,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3E,MAAM,MAAM,GACV,OAAO,CAAC,CAAC,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,MAAe;IACxC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,2BAA2B,CAAC;IAC9E,MAAM,GAAG,GAAI,MAAkC,CAAC,SAAS,CAAC,CAAC;IAC3D,qEAAqE;IACrE,sEAAsE;IACtE,qEAAqE;IACrE,MAAM,EAAE,GAAI,MAAkC,CAAC,gBAAgB,CAAC,CAAC;IACjE,IAAI,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,GAAI,EAA6B,CAAC,mBAAmB,CAAC,CAAC;QACjE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IAC/D,CAAC;IACD,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,2BAA2B,CAAC;AACrE,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAe;IACvC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,GAAG,GAAI,MAAkC,CAAC,QAAQ,CAAC,CAAC;IAC1D,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC;AAED,SAAS,UAAU,CACjB,KAA8B,EAC9B,IAWC;IAED,MAAM,OAAO,GAAG,KAAK,WAA0B,GAAG,IAAW;QAC3D,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,KAAK,GACT,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC;YAC5D,SAAS,CAAC;QACZ,MAAM,aAAa,GAAG,UAAU,EAAE,CAAC;QAEnC,qEAAqE;QACrE,IACE,IAAI,CAAC,SAAS,CAAC,WAAW;YAC1B,IAAI,CAAC,SAAS,CAAC,QAAQ;YACvB,IAAI,CAAC,SAAS,KAAK,kBAAkB,EACrC,CAAC;YACD,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtD,qEAAqE;YACrE,qEAAqE;YACrE,gDAAgD;YAChD,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;gBAC7D,CAAC,CAAG,IAAI,CAAC,SAAqC,CAAC,gBAAgB,CAAwC;gBACvG,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,YAAY,GAAG,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;YAEtD,MAAM,IAAI,GAA4B;gBACpC,GAAG,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;aACrB,CAAC;YAEF,oEAAoE;YACpE,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAE7D,IAAI,WAAoB,CAAC;YACzB,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,iBAAiB,GAAiB,IAAI,CAAC;YAE3C,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAE,IAAI,CAAC,SAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAC7E,MAAM,WAAW,GAAG,MAAM,QAAQ,EAAE,CAAC;oBACrC,WAAW,GAAG,MAAM,YAAY,CAAC;wBAC/B,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ;wBACjC,WAAW;wBACX,WAAW;wBACX,YAAY;wBACZ,IAAI;wBACJ,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;wBACpB,QAAQ,EAAE,QAAQ;wBAClB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;wBACjC,aAAa;wBACb,WAAW,EAAE,IAAI,CAAC,WAAW;wBAC7B,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK;wBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;wBACnC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB;wBACjD,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO;qBAChC,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,QAAQ,EAAE,CAAC;oBAClB,WAAW,GAAG,IAAI,CAAC;oBACnB,iBAAiB,GAAG,QAAiB,CAAC;gBACxC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;YAED,mEAAmE;YACnE,qCAAqC;YACrC,IAAI,WAAW,IAAI,cAAc,EAAE,CAAC;gBAClC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;oBACpC,0DAA0D;oBAC1D,MAAM,KAAK,GACT,iBAAiB,YAAY,oBAAoB;wBAC/C,CAAC,CAAC,iBAAiB;wBACnB,CAAC,CAAC,IAAI,oBAAoB,CACtB,iBAAiB,EAAE,OAAO,IAAI,mBAAmB,EACjD,EAAE,KAAK,EAAE,iBAAiB,IAAI,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CACtD,CAAC;oBACR,MAAM,GAAG,GAAgB;wBACvB,WAAW,EAAE,WAAW;wBACxB,QAAQ,EAAE,QAAQ;wBAClB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;wBACpB,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,UAAU,EAAE,SAAS;wBACrB,WAAW,EAAE,MAAM,EAAE;wBACrB,YAAY,EAAE,IAAI;wBAClB,aAAa,EAAE,IAAI;wBACnB,cAAc,EAAE,IAAI;wBACpB,MAAM,EAAE,OAAO;wBACf,aAAa,EAAE,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE;wBAChD,cAAc,EAAE,aAAa;wBAC7B,SAAS,EAAE,IAAI,CAAC,QAAQ;wBACxB,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACvE,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC5E,CAAC;oBACF,IAAI,CAAC;wBAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;oBACrE,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,sDAAsD;gBACtD,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;oBACzC,IAAI,EAAE,aAAa;oBACnB,QAAQ,EAAE,QAAQ;oBAClB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;oBACpB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;oBACjC,aAAa,EAAE,CAAC;oBAChB,SAAS,EAAE,CAAC;oBACZ,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ;iBACrD,CAAC,CAAC;gBAEH,IAAI,CAAC;oBACH,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBACrD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;oBACvD,MAAM,GAAG,GAAgB;wBACvB,WAAW,EAAE,WAAW;wBACxB,QAAQ,EAAE,QAAQ;wBAClB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;wBACpB,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,UAAU,EAAE,SAAS;wBACrB,WAAW,EAAE,MAAM,EAAE;wBACrB,YAAY,EAAE,KAAK;wBACnB,aAAa,EAAE,MAAM;wBACrB,cAAc,EAAE,IAAI;wBACpB,MAAM,EAAE,SAAS;wBACjB,aAAa,EAAE,IAAI;wBACnB,cAAc,EAAE,aAAa;wBAC7B,SAAS,EAAE,IAAI,CAAC,QAAQ;wBACxB,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACvE,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC5E,CAAC;oBACF,IAAI,CAAC;wBAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;oBACrE,OAAO,cAAc,CAAC;gBACxB,CAAC;gBAAC,OAAO,SAAS,EAAE,CAAC;oBACnB,MAAM,GAAG,GAAgB;wBACvB,WAAW,EAAE,WAAW;wBACxB,QAAQ,EAAE,QAAQ;wBAClB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;wBACpB,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,UAAU,EAAE,SAAS;wBACrB,WAAW,EAAE,MAAM,EAAE;wBACrB,YAAY,EAAE,IAAI;wBAClB,aAAa,EAAE,IAAI;wBACnB,cAAc,EAAE,IAAI;wBACpB,MAAM,EAAE,OAAO;wBACf,aAAa,EAAE,GAAI,SAAmB,CAAC,IAAI,KAAM,SAAmB,CAAC,OAAO,EAAE;wBAC9E,cAAc,EAAE,aAAa;wBAC7B,SAAS,EAAE,IAAI,CAAC,QAAQ;wBACxB,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACvE,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC5E,CAAC;oBACF,IAAI,CAAC;wBAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;oBACrE,MAAM,SAAS,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,wBAAwB;YACxB,MAAM,QAAQ,GAAG,WAAsC,CAAC;YACxD,MAAM,QAAQ,GAAG,QAAQ,EAAE,KAA4C,CAAC;YACxE,MAAM,KAAK,GACT,OAAO,QAAQ,EAAE,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9E,MAAM,MAAM,GACV,OAAO,QAAQ,EAAE,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC;YACtF,MAAM,GAAG,GAAgB;gBACvB,WAAW,EAAE,WAAW;gBACxB,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;gBACpB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,UAAU,EAAE,SAAS;gBACrB,WAAW,EAAE,MAAM,EAAE;gBACrB,YAAY,EAAE,KAAK;gBACnB,aAAa,EAAE,MAAM;gBACrB,cAAc,EAAE,IAAI;gBACpB,MAAM,EAAE,SAAS;gBACjB,aAAa,EAAE,IAAI;gBACnB,cAAc,EAAE,aAAa;gBAC7B,SAAS,EAAE,IAAI,CAAC,QAAQ;gBACxB,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;YACF,IAAI,CAAC;gBAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;YACrE,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,sEAAsE;QACtE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACjD,MAAM,GAAG,GAAgB;gBACvB,WAAW,EAAE,WAAW;gBACxB,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;gBACpB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,UAAU,EAAE,SAAS;gBACrB,WAAW,EAAE,MAAM,EAAE;gBACrB,YAAY,EAAE,KAAK;gBACnB,aAAa,EAAE,MAAM;gBACrB,cAAc,EAAE,IAAI;gBACpB,MAAM,EAAE,SAAS;gBACjB,aAAa,EAAE,IAAI;gBACnB,cAAc,EAAE,aAAa;gBAC7B,SAAS,EAAE,IAAI,CAAC,QAAQ;gBACxB,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;YACF,IAAI,CAAC;gBAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;YACrE,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAgB;gBACvB,WAAW,EAAE,WAAW;gBACxB,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;gBACpB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,UAAU,EAAE,SAAS;gBACrB,WAAW,EAAE,MAAM,EAAE;gBACrB,YAAY,EAAE,IAAI;gBAClB,aAAa,EAAE,IAAI;gBACnB,cAAc,EAAE,IAAI;gBACpB,MAAM,EAAE,OAAO;gBACf,aAAa,EAAE,GAAI,GAAa,CAAC,IAAI,KAAM,GAAa,CAAC,OAAO,EAAE;gBAClE,cAAc,EAAE,aAAa;gBAC7B,SAAS,EAAE,IAAI,CAAC,QAAQ;gBACxB,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;YACF,IAAI,CAAC;gBAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;YACrE,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,MAAe,EACf,SAA+B,EAC/B,QAAuB,EACvB,WAA0B,EAC1B,YAA2B,EAC3B,SAAmC;IAEnC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO;IAClD,MAAM,CAAC,GAAG,MAA6B,CAAC;IAExC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACpB,MAAM,eAAe,GACnB,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,IACE,eAAe;QACf,OAAO,eAAe,CAAC,MAAM,KAAK,UAAU;QAC5C,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,EAC/B,CAAC;QACD,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC3D,eAAe,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE;YACzC,SAAS,EAAE,kBAAkB;YAC7B,SAAS;YACT,QAAQ;YACR,WAAW;YACX,YAAY;YACZ,SAAS;YACT,SAAS,EAAE,MAAM;SAClB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC;IAC7B,IACE,MAAM;QACN,OAAO,MAAM,KAAK,QAAQ;QAC1B,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU;QACnC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EACtB,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE;YAChC,SAAS,EAAE,aAAa;YACxB,SAAS;YACT,QAAQ;YACR,WAAW;YACX,YAAY;YACZ,SAAS,EAAE,EAAE,GAAG,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,iCAAiC;YAClF,SAAS,EAAE,MAAM;SAClB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Applied-mode proxy HTTP client.
|
|
3
|
+
*
|
|
4
|
+
* This is the single place that combines retries, timeouts, typed errors,
|
|
5
|
+
* telemetry hooks, and the fail-open circuit breaker. The provider wrappers
|
|
6
|
+
* (openai.ts, anthropic.ts) call `proxyRequest()` instead of hitting the
|
|
7
|
+
* proxy directly.
|
|
8
|
+
*
|
|
9
|
+
* The contract:
|
|
10
|
+
* - Returns the parsed response body on success.
|
|
11
|
+
* - On all non-success outcomes, throws a subclass of TensorCostError.
|
|
12
|
+
* - Never swallows errors — the provider wrapper's fail-open logic
|
|
13
|
+
* (fall back to direct call on proxy failure) lives in the provider
|
|
14
|
+
* wrapper, not here.
|
|
15
|
+
*
|
|
16
|
+
* Timeout handling:
|
|
17
|
+
* - Non-streaming: AbortController fires after `timeoutMs` total.
|
|
18
|
+
* - Streaming is not handled in v1 (no stream: true support yet).
|
|
19
|
+
*
|
|
20
|
+
* Retry logic:
|
|
21
|
+
* - Retries on 5xx + network errors + 429.
|
|
22
|
+
* - Respects Retry-After on 429.
|
|
23
|
+
* - Stops at maxAttempts.
|
|
24
|
+
* - Does not retry on 4xx (except 429).
|
|
25
|
+
*
|
|
26
|
+
* Circuit breaker:
|
|
27
|
+
* - Maintained on the CircuitBreaker instance passed in.
|
|
28
|
+
* - When open, throws TensorCostProxyError immediately with a clear
|
|
29
|
+
* message so the provider wrapper can activate the direct-provider
|
|
30
|
+
* fallback.
|
|
31
|
+
*/
|
|
32
|
+
import { TensorCostError } from "./errors.js";
|
|
33
|
+
import type { RetryConfig } from "./retry.js";
|
|
34
|
+
import type { CircuitBreaker } from "./circuit.js";
|
|
35
|
+
import type { LifecycleEventCallback } from "./telemetry.js";
|
|
36
|
+
import type { Provider } from "./telemetry.js";
|
|
37
|
+
export interface ProxyRequestOptions {
|
|
38
|
+
proxyUrl: string;
|
|
39
|
+
bearerToken: string;
|
|
40
|
+
providerUrl: string;
|
|
41
|
+
providerAuth: string;
|
|
42
|
+
body: Record<string, unknown>;
|
|
43
|
+
model: string;
|
|
44
|
+
provider: Provider;
|
|
45
|
+
operation: string;
|
|
46
|
+
correlationId: string;
|
|
47
|
+
environment: string | null;
|
|
48
|
+
retry?: RetryConfig;
|
|
49
|
+
timeoutMs?: number;
|
|
50
|
+
onLifecycleEvent?: LifecycleEventCallback;
|
|
51
|
+
circuit: CircuitBreaker;
|
|
52
|
+
/** Injected fetch implementation (for testing). Defaults to globalThis.fetch. */
|
|
53
|
+
fetchImpl?: typeof fetch;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Execute a single proxied request with retries, timeouts, telemetry,
|
|
57
|
+
* and circuit-breaker integration.
|
|
58
|
+
*
|
|
59
|
+
* Throws a `TensorCostError` subclass on any failure.
|
|
60
|
+
* Returns the parsed JSON body on success.
|
|
61
|
+
*/
|
|
62
|
+
export declare function proxyRequest(opts: ProxyRequestOptions): Promise<unknown>;
|
|
63
|
+
export { TensorCostError };
|
|
64
|
+
//# sourceMappingURL=proxy-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy-client.d.ts","sourceRoot":"","sources":["../src/proxy-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EACL,eAAe,EAMhB,MAAM,aAAa,CAAC;AAQrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,OAAO,EAAE,cAAc,CAAC;IAExB,iFAAiF;IACjF,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAID;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,OAAO,CAAC,CAiQlB;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
|