@tensorcost/sdk 1.4.0 → 1.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.
Files changed (64) hide show
  1. package/CHANGELOG.md +210 -0
  2. package/README.md +34 -16
  3. package/dist/admit-client.d.ts +17 -9
  4. package/dist/admit-client.d.ts.map +1 -1
  5. package/dist/admit-client.js +85 -30
  6. package/dist/admit-client.js.map +1 -1
  7. package/dist/applied.d.ts +114 -0
  8. package/dist/applied.d.ts.map +1 -1
  9. package/dist/applied.js +40 -50
  10. package/dist/applied.js.map +1 -1
  11. package/dist/errors.d.ts +155 -27
  12. package/dist/errors.d.ts.map +1 -1
  13. package/dist/errors.js +137 -27
  14. package/dist/errors.js.map +1 -1
  15. package/dist/index.d.ts +2 -2
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +2 -2
  18. package/dist/index.js.map +1 -1
  19. package/dist/provider-errors.d.ts +15 -0
  20. package/dist/provider-errors.d.ts.map +1 -0
  21. package/dist/provider-errors.js +69 -0
  22. package/dist/provider-errors.js.map +1 -0
  23. package/dist/providers/anthropic.d.ts +54 -0
  24. package/dist/providers/anthropic.d.ts.map +1 -1
  25. package/dist/providers/anthropic.js +57 -18
  26. package/dist/providers/anthropic.js.map +1 -1
  27. package/dist/providers/bedrock.d.ts +4 -1
  28. package/dist/providers/bedrock.d.ts.map +1 -1
  29. package/dist/providers/bedrock.js +3 -2
  30. package/dist/providers/bedrock.js.map +1 -1
  31. package/dist/providers/detect.d.ts.map +1 -1
  32. package/dist/providers/detect.js +9 -6
  33. package/dist/providers/detect.js.map +1 -1
  34. package/dist/providers/openai.d.ts.map +1 -1
  35. package/dist/providers/openai.js +21 -47
  36. package/dist/providers/openai.js.map +1 -1
  37. package/dist/providers/vertex.d.ts +17 -0
  38. package/dist/providers/vertex.d.ts.map +1 -1
  39. package/dist/providers/vertex.js +5 -2
  40. package/dist/providers/vertex.js.map +1 -1
  41. package/dist/proxy-client.d.ts +157 -0
  42. package/dist/proxy-client.d.ts.map +1 -1
  43. package/dist/proxy-client.js +188 -201
  44. package/dist/proxy-client.js.map +1 -1
  45. package/dist/refusal.d.ts +43 -0
  46. package/dist/refusal.d.ts.map +1 -0
  47. package/dist/refusal.js +154 -0
  48. package/dist/refusal.js.map +1 -0
  49. package/dist/transport.d.ts.map +1 -1
  50. package/dist/transport.js +45 -13
  51. package/dist/transport.js.map +1 -1
  52. package/dist/types.d.ts +15 -1
  53. package/dist/types.d.ts.map +1 -1
  54. package/dist/version.d.ts +1 -1
  55. package/dist/version.js +1 -1
  56. package/dist/wrap-overhead.d.ts +43 -0
  57. package/dist/wrap-overhead.d.ts.map +1 -1
  58. package/dist/wrap-overhead.js +28 -1
  59. package/dist/wrap-overhead.js.map +1 -1
  60. package/dist/wrap.d.ts +25 -0
  61. package/dist/wrap.d.ts.map +1 -1
  62. package/dist/wrap.js +51 -8
  63. package/dist/wrap.js.map +1 -1
  64. package/package.json +1 -1
