@tensorcost/sdk 0.5.0 → 1.0.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 (100) hide show
  1. package/CHANGELOG.md +117 -0
  2. package/README.md +63 -95
  3. package/dist/adapters/crewai.d.ts +4 -0
  4. package/dist/adapters/crewai.d.ts.map +1 -0
  5. package/dist/adapters/crewai.js +6 -0
  6. package/dist/adapters/crewai.js.map +1 -0
  7. package/dist/adapters/langchain.d.ts +4 -0
  8. package/dist/adapters/langchain.d.ts.map +1 -0
  9. package/dist/adapters/langchain.js +6 -0
  10. package/dist/adapters/langchain.js.map +1 -0
  11. package/dist/adapters/llamaindex.d.ts +4 -0
  12. package/dist/adapters/llamaindex.d.ts.map +1 -0
  13. package/dist/adapters/llamaindex.js +6 -0
  14. package/dist/adapters/llamaindex.js.map +1 -0
  15. package/dist/adapters/vercel-ai.d.ts +4 -0
  16. package/dist/adapters/vercel-ai.d.ts.map +1 -0
  17. package/dist/adapters/vercel-ai.js +6 -0
  18. package/dist/adapters/vercel-ai.js.map +1 -0
  19. package/dist/admit-client.d.ts +39 -0
  20. package/dist/admit-client.d.ts.map +1 -0
  21. package/dist/admit-client.js +93 -0
  22. package/dist/admit-client.js.map +1 -0
  23. package/dist/applied.d.ts +6 -1
  24. package/dist/applied.d.ts.map +1 -1
  25. package/dist/applied.js +13 -1
  26. package/dist/applied.js.map +1 -1
  27. package/dist/circuit-observations.d.ts +12 -0
  28. package/dist/circuit-observations.d.ts.map +1 -0
  29. package/dist/circuit-observations.js +37 -0
  30. package/dist/circuit-observations.js.map +1 -0
  31. package/dist/circuit.d.ts +4 -1
  32. package/dist/circuit.d.ts.map +1 -1
  33. package/dist/circuit.js +13 -7
  34. package/dist/circuit.js.map +1 -1
  35. package/dist/config.d.ts +2 -3
  36. package/dist/config.d.ts.map +1 -1
  37. package/dist/config.js +74 -6
  38. package/dist/config.js.map +1 -1
  39. package/dist/decision.d.ts +11 -0
  40. package/dist/decision.d.ts.map +1 -0
  41. package/dist/decision.js +40 -0
  42. package/dist/decision.js.map +1 -0
  43. package/dist/errors.d.ts +40 -0
  44. package/dist/errors.d.ts.map +1 -1
  45. package/dist/errors.js +46 -0
  46. package/dist/errors.js.map +1 -1
  47. package/dist/index.d.ts +8 -3
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +7 -2
  50. package/dist/index.js.map +1 -1
  51. package/dist/layer.d.ts +27 -0
  52. package/dist/layer.d.ts.map +1 -0
  53. package/dist/layer.js +77 -0
  54. package/dist/layer.js.map +1 -0
  55. package/dist/providers/anthropic.d.ts +11 -1
  56. package/dist/providers/anthropic.d.ts.map +1 -1
  57. package/dist/providers/anthropic.js +196 -18
  58. package/dist/providers/anthropic.js.map +1 -1
  59. package/dist/providers/bedrock.d.ts +1 -1
  60. package/dist/providers/bedrock.d.ts.map +1 -1
  61. package/dist/providers/bedrock.js +21 -3
  62. package/dist/providers/bedrock.js.map +1 -1
  63. package/dist/providers/detect.d.ts.map +1 -1
  64. package/dist/providers/detect.js +17 -2
  65. package/dist/providers/detect.js.map +1 -1
  66. package/dist/providers/index.d.ts +1 -0
  67. package/dist/providers/index.d.ts.map +1 -1
  68. package/dist/providers/index.js +1 -0
  69. package/dist/providers/index.js.map +1 -1
  70. package/dist/providers/openai.d.ts +11 -1
  71. package/dist/providers/openai.d.ts.map +1 -1
  72. package/dist/providers/openai.js +255 -20
  73. package/dist/providers/openai.js.map +1 -1
  74. package/dist/providers/vertex.d.ts +14 -0
  75. package/dist/providers/vertex.d.ts.map +1 -0
  76. package/dist/providers/vertex.js +174 -0
  77. package/dist/providers/vertex.js.map +1 -0
  78. package/dist/proxy-client.d.ts +37 -1
  79. package/dist/proxy-client.d.ts.map +1 -1
  80. package/dist/proxy-client.js +124 -4
  81. package/dist/proxy-client.js.map +1 -1
  82. package/dist/sdk-layer.d.ts +26 -0
  83. package/dist/sdk-layer.d.ts.map +1 -0
  84. package/dist/sdk-layer.js +73 -0
  85. package/dist/sdk-layer.js.map +1 -0
  86. package/dist/transport.d.ts +6 -1
  87. package/dist/transport.d.ts.map +1 -1
  88. package/dist/transport.js +14 -3
  89. package/dist/transport.js.map +1 -1
  90. package/dist/types.d.ts +178 -17
  91. package/dist/types.d.ts.map +1 -1
  92. package/dist/version.d.ts +9 -0
  93. package/dist/version.d.ts.map +1 -0
  94. package/dist/version.js +10 -0
  95. package/dist/version.js.map +1 -0
  96. package/dist/wrap.d.ts +13 -14
  97. package/dist/wrap.d.ts.map +1 -1
  98. package/dist/wrap.js +66 -59
  99. package/dist/wrap.js.map +1 -1
  100. package/package.json +7 -2
