@paid-ai/paid-node 0.5.0-alpha3 → 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.
Files changed (253) hide show
  1. package/README.md +118 -36
  2. package/dist/cjs/Client.d.ts +35 -3
  3. package/dist/cjs/Client.js +57 -19
  4. package/dist/cjs/api/errors/InternalServerError.d.ts +9 -0
  5. package/dist/cjs/api/errors/InternalServerError.js +52 -0
  6. package/dist/cjs/api/errors/index.d.ts +1 -0
  7. package/dist/cjs/api/errors/index.js +1 -0
  8. package/dist/cjs/api/index.d.ts +1 -1
  9. package/dist/cjs/api/index.js +1 -1
  10. package/dist/cjs/api/resources/agents/client/Client.d.ts +16 -0
  11. package/dist/cjs/api/resources/agents/client/Client.js +16 -0
  12. package/dist/cjs/api/resources/customers/client/Client.d.ts +38 -0
  13. package/dist/cjs/api/resources/customers/client/Client.js +164 -0
  14. package/dist/cjs/api/resources/customers/client/requests/CustomerCreate.d.ts +2 -0
  15. package/dist/cjs/api/resources/customers/client/requests/CustomersGetCostsByExternalIdRequest.d.ts +30 -0
  16. package/dist/cjs/api/resources/customers/client/requests/CustomersGetUsageByExternalIdRequest.d.ts +30 -0
  17. package/dist/cjs/api/resources/customers/client/requests/CustomersGetUsageByExternalIdRequest.js +5 -0
  18. package/dist/cjs/api/resources/customers/client/requests/index.d.ts +2 -0
  19. package/dist/cjs/api/resources/index.d.ts +8 -1
  20. package/dist/cjs/api/resources/index.js +9 -2
  21. package/dist/cjs/api/resources/orders/client/requests/OrderCreate.d.ts +2 -0
  22. package/dist/cjs/api/resources/orders/resources/lines/client/Client.d.ts +0 -2
  23. package/dist/cjs/api/resources/orders/resources/lines/client/Client.js +0 -2
  24. package/dist/cjs/api/resources/orders/resources/lines/client/requests/LinesUpdateRequest.d.ts +0 -2
  25. package/dist/cjs/api/resources/plans/client/Client.d.ts +75 -0
  26. package/dist/cjs/api/resources/plans/client/Client.js +272 -0
  27. package/dist/cjs/api/resources/plans/client/index.d.ts +1 -0
  28. package/dist/cjs/api/resources/plans/client/index.js +17 -0
  29. package/dist/cjs/api/resources/plans/client/requests/PlansGetUsageRequest.d.ts +35 -0
  30. package/dist/cjs/api/resources/plans/client/requests/PlansGetUsageRequest.js +5 -0
  31. package/dist/cjs/api/resources/plans/client/requests/index.d.ts +1 -0
  32. package/dist/cjs/api/resources/plans/client/requests/index.js +2 -0
  33. package/dist/cjs/api/resources/plans/index.d.ts +1 -0
  34. package/dist/cjs/api/resources/plans/index.js +17 -0
  35. package/dist/cjs/api/resources/products/client/Client.d.ts +109 -0
  36. package/dist/cjs/api/resources/products/client/Client.js +470 -0
  37. package/dist/cjs/api/resources/products/client/index.d.ts +1 -0
  38. package/dist/cjs/api/resources/products/client/index.js +17 -0
  39. package/dist/cjs/api/resources/products/client/requests/ProductCreate.d.ts +29 -0
  40. package/dist/cjs/api/resources/products/client/requests/ProductCreate.js +14 -0
  41. package/dist/cjs/api/resources/products/client/requests/index.d.ts +1 -0
  42. package/dist/cjs/api/resources/products/client/requests/index.js +2 -0
  43. package/dist/cjs/api/resources/products/index.d.ts +1 -0
  44. package/dist/cjs/api/resources/products/index.js +17 -0
  45. package/dist/cjs/api/resources/traces/client/Client.d.ts +52 -0
  46. package/dist/cjs/api/resources/traces/client/Client.js +166 -0
  47. package/dist/cjs/api/resources/traces/client/index.d.ts +1 -0
  48. package/dist/cjs/api/resources/traces/client/index.js +17 -0
  49. package/dist/cjs/api/resources/traces/client/requests/GetTracesRequest.d.ts +50 -0
  50. package/dist/cjs/api/resources/traces/client/requests/GetTracesRequest.js +5 -0
  51. package/dist/cjs/api/resources/traces/client/requests/index.d.ts +1 -0
  52. package/dist/cjs/api/resources/traces/client/requests/index.js +2 -0
  53. package/dist/cjs/api/resources/traces/index.d.ts +1 -0
  54. package/dist/cjs/api/resources/traces/index.js +17 -0
  55. package/dist/cjs/api/resources/usage/client/Client.d.ts +47 -0
  56. package/dist/cjs/api/resources/usage/client/Client.js +146 -0
  57. package/dist/cjs/api/resources/usage/client/requests/UsageCheckUsageRequest.d.ts +28 -0
  58. package/dist/cjs/api/resources/usage/client/requests/UsageCheckUsageRequest.js +5 -0
  59. package/dist/cjs/api/resources/usage/client/requests/UsageRecordBulkV2Request.d.ts +29 -0
  60. package/dist/cjs/api/resources/usage/client/requests/UsageRecordBulkV2Request.js +5 -0
  61. package/dist/cjs/api/resources/usage/client/requests/index.d.ts +2 -0
  62. package/dist/cjs/api/resources/usage/index.d.ts +1 -0
  63. package/dist/cjs/api/resources/usage/index.js +1 -0
  64. package/dist/cjs/api/resources/usage/types/UsageCheckUsageResponse.d.ts +17 -0
  65. package/dist/cjs/api/resources/usage/types/UsageCheckUsageResponse.js +5 -0
  66. package/dist/cjs/api/resources/usage/types/index.d.ts +1 -0
  67. package/dist/cjs/api/resources/usage/types/index.js +17 -0
  68. package/dist/cjs/api/types/CostAmount.d.ts +12 -0
  69. package/dist/cjs/api/types/CostAmount.js +5 -0
  70. package/dist/cjs/api/types/CostTrace.d.ts +22 -0
  71. package/dist/cjs/api/types/CostTrace.js +5 -0
  72. package/dist/cjs/api/types/CostTracesResponse.d.ts +11 -0
  73. package/dist/cjs/api/types/CostTracesResponse.js +5 -0
  74. package/dist/cjs/api/types/Customer.d.ts +2 -0
  75. package/dist/cjs/api/types/CustomerUpdate.d.ts +2 -0
  76. package/dist/cjs/api/types/OrderLineAttributeCreateOne.d.ts +4 -0
  77. package/dist/cjs/api/types/OrderLineAttributeCreateOne.js +5 -0
  78. package/dist/cjs/api/types/OrderLineCreate.d.ts +10 -4
  79. package/dist/cjs/api/types/PaginationMeta.d.ts +28 -0
  80. package/dist/cjs/api/types/PaginationMeta.js +5 -0
  81. package/dist/cjs/api/types/Plan.d.ts +58 -0
  82. package/dist/cjs/api/types/Plan.js +5 -0
  83. package/dist/cjs/api/types/PlanGroup.d.ts +23 -0
  84. package/dist/cjs/api/types/PlanGroup.js +5 -0
  85. package/dist/cjs/api/types/Product.d.ts +36 -0
  86. package/dist/cjs/api/types/Product.js +14 -0
  87. package/dist/cjs/api/types/ProductUpdate.d.ts +23 -0
  88. package/dist/cjs/api/types/ProductUpdate.js +14 -0
  89. package/dist/cjs/api/types/Signal.d.ts +7 -2
  90. package/dist/cjs/api/types/SignalV2.d.ts +22 -0
  91. package/dist/cjs/api/types/SignalV2.js +5 -0
  92. package/dist/cjs/api/types/Trace.d.ts +26 -0
  93. package/dist/cjs/api/types/Trace.js +5 -0
  94. package/dist/cjs/api/types/TracesResponse.d.ts +11 -0
  95. package/dist/cjs/api/types/TracesResponse.js +5 -0
  96. package/dist/cjs/api/types/UsagePaginationMeta.d.ts +16 -0
  97. package/dist/cjs/api/types/UsagePaginationMeta.js +5 -0
  98. package/dist/cjs/api/types/UsageSummariesResponse.d.ts +11 -0
  99. package/dist/cjs/api/types/UsageSummariesResponse.js +5 -0
  100. package/dist/cjs/api/types/UsageSummary.d.ts +58 -0
  101. package/dist/cjs/api/types/UsageSummary.js +5 -0
  102. package/dist/cjs/api/types/index.d.ts +15 -1
  103. package/dist/cjs/api/types/index.js +15 -1
  104. package/dist/cjs/index.d.ts +1 -0
  105. package/dist/cjs/index.js +4 -0
  106. package/dist/cjs/tracing/autoInstrumentation.d.ts +10 -0
  107. package/dist/cjs/tracing/autoInstrumentation.js +57 -0
  108. package/dist/cjs/tracing/index.d.ts +4 -0
  109. package/dist/cjs/tracing/index.js +12 -0
  110. package/dist/cjs/tracing/signal.d.ts +18 -1
  111. package/dist/cjs/tracing/signal.js +29 -13
  112. package/dist/cjs/tracing/spanProcessor.d.ts +10 -0
  113. package/dist/cjs/tracing/spanProcessor.js +82 -0
  114. package/dist/cjs/tracing/tracing.d.ts +12 -6
  115. package/dist/cjs/tracing/tracing.js +65 -58
  116. package/dist/cjs/tracing/tracingContext.d.ts +8 -0
  117. package/dist/cjs/tracing/tracingContext.js +28 -0
  118. package/dist/cjs/tracing/wrappers/anthropicWrapper.js +11 -7
  119. package/dist/cjs/tracing/wrappers/langchainCallback.js +11 -7
  120. package/dist/cjs/tracing/wrappers/mistralWrapper.js +11 -7
  121. package/dist/cjs/tracing/wrappers/openAiWrapper.js +24 -23
  122. package/dist/cjs/tracing/wrappers/vercelAIWrapper.js +68 -43
  123. package/dist/cjs/version.d.ts +1 -1
  124. package/dist/cjs/version.js +1 -1
  125. package/dist/esm/Client.d.mts +35 -3
  126. package/dist/esm/Client.mjs +54 -16
  127. package/dist/esm/api/errors/InternalServerError.d.mts +9 -0
  128. package/dist/esm/api/errors/InternalServerError.mjs +15 -0
  129. package/dist/esm/api/errors/index.d.mts +1 -0
  130. package/dist/esm/api/errors/index.mjs +1 -0
  131. package/dist/esm/api/index.d.mts +1 -1
  132. package/dist/esm/api/index.mjs +1 -1
  133. package/dist/esm/api/resources/agents/client/Client.d.mts +16 -0
  134. package/dist/esm/api/resources/agents/client/Client.mjs +16 -0
  135. package/dist/esm/api/resources/customers/client/Client.d.mts +38 -0
  136. package/dist/esm/api/resources/customers/client/Client.mjs +164 -0
  137. package/dist/esm/api/resources/customers/client/requests/CustomerCreate.d.mts +2 -0
  138. package/dist/esm/api/resources/customers/client/requests/CustomersGetCostsByExternalIdRequest.d.mts +30 -0
  139. package/dist/esm/api/resources/customers/client/requests/CustomersGetUsageByExternalIdRequest.d.mts +30 -0
  140. package/dist/esm/api/resources/customers/client/requests/CustomersGetUsageByExternalIdRequest.mjs +4 -0
  141. package/dist/esm/api/resources/customers/client/requests/index.d.mts +2 -0
  142. package/dist/esm/api/resources/index.d.mts +8 -1
  143. package/dist/esm/api/resources/index.mjs +8 -1
  144. package/dist/esm/api/resources/orders/client/requests/OrderCreate.d.mts +2 -0
  145. package/dist/esm/api/resources/orders/resources/lines/client/Client.d.mts +0 -2
  146. package/dist/esm/api/resources/orders/resources/lines/client/Client.mjs +0 -2
  147. package/dist/esm/api/resources/orders/resources/lines/client/requests/LinesUpdateRequest.d.mts +0 -2
  148. package/dist/esm/api/resources/plans/client/Client.d.mts +75 -0
  149. package/dist/esm/api/resources/plans/client/Client.mjs +232 -0
  150. package/dist/esm/api/resources/plans/client/index.d.mts +1 -0
  151. package/dist/esm/api/resources/plans/client/index.mjs +1 -0
  152. package/dist/esm/api/resources/plans/client/requests/PlansGetUsageRequest.d.mts +35 -0
  153. package/dist/esm/api/resources/plans/client/requests/PlansGetUsageRequest.mjs +4 -0
  154. package/dist/esm/api/resources/plans/client/requests/index.d.mts +1 -0
  155. package/dist/esm/api/resources/plans/client/requests/index.mjs +1 -0
  156. package/dist/esm/api/resources/plans/index.d.mts +1 -0
  157. package/dist/esm/api/resources/plans/index.mjs +1 -0
  158. package/dist/esm/api/resources/products/client/Client.d.mts +109 -0
  159. package/dist/esm/api/resources/products/client/Client.mjs +430 -0
  160. package/dist/esm/api/resources/products/client/index.d.mts +1 -0
  161. package/dist/esm/api/resources/products/client/index.mjs +1 -0
  162. package/dist/esm/api/resources/products/client/requests/ProductCreate.d.mts +29 -0
  163. package/dist/esm/api/resources/products/client/requests/ProductCreate.mjs +11 -0
  164. package/dist/esm/api/resources/products/client/requests/index.d.mts +1 -0
  165. package/dist/esm/api/resources/products/client/requests/index.mjs +1 -0
  166. package/dist/esm/api/resources/products/index.d.mts +1 -0
  167. package/dist/esm/api/resources/products/index.mjs +1 -0
  168. package/dist/esm/api/resources/traces/client/Client.d.mts +52 -0
  169. package/dist/esm/api/resources/traces/client/Client.mjs +126 -0
  170. package/dist/esm/api/resources/traces/client/index.d.mts +1 -0
  171. package/dist/esm/api/resources/traces/client/index.mjs +1 -0
  172. package/dist/esm/api/resources/traces/client/requests/GetTracesRequest.d.mts +50 -0
  173. package/dist/esm/api/resources/traces/client/requests/GetTracesRequest.mjs +4 -0
  174. package/dist/esm/api/resources/traces/client/requests/index.d.mts +1 -0
  175. package/dist/esm/api/resources/traces/client/requests/index.mjs +1 -0
  176. package/dist/esm/api/resources/traces/index.d.mts +1 -0
  177. package/dist/esm/api/resources/traces/index.mjs +1 -0
  178. package/dist/esm/api/resources/usage/client/Client.d.mts +47 -0
  179. package/dist/esm/api/resources/usage/client/Client.mjs +146 -0
  180. package/dist/esm/api/resources/usage/client/requests/UsageCheckUsageRequest.d.mts +28 -0
  181. package/dist/esm/api/resources/usage/client/requests/UsageCheckUsageRequest.mjs +4 -0
  182. package/dist/esm/api/resources/usage/client/requests/UsageRecordBulkV2Request.d.mts +29 -0
  183. package/dist/esm/api/resources/usage/client/requests/UsageRecordBulkV2Request.mjs +4 -0
  184. package/dist/esm/api/resources/usage/client/requests/index.d.mts +2 -0
  185. package/dist/esm/api/resources/usage/index.d.mts +1 -0
  186. package/dist/esm/api/resources/usage/index.mjs +1 -0
  187. package/dist/esm/api/resources/usage/types/UsageCheckUsageResponse.d.mts +17 -0
  188. package/dist/esm/api/resources/usage/types/UsageCheckUsageResponse.mjs +4 -0
  189. package/dist/esm/api/resources/usage/types/index.d.mts +1 -0
  190. package/dist/esm/api/resources/usage/types/index.mjs +1 -0
  191. package/dist/esm/api/types/CostAmount.d.mts +12 -0
  192. package/dist/esm/api/types/CostAmount.mjs +4 -0
  193. package/dist/esm/api/types/CostTrace.d.mts +22 -0
  194. package/dist/esm/api/types/CostTrace.mjs +4 -0
  195. package/dist/esm/api/types/CostTracesResponse.d.mts +11 -0
  196. package/dist/esm/api/types/CostTracesResponse.mjs +4 -0
  197. package/dist/esm/api/types/Customer.d.mts +2 -0
  198. package/dist/esm/api/types/CustomerUpdate.d.mts +2 -0
  199. package/dist/esm/api/types/OrderLineAttributeCreateOne.d.mts +4 -0
  200. package/dist/esm/api/types/OrderLineAttributeCreateOne.mjs +4 -0
  201. package/dist/esm/api/types/OrderLineCreate.d.mts +10 -4
  202. package/dist/esm/api/types/PaginationMeta.d.mts +28 -0
  203. package/dist/esm/api/types/PaginationMeta.mjs +4 -0
  204. package/dist/esm/api/types/Plan.d.mts +58 -0
  205. package/dist/esm/api/types/Plan.mjs +4 -0
  206. package/dist/esm/api/types/PlanGroup.d.mts +23 -0
  207. package/dist/esm/api/types/PlanGroup.mjs +4 -0
  208. package/dist/esm/api/types/Product.d.mts +36 -0
  209. package/dist/esm/api/types/Product.mjs +11 -0
  210. package/dist/esm/api/types/ProductUpdate.d.mts +23 -0
  211. package/dist/esm/api/types/ProductUpdate.mjs +11 -0
  212. package/dist/esm/api/types/Signal.d.mts +7 -2
  213. package/dist/esm/api/types/SignalV2.d.mts +22 -0
  214. package/dist/esm/api/types/SignalV2.mjs +4 -0
  215. package/dist/esm/api/types/Trace.d.mts +26 -0
  216. package/dist/esm/api/types/Trace.mjs +4 -0
  217. package/dist/esm/api/types/TracesResponse.d.mts +11 -0
  218. package/dist/esm/api/types/TracesResponse.mjs +4 -0
  219. package/dist/esm/api/types/UsagePaginationMeta.d.mts +16 -0
  220. package/dist/esm/api/types/UsagePaginationMeta.mjs +4 -0
  221. package/dist/esm/api/types/UsageSummariesResponse.d.mts +11 -0
  222. package/dist/esm/api/types/UsageSummariesResponse.mjs +4 -0
  223. package/dist/esm/api/types/UsageSummary.d.mts +58 -0
  224. package/dist/esm/api/types/UsageSummary.mjs +4 -0
  225. package/dist/esm/api/types/index.d.mts +15 -1
  226. package/dist/esm/api/types/index.mjs +15 -1
  227. package/dist/esm/index.d.mts +1 -0
  228. package/dist/esm/index.mjs +1 -0
  229. package/dist/esm/tracing/autoInstrumentation.d.mts +10 -0
  230. package/dist/esm/tracing/autoInstrumentation.mjs +54 -0
  231. package/dist/esm/tracing/index.d.mts +4 -0
  232. package/dist/esm/tracing/index.mjs +4 -0
  233. package/dist/esm/tracing/signal.d.mts +18 -1
  234. package/dist/esm/tracing/signal.mjs +28 -12
  235. package/dist/esm/tracing/spanProcessor.d.mts +10 -0
  236. package/dist/esm/tracing/spanProcessor.mjs +78 -0
  237. package/dist/esm/tracing/tracing.d.mts +12 -6
  238. package/dist/esm/tracing/tracing.mjs +59 -52
  239. package/dist/esm/tracing/tracingContext.d.mts +8 -0
  240. package/dist/esm/tracing/tracingContext.mjs +23 -0
  241. package/dist/esm/tracing/wrappers/anthropicWrapper.mjs +11 -7
  242. package/dist/esm/tracing/wrappers/langchainCallback.mjs +11 -7
  243. package/dist/esm/tracing/wrappers/mistralWrapper.mjs +11 -7
  244. package/dist/esm/tracing/wrappers/openAiWrapper.mjs +24 -23
  245. package/dist/esm/tracing/wrappers/vercelAIWrapper.mjs +68 -43
  246. package/dist/esm/version.d.mts +1 -1
  247. package/dist/esm/version.mjs +1 -1
  248. package/package.json +18 -10
  249. package/reference.md +1147 -153
  250. package/dist/cjs/api/types/OrderLineAttributeCreate.d.ts +0 -12
  251. package/dist/esm/api/types/OrderLineAttributeCreate.d.mts +0 -12
  252. /package/dist/cjs/api/{types/OrderLineAttributeCreate.js → resources/customers/client/requests/CustomersGetCostsByExternalIdRequest.js} +0 -0
  253. /package/dist/esm/api/{types/OrderLineAttributeCreate.mjs → resources/customers/client/requests/CustomersGetCostsByExternalIdRequest.mjs} +0 -0
