@dexcost/sdk 0.2.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 (211) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +210 -0
  3. package/dist/adapters/_netbytes.d.ts +31 -0
  4. package/dist/adapters/_netbytes.d.ts.map +1 -0
  5. package/dist/adapters/_netbytes.js +154 -0
  6. package/dist/adapters/_netbytes.js.map +1 -0
  7. package/dist/adapters/aws-lambda.d.ts +41 -0
  8. package/dist/adapters/aws-lambda.d.ts.map +1 -0
  9. package/dist/adapters/aws-lambda.js +65 -0
  10. package/dist/adapters/aws-lambda.js.map +1 -0
  11. package/dist/adapters/browser.d.ts +52 -0
  12. package/dist/adapters/browser.d.ts.map +1 -0
  13. package/dist/adapters/browser.js +127 -0
  14. package/dist/adapters/browser.js.map +1 -0
  15. package/dist/adapters/compute-wrap.d.ts +33 -0
  16. package/dist/adapters/compute-wrap.d.ts.map +1 -0
  17. package/dist/adapters/compute-wrap.js +188 -0
  18. package/dist/adapters/compute-wrap.js.map +1 -0
  19. package/dist/adapters/data/aws_lambda_pricing.json +61 -0
  20. package/dist/adapters/gpu-wrap.d.ts +31 -0
  21. package/dist/adapters/gpu-wrap.d.ts.map +1 -0
  22. package/dist/adapters/gpu-wrap.js +147 -0
  23. package/dist/adapters/gpu-wrap.js.map +1 -0
  24. package/dist/adapters/http.d.ts +58 -0
  25. package/dist/adapters/http.d.ts.map +1 -0
  26. package/dist/adapters/http.js +769 -0
  27. package/dist/adapters/http.js.map +1 -0
  28. package/dist/adapters/index.d.ts +11 -0
  29. package/dist/adapters/index.d.ts.map +1 -0
  30. package/dist/adapters/index.js +12 -0
  31. package/dist/adapters/index.js.map +1 -0
  32. package/dist/adapters/network-accountant.d.ts +63 -0
  33. package/dist/adapters/network-accountant.d.ts.map +1 -0
  34. package/dist/adapters/network-accountant.js +153 -0
  35. package/dist/adapters/network-accountant.js.map +1 -0
  36. package/dist/cli/index.d.ts +13 -0
  37. package/dist/cli/index.d.ts.map +1 -0
  38. package/dist/cli/index.js +225 -0
  39. package/dist/cli/index.js.map +1 -0
  40. package/dist/cli/scanner.d.ts +39 -0
  41. package/dist/cli/scanner.d.ts.map +1 -0
  42. package/dist/cli/scanner.js +480 -0
  43. package/dist/cli/scanner.js.map +1 -0
  44. package/dist/clients.d.ts +54 -0
  45. package/dist/clients.d.ts.map +1 -0
  46. package/dist/clients.js +240 -0
  47. package/dist/clients.js.map +1 -0
  48. package/dist/cloud-detect.d.ts +96 -0
  49. package/dist/cloud-detect.d.ts.map +1 -0
  50. package/dist/cloud-detect.js +545 -0
  51. package/dist/cloud-detect.js.map +1 -0
  52. package/dist/core/auto-task.d.ts +20 -0
  53. package/dist/core/auto-task.d.ts.map +1 -0
  54. package/dist/core/auto-task.js +34 -0
  55. package/dist/core/auto-task.js.map +1 -0
  56. package/dist/core/cgroup-reader.d.ts +45 -0
  57. package/dist/core/cgroup-reader.d.ts.map +1 -0
  58. package/dist/core/cgroup-reader.js +124 -0
  59. package/dist/core/cgroup-reader.js.map +1 -0
  60. package/dist/core/cgroup-walker.d.ts +60 -0
  61. package/dist/core/cgroup-walker.d.ts.map +1 -0
  62. package/dist/core/cgroup-walker.js +166 -0
  63. package/dist/core/cgroup-walker.js.map +1 -0
  64. package/dist/core/compute-accountant.d.ts +51 -0
  65. package/dist/core/compute-accountant.d.ts.map +1 -0
  66. package/dist/core/compute-accountant.js +179 -0
  67. package/dist/core/compute-accountant.js.map +1 -0
  68. package/dist/core/compute-runtime.d.ts +42 -0
  69. package/dist/core/compute-runtime.d.ts.map +1 -0
  70. package/dist/core/compute-runtime.js +80 -0
  71. package/dist/core/compute-runtime.js.map +1 -0
  72. package/dist/core/config.d.ts +44 -0
  73. package/dist/core/config.d.ts.map +1 -0
  74. package/dist/core/config.js +66 -0
  75. package/dist/core/config.js.map +1 -0
  76. package/dist/core/context.d.ts +76 -0
  77. package/dist/core/context.d.ts.map +1 -0
  78. package/dist/core/context.js +91 -0
  79. package/dist/core/context.js.map +1 -0
  80. package/dist/core/fargate-metadata.d.ts +27 -0
  81. package/dist/core/fargate-metadata.d.ts.map +1 -0
  82. package/dist/core/fargate-metadata.js +102 -0
  83. package/dist/core/fargate-metadata.js.map +1 -0
  84. package/dist/core/gpu-accountant.d.ts +104 -0
  85. package/dist/core/gpu-accountant.d.ts.map +1 -0
  86. package/dist/core/gpu-accountant.js +383 -0
  87. package/dist/core/gpu-accountant.js.map +1 -0
  88. package/dist/core/gpu-runtime.d.ts +58 -0
  89. package/dist/core/gpu-runtime.d.ts.map +1 -0
  90. package/dist/core/gpu-runtime.js +131 -0
  91. package/dist/core/gpu-runtime.js.map +1 -0
  92. package/dist/core/heuristics.d.ts +74 -0
  93. package/dist/core/heuristics.d.ts.map +1 -0
  94. package/dist/core/heuristics.js +182 -0
  95. package/dist/core/heuristics.js.map +1 -0
  96. package/dist/core/models.d.ts +149 -0
  97. package/dist/core/models.d.ts.map +1 -0
  98. package/dist/core/models.js +226 -0
  99. package/dist/core/models.js.map +1 -0
  100. package/dist/core/nvml-reader.d.ts +114 -0
  101. package/dist/core/nvml-reader.d.ts.map +1 -0
  102. package/dist/core/nvml-reader.js +323 -0
  103. package/dist/core/nvml-reader.js.map +1 -0
  104. package/dist/core/session.d.ts +48 -0
  105. package/dist/core/session.d.ts.map +1 -0
  106. package/dist/core/session.js +123 -0
  107. package/dist/core/session.js.map +1 -0
  108. package/dist/core/tracker.d.ts +364 -0
  109. package/dist/core/tracker.d.ts.map +1 -0
  110. package/dist/core/tracker.js +1073 -0
  111. package/dist/core/tracker.js.map +1 -0
  112. package/dist/data/compute_prices.json +180 -0
  113. package/dist/data/egress_prices.json +418 -0
  114. package/dist/data/gpu_prices.json +412 -0
  115. package/dist/data/service_prices.json +2595 -0
  116. package/dist/dev-console.d.ts +12 -0
  117. package/dist/dev-console.d.ts.map +1 -0
  118. package/dist/dev-console.js +60 -0
  119. package/dist/dev-console.js.map +1 -0
  120. package/dist/index.d.ts +52 -0
  121. package/dist/index.d.ts.map +1 -0
  122. package/dist/index.js +61 -0
  123. package/dist/index.js.map +1 -0
  124. package/dist/instruments/anthropic.d.ts +26 -0
  125. package/dist/instruments/anthropic.d.ts.map +1 -0
  126. package/dist/instruments/anthropic.js +242 -0
  127. package/dist/instruments/anthropic.js.map +1 -0
  128. package/dist/instruments/bedrock.d.ts +29 -0
  129. package/dist/instruments/bedrock.d.ts.map +1 -0
  130. package/dist/instruments/bedrock.js +215 -0
  131. package/dist/instruments/bedrock.js.map +1 -0
  132. package/dist/instruments/cohere.d.ts +29 -0
  133. package/dist/instruments/cohere.d.ts.map +1 -0
  134. package/dist/instruments/cohere.js +237 -0
  135. package/dist/instruments/cohere.js.map +1 -0
  136. package/dist/instruments/gemini.d.ts +30 -0
  137. package/dist/instruments/gemini.d.ts.map +1 -0
  138. package/dist/instruments/gemini.js +247 -0
  139. package/dist/instruments/gemini.js.map +1 -0
  140. package/dist/instruments/index.d.ts +35 -0
  141. package/dist/instruments/index.d.ts.map +1 -0
  142. package/dist/instruments/index.js +54 -0
  143. package/dist/instruments/index.js.map +1 -0
  144. package/dist/instruments/mcp.d.ts +24 -0
  145. package/dist/instruments/mcp.d.ts.map +1 -0
  146. package/dist/instruments/mcp.js +459 -0
  147. package/dist/instruments/mcp.js.map +1 -0
  148. package/dist/instruments/openai.d.ts +26 -0
  149. package/dist/instruments/openai.d.ts.map +1 -0
  150. package/dist/instruments/openai.js +221 -0
  151. package/dist/instruments/openai.js.map +1 -0
  152. package/dist/instruments/vercel-ai.d.ts +28 -0
  153. package/dist/instruments/vercel-ai.d.ts.map +1 -0
  154. package/dist/instruments/vercel-ai.js +192 -0
  155. package/dist/instruments/vercel-ai.js.map +1 -0
  156. package/dist/integrations/langchain.d.ts +65 -0
  157. package/dist/integrations/langchain.d.ts.map +1 -0
  158. package/dist/integrations/langchain.js +165 -0
  159. package/dist/integrations/langchain.js.map +1 -0
  160. package/dist/middleware/express.d.ts +55 -0
  161. package/dist/middleware/express.d.ts.map +1 -0
  162. package/dist/middleware/express.js +101 -0
  163. package/dist/middleware/express.js.map +1 -0
  164. package/dist/middleware/index.d.ts +6 -0
  165. package/dist/middleware/index.d.ts.map +1 -0
  166. package/dist/middleware/index.js +5 -0
  167. package/dist/middleware/index.js.map +1 -0
  168. package/dist/pricing/compute-pricing.d.ts +57 -0
  169. package/dist/pricing/compute-pricing.d.ts.map +1 -0
  170. package/dist/pricing/compute-pricing.js +627 -0
  171. package/dist/pricing/compute-pricing.js.map +1 -0
  172. package/dist/pricing/cost_map.json +37665 -0
  173. package/dist/pricing/egress-pricing.d.ts +55 -0
  174. package/dist/pricing/egress-pricing.d.ts.map +1 -0
  175. package/dist/pricing/egress-pricing.js +226 -0
  176. package/dist/pricing/egress-pricing.js.map +1 -0
  177. package/dist/pricing/engine.d.ts +24 -0
  178. package/dist/pricing/engine.d.ts.map +1 -0
  179. package/dist/pricing/engine.js +148 -0
  180. package/dist/pricing/engine.js.map +1 -0
  181. package/dist/pricing/gpu-pricing.d.ts +63 -0
  182. package/dist/pricing/gpu-pricing.d.ts.map +1 -0
  183. package/dist/pricing/gpu-pricing.js +484 -0
  184. package/dist/pricing/gpu-pricing.js.map +1 -0
  185. package/dist/pricing/rates.d.ts +17 -0
  186. package/dist/pricing/rates.d.ts.map +1 -0
  187. package/dist/pricing/rates.js +102 -0
  188. package/dist/pricing/rates.js.map +1 -0
  189. package/dist/pricing/service-catalog.d.ts +87 -0
  190. package/dist/pricing/service-catalog.d.ts.map +1 -0
  191. package/dist/pricing/service-catalog.js +406 -0
  192. package/dist/pricing/service-catalog.js.map +1 -0
  193. package/dist/schema/dexcost-event.v1.json +111 -0
  194. package/dist/schema/dexcost-task.v1.json +160 -0
  195. package/dist/schema/validate.d.ts +15 -0
  196. package/dist/schema/validate.d.ts.map +1 -0
  197. package/dist/schema/validate.js +87 -0
  198. package/dist/schema/validate.js.map +1 -0
  199. package/dist/security/redaction.d.ts +55 -0
  200. package/dist/security/redaction.d.ts.map +1 -0
  201. package/dist/security/redaction.js +144 -0
  202. package/dist/security/redaction.js.map +1 -0
  203. package/dist/transport/buffer.d.ts +117 -0
  204. package/dist/transport/buffer.d.ts.map +1 -0
  205. package/dist/transport/buffer.js +759 -0
  206. package/dist/transport/buffer.js.map +1 -0
  207. package/dist/transport/pusher.d.ts +89 -0
  208. package/dist/transport/pusher.d.ts.map +1 -0
  209. package/dist/transport/pusher.js +323 -0
  210. package/dist/transport/pusher.js.map +1 -0
  211. package/package.json +93 -0
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Google Gemini auto-instrumentation for dexcost TypeScript SDK.
3
+ *
4
+ * Monkey-patches `GenerativeModel.prototype.generateContent` to automatically
5
+ * record cost events and aggregate token usage on the active task context.
6
+ *
7
+ * Token usage from response.usageMetadata (promptTokenCount,
8
+ * candidatesTokenCount, cachedContentTokenCount).
9
+ *
10
+ * Supports both non-streaming and streaming responses (generateContentStream).
11
+ */
12
+ import { randomUUID } from "node:crypto";
13
+ import { createCostEvent } from "../core/models.js";
14
+ import { getCurrentTask } from "../core/context.js";
15
+ import { createAutoTask } from "../core/auto-task.js";
16
+ import { registerInstrument } from "./index.js";
17
+ /* eslint-disable @typescript-eslint/no-explicit-any */
18
+ let _patched = false;
19
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
20
+ let _originalGenerateContent = null;
21
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
22
+ let _originalGenerateContentStream = null;
23
+ let _generativeModelClass = null;
24
+ let _buffer = null;
25
+ let _pricing = null;
26
+ /** Test helper: inject a mock GenerativeModel class so tests avoid importing @google/generative-ai. */
27
+ export function _setGenerativeModelClass(cls) {
28
+ _generativeModelClass = cls;
29
+ }
30
+ /** Test helper: reset to real module resolution. */
31
+ export function _resetGenerativeModelClass() {
32
+ _generativeModelClass = null;
33
+ }
34
+ /**
35
+ * Patch `GenerativeModel.prototype.generateContent` and
36
+ * `GenerativeModel.prototype.generateContentStream` to record cost events.
37
+ *
38
+ * If `@google/generative-ai` is not installed and no mock class is injected,
39
+ * the dynamic import will throw and the function will reject.
40
+ */
41
+ export async function instrumentGemini(pricing, buffer) {
42
+ if (_patched)
43
+ return;
44
+ let GenerativeModelProto;
45
+ if (_generativeModelClass) {
46
+ GenerativeModelProto = _generativeModelClass.prototype;
47
+ }
48
+ else {
49
+ // @google/generative-ai is an optional peer dependency; the dynamic import
50
+ // only succeeds at runtime if the user has installed it.
51
+ // @ts-expect-error -- google generative-ai types are not bundled with dexcost
52
+ const geminiModule = await import("@google/generative-ai");
53
+ const mod = geminiModule.default ?? geminiModule;
54
+ GenerativeModelProto = mod.GenerativeModel.prototype;
55
+ }
56
+ _originalGenerateContent = GenerativeModelProto.generateContent;
57
+ _originalGenerateContentStream = GenerativeModelProto.generateContentStream;
58
+ _buffer = buffer;
59
+ _pricing = pricing;
60
+ GenerativeModelProto.generateContent = async function (...args) {
61
+ let task = getCurrentTask();
62
+ // Auto-create a task when no explicit task is active so LLM costs
63
+ // are never silently lost (mirrors Python create_auto_task).
64
+ if (!task) {
65
+ task = createAutoTask("gemini.generateContent");
66
+ _buffer?.upsertTask(task);
67
+ }
68
+ const startTime = performance.now();
69
+ const response = await _originalGenerateContent.apply(this, args);
70
+ try {
71
+ const latencyMs = Math.round(performance.now() - startTime);
72
+ const model = this.model ?? this._modelParams?.model ?? "unknown";
73
+ recordEvent(response?.response ?? response, model, task, latencyMs);
74
+ }
75
+ catch {
76
+ // dexcost errors must never crash user code
77
+ }
78
+ return response;
79
+ };
80
+ GenerativeModelProto.generateContentStream = async function (...args) {
81
+ let task = getCurrentTask();
82
+ if (!task) {
83
+ task = createAutoTask("gemini.generateContentStream");
84
+ _buffer?.upsertTask(task);
85
+ }
86
+ const startTime = performance.now();
87
+ const streamResult = await _originalGenerateContentStream.apply(this, args);
88
+ const model = this.model ?? this._modelParams?.model ?? "unknown";
89
+ return wrapStream(streamResult, model, task, startTime);
90
+ };
91
+ _patched = true;
92
+ }
93
+ /**
94
+ * Remove the monkey-patches and restore the original methods.
95
+ */
96
+ export function uninstrumentGemini() {
97
+ if (!_patched || !_originalGenerateContent)
98
+ return;
99
+ if (_generativeModelClass) {
100
+ _generativeModelClass.prototype.generateContent = _originalGenerateContent;
101
+ if (_originalGenerateContentStream) {
102
+ _generativeModelClass.prototype.generateContentStream = _originalGenerateContentStream;
103
+ }
104
+ }
105
+ _originalGenerateContent = null;
106
+ _originalGenerateContentStream = null;
107
+ _buffer = null;
108
+ _pricing = null;
109
+ _patched = false;
110
+ }
111
+ // ---------------------------------------------------------------------------
112
+ // Internal helpers
113
+ // ---------------------------------------------------------------------------
114
+ function recordEvent(response, model, task, latencyMs) {
115
+ if (!_buffer || !_pricing)
116
+ return;
117
+ const usage = response?.usageMetadata;
118
+ const hasUsage = usage != null;
119
+ const inputTokens = usage?.promptTokenCount ?? 0;
120
+ const outputTokens = usage?.candidatesTokenCount ?? 0;
121
+ const cachedTokens = usage?.cachedContentTokenCount ?? 0;
122
+ let costUsd = 0;
123
+ let costConfidence = "estimated";
124
+ let pricingSource = "unknown";
125
+ if (hasUsage) {
126
+ const result = _pricing.getCost(model, inputTokens, outputTokens, cachedTokens);
127
+ costUsd = result.costUsd;
128
+ costConfidence = result.costConfidence;
129
+ pricingSource = result.pricingSource;
130
+ }
131
+ const event = createCostEvent({
132
+ eventId: randomUUID(),
133
+ taskId: task.taskId,
134
+ eventType: "llm_call",
135
+ costUsd,
136
+ costConfidence,
137
+ pricingSource,
138
+ provider: "google",
139
+ model,
140
+ inputTokens,
141
+ outputTokens,
142
+ cachedTokens,
143
+ latencyMs,
144
+ isRetry: false,
145
+ });
146
+ _buffer.addEvent(event);
147
+ task.llmCostUsd += costUsd;
148
+ task.totalCostUsd += costUsd;
149
+ task.totalInputTokens += inputTokens;
150
+ task.totalOutputTokens += outputTokens;
151
+ task.totalCachedTokens += cachedTokens;
152
+ _buffer.upsertTask(task);
153
+ }
154
+ function wrapStream(rawStream, model, task, startTime) {
155
+ // Gemini streaming returns an object with a `stream` async iterable
156
+ // and a `response` promise. We wrap the stream to capture usage at the end.
157
+ const stream = rawStream?.stream;
158
+ if (!stream || typeof stream[Symbol.asyncIterator] !== "function") {
159
+ return rawStream;
160
+ }
161
+ let inputTokens = 0;
162
+ let outputTokens = 0;
163
+ let cachedTokens = 0;
164
+ let hasUsage = false;
165
+ let finalized = false;
166
+ const wrappedStream = {
167
+ [Symbol.asyncIterator]() {
168
+ const iter = stream[Symbol.asyncIterator]();
169
+ return {
170
+ async next() {
171
+ const result = await iter.next();
172
+ if (result.done) {
173
+ if (finalized)
174
+ return result;
175
+ finalized = true;
176
+ try {
177
+ const latencyMs = Math.round(performance.now() - startTime);
178
+ if (hasUsage && _pricing && _buffer) {
179
+ const costResult = _pricing.getCost(model, inputTokens, outputTokens, cachedTokens);
180
+ const event = createCostEvent({
181
+ eventId: randomUUID(),
182
+ taskId: task.taskId,
183
+ eventType: "llm_call",
184
+ costUsd: costResult.costUsd,
185
+ costConfidence: costResult.costConfidence,
186
+ pricingSource: costResult.pricingSource,
187
+ provider: "google",
188
+ model,
189
+ inputTokens,
190
+ outputTokens,
191
+ cachedTokens,
192
+ latencyMs,
193
+ isRetry: false,
194
+ });
195
+ _buffer.addEvent(event);
196
+ task.llmCostUsd += costResult.costUsd;
197
+ task.totalCostUsd += costResult.costUsd;
198
+ task.totalInputTokens += inputTokens;
199
+ task.totalOutputTokens += outputTokens;
200
+ task.totalCachedTokens += cachedTokens;
201
+ _buffer.upsertTask(task);
202
+ }
203
+ else if (_buffer) {
204
+ const event = createCostEvent({
205
+ eventId: randomUUID(),
206
+ taskId: task.taskId,
207
+ eventType: "llm_call",
208
+ costUsd: 0,
209
+ costConfidence: "estimated",
210
+ pricingSource: "unknown",
211
+ provider: "google",
212
+ model,
213
+ inputTokens: 0,
214
+ outputTokens: 0,
215
+ latencyMs,
216
+ isRetry: false,
217
+ });
218
+ _buffer.addEvent(event);
219
+ _buffer.upsertTask(task);
220
+ }
221
+ }
222
+ catch {
223
+ // dexcost errors must never crash user code
224
+ }
225
+ return result;
226
+ }
227
+ const chunk = result.value;
228
+ if (chunk?.usageMetadata) {
229
+ hasUsage = true;
230
+ inputTokens = chunk.usageMetadata.promptTokenCount ?? inputTokens;
231
+ outputTokens = chunk.usageMetadata.candidatesTokenCount ?? outputTokens;
232
+ cachedTokens = chunk.usageMetadata.cachedContentTokenCount ?? cachedTokens;
233
+ }
234
+ return result;
235
+ },
236
+ };
237
+ },
238
+ };
239
+ // Return an object that preserves the original shape: { stream, response }
240
+ return {
241
+ stream: wrappedStream,
242
+ response: rawStream.response,
243
+ };
244
+ }
245
+ // Self-register so importing this module is enough to make the instrument available.
246
+ registerInstrument("gemini", instrumentGemini, uninstrumentGemini);
247
+ //# sourceMappingURL=gemini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/instruments/gemini.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Instrument registry for dexcost TypeScript SDK.
3
+ *
4
+ * Provides a central registry where provider-specific instrumentation modules
5
+ * (e.g., OpenAI, Anthropic) can self-register. The main SDK entry point uses
6
+ * `instrumentProvider` / `uninstrumentProvider` to activate and deactivate
7
+ * monkey-patches on demand.
8
+ */
9
+ import type { PricingEngine } from "../pricing/engine.js";
10
+ import type { EventBuffer } from "../transport/buffer.js";
11
+ /** All provider instruments the SDK ships with. */
12
+ export declare const ALL_SUPPORTED_INSTRUMENTS: readonly ["openai", "anthropic", "vercel-ai", "gemini", "bedrock", "cohere", "mcp"];
13
+ /** Union type of supported instrument names. */
14
+ export type InstrumentName = (typeof ALL_SUPPORTED_INSTRUMENTS)[number];
15
+ type InstrumentFn = (pricing: PricingEngine, buffer: EventBuffer) => Promise<void>;
16
+ type UninstrumentFn = () => void;
17
+ /**
18
+ * Register an instrument by name.
19
+ *
20
+ * Called at module load time by each provider instrument (e.g., `openai.ts`).
21
+ */
22
+ export declare function registerInstrument(name: string, instrument: InstrumentFn, uninstrument: UninstrumentFn): void;
23
+ /**
24
+ * Activate the named instrument, monkey-patching the provider library.
25
+ *
26
+ * Returns `true` if the instrument was found and activated successfully,
27
+ * `false` if the name is unknown or activation threw.
28
+ */
29
+ export declare function instrumentProvider(name: string, pricing: PricingEngine, buffer: EventBuffer): Promise<boolean>;
30
+ /**
31
+ * Deactivate the named instrument, restoring the original library methods.
32
+ */
33
+ export declare function uninstrumentProvider(name: string): void;
34
+ export {};
35
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/instruments/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,mDAAmD;AACnD,eAAO,MAAM,yBAAyB,qFAAsF,CAAC;AAE7H,gDAAgD;AAChD,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE,KAAK,YAAY,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AACnF,KAAK,cAAc,GAAG,MAAM,IAAI,CAAC;AAIjC;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,YAAY,EACxB,YAAY,EAAE,cAAc,GAC3B,IAAI,CAEN;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC,CAgBlB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAGvD"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Instrument registry for dexcost TypeScript SDK.
3
+ *
4
+ * Provides a central registry where provider-specific instrumentation modules
5
+ * (e.g., OpenAI, Anthropic) can self-register. The main SDK entry point uses
6
+ * `instrumentProvider` / `uninstrumentProvider` to activate and deactivate
7
+ * monkey-patches on demand.
8
+ */
9
+ /** All provider instruments the SDK ships with. */
10
+ export const ALL_SUPPORTED_INSTRUMENTS = ["openai", "anthropic", "vercel-ai", "gemini", "bedrock", "cohere", "mcp"];
11
+ const registry = new Map();
12
+ /**
13
+ * Register an instrument by name.
14
+ *
15
+ * Called at module load time by each provider instrument (e.g., `openai.ts`).
16
+ */
17
+ export function registerInstrument(name, instrument, uninstrument) {
18
+ registry.set(name, { instrument, uninstrument });
19
+ }
20
+ /**
21
+ * Activate the named instrument, monkey-patching the provider library.
22
+ *
23
+ * Returns `true` if the instrument was found and activated successfully,
24
+ * `false` if the name is unknown or activation threw.
25
+ */
26
+ export async function instrumentProvider(name, pricing, buffer) {
27
+ const entry = registry.get(name);
28
+ if (!entry)
29
+ return false;
30
+ try {
31
+ await entry.instrument(pricing, buffer);
32
+ return true;
33
+ }
34
+ catch (err) {
35
+ // Log the actual error so users can debug instrumentation failures
36
+ const msg = err instanceof Error ? err.message : String(err);
37
+ if (msg.includes("not found") || msg.includes("Could not resolve") || msg.includes("Cannot find module") || msg.includes("Failed to load url") || msg.includes("not installed")) {
38
+ // Module not installed — expected, debug level
39
+ }
40
+ else {
41
+ console.warn(`[dexcost] Failed to instrument ${name}: ${msg}`);
42
+ }
43
+ return false;
44
+ }
45
+ }
46
+ /**
47
+ * Deactivate the named instrument, restoring the original library methods.
48
+ */
49
+ export function uninstrumentProvider(name) {
50
+ const entry = registry.get(name);
51
+ if (entry)
52
+ entry.uninstrument();
53
+ }
54
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/instruments/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,mDAAmD;AACnD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAC;AAQ7H,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAsE,CAAC;AAE/F;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,UAAwB,EACxB,YAA4B;IAE5B,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAY,EACZ,OAAsB,EACtB,MAAmB;IAEnB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,mEAAmE;QACnE,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YAChL,+CAA+C;QACjD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,kCAAkC,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK;QAAE,KAAK,CAAC,YAAY,EAAE,CAAC;AAClC,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * MCP (Model Context Protocol) auto-instrumentation for dexcost TypeScript SDK.
3
+ *
4
+ * Monkey-patches `Client.prototype.callTool` to automatically record cost
5
+ * events for every MCP tool invocation within an active task context.
6
+ */
7
+ import type { EventBuffer } from "../transport/buffer.js";
8
+ import type { PricingEngine } from "../pricing/engine.js";
9
+ /** Test helper: inject a mock Client class so tests avoid importing @modelcontextprotocol/sdk. */
10
+ export declare function _setClientClass(cls: any): void;
11
+ /** Test helper: reset to real module resolution. */
12
+ export declare function _resetClientClass(): void;
13
+ /**
14
+ * Patch `Client.prototype.callTool` to record cost events.
15
+ *
16
+ * If `@modelcontextprotocol/sdk` is not installed and no mock class is
17
+ * injected, the dynamic import will throw and the function will reject.
18
+ */
19
+ export declare function instrumentMcp(_pricing: PricingEngine, buffer: EventBuffer): Promise<void>;
20
+ /**
21
+ * Remove the monkey-patch and restore the original `callTool` method.
22
+ */
23
+ export declare function uninstrumentMcp(): void;
24
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/instruments/mcp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAW1D,kGAAkG;AAClG,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAE9C;AAED,oDAAoD;AACpD,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAoUD;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CA4Df;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAUtC"}