@stateset/acp-client 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ /**
3
+ * StateSet ACP Handler - Node.js Client
4
+ *
5
+ * Official Node.js bindings for the StateSet Agentic Commerce Protocol Handler.
6
+ * Supports both HTTP REST and gRPC transports.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { AcpHttpClient, AcpGrpcClient } from '@stateset/acp-client';
11
+ *
12
+ * // HTTP Client
13
+ * const httpClient = new AcpHttpClient({
14
+ * baseUrl: 'http://localhost:8080',
15
+ * apiKey: 'api_key_demo_123',
16
+ * });
17
+ *
18
+ * const session = await httpClient.createCheckoutSession({
19
+ * items: [{ id: 'prod_123', quantity: 1 }],
20
+ * });
21
+ *
22
+ * // gRPC Client
23
+ * const grpcClient = new AcpGrpcClient({
24
+ * grpcAddress: 'localhost:50051',
25
+ * apiKey: 'api_key_demo_123',
26
+ * });
27
+ * await grpcClient.connect();
28
+ *
29
+ * const session = await grpcClient.createCheckoutSession({
30
+ * items: [{ id: 'prod_123', quantity: 1 }],
31
+ * });
32
+ * ```
33
+ */
34
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
35
+ if (k2 === undefined) k2 = k;
36
+ var desc = Object.getOwnPropertyDescriptor(m, k);
37
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
38
+ desc = { enumerable: true, get: function() { return m[k]; } };
39
+ }
40
+ Object.defineProperty(o, k2, desc);
41
+ }) : (function(o, m, k, k2) {
42
+ if (k2 === undefined) k2 = k;
43
+ o[k2] = m[k];
44
+ }));
45
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
46
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
47
+ };
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.AcpGrpcError = exports.AcpGrpcClient = exports.AcpApiError = exports.AcpHttpClient = void 0;
50
+ // Export HTTP client
51
+ var http_client_1 = require("./http-client");
52
+ Object.defineProperty(exports, "AcpHttpClient", { enumerable: true, get: function () { return http_client_1.AcpHttpClient; } });
53
+ Object.defineProperty(exports, "AcpApiError", { enumerable: true, get: function () { return http_client_1.AcpApiError; } });
54
+ // Export gRPC client
55
+ var grpc_client_1 = require("./grpc-client");
56
+ Object.defineProperty(exports, "AcpGrpcClient", { enumerable: true, get: function () { return grpc_client_1.AcpGrpcClient; } });
57
+ Object.defineProperty(exports, "AcpGrpcError", { enumerable: true, get: function () { return grpc_client_1.AcpGrpcError; } });
58
+ // Export all types
59
+ __exportStar(require("./types"), exports);
60
+ // Default export for convenience
61
+ const http_client_2 = require("./http-client");
62
+ exports.default = http_client_2.AcpHttpClient;
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JHOzs7Ozs7Ozs7Ozs7Ozs7OztBQUVILHFCQUFxQjtBQUNyQiw2Q0FBMkQ7QUFBbEQsNEdBQUEsYUFBYSxPQUFBO0FBQUUsMEdBQUEsV0FBVyxPQUFBO0FBRW5DLHFCQUFxQjtBQUNyQiw2Q0FBNEQ7QUFBbkQsNEdBQUEsYUFBYSxPQUFBO0FBQUUsMkdBQUEsWUFBWSxPQUFBO0FBRXBDLG1CQUFtQjtBQUNuQiwwQ0FBd0I7QUFFeEIsaUNBQWlDO0FBQ2pDLCtDQUE4QztBQUM5QyxrQkFBZSwyQkFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdGF0ZVNldCBBQ1AgSGFuZGxlciAtIE5vZGUuanMgQ2xpZW50XG4gKlxuICogT2ZmaWNpYWwgTm9kZS5qcyBiaW5kaW5ncyBmb3IgdGhlIFN0YXRlU2V0IEFnZW50aWMgQ29tbWVyY2UgUHJvdG9jb2wgSGFuZGxlci5cbiAqIFN1cHBvcnRzIGJvdGggSFRUUCBSRVNUIGFuZCBnUlBDIHRyYW5zcG9ydHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IEFjcEh0dHBDbGllbnQsIEFjcEdycGNDbGllbnQgfSBmcm9tICdAc3RhdGVzZXQvYWNwLWNsaWVudCc7XG4gKlxuICogLy8gSFRUUCBDbGllbnRcbiAqIGNvbnN0IGh0dHBDbGllbnQgPSBuZXcgQWNwSHR0cENsaWVudCh7XG4gKiAgIGJhc2VVcmw6ICdodHRwOi8vbG9jYWxob3N0OjgwODAnLFxuICogICBhcGlLZXk6ICdhcGlfa2V5X2RlbW9fMTIzJyxcbiAqIH0pO1xuICpcbiAqIGNvbnN0IHNlc3Npb24gPSBhd2FpdCBodHRwQ2xpZW50LmNyZWF0ZUNoZWNrb3V0U2Vzc2lvbih7XG4gKiAgIGl0ZW1zOiBbeyBpZDogJ3Byb2RfMTIzJywgcXVhbnRpdHk6IDEgfV0sXG4gKiB9KTtcbiAqXG4gKiAvLyBnUlBDIENsaWVudFxuICogY29uc3QgZ3JwY0NsaWVudCA9IG5ldyBBY3BHcnBjQ2xpZW50KHtcbiAqICAgZ3JwY0FkZHJlc3M6ICdsb2NhbGhvc3Q6NTAwNTEnLFxuICogICBhcGlLZXk6ICdhcGlfa2V5X2RlbW9fMTIzJyxcbiAqIH0pO1xuICogYXdhaXQgZ3JwY0NsaWVudC5jb25uZWN0KCk7XG4gKlxuICogY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IGdycGNDbGllbnQuY3JlYXRlQ2hlY2tvdXRTZXNzaW9uKHtcbiAqICAgaXRlbXM6IFt7IGlkOiAncHJvZF8xMjMnLCBxdWFudGl0eTogMSB9XSxcbiAqIH0pO1xuICogYGBgXG4gKi9cblxuLy8gRXhwb3J0IEhUVFAgY2xpZW50XG5leHBvcnQgeyBBY3BIdHRwQ2xpZW50LCBBY3BBcGlFcnJvciB9IGZyb20gJy4vaHR0cC1jbGllbnQnO1xuXG4vLyBFeHBvcnQgZ1JQQyBjbGllbnRcbmV4cG9ydCB7IEFjcEdycGNDbGllbnQsIEFjcEdycGNFcnJvciB9IGZyb20gJy4vZ3JwYy1jbGllbnQnO1xuXG4vLyBFeHBvcnQgYWxsIHR5cGVzXG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcblxuLy8gRGVmYXVsdCBleHBvcnQgZm9yIGNvbnZlbmllbmNlXG5pbXBvcnQgeyBBY3BIdHRwQ2xpZW50IH0gZnJvbSAnLi9odHRwLWNsaWVudCc7XG5leHBvcnQgZGVmYXVsdCBBY3BIdHRwQ2xpZW50O1xuIl19
@@ -0,0 +1,197 @@
1
+ /**
2
+ * StateSet ACP Handler - TypeScript Type Definitions
3
+ */
4
+ export declare enum CheckoutSessionStatus {
5
+ UNSPECIFIED = 0,
6
+ NOT_READY_FOR_PAYMENT = 1,
7
+ READY_FOR_PAYMENT = 2,
8
+ COMPLETED = 3,
9
+ CANCELED = 4
10
+ }
11
+ export declare enum MessageType {
12
+ UNSPECIFIED = 0,
13
+ INFO = 1,
14
+ WARNING = 2,
15
+ ERROR = 3
16
+ }
17
+ export declare enum OrderStatus {
18
+ UNSPECIFIED = 0,
19
+ PLACED = 1,
20
+ FAILED = 2,
21
+ REFUNDED = 3
22
+ }
23
+ export interface Money {
24
+ amount: number;
25
+ currency: string;
26
+ }
27
+ export interface Totals {
28
+ subtotal?: Money;
29
+ tax?: Money;
30
+ shipping?: Money;
31
+ discount?: Money;
32
+ grand_total?: Money;
33
+ }
34
+ export interface Address {
35
+ name?: string;
36
+ line1?: string;
37
+ line2?: string;
38
+ city?: string;
39
+ region?: string;
40
+ postal_code?: string;
41
+ country?: string;
42
+ phone?: string;
43
+ email?: string;
44
+ }
45
+ export interface Customer {
46
+ billing_address?: Address;
47
+ shipping_address?: Address;
48
+ }
49
+ export interface EstimatedDelivery {
50
+ earliest?: string;
51
+ latest?: string;
52
+ }
53
+ export interface FulfillmentChoice {
54
+ id: string;
55
+ label: string;
56
+ price?: Money;
57
+ est_delivery?: EstimatedDelivery;
58
+ }
59
+ export interface FulfillmentState {
60
+ selected_id?: string;
61
+ options?: FulfillmentChoice[];
62
+ }
63
+ export interface LineItem {
64
+ id: string;
65
+ title: string;
66
+ quantity: number;
67
+ unit_price?: Money;
68
+ variant_id?: string;
69
+ sku?: string;
70
+ image_url?: string;
71
+ }
72
+ export interface RequestItem {
73
+ id: string;
74
+ quantity: number;
75
+ }
76
+ export interface Links {
77
+ terms?: string;
78
+ privacy?: string;
79
+ order_permalink?: string;
80
+ }
81
+ export interface Message {
82
+ type: MessageType;
83
+ code?: string;
84
+ message: string;
85
+ param?: string;
86
+ }
87
+ export interface Order {
88
+ id: string;
89
+ checkout_session_id: string;
90
+ status: OrderStatus;
91
+ permalink_url?: string;
92
+ }
93
+ export interface CheckoutSession {
94
+ id: string;
95
+ status: CheckoutSessionStatus;
96
+ items: LineItem[];
97
+ totals?: Totals;
98
+ fulfillment?: FulfillmentState;
99
+ customer?: Customer;
100
+ links?: Links;
101
+ messages?: Message[];
102
+ created_at?: string;
103
+ updated_at?: string;
104
+ }
105
+ export interface CheckoutSessionWithOrder {
106
+ session: CheckoutSession;
107
+ order: Order;
108
+ }
109
+ export interface CreateCheckoutSessionRequest {
110
+ items: RequestItem[];
111
+ customer?: Customer;
112
+ fulfillment?: FulfillmentState;
113
+ }
114
+ export interface UpdateCheckoutSessionRequest {
115
+ session_id: string;
116
+ items?: RequestItem[];
117
+ customer?: Customer;
118
+ fulfillment?: FulfillmentState;
119
+ }
120
+ export interface PaymentRequest {
121
+ delegated_token?: string;
122
+ method?: string;
123
+ }
124
+ export interface CompleteCheckoutSessionRequest {
125
+ session_id: string;
126
+ payment: PaymentRequest;
127
+ customer?: Customer;
128
+ fulfillment?: FulfillmentState;
129
+ }
130
+ export interface PaymentMethod {
131
+ type: string;
132
+ card_number_type?: string;
133
+ number?: string;
134
+ exp_month?: string;
135
+ exp_year?: string;
136
+ name?: string;
137
+ cvc?: string;
138
+ cryptogram?: string;
139
+ eci_value?: string;
140
+ checks_performed?: string[];
141
+ iin?: string;
142
+ display_card_funding_type?: string;
143
+ display_wallet_type?: string;
144
+ display_brand?: string;
145
+ display_last4?: string;
146
+ metadata?: Record<string, unknown>;
147
+ }
148
+ export interface BillingAddress {
149
+ name?: string;
150
+ line_one?: string;
151
+ line_two?: string;
152
+ city?: string;
153
+ state?: string;
154
+ country?: string;
155
+ postal_code?: string;
156
+ }
157
+ export interface Allowance {
158
+ reason: string;
159
+ max_amount: number;
160
+ currency: string;
161
+ checkout_session_id?: string;
162
+ merchant_id?: string;
163
+ expires_at?: string;
164
+ }
165
+ export interface RiskSignal {
166
+ type: string;
167
+ score: number;
168
+ action?: string;
169
+ }
170
+ export interface DelegatePaymentRequest {
171
+ payment_method: PaymentMethod;
172
+ allowance: Allowance;
173
+ billing_address?: BillingAddress;
174
+ risk_signals?: RiskSignal[];
175
+ metadata?: Record<string, unknown>;
176
+ }
177
+ export interface DelegatePaymentResponse {
178
+ id: string;
179
+ created: string;
180
+ metadata?: Record<string, unknown>;
181
+ }
182
+ export interface AcpClientConfig {
183
+ /** Base URL for HTTP client (e.g., http://localhost:8080) */
184
+ baseUrl?: string;
185
+ /** gRPC host address (e.g., localhost:50051) */
186
+ grpcAddress?: string;
187
+ /** API key for authentication */
188
+ apiKey?: string;
189
+ /** Request timeout in milliseconds */
190
+ timeout?: number;
191
+ }
192
+ export interface AcpError {
193
+ type: 'invalid_request' | 'payment_error' | 'processing_error';
194
+ code: string;
195
+ message: string;
196
+ param?: string;
197
+ }
package/dist/types.js ADDED
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /**
3
+ * StateSet ACP Handler - TypeScript Type Definitions
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.OrderStatus = exports.MessageType = exports.CheckoutSessionStatus = void 0;
7
+ // Enums
8
+ var CheckoutSessionStatus;
9
+ (function (CheckoutSessionStatus) {
10
+ CheckoutSessionStatus[CheckoutSessionStatus["UNSPECIFIED"] = 0] = "UNSPECIFIED";
11
+ CheckoutSessionStatus[CheckoutSessionStatus["NOT_READY_FOR_PAYMENT"] = 1] = "NOT_READY_FOR_PAYMENT";
12
+ CheckoutSessionStatus[CheckoutSessionStatus["READY_FOR_PAYMENT"] = 2] = "READY_FOR_PAYMENT";
13
+ CheckoutSessionStatus[CheckoutSessionStatus["COMPLETED"] = 3] = "COMPLETED";
14
+ CheckoutSessionStatus[CheckoutSessionStatus["CANCELED"] = 4] = "CANCELED";
15
+ })(CheckoutSessionStatus || (exports.CheckoutSessionStatus = CheckoutSessionStatus = {}));
16
+ var MessageType;
17
+ (function (MessageType) {
18
+ MessageType[MessageType["UNSPECIFIED"] = 0] = "UNSPECIFIED";
19
+ MessageType[MessageType["INFO"] = 1] = "INFO";
20
+ MessageType[MessageType["WARNING"] = 2] = "WARNING";
21
+ MessageType[MessageType["ERROR"] = 3] = "ERROR";
22
+ })(MessageType || (exports.MessageType = MessageType = {}));
23
+ var OrderStatus;
24
+ (function (OrderStatus) {
25
+ OrderStatus[OrderStatus["UNSPECIFIED"] = 0] = "UNSPECIFIED";
26
+ OrderStatus[OrderStatus["PLACED"] = 1] = "PLACED";
27
+ OrderStatus[OrderStatus["FAILED"] = 2] = "FAILED";
28
+ OrderStatus[OrderStatus["REFUNDED"] = 3] = "REFUNDED";
29
+ })(OrderStatus || (exports.OrderStatus = OrderStatus = {}));
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCxRQUFRO0FBQ1IsSUFBWSxxQkFNWDtBQU5ELFdBQVkscUJBQXFCO0lBQy9CLCtFQUFlLENBQUE7SUFDZixtR0FBeUIsQ0FBQTtJQUN6QiwyRkFBcUIsQ0FBQTtJQUNyQiwyRUFBYSxDQUFBO0lBQ2IseUVBQVksQ0FBQTtBQUNkLENBQUMsRUFOVyxxQkFBcUIscUNBQXJCLHFCQUFxQixRQU1oQztBQUVELElBQVksV0FLWDtBQUxELFdBQVksV0FBVztJQUNyQiwyREFBZSxDQUFBO0lBQ2YsNkNBQVEsQ0FBQTtJQUNSLG1EQUFXLENBQUE7SUFDWCwrQ0FBUyxDQUFBO0FBQ1gsQ0FBQyxFQUxXLFdBQVcsMkJBQVgsV0FBVyxRQUt0QjtBQUVELElBQVksV0FLWDtBQUxELFdBQVksV0FBVztJQUNyQiwyREFBZSxDQUFBO0lBQ2YsaURBQVUsQ0FBQTtJQUNWLGlEQUFVLENBQUE7SUFDVixxREFBWSxDQUFBO0FBQ2QsQ0FBQyxFQUxXLFdBQVcsMkJBQVgsV0FBVyxRQUt0QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3RhdGVTZXQgQUNQIEhhbmRsZXIgLSBUeXBlU2NyaXB0IFR5cGUgRGVmaW5pdGlvbnNcbiAqL1xuXG4vLyBFbnVtc1xuZXhwb3J0IGVudW0gQ2hlY2tvdXRTZXNzaW9uU3RhdHVzIHtcbiAgVU5TUEVDSUZJRUQgPSAwLFxuICBOT1RfUkVBRFlfRk9SX1BBWU1FTlQgPSAxLFxuICBSRUFEWV9GT1JfUEFZTUVOVCA9IDIsXG4gIENPTVBMRVRFRCA9IDMsXG4gIENBTkNFTEVEID0gNCxcbn1cblxuZXhwb3J0IGVudW0gTWVzc2FnZVR5cGUge1xuICBVTlNQRUNJRklFRCA9IDAsXG4gIElORk8gPSAxLFxuICBXQVJOSU5HID0gMixcbiAgRVJST1IgPSAzLFxufVxuXG5leHBvcnQgZW51bSBPcmRlclN0YXR1cyB7XG4gIFVOU1BFQ0lGSUVEID0gMCxcbiAgUExBQ0VEID0gMSxcbiAgRkFJTEVEID0gMixcbiAgUkVGVU5ERUQgPSAzLFxufVxuXG4vLyBNb25leSBhbmQgcHJpY2luZ1xuZXhwb3J0IGludGVyZmFjZSBNb25leSB7XG4gIGFtb3VudDogbnVtYmVyO1xuICBjdXJyZW5jeTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvdGFscyB7XG4gIHN1YnRvdGFsPzogTW9uZXk7XG4gIHRheD86IE1vbmV5O1xuICBzaGlwcGluZz86IE1vbmV5O1xuICBkaXNjb3VudD86IE1vbmV5O1xuICBncmFuZF90b3RhbD86IE1vbmV5O1xufVxuXG4vLyBBZGRyZXNzIGFuZCBjdXN0b21lclxuZXhwb3J0IGludGVyZmFjZSBBZGRyZXNzIHtcbiAgbmFtZT86IHN0cmluZztcbiAgbGluZTE/OiBzdHJpbmc7XG4gIGxpbmUyPzogc3RyaW5nO1xuICBjaXR5Pzogc3RyaW5nO1xuICByZWdpb24/OiBzdHJpbmc7XG4gIHBvc3RhbF9jb2RlPzogc3RyaW5nO1xuICBjb3VudHJ5Pzogc3RyaW5nO1xuICBwaG9uZT86IHN0cmluZztcbiAgZW1haWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tZXIge1xuICBiaWxsaW5nX2FkZHJlc3M/OiBBZGRyZXNzO1xuICBzaGlwcGluZ19hZGRyZXNzPzogQWRkcmVzcztcbn1cblxuLy8gRnVsZmlsbG1lbnRcbmV4cG9ydCBpbnRlcmZhY2UgRXN0aW1hdGVkRGVsaXZlcnkge1xuICBlYXJsaWVzdD86IHN0cmluZztcbiAgbGF0ZXN0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZ1bGZpbGxtZW50Q2hvaWNlIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgcHJpY2U/OiBNb25leTtcbiAgZXN0X2RlbGl2ZXJ5PzogRXN0aW1hdGVkRGVsaXZlcnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnVsZmlsbG1lbnRTdGF0ZSB7XG4gIHNlbGVjdGVkX2lkPzogc3RyaW5nO1xuICBvcHRpb25zPzogRnVsZmlsbG1lbnRDaG9pY2VbXTtcbn1cblxuLy8gTGluZSBpdGVtc1xuZXhwb3J0IGludGVyZmFjZSBMaW5lSXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHF1YW50aXR5OiBudW1iZXI7XG4gIHVuaXRfcHJpY2U/OiBNb25leTtcbiAgdmFyaWFudF9pZD86IHN0cmluZztcbiAgc2t1Pzogc3RyaW5nO1xuICBpbWFnZV91cmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdEl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICBxdWFudGl0eTogbnVtYmVyO1xufVxuXG4vLyBMaW5rcyBhbmQgbWVzc2FnZXNcbmV4cG9ydCBpbnRlcmZhY2UgTGlua3Mge1xuICB0ZXJtcz86IHN0cmluZztcbiAgcHJpdmFjeT86IHN0cmluZztcbiAgb3JkZXJfcGVybWFsaW5rPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2Uge1xuICB0eXBlOiBNZXNzYWdlVHlwZTtcbiAgY29kZT86IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBwYXJhbT86IHN0cmluZztcbn1cblxuLy8gT3JkZXJzXG5leHBvcnQgaW50ZXJmYWNlIE9yZGVyIHtcbiAgaWQ6IHN0cmluZztcbiAgY2hlY2tvdXRfc2Vzc2lvbl9pZDogc3RyaW5nO1xuICBzdGF0dXM6IE9yZGVyU3RhdHVzO1xuICBwZXJtYWxpbmtfdXJsPzogc3RyaW5nO1xufVxuXG4vLyBDaGVja291dCBzZXNzaW9uXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrb3V0U2Vzc2lvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIHN0YXR1czogQ2hlY2tvdXRTZXNzaW9uU3RhdHVzO1xuICBpdGVtczogTGluZUl0ZW1bXTtcbiAgdG90YWxzPzogVG90YWxzO1xuICBmdWxmaWxsbWVudD86IEZ1bGZpbGxtZW50U3RhdGU7XG4gIGN1c3RvbWVyPzogQ3VzdG9tZXI7XG4gIGxpbmtzPzogTGlua3M7XG4gIG1lc3NhZ2VzPzogTWVzc2FnZVtdO1xuICBjcmVhdGVkX2F0Pzogc3RyaW5nO1xuICB1cGRhdGVkX2F0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrb3V0U2Vzc2lvbldpdGhPcmRlciB7XG4gIHNlc3Npb246IENoZWNrb3V0U2Vzc2lvbjtcbiAgb3JkZXI6IE9yZGVyO1xufVxuXG4vLyBSZXF1ZXN0IHR5cGVzXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUNoZWNrb3V0U2Vzc2lvblJlcXVlc3Qge1xuICBpdGVtczogUmVxdWVzdEl0ZW1bXTtcbiAgY3VzdG9tZXI/OiBDdXN0b21lcjtcbiAgZnVsZmlsbG1lbnQ/OiBGdWxmaWxsbWVudFN0YXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUNoZWNrb3V0U2Vzc2lvblJlcXVlc3Qge1xuICBzZXNzaW9uX2lkOiBzdHJpbmc7XG4gIGl0ZW1zPzogUmVxdWVzdEl0ZW1bXTtcbiAgY3VzdG9tZXI/OiBDdXN0b21lcjtcbiAgZnVsZmlsbG1lbnQ/OiBGdWxmaWxsbWVudFN0YXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBheW1lbnRSZXF1ZXN0IHtcbiAgZGVsZWdhdGVkX3Rva2VuPzogc3RyaW5nO1xuICBtZXRob2Q/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGxldGVDaGVja291dFNlc3Npb25SZXF1ZXN0IHtcbiAgc2Vzc2lvbl9pZDogc3RyaW5nO1xuICBwYXltZW50OiBQYXltZW50UmVxdWVzdDtcbiAgY3VzdG9tZXI/OiBDdXN0b21lcjtcbiAgZnVsZmlsbG1lbnQ/OiBGdWxmaWxsbWVudFN0YXRlO1xufVxuXG4vLyBEZWxlZ2F0ZWQgUGF5bWVudCB0eXBlc1xuZXhwb3J0IGludGVyZmFjZSBQYXltZW50TWV0aG9kIHtcbiAgdHlwZTogc3RyaW5nO1xuICBjYXJkX251bWJlcl90eXBlPzogc3RyaW5nO1xuICBudW1iZXI/OiBzdHJpbmc7XG4gIGV4cF9tb250aD86IHN0cmluZztcbiAgZXhwX3llYXI/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGN2Yz86IHN0cmluZztcbiAgY3J5cHRvZ3JhbT86IHN0cmluZztcbiAgZWNpX3ZhbHVlPzogc3RyaW5nO1xuICBjaGVja3NfcGVyZm9ybWVkPzogc3RyaW5nW107XG4gIGlpbj86IHN0cmluZztcbiAgZGlzcGxheV9jYXJkX2Z1bmRpbmdfdHlwZT86IHN0cmluZztcbiAgZGlzcGxheV93YWxsZXRfdHlwZT86IHN0cmluZztcbiAgZGlzcGxheV9icmFuZD86IHN0cmluZztcbiAgZGlzcGxheV9sYXN0ND86IHN0cmluZztcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCaWxsaW5nQWRkcmVzcyB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGxpbmVfb25lPzogc3RyaW5nO1xuICBsaW5lX3R3bz86IHN0cmluZztcbiAgY2l0eT86IHN0cmluZztcbiAgc3RhdGU/OiBzdHJpbmc7XG4gIGNvdW50cnk/OiBzdHJpbmc7XG4gIHBvc3RhbF9jb2RlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFsbG93YW5jZSB7XG4gIHJlYXNvbjogc3RyaW5nO1xuICBtYXhfYW1vdW50OiBudW1iZXI7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG4gIGNoZWNrb3V0X3Nlc3Npb25faWQ/OiBzdHJpbmc7XG4gIG1lcmNoYW50X2lkPzogc3RyaW5nO1xuICBleHBpcmVzX2F0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJpc2tTaWduYWwge1xuICB0eXBlOiBzdHJpbmc7XG4gIHNjb3JlOiBudW1iZXI7XG4gIGFjdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZWxlZ2F0ZVBheW1lbnRSZXF1ZXN0IHtcbiAgcGF5bWVudF9tZXRob2Q6IFBheW1lbnRNZXRob2Q7XG4gIGFsbG93YW5jZTogQWxsb3dhbmNlO1xuICBiaWxsaW5nX2FkZHJlc3M/OiBCaWxsaW5nQWRkcmVzcztcbiAgcmlza19zaWduYWxzPzogUmlza1NpZ25hbFtdO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlbGVnYXRlUGF5bWVudFJlc3BvbnNlIHtcbiAgaWQ6IHN0cmluZztcbiAgY3JlYXRlZDogc3RyaW5nO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vLyBDbGllbnQgY29uZmlndXJhdGlvblxuZXhwb3J0IGludGVyZmFjZSBBY3BDbGllbnRDb25maWcge1xuICAvKiogQmFzZSBVUkwgZm9yIEhUVFAgY2xpZW50IChlLmcuLCBodHRwOi8vbG9jYWxob3N0OjgwODApICovXG4gIGJhc2VVcmw/OiBzdHJpbmc7XG4gIC8qKiBnUlBDIGhvc3QgYWRkcmVzcyAoZS5nLiwgbG9jYWxob3N0OjUwMDUxKSAqL1xuICBncnBjQWRkcmVzcz86IHN0cmluZztcbiAgLyoqIEFQSSBrZXkgZm9yIGF1dGhlbnRpY2F0aW9uICovXG4gIGFwaUtleT86IHN0cmluZztcbiAgLyoqIFJlcXVlc3QgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgKi9cbiAgdGltZW91dD86IG51bWJlcjtcbn1cblxuLy8gQVBJIEVycm9yXG5leHBvcnQgaW50ZXJmYWNlIEFjcEVycm9yIHtcbiAgdHlwZTogJ2ludmFsaWRfcmVxdWVzdCcgfCAncGF5bWVudF9lcnJvcicgfCAncHJvY2Vzc2luZ19lcnJvcic7XG4gIGNvZGU6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBwYXJhbT86IHN0cmluZztcbn1cbiJdfQ==
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@stateset/acp-client",
3
+ "version": "1.0.0",
4
+ "description": "Node.js client for StateSet Agentic Commerce Protocol Handler",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc",
9
+ "build:proto": "grpc_tools_node_protoc --js_out=import_style=commonjs,binary:./src/generated --grpc_out=grpc_js:./src/generated --plugin=protoc-gen-grpc=`which grpc_tools_node_protoc_plugin` -I ./proto ./proto/acp_handler/v1/acp_handler.proto && grpc_tools_node_protoc --plugin=protoc-gen-ts=./node_modules/.bin/protoc-gen-ts --ts_out=grpc_js:./src/generated -I ./proto ./proto/acp_handler/v1/acp_handler.proto",
10
+ "prepare": "npm run build",
11
+ "test": "jest",
12
+ "lint": "eslint src --ext .ts"
13
+ },
14
+ "keywords": [
15
+ "stateset",
16
+ "acp",
17
+ "agentic-commerce",
18
+ "checkout",
19
+ "grpc",
20
+ "openai"
21
+ ],
22
+ "author": "StateSet",
23
+ "license": "MIT",
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "https://github.com/stateset/stateset-acp-handler"
27
+ },
28
+ "dependencies": {
29
+ "@grpc/grpc-js": "^1.10.0",
30
+ "@grpc/proto-loader": "^0.7.10"
31
+ },
32
+ "devDependencies": {
33
+ "@types/node": "^20.11.0",
34
+ "grpc-tools": "^1.12.4",
35
+ "grpc_tools_node_protoc_ts": "^5.3.3",
36
+ "typescript": "^5.3.3"
37
+ },
38
+ "engines": {
39
+ "node": ">=18.0.0"
40
+ },
41
+ "files": [
42
+ "dist",
43
+ "proto"
44
+ ]
45
+ }
@@ -0,0 +1,232 @@
1
+ syntax = "proto3";
2
+
3
+ package acp_handler.v1;
4
+
5
+ service AcpHandler {
6
+ rpc CreateCheckoutSession(CreateCheckoutSessionRequest) returns (CheckoutSession);
7
+ rpc GetCheckoutSession(GetCheckoutSessionRequest) returns (CheckoutSession);
8
+ rpc UpdateCheckoutSession(UpdateCheckoutSessionRequest) returns (CheckoutSession);
9
+ rpc CompleteCheckoutSession(CompleteCheckoutSessionRequest) returns (CheckoutSessionWithOrder);
10
+ rpc CancelCheckoutSession(CancelCheckoutSessionRequest) returns (CheckoutSession);
11
+ rpc DelegatePayment(DelegatePaymentRequest) returns (DelegatePaymentResponse);
12
+ }
13
+
14
+ message GetCheckoutSessionRequest {
15
+ string session_id = 1;
16
+ }
17
+
18
+ message CancelCheckoutSessionRequest {
19
+ string session_id = 1;
20
+ }
21
+
22
+ message CreateCheckoutSessionRequest {
23
+ repeated RequestItem items = 1;
24
+ Customer customer = 2;
25
+ FulfillmentState fulfillment = 3;
26
+ }
27
+
28
+ message UpdateCheckoutSessionRequest {
29
+ string session_id = 1;
30
+ RequestItemList items = 2;
31
+ Customer customer = 3;
32
+ FulfillmentState fulfillment = 4;
33
+ }
34
+
35
+ message CompleteCheckoutSessionRequest {
36
+ string session_id = 1;
37
+ PaymentRequest payment = 2;
38
+ Customer customer = 3;
39
+ FulfillmentState fulfillment = 4;
40
+ }
41
+
42
+ message RequestItemList {
43
+ repeated RequestItem items = 1;
44
+ }
45
+
46
+ message RequestItem {
47
+ string id = 1;
48
+ int32 quantity = 2;
49
+ }
50
+
51
+ message PaymentRequest {
52
+ // If empty, delegated token is not provided.
53
+ string delegated_token = 1;
54
+ // If empty, payment method is not provided.
55
+ string method = 2;
56
+ }
57
+
58
+ enum CheckoutSessionStatus {
59
+ CHECKOUT_SESSION_STATUS_UNSPECIFIED = 0;
60
+ NOT_READY_FOR_PAYMENT = 1;
61
+ READY_FOR_PAYMENT = 2;
62
+ COMPLETED = 3;
63
+ CANCELED = 4;
64
+ }
65
+
66
+ message CheckoutSession {
67
+ string id = 1;
68
+ CheckoutSessionStatus status = 2;
69
+ repeated LineItem items = 3;
70
+ Totals totals = 4;
71
+ FulfillmentState fulfillment = 5;
72
+ Customer customer = 6;
73
+ Links links = 7;
74
+ repeated Message messages = 8;
75
+ string created_at = 9;
76
+ string updated_at = 10;
77
+ }
78
+
79
+ message CheckoutSessionWithOrder {
80
+ CheckoutSession session = 1;
81
+ Order order = 2;
82
+ }
83
+
84
+ message LineItem {
85
+ string id = 1;
86
+ string title = 2;
87
+ int32 quantity = 3;
88
+ Money unit_price = 4;
89
+ string variant_id = 5;
90
+ string sku = 6;
91
+ string image_url = 7;
92
+ }
93
+
94
+ message Money {
95
+ int64 amount = 1;
96
+ string currency = 2;
97
+ }
98
+
99
+ message Totals {
100
+ Money subtotal = 1;
101
+ Money tax = 2;
102
+ Money shipping = 3;
103
+ Money discount = 4;
104
+ Money grand_total = 5;
105
+ }
106
+
107
+ message FulfillmentState {
108
+ string selected_id = 1;
109
+ repeated FulfillmentChoice options = 2;
110
+ }
111
+
112
+ message FulfillmentChoice {
113
+ string id = 1;
114
+ string label = 2;
115
+ Money price = 3;
116
+ EstimatedDelivery est_delivery = 4;
117
+ }
118
+
119
+ message EstimatedDelivery {
120
+ string earliest = 1;
121
+ string latest = 2;
122
+ }
123
+
124
+ message Customer {
125
+ Address billing_address = 1;
126
+ Address shipping_address = 2;
127
+ }
128
+
129
+ message Address {
130
+ string name = 1;
131
+ string line1 = 2;
132
+ string line2 = 3;
133
+ string city = 4;
134
+ string region = 5;
135
+ string postal_code = 6;
136
+ string country = 7;
137
+ string phone = 8;
138
+ string email = 9;
139
+ }
140
+
141
+ message Links {
142
+ string terms = 1;
143
+ string privacy = 2;
144
+ string order_permalink = 3;
145
+ }
146
+
147
+ enum MessageType {
148
+ MESSAGE_TYPE_UNSPECIFIED = 0;
149
+ INFO = 1;
150
+ WARNING = 2;
151
+ ERROR = 3;
152
+ }
153
+
154
+ message Message {
155
+ MessageType type = 1;
156
+ string code = 2;
157
+ string message = 3;
158
+ string param = 4;
159
+ }
160
+
161
+ enum OrderStatus {
162
+ ORDER_STATUS_UNSPECIFIED = 0;
163
+ PLACED = 1;
164
+ FAILED = 2;
165
+ REFUNDED = 3;
166
+ }
167
+
168
+ message Order {
169
+ string id = 1;
170
+ string checkout_session_id = 2;
171
+ OrderStatus status = 3;
172
+ string permalink_url = 4;
173
+ }
174
+
175
+ message DelegatePaymentRequest {
176
+ PaymentMethod payment_method = 1;
177
+ Allowance allowance = 2;
178
+ BillingAddress billing_address = 3;
179
+ repeated RiskSignal risk_signals = 4;
180
+ string metadata_json = 5;
181
+ }
182
+
183
+ message DelegatePaymentResponse {
184
+ string id = 1;
185
+ string created = 2;
186
+ string metadata_json = 3;
187
+ }
188
+
189
+ message PaymentMethod {
190
+ string type = 1;
191
+ string card_number_type = 2;
192
+ string number = 3;
193
+ string exp_month = 4;
194
+ string exp_year = 5;
195
+ string name = 6;
196
+ string cvc = 7;
197
+ string cryptogram = 8;
198
+ string eci_value = 9;
199
+ repeated string checks_performed = 10;
200
+ string iin = 11;
201
+ string display_card_funding_type = 12;
202
+ string display_wallet_type = 13;
203
+ string display_brand = 14;
204
+ string display_last4 = 15;
205
+ string metadata_json = 16;
206
+ }
207
+
208
+ message BillingAddress {
209
+ string name = 1;
210
+ string line_one = 2;
211
+ string line_two = 3;
212
+ string city = 4;
213
+ string state = 5;
214
+ string country = 6;
215
+ string postal_code = 7;
216
+ }
217
+
218
+ message Allowance {
219
+ string reason = 1;
220
+ int64 max_amount = 2;
221
+ string currency = 3;
222
+ string checkout_session_id = 4;
223
+ string merchant_id = 5;
224
+ string expires_at = 6;
225
+ }
226
+
227
+ message RiskSignal {
228
+ string type = 1;
229
+ int32 score = 2;
230
+ string action = 3;
231
+ }
232
+