@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.
- package/LICENSE +21 -0
- package/README.md +263 -11
- package/dist/cjs/Client.d.ts +22 -0
- package/dist/cjs/Client.js +45 -2
- package/dist/cjs/anthropic-wrapper/index.d.ts +1 -0
- package/dist/cjs/anthropic-wrapper/index.js +5 -0
- package/dist/cjs/api/resources/agents/client/Client.d.ts +52 -4
- package/dist/cjs/api/resources/agents/client/Client.js +52 -4
- package/dist/cjs/api/resources/agents/client/requests/AgentCreate.d.ts +4 -2
- package/dist/cjs/api/resources/contacts/client/Client.d.ts +4 -7
- package/dist/cjs/api/resources/contacts/client/Client.js +4 -7
- package/dist/cjs/api/resources/contacts/client/requests/ContactCreate.d.ts +8 -11
- package/dist/cjs/api/resources/customers/client/Client.d.ts +8 -2
- package/dist/cjs/api/resources/customers/client/Client.js +8 -2
- package/dist/cjs/api/resources/customers/client/requests/CustomerCreate.d.ts +2 -1
- package/dist/cjs/api/resources/orders/client/Client.d.ts +6 -5
- package/dist/cjs/api/resources/orders/client/Client.js +6 -5
- package/dist/cjs/api/resources/orders/client/requests/OrderCreate.d.ts +8 -7
- package/dist/cjs/api/resources/orders/resources/lines/client/Client.d.ts +11 -1
- package/dist/cjs/api/resources/orders/resources/lines/client/Client.js +11 -1
- package/dist/cjs/api/resources/orders/resources/lines/client/requests/LinesUpdateRequest.d.ts +11 -1
- package/dist/cjs/api/resources/usage/client/Client.d.ts +4 -2
- package/dist/cjs/api/resources/usage/client/Client.js +4 -2
- package/dist/cjs/api/resources/usage/client/requests/UsageRecordBulkRequest.d.ts +3 -1
- package/dist/cjs/api/types/BillingFrequency.d.ts +4 -4
- package/dist/cjs/api/types/BillingFrequency.js +3 -3
- package/dist/cjs/api/types/Pricing.d.ts +1 -0
- package/dist/cjs/api/types/PricingModelType.d.ts +2 -1
- package/dist/cjs/api/types/PricingModelType.js +1 -0
- package/dist/cjs/api/types/Signal.d.ts +1 -0
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +3 -3
- package/dist/cjs/langchain-wrapper/index.d.ts +1 -0
- package/dist/cjs/langchain-wrapper/index.js +5 -0
- package/dist/cjs/mistral-wrapper/index.d.ts +1 -0
- package/dist/cjs/mistral-wrapper/index.js +5 -0
- package/dist/cjs/openai-wrapper/index.d.ts +1 -0
- package/dist/cjs/openai-wrapper/index.js +5 -0
- package/dist/cjs/tracing/signal.d.ts +1 -0
- package/dist/cjs/tracing/signal.js +54 -0
- package/dist/cjs/tracing/tracing.d.ts +8 -0
- package/dist/cjs/tracing/tracing.js +127 -0
- package/dist/cjs/tracing/wrappers/anthropicWrapper.d.ts +16 -0
- package/dist/cjs/tracing/wrappers/anthropicWrapper.js +84 -0
- package/dist/cjs/tracing/wrappers/langchainCallback.d.ts +21 -0
- package/dist/cjs/tracing/wrappers/langchainCallback.js +142 -0
- package/dist/cjs/tracing/wrappers/mistralWrapper.d.ts +17 -0
- package/dist/cjs/tracing/wrappers/mistralWrapper.js +81 -0
- package/dist/cjs/tracing/wrappers/openAiWrapper.d.ts +48 -0
- package/dist/cjs/tracing/wrappers/openAiWrapper.js +241 -0
- package/dist/cjs/tracing/wrappers/vercelAIWrapper.d.ts +22 -0
- package/dist/cjs/tracing/wrappers/vercelAIWrapper.js +327 -0
- package/dist/cjs/vercel-wrapper/index.d.ts +1 -0
- package/dist/cjs/vercel-wrapper/index.js +10 -0
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/wrapper/BatchUsage.d.ts +3 -3
- package/dist/cjs/wrapper/BatchUsage.js +4 -4
- package/dist/esm/Client.d.mts +22 -0
- package/dist/esm/Client.mjs +45 -2
- package/dist/esm/anthropic-wrapper/index.d.mts +1 -0
- package/dist/esm/anthropic-wrapper/index.mjs +1 -0
- package/dist/esm/api/resources/agents/client/Client.d.mts +52 -4
- package/dist/esm/api/resources/agents/client/Client.mjs +52 -4
- package/dist/esm/api/resources/agents/client/requests/AgentCreate.d.mts +4 -2
- package/dist/esm/api/resources/contacts/client/Client.d.mts +4 -7
- package/dist/esm/api/resources/contacts/client/Client.mjs +4 -7
- package/dist/esm/api/resources/contacts/client/requests/ContactCreate.d.mts +8 -11
- package/dist/esm/api/resources/customers/client/Client.d.mts +8 -2
- package/dist/esm/api/resources/customers/client/Client.mjs +8 -2
- package/dist/esm/api/resources/customers/client/requests/CustomerCreate.d.mts +2 -1
- package/dist/esm/api/resources/orders/client/Client.d.mts +6 -5
- package/dist/esm/api/resources/orders/client/Client.mjs +6 -5
- package/dist/esm/api/resources/orders/client/requests/OrderCreate.d.mts +8 -7
- package/dist/esm/api/resources/orders/resources/lines/client/Client.d.mts +11 -1
- package/dist/esm/api/resources/orders/resources/lines/client/Client.mjs +11 -1
- package/dist/esm/api/resources/orders/resources/lines/client/requests/LinesUpdateRequest.d.mts +11 -1
- package/dist/esm/api/resources/usage/client/Client.d.mts +4 -2
- package/dist/esm/api/resources/usage/client/Client.mjs +4 -2
- package/dist/esm/api/resources/usage/client/requests/UsageRecordBulkRequest.d.mts +3 -1
- package/dist/esm/api/types/BillingFrequency.d.mts +4 -4
- package/dist/esm/api/types/BillingFrequency.mjs +3 -3
- package/dist/esm/api/types/Pricing.d.mts +1 -0
- package/dist/esm/api/types/PricingModelType.d.mts +2 -1
- package/dist/esm/api/types/PricingModelType.mjs +1 -0
- package/dist/esm/api/types/Signal.d.mts +1 -0
- package/dist/esm/index.d.mts +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/langchain-wrapper/index.d.mts +1 -0
- package/dist/esm/langchain-wrapper/index.mjs +1 -0
- package/dist/esm/mistral-wrapper/index.d.mts +1 -0
- package/dist/esm/mistral-wrapper/index.mjs +1 -0
- package/dist/esm/openai-wrapper/index.d.mts +1 -0
- package/dist/esm/openai-wrapper/index.mjs +1 -0
- package/dist/esm/tracing/signal.d.mts +1 -0
- package/dist/esm/tracing/signal.mjs +51 -0
- package/dist/esm/tracing/tracing.d.mts +8 -0
- package/dist/esm/tracing/tracing.mjs +116 -0
- package/dist/esm/tracing/wrappers/anthropicWrapper.d.mts +16 -0
- package/dist/esm/tracing/wrappers/anthropicWrapper.mjs +80 -0
- package/dist/esm/tracing/wrappers/langchainCallback.d.mts +21 -0
- package/dist/esm/tracing/wrappers/langchainCallback.mjs +138 -0
- package/dist/esm/tracing/wrappers/mistralWrapper.d.mts +17 -0
- package/dist/esm/tracing/wrappers/mistralWrapper.mjs +77 -0
- package/dist/esm/tracing/wrappers/openAiWrapper.d.mts +48 -0
- package/dist/esm/tracing/wrappers/openAiWrapper.mjs +237 -0
- package/dist/esm/tracing/wrappers/vercelAIWrapper.d.mts +22 -0
- package/dist/esm/tracing/wrappers/vercelAIWrapper.mjs +319 -0
- package/dist/esm/vercel-wrapper/index.d.mts +1 -0
- package/dist/esm/vercel-wrapper/index.mjs +1 -0
- package/dist/esm/version.d.mts +1 -1
- package/dist/esm/version.mjs +1 -1
- package/dist/esm/wrapper/BatchUsage.d.mts +3 -3
- package/dist/esm/wrapper/BatchUsage.mjs +3 -3
- package/package.json +102 -4
- 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: "
|
|
46
|
-
* lastName: "
|
|
47
|
-
* 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: "
|
|
77
|
-
* lastName: "
|
|
78
|
-
* 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: "
|
|
10
|
-
* lastName: "
|
|
11
|
-
* 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
|
|
28
|
-
billingCity
|
|
24
|
+
billingStreet?: string;
|
|
25
|
+
billingCity?: string;
|
|
29
26
|
billingStateProvince?: string;
|
|
30
|
-
billingCountry
|
|
31
|
-
billingPostalCode
|
|
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: "
|
|
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: "
|
|
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));
|
|
@@ -44,11 +44,12 @@ export declare class Orders {
|
|
|
44
44
|
*
|
|
45
45
|
* @example
|
|
46
46
|
* await client.orders.create({
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* startDate: "
|
|
51
|
-
*
|
|
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
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
* startDate: "
|
|
84
|
-
*
|
|
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
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* startDate: "
|
|
12
|
-
*
|
|
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
|
|
17
|
+
customerId?: string;
|
|
17
18
|
customerExternalId?: string;
|
|
18
|
-
billingContactId
|
|
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));
|
package/dist/esm/api/resources/orders/resources/lines/client/requests/LinesUpdateRequest.d.mts
CHANGED
|
@@ -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<
|
|
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:
|
|
49
|
+
return { data: undefined, rawResponse: _response.rawResponse };
|
|
48
50
|
}
|
|
49
51
|
if (_response.error.reason === "status-code") {
|
|
50
52
|
throw new errors.PaidError({
|
|
@@ -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 = "
|
|
4
|
+
export type BillingFrequency = "monthly" | "quarterly" | "annual";
|
|
5
5
|
export declare const BillingFrequency: {
|
|
6
|
-
readonly Monthly: "
|
|
7
|
-
readonly Quarterly: "
|
|
8
|
-
readonly Annual: "
|
|
6
|
+
readonly Monthly: "monthly";
|
|
7
|
+
readonly Quarterly: "quarterly";
|
|
8
|
+
readonly Annual: "annual";
|
|
9
9
|
};
|
|
@@ -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
|
};
|
package/dist/esm/index.d.mts
CHANGED
package/dist/esm/index.mjs
CHANGED
|
@@ -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 {};
|