package/dist/wrap.d.ts ADDED
@@ -0,0 +1,25 @@
1
+ /**
2
+ * The single public entry point: `wrap(client, options?)`.
3
+ *
4
+ * Returns the SAME client reference (mutates in place), per the SDK
5
+ * ergonomics non-negotiable: customer changes one line, no other code
6
+ * paths shift.
7
+ *
8
+ * Control layers:
9
+ * off — client returned unchanged (no transport, no hooks)
10
+ * observe — telemetry only
11
+ * govern — admit (metadata) then direct provider call
12
+ * steer/route — proxy in request path (OpenAI / Anthropic only)
13
+ */
14
+ import { TensorCostConfigError } from "./config.js";
15
+ import { layerRank } from "./layer.js";
16
+ import type { WrapOptions } from "./types.js";
17
+ declare function steerRouteUnsupportedError(provider: string, maxLayer: string): TensorCostConfigError;
18
+ export declare function wrap<T>(client: T, options?: WrapOptions): T;
19
+ export declare const __test__: {
20
+ layerRank: typeof layerRank;
21
+ steerRouteUnsupportedError: typeof steerRouteUnsupportedError;
22
+ resetWarnings(): void;
23
+ };
24
+ export {};
25
+ //# sourceMappingURL=wrap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../src/wrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AASpD,OAAO,EAAE,SAAS,EAAiB,MAAM,YAAY,CAAC;AAEtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,iBAAS,0BAA0B,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,qBAAqB,CAOvB;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAE,WAAgB,GAAG,CAAC,CAuH/D;AAED,eAAO,MAAM,QAAQ;;;CAA4C,CAAC"}
1
+ {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../src/wrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AASpD,OAAO,EAAE,SAAS,EAA6B,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,iBAAS,0BAA0B,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,qBAAqB,CAOvB;AA0BD,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAE,WAAgB,GAAG,CAAC,CAmJ/D;AAED,eAAO,MAAM,QAAQ;;;qBAGF,IAAI;CAGtB,CAAC"}
package/dist/wrap.js CHANGED
@@ -11,7 +11,7 @@
11
11
  * govern — admit (metadata) then direct provider call
12
12
  * steer/route — proxy in request path (OpenAI / Anthropic only)
13
13
  */
14
- import { resolveConfig } from "./config.js";
14
+ import { MissingConfigError, resolveConfig } from "./config.js";
15
15
  import { TensorCostConfigError } from "./config.js";
16
16
  import { detectProvider } from "./providers/detect.js";
17
17
  import { installAppliedMode } from "./applied.js";
@@ -21,7 +21,7 @@ import * as bedrockProvider from "./providers/bedrock.js";
21
21
  import * as vertexProvider from "./providers/vertex.js";
22
22
  import { CircuitBreaker } from "./circuit.js";
23
23
  import { bindCircuitObservations } from "./circuit-observations.js";
24
- import { layerRank, needsProxyUrl } from "./layer.js";
24
+ import { layerRank, needsAdmit, needsProxyUrl } from "./layer.js";
25
25
  import { getSharedRuntime, warmupSharedRuntime } from "./runtime.js";
26
26
  function steerRouteUnsupportedError(provider, maxLayer) {
27
27
  return new TensorCostConfigError(`TensorCost maxLayer '${maxLayer}' is not supported for ${provider} clients. ` +
@@ -29,6 +29,26 @@ function steerRouteUnsupportedError(provider, maxLayer) {
29
29
  "the proxy layer. Use maxLayer 'govern' or lower for telemetry, or wrap an " +
30
30
  "OpenAI / Anthropic client for steer/route.");
31
31
  }
32
+ const warned = new Set();
33
+ function warnOnce(key, message) {
34
+ if (warned.has(key))
35
+ return;
36
+ warned.add(key);
37
+ // eslint-disable-next-line no-console
38
+ console.warn(message);
39
+ }
40
+ /**
41
+ * Every layer talks to TensorCost with a short-lived token, and the token
42
+ * exchange needs the tenant id. Without one, no token: no /admit, no proxy
43
+ * call, no observation, and every call goes straight to the provider.
44
+ * Through 1.4.0 that happened silently, whatever maxLayer said.
45
+ */
46
+ function noTenantError(layer) {
47
+ return new MissingConfigError(`TensorCost maxLayer '${layer}' needs your tenant id, and none is set, so the SDK ` +
48
+ "could never check a call: stops, caps and budgets would not be enforced. Pass " +
49
+ "{ tenantId } to wrap() or set TENSORCOST_TENANT_ID. The console shows it under " +
50
+ "Developers › SDK setup, in the TENSORCOST_TENANT_ID line of the env block.");
51
+ }
32
52
  export function wrap(client, options = {}) {
33
53
  const config = resolveConfig(options);
34
54
  // L0 off — no transport, no provider hooks.
@@ -40,9 +60,26 @@ export function wrap(client, options = {}) {
40
60
  (provider === "bedrock" || provider === "vertex")) {
41
61
  throw steerRouteUnsupportedError(provider, config.maxLayer);
42
62
  }
63
+ if (!config.tenantId) {
64
+ if (needsAdmit(config.maxLayer))
65
+ throw noTenantError(config.maxLayer);
66
+ warnOnce("no-tenant", "tensorcost: no tenant id is set (tenantId or TENSORCOST_TENANT_ID), so the SDK " +
67
+ "can't get a token and no observations reach TensorCost. Calls are not affected. " +
68
+ "The console shows the id under Developers › SDK setup.");
69
+ }
70
+ // Bedrock and Vertex have no /admit check yet: govern is accepted but only
71
+ // observes. Said once, so nobody believes a cap is enforced there.
72
+ if ((provider === "bedrock" || provider === "vertex") && needsAdmit(config.maxLayer)) {
73
+ warnOnce(`govern-${provider}`, `tensorcost: govern isn't available for ${provider === "bedrock" ? "Bedrock" : "Vertex"} ` +
74
+ "yet; calls are observed only. Stops, caps and budgets are not enforced on this client.");
75
+ }
76
+ // Anthropic runs at govern at most until the proxy has a Messages route
77
+ // (warns once). Decided here, before installAppliedMode, so the client's
78
+ // baseURL is never pointed at a proxy route that doesn't exist.
79
+ const maxLayer = provider === "anthropic" ? anthropicProvider.anthropicLayer(config.maxLayer) : config.maxLayer;
43
80
  const { transport, sdkLayer } = getSharedRuntime(config);
44
81
  warmupSharedRuntime(config);
45
- if (needsProxyUrl(config.maxLayer) &&
82
+ if (needsProxyUrl(maxLayer) &&
46
83
  config.proxyUrl !== null &&
47
84
  (provider === "openai" || provider === "anthropic")) {
48
85
  installAppliedMode(client, config.proxyUrl, provider, {
@@ -59,8 +96,8 @@ export function wrap(client, options = {}) {
59
96
  environment: config.environment,
60
97
  }));
61
98
  const hardening = {
62
- maxLayer: config.maxLayer,
63
- appliedMode: config.appliedMode,
99
+ maxLayer,
100
+ appliedMode: needsProxyUrl(maxLayer) && config.appliedMode,
64
101
  proxyUrl: config.proxyUrl,
65
102
  baseUrl: config.baseUrl,
66
103
  sdkLayer,
@@ -84,12 +121,18 @@ export function wrap(client, options = {}) {
84
121
  anthropicProvider.install(client, transport, config.tenantId, config.environment, config.connectionId, hardening, config.deployment, config.promptTemplateId, config.agentId, config.workflowId);
85
122
  }
86
123
  else if (provider === "bedrock") {
87
- bedrockProvider.install(client, transport, config.tenantId, config.environment, config.connectionId, config.deployment, config.promptTemplateId, config.agentId, config.workflowId, config.customer, config.feature);
124
+ bedrockProvider.install(client, transport, config.tenantId, config.environment, config.connectionId, config.deployment, config.promptTemplateId, config.agentId, config.workflowId, config.customer, config.feature, { application: config.application, tags: config.tags });
88
125
  }
89
126
  else {
90
- vertexProvider.install(client, transport, config.tenantId, config.environment, config.connectionId, config.deployment, config.promptTemplateId, config.agentId, config.workflowId, config.customer, config.feature);
127
+ vertexProvider.install(client, transport, config.tenantId, config.environment, config.connectionId, config.deployment, config.promptTemplateId, config.agentId, config.workflowId, config.customer, config.feature, { application: config.application, tags: config.tags });
91
128
  }
92
129
  return client;
93
130
  }
94
- export const __test__ = { layerRank, steerRouteUnsupportedError };
131
+ export const __test__ = {
132
+ layerRank,
133
+ steerRouteUnsupportedError,
134
+ resetWarnings() {
135
+ warned.clear();
136
+ },
137
+ };
95
138
  //# sourceMappingURL=wrap.js.map
package/dist/wrap.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"wrap.js","sourceRoot":"","sources":["../src/wrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wrap.js","sourceRoot":"","sources":["../src/wrap.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tensorcost/sdk",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "One-line wrapper SDK for TensorCost — fire-and-forget LLM observability for OpenAI, Anthropic, AWS Bedrock, and Google Vertex AI clients.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",