@paid-ai/paid-node 0.0.8 → 0.2.1

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 (116) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +263 -11
  3. package/dist/cjs/Client.d.ts +22 -0
  4. package/dist/cjs/Client.js +45 -2
  5. package/dist/cjs/anthropic-wrapper/index.d.ts +1 -0
  6. package/dist/cjs/anthropic-wrapper/index.js +5 -0
  7. package/dist/cjs/api/resources/agents/client/Client.d.ts +52 -4
  8. package/dist/cjs/api/resources/agents/client/Client.js +52 -4
  9. package/dist/cjs/api/resources/agents/client/requests/AgentCreate.d.ts +4 -2
  10. package/dist/cjs/api/resources/contacts/client/Client.d.ts +4 -7
  11. package/dist/cjs/api/resources/contacts/client/Client.js +4 -7
  12. package/dist/cjs/api/resources/contacts/client/requests/ContactCreate.d.ts +8 -11
  13. package/dist/cjs/api/resources/customers/client/Client.d.ts +8 -2
  14. package/dist/cjs/api/resources/customers/client/Client.js +8 -2
  15. package/dist/cjs/api/resources/customers/client/requests/CustomerCreate.d.ts +2 -1
  16. package/dist/cjs/api/resources/orders/client/Client.d.ts +6 -5
  17. package/dist/cjs/api/resources/orders/client/Client.js +6 -5
  18. package/dist/cjs/api/resources/orders/client/requests/OrderCreate.d.ts +8 -7
  19. package/dist/cjs/api/resources/orders/resources/lines/client/Client.d.ts +11 -1
  20. package/dist/cjs/api/resources/orders/resources/lines/client/Client.js +11 -1
  21. package/dist/cjs/api/resources/orders/resources/lines/client/requests/LinesUpdateRequest.d.ts +11 -1
  22. package/dist/cjs/api/resources/usage/client/Client.d.ts +4 -2
  23. package/dist/cjs/api/resources/usage/client/Client.js +4 -2
  24. package/dist/cjs/api/resources/usage/client/requests/UsageRecordBulkRequest.d.ts +3 -1
  25. package/dist/cjs/api/types/BillingFrequency.d.ts +4 -4
  26. package/dist/cjs/api/types/BillingFrequency.js +3 -3
  27. package/dist/cjs/api/types/Pricing.d.ts +1 -0
  28. package/dist/cjs/api/types/PricingModelType.d.ts +2 -1
  29. package/dist/cjs/api/types/PricingModelType.js +1 -0
  30. package/dist/cjs/api/types/Signal.d.ts +1 -0
  31. package/dist/cjs/index.d.ts +1 -1
  32. package/dist/cjs/index.js +3 -3
  33. package/dist/cjs/langchain-wrapper/index.d.ts +1 -0
  34. package/dist/cjs/langchain-wrapper/index.js +5 -0
  35. package/dist/cjs/mistral-wrapper/index.d.ts +1 -0
  36. package/dist/cjs/mistral-wrapper/index.js +5 -0
  37. package/dist/cjs/openai-wrapper/index.d.ts +1 -0
  38. package/dist/cjs/openai-wrapper/index.js +5 -0
  39. package/dist/cjs/tracing/signal.d.ts +1 -0
  40. package/dist/cjs/tracing/signal.js +54 -0
  41. package/dist/cjs/tracing/tracing.d.ts +8 -0
  42. package/dist/cjs/tracing/tracing.js +127 -0
  43. package/dist/cjs/tracing/wrappers/anthropicWrapper.d.ts +16 -0
  44. package/dist/cjs/tracing/wrappers/anthropicWrapper.js +84 -0
  45. package/dist/cjs/tracing/wrappers/langchainCallback.d.ts +21 -0
  46. package/dist/cjs/tracing/wrappers/langchainCallback.js +142 -0
  47. package/dist/cjs/tracing/wrappers/mistralWrapper.d.ts +17 -0
  48. package/dist/cjs/tracing/wrappers/mistralWrapper.js +81 -0
  49. package/dist/cjs/tracing/wrappers/openAiWrapper.d.ts +48 -0
  50. package/dist/cjs/tracing/wrappers/openAiWrapper.js +241 -0
  51. package/dist/cjs/tracing/wrappers/vercelAIWrapper.d.ts +22 -0
  52. package/dist/cjs/tracing/wrappers/vercelAIWrapper.js +327 -0
  53. package/dist/cjs/vercel-wrapper/index.d.ts +1 -0
  54. package/dist/cjs/vercel-wrapper/index.js +10 -0
  55. package/dist/cjs/version.d.ts +1 -1
  56. package/dist/cjs/version.js +1 -1
  57. package/dist/cjs/wrapper/BatchUsage.d.ts +3 -3
  58. package/dist/cjs/wrapper/BatchUsage.js +4 -4
  59. package/dist/esm/Client.d.mts +22 -0
  60. package/dist/esm/Client.mjs +45 -2
  61. package/dist/esm/anthropic-wrapper/index.d.mts +1 -0
  62. package/dist/esm/anthropic-wrapper/index.mjs +1 -0
  63. package/dist/esm/api/resources/agents/client/Client.d.mts +52 -4
  64. package/dist/esm/api/resources/agents/client/Client.mjs +52 -4
  65. package/dist/esm/api/resources/agents/client/requests/AgentCreate.d.mts +4 -2
  66. package/dist/esm/api/resources/contacts/client/Client.d.mts +4 -7
  67. package/dist/esm/api/resources/contacts/client/Client.mjs +4 -7
  68. package/dist/esm/api/resources/contacts/client/requests/ContactCreate.d.mts +8 -11
  69. package/dist/esm/api/resources/customers/client/Client.d.mts +8 -2
  70. package/dist/esm/api/resources/customers/client/Client.mjs +8 -2
  71. package/dist/esm/api/resources/customers/client/requests/CustomerCreate.d.mts +2 -1
  72. package/dist/esm/api/resources/orders/client/Client.d.mts +6 -5
  73. package/dist/esm/api/resources/orders/client/Client.mjs +6 -5
  74. package/dist/esm/api/resources/orders/client/requests/OrderCreate.d.mts +8 -7
  75. package/dist/esm/api/resources/orders/resources/lines/client/Client.d.mts +11 -1
  76. package/dist/esm/api/resources/orders/resources/lines/client/Client.mjs +11 -1
  77. package/dist/esm/api/resources/orders/resources/lines/client/requests/LinesUpdateRequest.d.mts +11 -1
  78. package/dist/esm/api/resources/usage/client/Client.d.mts +4 -2
  79. package/dist/esm/api/resources/usage/client/Client.mjs +4 -2
  80. package/dist/esm/api/resources/usage/client/requests/UsageRecordBulkRequest.d.mts +3 -1
  81. package/dist/esm/api/types/BillingFrequency.d.mts +4 -4
  82. package/dist/esm/api/types/BillingFrequency.mjs +3 -3
  83. package/dist/esm/api/types/Pricing.d.mts +1 -0
  84. package/dist/esm/api/types/PricingModelType.d.mts +2 -1
  85. package/dist/esm/api/types/PricingModelType.mjs +1 -0
  86. package/dist/esm/api/types/Signal.d.mts +1 -0
  87. package/dist/esm/index.d.mts +1 -1
  88. package/dist/esm/index.mjs +1 -1
  89. package/dist/esm/langchain-wrapper/index.d.mts +1 -0
  90. package/dist/esm/langchain-wrapper/index.mjs +1 -0
  91. package/dist/esm/mistral-wrapper/index.d.mts +1 -0
  92. package/dist/esm/mistral-wrapper/index.mjs +1 -0
  93. package/dist/esm/openai-wrapper/index.d.mts +1 -0
  94. package/dist/esm/openai-wrapper/index.mjs +1 -0
  95. package/dist/esm/tracing/signal.d.mts +1 -0
  96. package/dist/esm/tracing/signal.mjs +51 -0
  97. package/dist/esm/tracing/tracing.d.mts +8 -0
  98. package/dist/esm/tracing/tracing.mjs +116 -0
  99. package/dist/esm/tracing/wrappers/anthropicWrapper.d.mts +16 -0
  100. package/dist/esm/tracing/wrappers/anthropicWrapper.mjs +80 -0
  101. package/dist/esm/tracing/wrappers/langchainCallback.d.mts +21 -0
  102. package/dist/esm/tracing/wrappers/langchainCallback.mjs +138 -0
  103. package/dist/esm/tracing/wrappers/mistralWrapper.d.mts +17 -0
  104. package/dist/esm/tracing/wrappers/mistralWrapper.mjs +77 -0
  105. package/dist/esm/tracing/wrappers/openAiWrapper.d.mts +48 -0
  106. package/dist/esm/tracing/wrappers/openAiWrapper.mjs +237 -0
  107. package/dist/esm/tracing/wrappers/vercelAIWrapper.d.mts +22 -0
  108. package/dist/esm/tracing/wrappers/vercelAIWrapper.mjs +319 -0
  109. package/dist/esm/vercel-wrapper/index.d.mts +1 -0
  110. package/dist/esm/vercel-wrapper/index.mjs +1 -0
  111. package/dist/esm/version.d.mts +1 -1
  112. package/dist/esm/version.mjs +1 -1
  113. package/dist/esm/wrapper/BatchUsage.d.mts +3 -3
  114. package/dist/esm/wrapper/BatchUsage.mjs +3 -3
  115. package/package.json +102 -4
  116. package/reference.md +96 -21