package/dist/wrap.js CHANGED
@@ -5,20 +5,11 @@
5
5
  * ergonomics non-negotiable: customer changes one line, no other code
6
6
  * paths shift.
7
7
  *
8
- * Applied mode (Layer 2): when `options.appliedMode=true`, the client's
9
- * baseURL is permanently redirected to the TensorCost inference-proxy and
10
- * two custom headers (`x-tc-provider-url`, `x-tc-provider-auth`) are
11
- * injected into `client.defaultHeaders`. The proxy handles per-request
12
- * routing decisions. Observe-only telemetry still fires post-call.
13
- *
14
- * Hardening (v0.4.0): applied-mode requests now go through the proxy-client
15
- * module which adds retries, timeouts, typed errors, telemetry hooks, and
16
- * the fail-open circuit breaker.
17
- *
18
- * Bedrock (v0.4.0): observe-only. Applied mode is not supported for Bedrock —
19
- * wrap(bedrockClient, { appliedMode: true }) throws TensorCostConfigError.
20
- * The Smithy middleware registered on client.middlewareStack intercepts
21
- * every client.send() call transparently.
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)
22
13
  */
23
14
  import { resolveConfig } from "./config.js";
24
15
  import { TensorCostConfigError } from "./config.js";
@@ -28,66 +19,82 @@ import { installAppliedMode } from "./applied.js";
28
19
  import * as openaiProvider from "./providers/openai.js";
29
20
  import * as anthropicProvider from "./providers/anthropic.js";
30
21
  import * as bedrockProvider from "./providers/bedrock.js";
22
+ import * as vertexProvider from "./providers/vertex.js";
31
23
  import { CircuitBreaker } from "./circuit.js";