@@ -1,21 +1,38 @@
1
1
  import { SpanStatusCode } from "@opentelemetry/api";
2
- import { getCustomerIdStorage, getAgentIdStorage, getTokenStorage } from "./tracing.mjs";
3
- import { paidTracer } from "./tracing.mjs";
4
- export function _signal(eventName, enableCostTracing, data) {
5
- if (!eventName) {
6
- throw new Error("Event name is required for signal.");
2
+ import { getPaidTracer, getToken } from "./tracing.mjs";
3
+ import { getTracingContext } from "./tracingContext.mjs";
4
+ /**
5
+ * Sends Paid signal. Needs to be called as part of callback to trace().
6
+ * When enableCostTracing flag is on, signal is associated
7
+ * with cost traces from the same Paid.trace() context.
8
+ *
9
+ * @param eventName - The name of the signal.
10
+ * @param enableCostTracing - Whether to associate this signal with cost traces
11
+ * from the current Paid.trace() context (default: false)
12
+ * @param data - Optional additional data to include with the signal
13
+ *
14
+ * @remarks
15
+ * When enableCostTracing is on, the signal will be associated with cost
16
+ * traces within the same Paid.trace() context.
17
+ * It is advised to only make one call to this function
18
+ * with enableCostTracing per Paid.trace() context.
19
+ * Otherwise, there will be multiple signals that refer to the same costs.
20
+ */
21
+ export function signal(eventName, enableCostTracing = false, data) {
22
+ const paidTracer = getPaidTracer();
23
+ const token = getToken();
24
+ const { externalCustomerId, externalProductId } = getTracingContext();
25
+ if (!token || !paidTracer) {
26
+ throw new Error(`Tracing is not initialized. Make sure you called 'initializeTracing()'`);
7
27
  }
8
- const externalCustomerId = getCustomerIdStorage();
9
- const externalAgentId = getAgentIdStorage();
10
- const token = getTokenStorage();
11
- if (!externalCustomerId || !externalAgentId || !token) {
12
- throw new Error(`Missing some of: external_customer_id: ${externalCustomerId}, external_agent_id: ${externalAgentId}, or token. Make sure to call signal() within trace()`);
28
+ if (!externalCustomerId || !externalProductId) {
29
+ throw new Error(`Missing some of: external_customer_id: ${externalCustomerId}, external_product_id: ${externalProductId}, or token. Make sure to call signal() within trace()`);
13
30
  }
14
31
  paidTracer.startActiveSpan("trace.signal", (span) => {
15
32
  try {
16
33
  const attributes = {
17
34
  external_customer_id: externalCustomerId,
18
- external_agent_id: externalAgentId,
35
+ external_agent_id: externalProductId,
19
36
  event_name: eventName,
20
37
  token: token,
21
38
  };
@@ -34,7 +51,6 @@ export function _signal(eventName, enableCostTracing, data) {
34
51
  attributes["data"] = JSON.stringify(data);
35
52
  }
36
53
  span.setAttributes(attributes);
37
- // Mark span as successful
38
54
  span.setStatus({ code: SpanStatusCode.OK });
39
55
  }
40
56
  catch (error) {
@@ -0,0 +1,10 @@
1
+ import { Context } from "@opentelemetry/api";
2
+ import { SpanProcessor, Span } from "@opentelemetry/sdk-trace-base";
3
+ export declare class PaidSpanProcessor implements SpanProcessor {
4
+ private static readonly SPAN_NAME_PREFIX;
5
+ private static readonly PROMPT_ATTRIBUTES_SUBSTRINGS;
6
+ onStart(span: Span, _parentContext?: Context): void;
7
+ onEnd(): void;
8
+ shutdown(): Promise<void>;
9
+ forceFlush(): Promise<void>;
10
+ }
@@ -0,0 +1,78 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { getTracingContext } from "./tracingContext.mjs";
11
+ import { getToken } from "./tracing.mjs";
12
+ export class PaidSpanProcessor {
13
+ onStart(span, _parentContext) {
14
+ const { name } = span;
15
+ const { storePrompt, externalCustomerId, externalProductId: externalAgentId } = getTracingContext();
16
+ if (!storePrompt) {
17
+ const originalSetAttribute = span.setAttribute;
18
+ span.setAttribute = function (key, value) {
19
+ const isPromptRelated = PaidSpanProcessor.PROMPT_ATTRIBUTES_SUBSTRINGS.some((substr) => key.includes(substr));
20
+ if (isPromptRelated)
21
+ return this;
22
+ return originalSetAttribute.call(this, key, value);
23
+ };
24
+ const originalSetAttributes = span.setAttributes;
25
+ span.setAttributes = function (attributes) {
26
+ const newAttributes = Object.entries(attributes).reduce((acc, [key, value]) => {
27
+ const isPromptRelated = PaidSpanProcessor.PROMPT_ATTRIBUTES_SUBSTRINGS.some((substr) => key.includes(substr));
28
+ if (isPromptRelated)
29
+ return acc;
30
+ return Object.assign(Object.assign({}, acc), { [key]: value });
31
+ }, {});
32
+ return originalSetAttributes.call(this, newAttributes);
33
+ };
34
+ }
35
+ if (name && !name.startsWith(PaidSpanProcessor.SPAN_NAME_PREFIX)) {
36
+ span.updateName(`${PaidSpanProcessor.SPAN_NAME_PREFIX}${name}`);
37
+ }
38
+ if (externalCustomerId) {
39
+ span.setAttribute("external_customer_id", externalCustomerId);
40
+ }
41
+ if (externalAgentId) {
42
+ span.setAttribute("external_agent_id", externalAgentId);
43
+ }
44
+ const token = getToken();
45
+ if (token) {
46
+ span.setAttribute("token", token);
47
+ }
48
+ }
49
+ onEnd() {
50
+ // mutating this span object doesn't do anything
51
+ // so we achieve filtering within the onStart method by monkey patching
52
+ // setAttribute method
53
+ return;
54
+ }
55
+ shutdown() {
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ return;
58
+ });
59
+ }
60
+ forceFlush() {
61
+ return __awaiter(this, void 0, void 0, function* () {
62
+ return;
63
+ });
64
+ }
65
+ }
66
+ PaidSpanProcessor.SPAN_NAME_PREFIX = "paid.trace.";
67
+ PaidSpanProcessor.PROMPT_ATTRIBUTES_SUBSTRINGS = [
68
+ "gen_ai.completion",
69
+ "gen_ai.request.messages",
70
+ "gen_ai.response.messages",
71
+ "llm.output_message",
72
+ "llm.input_message",
73
+ "llm.invocation_parameters",
74
+ "gen_ai.prompt",
75
+ "langchain.prompt",
76
+ "output.value",
77
+ "input.value",
78
+ ];
@@ -1,8 +1,14 @@
1
+ import { Tracer } from "@opentelemetry/api";
2
+ import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
1
3
  import winston from "winston";
2
4
  export declare const logger: winston.Logger;
3
- export declare let paidTracer: import("@opentelemetry/api").Tracer;
4
- export declare const getCustomerIdStorage: () => string | null | undefined;
5
- export declare const getAgentIdStorage: () => string | null | undefined;
6
- export declare const getTokenStorage: () => string | null | undefined;
7
- export declare function _initializeTracing(apiKey: string, collectorEndpoint?: string): void;
8
- export declare function _trace<T extends (...args: any[]) => any>(externalCustomerId: string, fn: T, externalAgentId: string | undefined, ...args: Parameters<T>): Promise<ReturnType<T>>;
5
+ export declare function getToken(): string | undefined;
6
+ export declare function getPaidTracerProvider(): NodeTracerProvider | undefined;
7
+ export declare function getPaidTracer(): Tracer | undefined;
8
+ export declare function initializeTracing(apiKey?: string, collectorEndpoint?: string): void;
9
+ export declare function trace<F extends (...args: any[]) => any>(options: {
10
+ externalCustomerId: string;
11
+ externalProductId?: string;
12
+ storePrompt?: boolean;
13
+ metadata?: any;
14
+ }, fn: F, ...args: Parameters<F>): Promise<ReturnType<F>>;
@@ -7,12 +7,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
11
- import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
12
- import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
13
10
  import { SpanStatusCode } from "@opentelemetry/api";
14
- import { AsyncLocalStorage } from "async_hooks";
11
+ import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
12
+ import { NodeTracerProvider, SimpleSpanProcessor } from "@opentelemetry/sdk-trace-node";
15
13
  import winston from "winston";
14
+ import { runWithTracingContext } from "./tracingContext.mjs";
15
+ import { PaidSpanProcessor } from "./spanProcessor.mjs";
16
16
  export const logger = winston.createLogger({
17
17
  level: "silent", // Default to 'silent' to avoid logging unless set via environment variable
18
18
  format: winston.format.simple(),
@@ -22,29 +22,21 @@ const logLevel = process.env.PAID_LOG_LEVEL;
22
22
  if (logLevel) {
23
23
  logger.level = logLevel;
24
24
  }
25
- const COLLECTOR_ENDPOINT = process.env.PAID_COLLECTOR_ENDPOINT || "https://collector.agentpaid.io:4318/v1/traces";
26
- // set up default tracing provider
27
- let paidExporter = new OTLPTraceExporter({ url: COLLECTOR_ENDPOINT });
28
- let spanProcessor = new BatchSpanProcessor(paidExporter);
29
- let paidTracerProvider = new NodeTracerProvider({ spanProcessors: [spanProcessor] });
30
- paidTracerProvider.register();
31
- export let paidTracer = paidTracerProvider.getTracer("paid.node");
32
- // storage for passing info to child spans
33
- const customerIdStorage = new AsyncLocalStorage();
34
- const agentIdStorage = new AsyncLocalStorage();
35
- const tokenStorage = new AsyncLocalStorage();
36
- export const getCustomerIdStorage = () => customerIdStorage.getStore();
37
- export const getAgentIdStorage = () => agentIdStorage.getStore();
38
- export const getTokenStorage = () => tokenStorage.getStore();
39
- let _token;
40
- const setToken = (token) => {
41
- _token = token;
42
- };
43
- const getToken = () => {
44
- return _token;
45
- };
25
+ const DEFAULT_COLLECTOR_ENDPOINT = process.env["PAID_OTEL_COLLECTOR_ENDPOINT"] || "https://collector.agentpaid.io:4318/v1/traces";
26
+ let paidApiToken = undefined;
27
+ export function getToken() {
28
+ return paidApiToken;
29
+ }
30
+ let paidTracerProvider = undefined;
31
+ export function getPaidTracerProvider() {
32
+ return paidTracerProvider;
33
+ }
34
+ let paidTracer = undefined;
35
+ export function getPaidTracer() {
36
+ return paidTracer;
37
+ }
46
38
  let _isShuttingDown = false;
47
- function setupGracefulShutdown(shuttable) {
39
+ const setupGracefulShutdown = (shuttable) => {
48
40
  ["SIGINT", "SIGTERM", "beforeExit", "uncaughtException", "unhandledRejection"].forEach((signal) => {
49
41
  process.on(signal, () => {
50
42
  if (_isShuttingDown) {
@@ -57,48 +49,63 @@ function setupGracefulShutdown(shuttable) {
57
49
  .catch((error) => logger.error(`Error shutting down Paid tracing SDK ${error}`));
58
50
  });
59
51
  });
60
- }
61
- export function _initializeTracing(apiKey, collectorEndpoint) {
62
- if (getToken()) {
63
- throw new Error("Tracing SDK is already initialized.");
52
+ };
53
+ export function initializeTracing(apiKey, collectorEndpoint) {
54
+ const paidEnabled = (process.env.PAID_ENABLED || "true") !== "false";
55
+ if (!paidEnabled) {
56
+ logger.info("Paid tracing is disabled via PAID_ENABLED environment variable");
57
+ return;
58
+ }
59
+ const token = getToken();
60
+ if (!!token) {
61
+ logger.info("Tracing is already initialized - skipping re-intialization");
62
+ return;
64
63
  }
65
64
  if (!apiKey) {
66
- throw new Error("Cannot initialize tracing SDK - first initialize the PaidClient with an API key");
65
+ const envKey = process.env.PAID_API_KEY;
66
+ if (!envKey) {
67
+ logger.error("API key must be provided via PAID_API_KEY environment variable");
68
+ return;
69
+ }
70
+ paidApiToken = envKey;
67
71
  }
68
- if (collectorEndpoint) {
69
- paidExporter = new OTLPTraceExporter({ url: collectorEndpoint });
70
- spanProcessor = new BatchSpanProcessor(paidExporter);
71
- paidTracerProvider = new NodeTracerProvider({ spanProcessors: [spanProcessor] });
72
- paidTracerProvider.register();
73
- paidTracer = paidTracerProvider.getTracer("paid.node");
72
+ else {
73
+ paidApiToken = apiKey;
74
74
  }
75
+ const url = collectorEndpoint || DEFAULT_COLLECTOR_ENDPOINT;
76
+ const exporter = new OTLPTraceExporter({ url });
77
+ const spanProcessor = new SimpleSpanProcessor(exporter);
78
+ paidTracerProvider = new NodeTracerProvider({
79
+ spanProcessors: [spanProcessor, new PaidSpanProcessor()],
80
+ });
81
+ paidTracerProvider.register();
82
+ paidTracer = paidTracerProvider.getTracer("paid.node");
75
83
  setupGracefulShutdown(spanProcessor);
76
- setToken(apiKey);
77
- const collectorAddress = collectorEndpoint || COLLECTOR_ENDPOINT;
78
- logger.info(`Paid tracing SDK initialized with collector endpoint: ${collectorAddress}`);
84
+ logger.info(`Paid tracing SDK initialized with collector endpoint: ${url}`);
79
85
  }
80
- export function _trace(externalCustomerId, fn, externalAgentId, ...args) {
86
+ export function trace(options, fn, ...args) {
81
87
  return __awaiter(this, void 0, void 0, function* () {
82
88
  const token = getToken();
83
- if (!token || !externalCustomerId) {
84
- throw new Error(`Paid tracing is not initialized. Make sure to call initializeTracing() first.`);
89
+ const tracer = getPaidTracer();
90
+ if (!token || !tracer) {
91
+ throw new Error("Paid tracing is not initialized. Make sure to call initializeTracing() first.");
85
92
  }
86
- return paidTracer.startActiveSpan("paid.node", (span) => __awaiter(this, void 0, void 0, function* () {
93
+ const { externalCustomerId, externalProductId: externalAgentId, storePrompt, metadata } = options;
94
+ return yield tracer.startActiveSpan("parent_span", (span) => __awaiter(this, void 0, void 0, function* () {
87
95
  span.setAttribute("external_customer_id", externalCustomerId);
88
96
  span.setAttribute("token", token);
89
97
  if (externalAgentId) {
90
98
  span.setAttribute("external_agent_id", externalAgentId);
91
99
  }
92
100
  try {
93
- const result = yield customerIdStorage.run(externalCustomerId, () => __awaiter(this, void 0, void 0, function* () {
94
- return yield agentIdStorage.run(externalAgentId !== null && externalAgentId !== void 0 ? externalAgentId : null, () => __awaiter(this, void 0, void 0, function* () {
95
- return yield tokenStorage.run(token, () => __awaiter(this, void 0, void 0, function* () {
96
- return yield fn(...args);
97
- }));
98
- }));
99
- }));
101
+ const res = yield runWithTracingContext({
102
+ externalCustomerId,
103
+ externalProductId: externalAgentId,
104
+ storePrompt,
105
+ metadata,
106
+ }, () => __awaiter(this, void 0, void 0, function* () { return yield fn(...args); }));
100
107
  span.setStatus({ code: SpanStatusCode.OK });
101
- return result;
108
+ return res;
102
109
  }
103
110
  catch (error) {
104
111
  span.setStatus({
@@ -0,0 +1,8 @@
1
+ export interface TracingContext {
2
+ externalCustomerId?: string;
3
+ externalProductId?: string;
4
+ storePrompt?: boolean;
5
+ metadata?: Record<string, any>;
6
+ }
7
+ export declare const getTracingContext: () => TracingContext;
8
+ export declare function runWithTracingContext<F extends (...args: any) => any>(ctx: TracingContext, fn: F): Promise<ReturnType<F>>;
@@ -0,0 +1,23 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { AsyncLocalStorage } from "async_hooks";
11
+ const getDefaultTracingContext = () => ({
12
+ externalCustomerId: undefined,
13
+ externalProductId: undefined,
14
+ storePrompt: false,
15
+ metadata: undefined,
16
+ });
17
+ const tracingContextStorage = new AsyncLocalStorage();
18
+ export const getTracingContext = () => tracingContextStorage.getStore() || getDefaultTracingContext();
19
+ export function runWithTracingContext(ctx, fn) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ return yield tracingContextStorage.run(ctx, fn);
22
+ });
23
+ }
@@ -8,11 +8,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { SpanStatusCode } from "@opentelemetry/api";
11
- import { getCustomerIdStorage, getAgentIdStorage, getTokenStorage, paidTracer } from "../tracing.mjs";
11
+ import { getPaidTracer, getToken } from "tracing/tracing.js";
12
+ import { getTracingContext } from "tracing/tracingContext.js";
12
13
  export class PaidAnthropic {
13
14
  constructor(anthropicClient) {
14
15
  this.anthropic = anthropicClient;
15
- this.tracer = paidTracer;
16
+ const tracer = getPaidTracer();
17
+ if (!tracer) {
18
+ throw new Error("Paid tracer is not initialized, Make sure to call 'initializeTracing()' first");
19
+ }
20
+ this.tracer = tracer;
16
21
  }
17
22
  get messages() {
18
23
  return new MessagesWrapper(this.anthropic, this.tracer);
@@ -25,9 +30,8 @@ class MessagesWrapper {
25
30
  }
26
31
  create(params) {
27
32
  return __awaiter(this, void 0, void 0, function* () {
28
- const externalCustomerId = getCustomerIdStorage();
29
- const externalAgentId = getAgentIdStorage();
30
- const token = getTokenStorage();
33
+ const token = getToken();
34
+ const { externalProductId, externalCustomerId } = getTracingContext();
31
35
  if (!token || !externalCustomerId) {
32
36
  throw new Error("No token or externalCustomerId: This wrapper should be used inside a callback to paid.trace().");
33
37
  }
@@ -38,8 +42,8 @@ class MessagesWrapper {
38
42
  external_customer_id: externalCustomerId,
39
43
  token: token,
40
44
  };
41
- if (externalAgentId) {
42
- attributes["external_agent_id"] = externalAgentId;
45
+ if (externalProductId) {
46
+ attributes["external_agent_id"] = externalProductId;
43
47
  }
44
48
  // Set request model from params
45
49
  if (params.model) {
@@ -9,13 +9,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { BaseCallbackHandler } from "@langchain/core/callbacks/base";
11
11
  import { SpanStatusCode } from "@opentelemetry/api";
12
- import { getCustomerIdStorage, getAgentIdStorage, getTokenStorage, paidTracer } from "../tracing.mjs";
12
+ import { getPaidTracer, getToken } from "tracing/tracing.js";
13
+ import { getTracingContext } from "tracing/tracingContext.js";
13
14
  export class PaidLangChainCallback extends BaseCallbackHandler {
14
15
  constructor() {
15
16
  super();
16
17
  this.name = "PaidLangChainCallback";
17
18
  this.spans = new Map();
18
- this.tracer = paidTracer;
19
+ const tracer = getPaidTracer();
20
+ if (!tracer) {
21
+ throw new Error("Paid tracer is not initialized, Make sure to call 'initializeTracing()' first");
22
+ }
23
+ this.tracer = tracer;
19
24
  }
20
25
  extractProvider(serialized) {
21
26
  if (!(serialized === null || serialized === void 0 ? void 0 : serialized.id))
@@ -37,9 +42,8 @@ export class PaidLangChainCallback extends BaseCallbackHandler {
37
42
  }
38
43
  handleLLMStart(llm, prompts, runId, parentRunId, extraParams, tags, metadata) {
39
44
  return __awaiter(this, void 0, void 0, function* () {
40
- const externalCustomerId = getCustomerIdStorage();
41
- const externalAgentId = getAgentIdStorage();
42
- const token = getTokenStorage();
45
+ const { externalProductId, externalCustomerId } = getTracingContext();
46
+ const token = getToken();
43
47
  if (!token || !externalCustomerId) {
44
48
  throw new Error("No token or externalCustomerId: This wrapper should be used inside a callback to paid.trace().");
45
49
  }
@@ -54,8 +58,8 @@ export class PaidLangChainCallback extends BaseCallbackHandler {
54
58
  external_customer_id: externalCustomerId,
55
59
  token: token,
56
60
  };
57
- if (externalAgentId) {
58
- attributes["external_agent_id"] = externalAgentId;
61
+ if (externalProductId) {
62
+ attributes["external_agent_id"] = externalProductId;
59
63
  }
60
64
  span.setAttributes(attributes);
61
65
  this.spans.set(runId, span);
@@ -8,11 +8,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { SpanStatusCode } from "@opentelemetry/api";
11
- import { getCustomerIdStorage, getAgentIdStorage, getTokenStorage, paidTracer } from "../tracing.mjs";
11
+ import { getPaidTracer, getToken } from "tracing/tracing.js";
12
+ import { getTracingContext } from "tracing/tracingContext.js";
12
13
  export class PaidMistral {
13
14
  constructor(mistralClient) {
14
15
  this.mistral = mistralClient;
15
- this.tracer = paidTracer;
16
+ const tracer = getPaidTracer();
17
+ if (!tracer) {
18
+ throw new Error("Paid tracer is not initialized, Make sure to call 'initializeTracing()' first");
19
+ }
20
+ this.tracer = tracer;
16
21
  }
17
22
  get ocr() {
18
23
  return new OCRWrapper(this.mistral, this.tracer);
@@ -25,9 +30,8 @@ class OCRWrapper {
25
30
  }
26
31
  process(request, options) {
27
32
  return __awaiter(this, void 0, void 0, function* () {
28
- const externalCustomerId = getCustomerIdStorage();
29
- const externalAgentId = getAgentIdStorage();
30
- const token = getTokenStorage();
33
+ const token = getToken();
34
+ const { externalProductId, externalCustomerId } = getTracingContext();
31
35
  if (!token || !externalCustomerId) {
32
36
  throw new Error("No token or externalCustomerId: This wrapper should be used inside a callback to paid.trace().");
33
37
  }
@@ -39,8 +43,8 @@ class OCRWrapper {
39
43
  external_customer_id: externalCustomerId,
40
44
  token: token,
41
45
  };
42
- if (externalAgentId) {
43
- attributes["external_agent_id"] = externalAgentId;
46
+ if (externalProductId) {
47
+ attributes["external_agent_id"] = externalProductId;
44
48
  }
45
49
  // Check if annotations are requested
46
50
  if (request.bboxAnnotationFormat || request.documentAnnotationFormat) {
@@ -8,11 +8,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { SpanStatusCode } from "@opentelemetry/api";
11
- import { getCustomerIdStorage, getAgentIdStorage, getTokenStorage, paidTracer } from "../tracing.mjs";
11
+ import { getPaidTracer, getToken } from "tracing/tracing.js";
12
+ import { getTracingContext } from "tracing/tracingContext.js";
12
13
  export class PaidOpenAI {
13
14
  constructor(openaiClient) {
14
15
  this.openai = openaiClient;
15
- this.tracer = paidTracer;
16
+ const tracer = getPaidTracer();
17
+ if (!tracer) {
18
+ throw new Error("Paid tracer is not initialized, Make sure to call 'initializeTracing()' first");
19
+ }
20
+ this.tracer = tracer;
16
21
  }
17
22
  get chat() {
18
23
  return new ChatWrapper(this.openai, this.tracer);
@@ -43,9 +48,8 @@ class ChatCompletionsWrapper {
43
48
  }
44
49
  create(params) {
45
50
  return __awaiter(this, void 0, void 0, function* () {
46
- const externalCustomerId = getCustomerIdStorage();
47
- const externalAgentId = getAgentIdStorage();
48
- const token = getTokenStorage();
51
+ const token = getToken();
52
+ const { externalProductId, externalCustomerId } = getTracingContext();
49
53
  if (!token || !externalCustomerId) {
50
54
  throw new Error("No token or externalCustomerId: This wrapper should be used inside a callback to paid.trace().");
51
55
  }
@@ -56,8 +60,8 @@ class ChatCompletionsWrapper {
56
60
  };
57
61
  attributes["external_customer_id"] = externalCustomerId;
58
62
  attributes["token"] = token;
59
- if (externalAgentId) {
60
- attributes["external_agent_id"] = externalAgentId;
63
+ if (externalProductId) {
64
+ attributes["external_agent_id"] = externalProductId;
61
65
  }
62
66
  span.setAttributes(attributes);
63
67
  try {
@@ -91,9 +95,8 @@ class ResponsesWrapper {
91
95
  }
92
96
  create(params) {
93
97
  return __awaiter(this, void 0, void 0, function* () {
94
- const externalCustomerId = getCustomerIdStorage();
95
- const externalAgentId = getAgentIdStorage();
96
- const token = getTokenStorage();
98
+ const { externalCustomerId, externalProductId } = getTracingContext();
99
+ const token = getToken();
97
100
  if (!token || !externalCustomerId) {
98
101
  throw new Error("No token or externalCustomerId: This wrapper should be used inside a callback to paid.trace().");
99
102
  }
@@ -105,8 +108,8 @@ class ResponsesWrapper {
105
108
  };
106
109
  attributes["external_customer_id"] = externalCustomerId;
107
110
  attributes["token"] = token;
108
- if (externalAgentId) {
109
- attributes["external_agent_id"] = externalAgentId;
111
+ if (externalProductId) {
112
+ attributes["external_agent_id"] = externalProductId;
110
113
  }
111
114
  span.setAttributes(attributes);
112
115
  try {
@@ -146,9 +149,8 @@ class EmbeddingsWrapper {
146
149
  }
147
150
  create(params) {
148
151
  return __awaiter(this, void 0, void 0, function* () {
149
- const externalCustomerId = getCustomerIdStorage();
150
- const externalAgentId = getAgentIdStorage();
151
- const token = getTokenStorage();
152
+ const { externalCustomerId, externalProductId } = getTracingContext();
153
+ const token = getToken();
152
154
  if (!token || !externalCustomerId) {
153
155
  throw new Error("No token or externalCustomerId: This wrapper should be used inside a callback to paid.trace().");
154
156
  }
@@ -159,8 +161,8 @@ class EmbeddingsWrapper {
159
161
  };
160
162
  attributes["external_customer_id"] = externalCustomerId;
161
163
  attributes["token"] = token;
162
- if (externalAgentId) {
163
- attributes["external_agent_id"] = externalAgentId;
164
+ if (externalProductId) {
165
+ attributes["external_agent_id"] = externalProductId;
164
166
  }
165
167
  span.setAttributes(attributes);
166
168
  try {
@@ -193,9 +195,8 @@ class ImagesWrapper {
193
195
  }
194
196
  generate(params) {
195
197
  return __awaiter(this, void 0, void 0, function* () {
196
- const externalCustomerId = getCustomerIdStorage();
197
- const externalAgentId = getAgentIdStorage();
198
- const token = getTokenStorage();
198
+ const { externalCustomerId, externalProductId } = getTracingContext();
199
+ const token = getToken();
199
200
  const model = params.model || "";
200
201
  if (!token || !externalCustomerId) {
201
202
  throw new Error("No token or externalCustomerId: This wrapper should be used inside a callback to paid.trace().");
@@ -209,12 +210,12 @@ class ImagesWrapper {
209
210
  };
210
211
  attributes["external_customer_id"] = externalCustomerId;
211
212
  attributes["token"] = token;
212
- if (externalAgentId) {
213
- attributes["external_agent_id"] = externalAgentId;
213
+ if (externalProductId) {
214
+ attributes["external_agent_id"] = externalProductId;
214
215
  }
215
216
  span.setAttributes(attributes);
216
217
  try {
217
- const response = yield this.openai.images.generate(params);
218
+ const response = (yield this.openai.images.generate(params));
218
219
  span.setAttributes({
219
220
  "gen_ai.image.count": (_a = params.n) !== null && _a !== void 0 ? _a : 1,
220
221
  "gen_ai.image.size": params.size || "",