@@ -41,14 +41,11 @@ export declare class Contacts {
41
41
  *
42
42
  * @example
43
43
  * await client.contacts.create({
44
+ * customerExternalId: "acme-inc",
44
45
  * salutation: "Mr.",
45
- * firstName: "firstName",
46
- * lastName: "lastName",
47
- * email: "email",
48
- * billingStreet: "billingStreet",
49
- * billingCity: "billingCity",
50
- * billingCountry: "billingCountry",
51
- * billingPostalCode: "billingPostalCode"
46
+ * firstName: "John",
47
+ * lastName: "Doe",
48
+ * email: "john.doe@example.com"
52
49
  * })
53
50
  */
54
51
  create(request: Paid.ContactCreate, requestOptions?: Contacts.RequestOptions): core.HttpResponsePromise<Paid.Contact>;
@@ -72,14 +72,11 @@ export class Contacts {
72
72
  *
73
73
  * @example
74
74
  * await client.contacts.create({
75
+ * customerExternalId: "acme-inc",
75
76
  * salutation: "Mr.",
76
- * firstName: "firstName",
77
- * lastName: "lastName",
78
- * email: "email",
79
- * billingStreet: "billingStreet",
80
- * billingCity: "billingCity",
81
- * billingCountry: "billingCountry",
82
- * billingPostalCode: "billingPostalCode"
77
+ * firstName: "John",
78
+ * lastName: "Doe",
79
+ * email: "john.doe@example.com"
83
80
  * })
84
81
  */
85
82
  create(request, requestOptions) {
@@ -5,14 +5,11 @@ import * as Paid from "../../../../index.mjs";
5
5
  /**
6
6
  * @example
7
7
  * {
8
+ * customerExternalId: "acme-inc",
8
9
  * salutation: "Mr.",
9
- * firstName: "firstName",
10
- * lastName: "lastName",
11
- * email: "email",
12
- * billingStreet: "billingStreet",
13
- * billingCity: "billingCity",
14
- * billingCountry: "billingCountry",
15
- * billingPostalCode: "billingPostalCode"
10
+ * firstName: "John",
11
+ * lastName: "Doe",
12
+ * email: "john.doe@example.com"
16
13
  * }
17
14
  */
18
15
  export interface ContactCreate {
@@ -24,9 +21,9 @@ export interface ContactCreate {
24
21
  lastName: string;
25
22
  email: string;
26
23
  phone?: string;
27
- billingStreet: string;
28
- billingCity: string;
24
+ billingStreet?: string;
25
+ billingCity?: string;
29
26
  billingStateProvince?: string;
30
- billingCountry: string;
31
- billingPostalCode: string;
27
+ billingCountry?: string;
28
+ billingPostalCode?: string;
32
29
  }
@@ -41,7 +41,8 @@ export declare class Customers {
41
41
  *
42
42
  * @example
43
43
  * await client.customers.create({
44
- * name: "name"
44
+ * name: "Acme, Inc.",
45
+ * externalId: "acme-inc"
45
46
  * })
46
47
  */
47
48
  create(request: Paid.CustomerCreate, requestOptions?: Customers.RequestOptions): core.HttpResponsePromise<Paid.Customer>;
@@ -61,7 +62,12 @@ export declare class Customers {
61
62
  * @param {Customers.RequestOptions} requestOptions - Request-specific configuration.
62
63
  *
63
64
  * @example
64
- * await client.customers.update("customerId", {})
65
+ * await client.customers.update("customerId", {
66
+ * name: "Acme, Inc. (Updated)",
67
+ * phone: "123-456-7890",
68
+ * employeeCount: 101,
69
+ * annualRevenue: 1000001
70
+ * })
65
71
  */
66
72
  update(customerId: string, request: Paid.CustomerUpdate, requestOptions?: Customers.RequestOptions): core.HttpResponsePromise<Paid.Customer>;
67
73
  private __update;
@@ -72,7 +72,8 @@ export class Customers {
72
72
  *
73
73
  * @example
74
74
  * await client.customers.create({
75
- * name: "name"
75
+ * name: "Acme, Inc.",
76
+ * externalId: "acme-inc"
76
77
  * })
77
78
  */
78
79
  create(request, requestOptions) {
@@ -173,7 +174,12 @@ export class Customers {
173
174
  * @param {Customers.RequestOptions} requestOptions - Request-specific configuration.
174
175
  *
175
176
  * @example
176
- * await client.customers.update("customerId", {})
177
+ * await client.customers.update("customerId", {
178
+ * name: "Acme, Inc. (Updated)",
179
+ * phone: "123-456-7890",
180
+ * employeeCount: 101,
181
+ * annualRevenue: 1000001
182
+ * })
177
183
  */
178
184
  update(customerId, request, requestOptions) {
179
185
  return core.HttpResponsePromise.fromPromise(this.__update(customerId, request, requestOptions));
@@ -5,7 +5,8 @@ import * as Paid from "../../../../index.mjs";
5
5
  /**
6
6
  * @example
7
7
  * {
8
- * name: "name"
8
+ * name: "Acme, Inc.",
9
+ * externalId: "acme-inc"
9
10
  * }
10
11
  */
11
12
  export interface CustomerCreate {
@@ -44,11 +44,12 @@ export declare class Orders {
44
44
  *
45
45
  * @example
46
46
  * await client.orders.create({
47
- * customerId: "customerId",
48
- * billingContactId: "billingContactId",
49
- * name: "name",
50
- * startDate: "startDate",
51
- * currency: "currency"
47
+ * customerExternalId: "acme-inc",
48
+ * name: "Acme Order",
49
+ * description: "Acme Order is an order for Acme, Inc.",
50
+ * startDate: "2025-01-01",
51
+ * endDate: "2026-01-01",
52
+ * currency: "USD"
52
53
  * })
53
54
  */
54
55
  create(request: Paid.OrderCreate, requestOptions?: Orders.RequestOptions): core.HttpResponsePromise<Paid.Order>;
@@ -77,11 +77,12 @@ export class Orders {
77
77
  *
78
78
  * @example
79
79
  * await client.orders.create({
80
- * customerId: "customerId",
81
- * billingContactId: "billingContactId",
82
- * name: "name",
83
- * startDate: "startDate",
84
- * currency: "currency"
80
+ * customerExternalId: "acme-inc",
81
+ * name: "Acme Order",
82
+ * description: "Acme Order is an order for Acme, Inc.",
83
+ * startDate: "2025-01-01",
84
+ * endDate: "2026-01-01",
85
+ * currency: "USD"
85
86
  * })
86
87
  */
87
88
  create(request, requestOptions) {
@@ -5,17 +5,18 @@ import * as Paid from "../../../../index.mjs";
5
5
  /**
6
6
  * @example
7
7
  * {
8
- * customerId: "customerId",
9
- * billingContactId: "billingContactId",
10
- * name: "name",
11
- * startDate: "startDate",
12
- * currency: "currency"
8
+ * customerExternalId: "acme-inc",
9
+ * name: "Acme Order",
10
+ * description: "Acme Order is an order for Acme, Inc.",
11
+ * startDate: "2025-01-01",
12
+ * endDate: "2026-01-01",
13
+ * currency: "USD"
13
14
  * }
14
15
  */
15
16
  export interface OrderCreate {
16
- customerId: string;
17
+ customerId?: string;
17
18
  customerExternalId?: string;
18
- billingContactId: string;
19
+ billingContactId?: string;
19
20
  name: string;
20
21
  description?: string;
21
22
  startDate: string;
@@ -33,7 +33,17 @@ export declare class Lines {
33
33
  * @param {Lines.RequestOptions} requestOptions - Request-specific configuration.
34
34
  *
35
35
  * @example
36
- * await client.orders.lines.update("orderId")
36
+ * await client.orders.lines.update("orderId", {
37
+ * lines: [{
38
+ * agentExternalId: "acme-agent",
39
+ * name: "Order Line One",
40
+ * description: "Order Line One is an order line for Acme, Inc."
41
+ * }, {
42
+ * agentExternalId: "acme-agent-2",
43
+ * name: "Order Line Two",
44
+ * description: "Order Line Two is an order line for Acme, Inc."
45
+ * }]
46
+ * })
37
47
  */
38
48
  update(orderId: string, request?: Paid.orders.LinesUpdateRequest, requestOptions?: Lines.RequestOptions): core.HttpResponsePromise<Paid.Order>;
39
49
  private __update;
@@ -25,7 +25,17 @@ export class Lines {
25
25
  * @param {Lines.RequestOptions} requestOptions - Request-specific configuration.
26
26
  *
27
27
  * @example
28
- * await client.orders.lines.update("orderId")
28
+ * await client.orders.lines.update("orderId", {
29
+ * lines: [{
30
+ * agentExternalId: "acme-agent",
31
+ * name: "Order Line One",
32
+ * description: "Order Line One is an order line for Acme, Inc."
33
+ * }, {
34
+ * agentExternalId: "acme-agent-2",
35
+ * name: "Order Line Two",
36
+ * description: "Order Line Two is an order line for Acme, Inc."
37
+ * }]
38
+ * })
29
39
  */
30
40
  update(orderId, request = {}, requestOptions) {
31
41
  return core.HttpResponsePromise.fromPromise(this.__update(orderId, request, requestOptions));
@@ -4,7 +4,17 @@
4
4
  import * as Paid from "../../../../../../index.mjs";
5
5
  /**
6
6
  * @example
7
- * {}
7
+ * {
8
+ * lines: [{
9
+ * agentExternalId: "acme-agent",
10
+ * name: "Order Line One",
11
+ * description: "Order Line One is an order line for Acme, Inc."
12
+ * }, {
13
+ * agentExternalId: "acme-agent-2",
14
+ * name: "Order Line Two",
15
+ * description: "Order Line Two is an order line for Acme, Inc."
16
+ * }]
17
+ * }
8
18
  */
9
19
  export interface LinesUpdateRequest {
10
20
  lines?: Paid.OrderLineCreate[];
@@ -32,9 +32,11 @@ export declare class Usage {
32
32
  * @param {Usage.RequestOptions} requestOptions - Request-specific configuration.
33
33
  *
34
34
  * @example
35
- * await client.usage.recordBulk()
35
+ * await client.usage.recordBulk({
36
+ * signals: [{}, {}, {}]
37
+ * })
36
38
  */
37
- recordBulk(request?: Paid.UsageRecordBulkRequest, requestOptions?: Usage.RequestOptions): core.HttpResponsePromise<unknown[]>;
39
+ recordBulk(request?: Paid.UsageRecordBulkRequest, requestOptions?: Usage.RequestOptions): core.HttpResponsePromise<void>;
38
40
  private __recordBulk;
39
41
  protected _getAuthorizationHeader(): Promise<string>;
40
42
  }
@@ -24,7 +24,9 @@ export class Usage {
24
24
  * @param {Usage.RequestOptions} requestOptions - Request-specific configuration.
25
25
  *
26
26
  * @example
27
- * await client.usage.recordBulk()
27
+ * await client.usage.recordBulk({
28
+ * signals: [{}, {}, {}]
29
+ * })
28
30
  */
29
31
  recordBulk(request = {}, requestOptions) {
30
32
  return core.HttpResponsePromise.fromPromise(this.__recordBulk(request, requestOptions));
@@ -44,7 +46,7 @@ export class Usage {
44
46
  abortSignal: requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.abortSignal,
45
47
  });
46
48
  if (_response.ok) {
47
- return { data: _response.body, rawResponse: _response.rawResponse };
49
+ return { data: undefined, rawResponse: _response.rawResponse };
48
50
  }
49
51
  if (_response.error.reason === "status-code") {
50
52
  throw new errors.PaidError({
@@ -4,7 +4,9 @@
4
4
  import * as Paid from "../../../../index.mjs";
5
5
  /**
6
6
  * @example
7
- * {}
7
+ * {
8
+ * signals: [{}, {}, {}]
9
+ * }
8
10
  */
9
11
  export interface UsageRecordBulkRequest {
10
12
  signals?: Paid.Signal[];
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * This file was auto-generated by Fern from our API Definition.
3
3
  */
4
- export type BillingFrequency = "Monthly" | "Quarterly" | "Annual";
4
+ export type BillingFrequency = "monthly" | "quarterly" | "annual";
5
5
  export declare const BillingFrequency: {
6
- readonly Monthly: "Monthly";
7
- readonly Quarterly: "Quarterly";
8
- readonly Annual: "Annual";
6
+ readonly Monthly: "monthly";
7
+ readonly Quarterly: "quarterly";
8
+ readonly Annual: "annual";
9
9
  };
@@ -2,7 +2,7 @@
2
2
  * This file was auto-generated by Fern from our API Definition.
3
3
  */
4
4
  export const BillingFrequency = {
5
- Monthly: "Monthly",
6
- Quarterly: "Quarterly",
7
- Annual: "Annual",
5
+ Monthly: "monthly",
6
+ Quarterly: "quarterly",
7
+ Annual: "annual",
8
8
  };
@@ -5,6 +5,7 @@ import * as Paid from "../index.mjs";
5
5
  export interface Pricing {
6
6
  eventName?: string;
7
7
  taxable: boolean;
8
+ creditCost?: number;
8
9
  chargeType: Paid.ChargeType;
9
10
  pricingModel: Paid.PricingModelType;
10
11
  billingFrequency: Paid.BillingFrequency;
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * This file was auto-generated by Fern from our API Definition.
3
3
  */
4
- export type PricingModelType = "PerUnit" | "VolumePricing" | "GraduatedPricing";
4
+ export type PricingModelType = "PerUnit" | "VolumePricing" | "GraduatedPricing" | "PrepaidCredits";
5
5
  export declare const PricingModelType: {
6
6
  readonly PerUnit: "PerUnit";
7
7
  readonly VolumePricing: "VolumePricing";
8
8
  readonly GraduatedPricing: "GraduatedPricing";
9
+ readonly PrepaidCredits: "PrepaidCredits";
9
10
  };
@@ -5,4 +5,5 @@ export const PricingModelType = {
5
5
  PerUnit: "PerUnit",
6
6
  VolumePricing: "VolumePricing",
7
7
  GraduatedPricing: "GraduatedPricing",
8
+ PrepaidCredits: "PrepaidCredits",
8
9
  };
@@ -4,6 +4,7 @@
4
4
  export interface Signal {
5
5
  event_name?: string;
6
6
  agent_id?: string;
7
+ external_agent_id?: string;
7
8
  customer_id?: string;
8
9
  data?: Record<string, unknown>;
9
10
  }
@@ -1,4 +1,4 @@
1
1
  export * as Paid from "./api/index.mjs";
2
2
  export { PaidClient } from "./Client.mjs";
3
- export { PaidEnvironment } from "./environments.mjs";
4
3
  export { PaidError, PaidTimeoutError } from "./errors/index.mjs";
4
+ export { PaidEnvironment } from "./environments.mjs";
@@ -1,4 +1,4 @@
1
1
  export * as Paid from "./api/index.mjs";
2
2
  export { PaidClient } from "./Client.mjs";
3
- export { PaidEnvironment } from "./environments.mjs";
4
3
  export { PaidError, PaidTimeoutError } from "./errors/index.mjs";
4
+ export { PaidEnvironment } from "./environments.mjs";
@@ -0,0 +1 @@
1
+ export { PaidLangChainCallback } from "../tracing/wrappers/langchainCallback.mjs";
@@ -0,0 +1 @@
1
+ export { PaidLangChainCallback } from "../tracing/wrappers/langchainCallback.mjs";
@@ -0,0 +1 @@
1
+ export { PaidMistral } from "../tracing/wrappers/mistralWrapper.mjs";
@@ -0,0 +1 @@
1
+ export { PaidMistral } from "../tracing/wrappers/mistralWrapper.mjs";
@@ -0,0 +1 @@
1
+ export { PaidOpenAI } from "../tracing/wrappers/openAiWrapper.mjs";
@@ -0,0 +1 @@
1
+ export { PaidOpenAI } from "../tracing/wrappers/openAiWrapper.mjs";
@@ -0,0 +1 @@
1
+ export declare function _signal(eventName: string, enableCostTracing: boolean, data?: Record<string, any>): void;
@@ -0,0 +1,51 @@
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.");
7
+ }
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()`);
13
+ }
14
+ paidTracer.startActiveSpan("trace.signal", (span) => {
15
+ try {
16
+ const attributes = {
17
+ external_customer_id: externalCustomerId,
18
+ external_agent_id: externalAgentId,
19
+ event_name: eventName,
20
+ token: token,
21
+ };
22
+ if (enableCostTracing) {
23
+ // let the app know to associate this signal with cost traces
24
+ attributes["enable_cost_tracing"] = true;
25
+ if (data === undefined) {
26
+ data = { paid: { enable_cost_tracing: true } };
27
+ }
28
+ else {
29
+ data["paid"] = { enable_cost_tracing: true };
30
+ }
31
+ }
32
+ // Optional data (ex. manual cost tracking)
33
+ if (data) {
34
+ attributes["data"] = JSON.stringify(data);
35
+ }
36
+ span.setAttributes(attributes);
37
+ // Mark span as successful
38
+ span.setStatus({ code: SpanStatusCode.OK });
39
+ }
40
+ catch (error) {
41
+ span.setStatus({
42
+ code: SpanStatusCode.ERROR,
43
+ message: error.message,
44
+ });
45
+ span.recordException(error);
46
+ }
47
+ finally {
48
+ span.end();
49
+ }
50
+ });
51
+ }
@@ -0,0 +1,8 @@
1
+ import winston from "winston";
2
+ 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>>;
@@ -0,0 +1,116 @@
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 { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
11
+ import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
12
+ import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
13
+ import { SpanStatusCode } from "@opentelemetry/api";
14
+ import { AsyncLocalStorage } from "async_hooks";
15
+ import winston from "winston";
16
+ export const logger = winston.createLogger({
17
+ level: "silent", // Default to 'silent' to avoid logging unless set via environment variable
18
+ format: winston.format.simple(),
19
+ transports: [new winston.transports.Console()],
20
+ });
21
+ const logLevel = process.env.PAID_LOG_LEVEL;
22
+ if (logLevel) {
23
+ logger.level = logLevel;
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
+ };
46
+ let _isShuttingDown = false;
47
+ function setupGracefulShutdown(shuttable) {
48
+ ["SIGINT", "SIGTERM", "beforeExit", "uncaughtException", "unhandledRejection"].forEach((signal) => {
49
+ process.on(signal, () => {
50
+ if (_isShuttingDown) {
51
+ return;
52
+ }
53
+ _isShuttingDown = true;
54
+ shuttable
55
+ .shutdown()
56
+ .then(() => logger.info(`Paid tracing SDK shut down from signal: ${signal}`))
57
+ .catch((error) => logger.error(`Error shutting down Paid tracing SDK ${error}`));
58
+ });
59
+ });
60
+ }
61
+ export function _initializeTracing(apiKey, collectorEndpoint) {
62
+ if (getToken()) {
63
+ throw new Error("Tracing SDK is already initialized.");
64
+ }
65
+ if (!apiKey) {
66
+ throw new Error("Cannot initialize tracing SDK - first initialize the PaidClient with an API key");
67
+ }
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");
74
+ }
75
+ setupGracefulShutdown(spanProcessor);
76
+ setToken(apiKey);
77
+ const collectorAddress = collectorEndpoint || COLLECTOR_ENDPOINT;
78
+ logger.info(`Paid tracing SDK initialized with collector endpoint: ${collectorAddress}`);
79
+ }
80
+ export function _trace(externalCustomerId, fn, externalAgentId, ...args) {
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ const token = getToken();
83
+ if (!token || !externalCustomerId) {
84
+ throw new Error(`Paid tracing is not initialized. Make sure to call initializeTracing() first.`);
85
+ }
86
+ return paidTracer.startActiveSpan("paid.node", (span) => __awaiter(this, void 0, void 0, function* () {
87
+ span.setAttribute("external_customer_id", externalCustomerId);
88
+ span.setAttribute("token", token);
89
+ if (externalAgentId) {
90
+ span.setAttribute("external_agent_id", externalAgentId);
91
+ }
92
+ 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
+ }));
100
+ span.setStatus({ code: SpanStatusCode.OK });
101
+ return result;
102
+ }
103
+ catch (error) {
104
+ span.setStatus({
105
+ code: SpanStatusCode.ERROR,
106
+ message: error.message,
107
+ });
108
+ span.recordException(error);
109
+ throw error;
110
+ }
111
+ finally {
112
+ span.end();
113
+ }
114
+ }));
115
+ });
116
+ }
@@ -0,0 +1,16 @@
1
+ import Anthropic from "@anthropic-ai/sdk";
2
+ import { Tracer } from "@opentelemetry/api";
3
+ import { MessageCreateParams } from "@anthropic-ai/sdk/resources/messages";
4
+ export declare class PaidAnthropic {
5
+ private readonly anthropic;
6
+ private readonly tracer;
7
+ constructor(anthropicClient: Anthropic);
8
+ get messages(): MessagesWrapper;
9
+ }
10
+ declare class MessagesWrapper {
11
+ private anthropic;
12
+ private tracer;
13
+ constructor(anthropic: Anthropic, tracer: Tracer);
14
+ create(params: MessageCreateParams): Promise<any>;
15
+ }
16
+ export {};