24
+ import { bindCircuitObservations } from "./circuit-observations.js";
25
+ import { layerRank, needsProxyUrl } from "./layer.js";
26
+ import { SdkLayerClient } from "./sdk-layer.js";
27
+ function steerRouteUnsupportedError(provider, maxLayer) {
28
+ return new TensorCostConfigError(`TensorCost maxLayer '${maxLayer}' is not supported for ${provider} clients. ` +
29
+ "Bedrock and Vertex use provider-native signing that cannot be intercepted at " +
30
+ "the proxy layer. Use maxLayer 'govern' or lower for telemetry, or wrap an " +
31
+ "OpenAI / Anthropic client for steer/route.");
32
+ }
32
33
  export function wrap(client, options = {}) {
33
- // resolveConfig throws MissingConfigError when apiKey is absent, and
34
- // TensorCostConfigError when appliedMode=true with no proxyUrl.
35
- // Both are intentional non-fail-open cases — see config.ts header.
36
34
  const config = resolveConfig(options);
35
+ // L0 off — no transport, no provider hooks.
36
+ if (config.maxLayer === "off") {
37
+ return client;
38
+ }
39
+ const provider = detectProvider(client);
40
+ if (needsProxyUrl(config.maxLayer) &&
41
+ (provider === "bedrock" || provider === "vertex")) {
42
+ throw steerRouteUnsupportedError(provider, config.maxLayer);
43
+ }
37
44
  const transport = new ObservationTransport({
38
45
  baseUrl: config.baseUrl,
39
46
  apiKey: config.apiKey,
47
+ tenantId: config.tenantId,
40
48
  failOpen: config.failOpen,
41
49
  });
42
- const provider = detectProvider(client);
43
- // Bedrock does not support applied mode. SigV4 signing happens inside
44
- // the AWS SDK before our middleware can intercept the request, and the
45
- // signed URL/headers are region-specific. Fail loudly here rather than
46
- // silently ignoring the option — the customer almost certainly made a
47
- // configuration mistake.
48
- if (provider === "bedrock" && config.appliedMode) {
49
- throw new TensorCostConfigError("TensorCost applied mode is not supported for AWS Bedrock clients. " +
50
- "Bedrock uses SigV4 signing that cannot be intercepted at the proxy layer. " +
51
- "Remove { appliedMode: true } or use an OpenAI / Anthropic client instead.");
52
- }
53
- // Applied mode: redirect the client to the proxy before installing
54
- // the observe-only wrappers. Order matters — installAppliedMode mutates
55
- // baseURL and defaultHeaders, and the provider wrappers capture the
56
- // (now-modified) bound methods, so post-call observations correctly
57
- // attribute the response to the original provider model even though
58
- // the network call went through the proxy.
59
- if (config.appliedMode && config.proxyUrl !== null) {
60
- installAppliedMode(client, config.proxyUrl, provider);
50
+ const sdkLayer = new SdkLayerClient({
51
+ baseUrl: config.baseUrl,
52
+ getToken: () => transport.getToken(),
53
+ });
54
+ if (needsProxyUrl(config.maxLayer) &&
55
+ config.proxyUrl !== null &&
56
+ (provider === "openai" || provider === "anthropic")) {
57
+ installAppliedMode(client, config.proxyUrl, provider, {
58
+ application: config.application,
59
+ tags: config.tags,
60
+ customer: config.customer,
61
+ feature: config.feature,
62
+ });
61
63
  }
62
- // One circuit breaker per wrap() call — shared across all requests
63
- // dispatched through this client instance.
64
- const circuit = new CircuitBreaker();
64
+ const circuit = new CircuitBreaker(undefined, bindCircuitObservations(transport, {
65
+ provider,
66
+ tenantId: config.tenantId,
67
+ environment: config.environment,
68
+ }));
69
+ const hardening = {
70
+ maxLayer: config.maxLayer,
71
+ appliedMode: config.appliedMode,
72
+ proxyUrl: config.proxyUrl,
73
+ baseUrl: config.baseUrl,
74
+ sdkLayer,
75
+ retry: config.retry,
76
+ timeoutMs: config.timeoutMs,
77
+ onLifecycleEvent: config.onLifecycleEvent,
78
+ failOpenEnabled: config.failOpenEnabled,
79
+ circuit,
80
+ application: config.application,
81
+ tags: config.tags,
82
+ customer: config.customer,
83
+ feature: config.feature,
84
+ };
65
85
  if (provider === "openai") {
66
- openaiProvider.install(client, transport, config.tenantId, config.environment, config.connectionId, {
67
- appliedMode: config.appliedMode,
68
- proxyUrl: config.proxyUrl,
69
- retry: config.retry,
70
- timeoutMs: config.timeoutMs,
71
- onLifecycleEvent: config.onLifecycleEvent,
72
- failOpenEnabled: config.failOpenEnabled,
73
- circuit,
74
- });
86
+ openaiProvider.install(client, transport, config.tenantId, config.environment, config.connectionId, hardening, config.deployment, config.promptTemplateId, config.agentId, config.workflowId);
75
87
  }
76
88
  else if (provider === "anthropic") {
77
- anthropicProvider.install(client, transport, config.tenantId, config.environment, config.connectionId, {
78
- appliedMode: config.appliedMode,
79
- proxyUrl: config.proxyUrl,
80
- retry: config.retry,
81
- timeoutMs: config.timeoutMs,
82
- onLifecycleEvent: config.onLifecycleEvent,
83
- failOpenEnabled: config.failOpenEnabled,
84
- circuit,
85
- });
89
+ anthropicProvider.install(client, transport, config.tenantId, config.environment, config.connectionId, hardening, config.deployment, config.promptTemplateId, config.agentId, config.workflowId);
90
+ }
91
+ else if (provider === "bedrock") {
92
+ bedrockProvider.install(client, transport, config.tenantId, config.environment, config.connectionId, config.deployment, config.promptTemplateId, config.agentId, config.workflowId, config.customer, config.feature);
86
93
  }
87
94
  else {
88
- // provider === "bedrock"
89
- bedrockProvider.install(client, transport, config.tenantId, config.environment, config.connectionId);
95
+ vertexProvider.install(client, transport, config.tenantId, config.environment, config.connectionId, config.deployment, config.promptTemplateId, config.agentId, config.workflowId, config.customer, config.feature);
90
96
  }
91
97
  return client;
92
98
  }
99
+ export const __test__ = { layerRank, steerRouteUnsupportedError };
93
100
  //# 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,7 +1,7 @@
1
1
  {
2
2
  "name": "@tensorcost/sdk",
3
- "version": "0.5.0",
4
- "description": "One-line wrapper SDK for TensorCost — fire-and-forget LLM observability for OpenAI, Anthropic, and AWS Bedrock clients.",
3
+ "version": "1.0.0",
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",
7
7
  "main": "./dist/index.js",
@@ -19,6 +19,9 @@
19
19
  "CHANGELOG.md",
20
20
  "LICENSE"
21
21
  ],
22
+ "publishConfig": {
23
+ "access": "public"
24
+ },
22
25
  "engines": {
23
26
  "node": ">=18.0.0"
24
27
  },
@@ -27,6 +30,8 @@
27
30
  "openai",
28
31
  "anthropic",
29
32
  "bedrock",
33
+ "vertex",
34
+ "google",
30
35
  "aws",
31
36
  "observability",
32
37
  "cost",