@vly-ai/integrations 0.5.2 → 0.6.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/README.md CHANGED
@@ -1,26 +1,36 @@
1
- # vly-integrations
1
+ # @vly-ai/integrations
2
2
 
3
- First-order integrations for AI, email, and payments with automatic usage billing through Vly deployment tokens. Built on the AI SDK for reliable, type-safe AI Gateway integration.
3
+ Access AI models and email services through [vly.ai](https://vly.ai) without managing multiple API keys or accounts. Built on the AI SDK for reliable, type-safe AI Gateway integration.
4
+
5
+ ## Why use @vly-ai/integrations?
6
+
7
+ Instead of creating separate accounts and managing API keys for OpenAI, Anthropic, SendGrid, Resend, etc., get a single deployment token from [vly.ai](https://vly.ai) and access all these services with automatic usage-based billing:
8
+
9
+ - **No API key management** - One token for all services (AI models, email, etc.)
10
+ - **No separate accounts** - Skip creating accounts with OpenAI, Anthropic, SendGrid, etc.
11
+ - **Usage-based billing** - Pay only for what you use, billed through your vly.ai deployment
12
+ - **Multiple AI models** - Access GPT-5, Claude 4, Gemini, Llama, and more through one API
13
+ - **Built on AI SDK** - Type-safe, production-ready integration
4
14
 
5
15
  ## Installation
6
16
 
7
17
  ```bash
8
- npm install vly-integrations
9
- # or
10
- yarn add vly-integrations
11
- # or
12
- pnpm add vly-integrations
18
+ pnpm add @vly-ai/integrations
13
19
  ```
14
20
 
15
- No additional dependencies required! Built with fetch and AI SDK.
21
+ ## Getting Started
22
+
23
+ 1. Sign up at [vly.ai](https://vly.ai) and create a deployment
24
+ 2. Get your deployment token from the dashboard
25
+ 3. Set it as an environment variable: `VLY_INTEGRATION_KEY`
16
26
 
17
27
  ## Usage
18
28
 
19
29
  ```typescript
20
- import { createVlyIntegrations } from 'vly-integrations';
30
+ import { createVlyIntegrations } from '@vly-ai/integrations';
21
31
 
22
32
  const vly = createVlyIntegrations({
23
- deploymentToken: process.env.VLY_INTEGRATION_KEY, // Uses VLY_INTEGRATION_KEY env var
33
+ deploymentToken: process.env.VLY_INTEGRATION_KEY,
24
34
  debug: false // optional
25
35
  });
26
36
 
@@ -50,25 +60,15 @@ const emailResult = await vly.email.send({
50
60
  html: '<h1>Welcome to our service!</h1>',
51
61
  text: 'Welcome to our service!'
52
62
  });
53
-
54
- // Create Payment Intent
55
- const paymentIntent = await vly.payments.createPaymentIntent({
56
- amount: 2000, // $20.00 in cents
57
- currency: 'usd',
58
- description: 'Premium subscription',
59
- customer: {
60
- email: 'customer@example.com'
61
- }
62
- });
63
63
  ```
64
64
 
65
65
  ## AI Gateway Integration
66
66
 
67
- Powered by the AI SDK with OpenAI-compatible provider for https://ai-gateway.vly.ai
67
+ Powered by the AI SDK with OpenAI-compatible provider for https://integrations.vly.ai
68
68
 
69
69
  ### Supported Models
70
70
 
71
- The vly-integrations package supports **all models available through the Vercel AI Gateway**. This includes but is not limited to:
71
+ The @vly-ai/integrations package supports **all models available through the Vercel AI Gateway**. This includes but is not limited to:
72
72
 
73
73
  - **OpenAI Models**: GPT-5, GPT-5 Mini, GPT-5 Nano, GPT-4, GPT-3.5, etc.
74
74
  - **Anthropic Claude**: Claude 4 Opus, Claude 4 Sonnet, Claude 3.7, Claude 3.5, Haiku, etc.
@@ -147,37 +147,6 @@ vly.email.verifyDomain(domain: string): Promise<ApiResponse>
147
147
  vly.email.listDomains(): Promise<ApiResponse>
148
148
  ```
149
149
 
150
- ### Payments Integration
151
-
152
- ```typescript
153
- // Payment Intents
154
- vly.payments.createPaymentIntent(intent: PaymentIntent): Promise<ApiResponse<PaymentIntentResponse>>
155
- vly.payments.confirmPaymentIntent(intentId: string, paymentMethodId: string): Promise<ApiResponse>
156
- vly.payments.getPaymentIntent(intentId: string): Promise<ApiResponse>
157
- vly.payments.cancelPaymentIntent(intentId: string): Promise<ApiResponse>
158
-
159
- // Subscriptions
160
- vly.payments.createSubscription(subscription: Subscription): Promise<ApiResponse<SubscriptionResponse>>
161
- vly.payments.updateSubscription(id: string, updates: Partial<Subscription>): Promise<ApiResponse>
162
- vly.payments.cancelSubscription(id: string, immediately?: boolean): Promise<ApiResponse>
163
- vly.payments.getSubscription(id: string): Promise<ApiResponse>
164
- vly.payments.listSubscriptions(customerId?: string): Promise<ApiResponse>
165
-
166
- // Checkout & Portal
167
- vly.payments.createCheckoutSession(session: CheckoutSession): Promise<ApiResponse>
168
- vly.payments.createCustomerPortal(session: CustomerPortalSession): Promise<ApiResponse>
169
-
170
- // Customer Management
171
- vly.payments.createCustomer(customer: Customer): Promise<ApiResponse>
172
- vly.payments.getCustomer(customerId: string): Promise<ApiResponse>
173
- vly.payments.updateCustomer(customerId: string, updates: CustomerUpdate): Promise<ApiResponse>
174
-
175
- // Payment Methods
176
- vly.payments.listPaymentMethods(customerId: string): Promise<ApiResponse>
177
- vly.payments.attachPaymentMethod(methodId: string, customerId: string): Promise<ApiResponse>
178
- vly.payments.detachPaymentMethod(methodId: string): Promise<ApiResponse>
179
- ```
180
-
181
150
  ## Error Handling
182
151
 
183
152
  All methods return an `ApiResponse` object with the following structure:
@@ -227,15 +196,6 @@ const vly = createVlyIntegrations({
227
196
  });
228
197
  ```
229
198
 
230
- ## What's New in v0.2.0
231
-
232
- - ✅ **AI SDK Integration**: Now powered by `@ai-sdk/openai-compatible` for better reliability
233
- - ✅ **No more axios**: Replaced with built-in fetch for lighter weight
234
- - ✅ **New AI models**: Support for GPT-5, Claude 4, and Claude 3.7 models
235
- - ✅ **Direct AI SDK access**: Get the provider for advanced AI SDK usage
236
- - ✅ **Better streaming**: Improved streaming support with AI SDK
237
- - ✅ **Type safety**: Enhanced TypeScript support
238
-
239
199
  ## Billing
240
200
 
241
201
  All API calls are automatically billed to your deployment based on usage. The billing happens transparently through your deployment token, and usage information is included in the API responses.
package/dist/index.d.mts CHANGED
@@ -65,53 +65,6 @@ interface EmailResponse {
65
65
  messageId?: string;
66
66
  error?: string;
67
67
  }
68
- interface PaymentIntent {
69
- amount: number;
70
- currency?: string;
71
- description?: string;
72
- metadata?: Record<string, any>;
73
- customer?: {
74
- email?: string;
75
- name?: string;
76
- id?: string;
77
- };
78
- }
79
- interface PaymentIntentResponse {
80
- id: string;
81
- clientSecret: string;
82
- amount: number;
83
- currency: string;
84
- status: 'requires_payment_method' | 'requires_confirmation' | 'succeeded' | 'processing' | 'canceled';
85
- paymentMethodTypes: string[];
86
- }
87
- interface Subscription {
88
- customerId: string;
89
- priceId: string;
90
- metadata?: Record<string, any>;
91
- trialPeriodDays?: number;
92
- cancelAtPeriodEnd?: boolean;
93
- }
94
- interface SubscriptionResponse {
95
- id: string;
96
- customerId: string;
97
- status: 'active' | 'past_due' | 'canceled' | 'incomplete' | 'trialing';
98
- currentPeriodEnd: string;
99
- items: Array<{
100
- id: string;
101
- priceId: string;
102
- quantity: number;
103
- }>;
104
- }
105
- interface CustomerPortalSession {
106
- customerId: string;
107
- returnUrl?: string;
108
- }
109
- interface CustomerPortalResponse {
110
- id: string;
111
- url: string;
112
- returnUrl?: string;
113
- created: number;
114
- }
115
68
 
116
69
  declare class VlyAI {
117
70
  private provider;
@@ -159,95 +112,11 @@ declare class VlyEmail extends VlyClient {
159
112
  }>>>;
160
113
  }
161
114
 
162
- declare class VlyPayments extends VlyClient {
163
- createPaymentIntent(intent: PaymentIntent, options?: RequestOptions): Promise<ApiResponse<PaymentIntentResponse>>;
164
- confirmPaymentIntent(intentId: string, paymentMethodId: string, options?: RequestOptions): Promise<ApiResponse<PaymentIntentResponse>>;
165
- getPaymentIntent(intentId: string, options?: RequestOptions): Promise<ApiResponse<PaymentIntentResponse>>;
166
- cancelPaymentIntent(intentId: string, options?: RequestOptions): Promise<ApiResponse<PaymentIntentResponse>>;
167
- createSubscription(subscription: Subscription, options?: RequestOptions): Promise<ApiResponse<SubscriptionResponse>>;
168
- updateSubscription(subscriptionId: string, updates: Partial<Subscription>, options?: RequestOptions): Promise<ApiResponse<SubscriptionResponse>>;
169
- cancelSubscription(subscriptionId: string, immediately?: boolean, options?: RequestOptions): Promise<ApiResponse<SubscriptionResponse>>;
170
- getSubscription(subscriptionId: string, options?: RequestOptions): Promise<ApiResponse<SubscriptionResponse>>;
171
- listSubscriptions(customerId?: string, options?: RequestOptions & {
172
- limit?: number;
173
- offset?: number;
174
- }): Promise<ApiResponse<{
175
- subscriptions: SubscriptionResponse[];
176
- hasMore: boolean;
177
- total: number;
178
- }>>;
179
- createCustomerPortal(session: CustomerPortalSession, options?: RequestOptions): Promise<ApiResponse<CustomerPortalResponse>>;
180
- createCheckoutSession(session: {
181
- customerId?: string;
182
- customerEmail?: string;
183
- lineItems: Array<{
184
- priceId: string;
185
- quantity: number;
186
- }>;
187
- mode: 'payment' | 'subscription';
188
- successUrl: string;
189
- cancelUrl: string;
190
- metadata?: Record<string, any>;
191
- }, options?: RequestOptions): Promise<ApiResponse<{
192
- id: string;
193
- url: string;
194
- }>>;
195
- createCustomer(customer: {
196
- email: string;
197
- name?: string;
198
- metadata?: Record<string, any>;
199
- }, options?: RequestOptions): Promise<ApiResponse<{
200
- id: string;
201
- email: string;
202
- name?: string;
203
- created: number;
204
- }>>;
205
- getCustomer(customerId: string, options?: RequestOptions): Promise<ApiResponse<{
206
- id: string;
207
- email: string;
208
- name?: string;
209
- created: number;
210
- metadata?: Record<string, any>;
211
- }>>;
212
- updateCustomer(customerId: string, updates: {
213
- email?: string;
214
- name?: string;
215
- metadata?: Record<string, any>;
216
- }, options?: RequestOptions): Promise<ApiResponse<{
217
- id: string;
218
- email: string;
219
- name?: string;
220
- created: number;
221
- metadata?: Record<string, any>;
222
- }>>;
223
- listPaymentMethods(customerId: string, options?: RequestOptions): Promise<ApiResponse<Array<{
224
- id: string;
225
- type: string;
226
- card?: {
227
- brand: string;
228
- last4: string;
229
- expMonth: number;
230
- expYear: number;
231
- };
232
- created: number;
233
- }>>>;
234
- attachPaymentMethod(paymentMethodId: string, customerId: string, options?: RequestOptions): Promise<ApiResponse<{
235
- id: string;
236
- customerId: string;
237
- attached: boolean;
238
- }>>;
239
- detachPaymentMethod(paymentMethodId: string, options?: RequestOptions): Promise<ApiResponse<{
240
- id: string;
241
- detached: boolean;
242
- }>>;
243
- }
244
-
245
115
  declare class VlyIntegrations {
246
116
  ai: VlyAI;
247
117
  email: VlyEmail;
248
- payments: VlyPayments;
249
118
  constructor(config: VlyConfig);
250
119
  }
251
120
  declare function createVlyIntegrations(config: VlyConfig): VlyIntegrations;
252
121
 
253
- export { type AICompletionRequest, type AICompletionResponse, type AIModel, type ApiResponse, type CustomerPortalResponse, type CustomerPortalSession, type EmailRequest, type EmailResponse, type PaymentIntent, type PaymentIntentResponse, type RequestOptions, type Subscription, type SubscriptionResponse, VlyAI, type VlyConfig, VlyEmail, VlyIntegrations, VlyPayments, createVlyIntegrations };
122
+ export { type AICompletionRequest, type AICompletionResponse, type AIModel, type ApiResponse, type EmailRequest, type EmailResponse, type RequestOptions, VlyAI, type VlyConfig, VlyEmail, VlyIntegrations, createVlyIntegrations };
package/dist/index.d.ts CHANGED
@@ -65,53 +65,6 @@ interface EmailResponse {
65
65
  messageId?: string;
66
66
  error?: string;
67
67
  }
68
- interface PaymentIntent {
69
- amount: number;
70
- currency?: string;
71
- description?: string;
72
- metadata?: Record<string, any>;
73
- customer?: {
74
- email?: string;
75
- name?: string;
76
- id?: string;
77
- };
78
- }
79
- interface PaymentIntentResponse {
80
- id: string;
81
- clientSecret: string;
82
- amount: number;
83
- currency: string;
84
- status: 'requires_payment_method' | 'requires_confirmation' | 'succeeded' | 'processing' | 'canceled';
85
- paymentMethodTypes: string[];
86
- }
87
- interface Subscription {
88
- customerId: string;
89
- priceId: string;
90
- metadata?: Record<string, any>;
91
- trialPeriodDays?: number;
92
- cancelAtPeriodEnd?: boolean;
93
- }
94
- interface SubscriptionResponse {
95
- id: string;
96
- customerId: string;
97
- status: 'active' | 'past_due' | 'canceled' | 'incomplete' | 'trialing';
98
- currentPeriodEnd: string;
99
- items: Array<{
100
- id: string;
101
- priceId: string;
102
- quantity: number;
103
- }>;
104
- }
105
- interface CustomerPortalSession {
106
- customerId: string;
107
- returnUrl?: string;
108
- }
109
- interface CustomerPortalResponse {
110
- id: string;
111
- url: string;
112
- returnUrl?: string;
113
- created: number;
114
- }
115
68
 
116
69
  declare class VlyAI {
117
70
  private provider;
@@ -159,95 +112,11 @@ declare class VlyEmail extends VlyClient {
159
112
  }>>>;
160
113
  }
161
114
 
162
- declare class VlyPayments extends VlyClient {
163
- createPaymentIntent(intent: PaymentIntent, options?: RequestOptions): Promise<ApiResponse<PaymentIntentResponse>>;
164
- confirmPaymentIntent(intentId: string, paymentMethodId: string, options?: RequestOptions): Promise<ApiResponse<PaymentIntentResponse>>;
165
- getPaymentIntent(intentId: string, options?: RequestOptions): Promise<ApiResponse<PaymentIntentResponse>>;
166
- cancelPaymentIntent(intentId: string, options?: RequestOptions): Promise<ApiResponse<PaymentIntentResponse>>;
167
- createSubscription(subscription: Subscription, options?: RequestOptions): Promise<ApiResponse<SubscriptionResponse>>;
168
- updateSubscription(subscriptionId: string, updates: Partial<Subscription>, options?: RequestOptions): Promise<ApiResponse<SubscriptionResponse>>;
169
- cancelSubscription(subscriptionId: string, immediately?: boolean, options?: RequestOptions): Promise<ApiResponse<SubscriptionResponse>>;
170
- getSubscription(subscriptionId: string, options?: RequestOptions): Promise<ApiResponse<SubscriptionResponse>>;
171
- listSubscriptions(customerId?: string, options?: RequestOptions & {
172
- limit?: number;
173
- offset?: number;
174
- }): Promise<ApiResponse<{
175
- subscriptions: SubscriptionResponse[];
176
- hasMore: boolean;
177
- total: number;
178
- }>>;
179
- createCustomerPortal(session: CustomerPortalSession, options?: RequestOptions): Promise<ApiResponse<CustomerPortalResponse>>;
180
- createCheckoutSession(session: {
181
- customerId?: string;
182
- customerEmail?: string;
183
- lineItems: Array<{
184
- priceId: string;
185
- quantity: number;
186
- }>;
187
- mode: 'payment' | 'subscription';
188
- successUrl: string;
189
- cancelUrl: string;
190
- metadata?: Record<string, any>;
191
- }, options?: RequestOptions): Promise<ApiResponse<{
192
- id: string;
193
- url: string;
194
- }>>;
195
- createCustomer(customer: {
196
- email: string;
197
- name?: string;
198
- metadata?: Record<string, any>;
199
- }, options?: RequestOptions): Promise<ApiResponse<{
200
- id: string;
201
- email: string;
202
- name?: string;
203
- created: number;
204
- }>>;
205
- getCustomer(customerId: string, options?: RequestOptions): Promise<ApiResponse<{
206
- id: string;
207
- email: string;
208
- name?: string;
209
- created: number;
210
- metadata?: Record<string, any>;
211
- }>>;
212
- updateCustomer(customerId: string, updates: {
213
- email?: string;
214
- name?: string;
215
- metadata?: Record<string, any>;
216
- }, options?: RequestOptions): Promise<ApiResponse<{
217
- id: string;
218
- email: string;
219
- name?: string;
220
- created: number;
221
- metadata?: Record<string, any>;
222
- }>>;
223
- listPaymentMethods(customerId: string, options?: RequestOptions): Promise<ApiResponse<Array<{
224
- id: string;
225
- type: string;
226
- card?: {
227
- brand: string;
228
- last4: string;
229
- expMonth: number;
230
- expYear: number;
231
- };
232
- created: number;
233
- }>>>;
234
- attachPaymentMethod(paymentMethodId: string, customerId: string, options?: RequestOptions): Promise<ApiResponse<{
235
- id: string;
236
- customerId: string;
237
- attached: boolean;
238
- }>>;
239
- detachPaymentMethod(paymentMethodId: string, options?: RequestOptions): Promise<ApiResponse<{
240
- id: string;
241
- detached: boolean;
242
- }>>;
243
- }
244
-
245
115
  declare class VlyIntegrations {
246
116
  ai: VlyAI;
247
117
  email: VlyEmail;
248
- payments: VlyPayments;
249
118
  constructor(config: VlyConfig);
250
119
  }
251
120
  declare function createVlyIntegrations(config: VlyConfig): VlyIntegrations;
252
121
 
253
- export { type AICompletionRequest, type AICompletionResponse, type AIModel, type ApiResponse, type CustomerPortalResponse, type CustomerPortalSession, type EmailRequest, type EmailResponse, type PaymentIntent, type PaymentIntentResponse, type RequestOptions, type Subscription, type SubscriptionResponse, VlyAI, type VlyConfig, VlyEmail, VlyIntegrations, VlyPayments, createVlyIntegrations };
122
+ export { type AICompletionRequest, type AICompletionResponse, type AIModel, type ApiResponse, type EmailRequest, type EmailResponse, type RequestOptions, VlyAI, type VlyConfig, VlyEmail, VlyIntegrations, createVlyIntegrations };
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@ var VlyAI = class {
11
11
  this.config = config;
12
12
  this.provider = openaiCompatible.createOpenAICompatible({
13
13
  name: "vly-gateway",
14
- baseURL: "https://ai-gateway.vly.ai/v1/llm",
14
+ baseURL: "https://integrations.vly.ai/v1/llm",
15
15
  headers: {
16
16
  "Authorization": `Bearer ${config.deploymentToken}`
17
17
  }
@@ -151,7 +151,7 @@ var VlyClient = class {
151
151
  };
152
152
  }
153
153
  async request(endpoint, method, data, options) {
154
- const url = `https://ai-gateway.vly.ai${endpoint}`;
154
+ const url = `https://integrations.vly.ai${endpoint}`;
155
155
  const headers = {
156
156
  "Authorization": `Bearer ${this.config.deploymentToken}`,
157
157
  "Content-Type": "application/json",
@@ -305,221 +305,16 @@ var VlyEmail = class extends VlyClient {
305
305
  }
306
306
  };
307
307
 
308
- // src/payments/index.ts
309
- var VlyPayments = class extends VlyClient {
310
- async createPaymentIntent(intent, options) {
311
- this.log("Creating payment intent", {
312
- amount: intent.amount,
313
- currency: intent.currency
314
- });
315
- const payload = {
316
- amount: intent.amount,
317
- currency: intent.currency || "usd",
318
- description: intent.description,
319
- metadata: intent.metadata,
320
- customer: intent.customer
321
- };
322
- const response = await this.request(
323
- "/payments/intents",
324
- "POST",
325
- payload,
326
- options
327
- );
328
- if (response.success) {
329
- this.log("Payment intent created", {
330
- id: response.data?.id,
331
- status: response.data?.status
332
- });
333
- }
334
- return response;
335
- }
336
- async confirmPaymentIntent(intentId, paymentMethodId, options) {
337
- this.log("Confirming payment intent", { intentId });
338
- return this.request(
339
- `/payments/intents/${intentId}/confirm`,
340
- "POST",
341
- { paymentMethodId },
342
- options
343
- );
344
- }
345
- async getPaymentIntent(intentId, options) {
346
- this.log("Getting payment intent", { intentId });
347
- return this.request(
348
- `/payments/intents/${intentId}`,
349
- "GET",
350
- void 0,
351
- options
352
- );
353
- }
354
- async cancelPaymentIntent(intentId, options) {
355
- this.log("Canceling payment intent", { intentId });
356
- return this.request(
357
- `/payments/intents/${intentId}/cancel`,
358
- "POST",
359
- void 0,
360
- options
361
- );
362
- }
363
- async createSubscription(subscription, options) {
364
- this.log("Creating subscription", {
365
- customerId: subscription.customerId,
366
- priceId: subscription.priceId
367
- });
368
- const response = await this.request(
369
- "/payments/subscriptions",
370
- "POST",
371
- subscription,
372
- options
373
- );
374
- if (response.success) {
375
- this.log("Subscription created", {
376
- id: response.data?.id,
377
- status: response.data?.status
378
- });
379
- }
380
- return response;
381
- }
382
- async updateSubscription(subscriptionId, updates, options) {
383
- this.log("Updating subscription", { subscriptionId });
384
- return this.request(
385
- `/payments/subscriptions/${subscriptionId}`,
386
- "PUT",
387
- updates,
388
- options
389
- );
390
- }
391
- async cancelSubscription(subscriptionId, immediately, options) {
392
- this.log("Canceling subscription", {
393
- subscriptionId,
394
- immediately
395
- });
396
- return this.request(
397
- `/payments/subscriptions/${subscriptionId}/cancel`,
398
- "POST",
399
- { immediately },
400
- options
401
- );
402
- }
403
- async getSubscription(subscriptionId, options) {
404
- this.log("Getting subscription", { subscriptionId });
405
- return this.request(
406
- `/payments/subscriptions/${subscriptionId}`,
407
- "GET",
408
- void 0,
409
- options
410
- );
411
- }
412
- async listSubscriptions(customerId, options) {
413
- this.log("Listing subscriptions", { customerId });
414
- const params = new URLSearchParams();
415
- if (customerId) params.append("customerId", customerId);
416
- if (options?.limit) params.append("limit", options.limit.toString());
417
- if (options?.offset) params.append("offset", options.offset.toString());
418
- const queryString = params.toString();
419
- const endpoint = `/payments/subscriptions${queryString ? `?${queryString}` : ""}`;
420
- return this.request(endpoint, "GET", void 0, options);
421
- }
422
- async createCustomerPortal(session, options) {
423
- this.log("Creating customer portal session", {
424
- customerId: session.customerId
425
- });
426
- const response = await this.request(
427
- "/payments/portal",
428
- "POST",
429
- session,
430
- options
431
- );
432
- if (response.success) {
433
- this.log("Customer portal session created", {
434
- id: response.data?.id,
435
- url: response.data?.url
436
- });
437
- }
438
- return response;
439
- }
440
- async createCheckoutSession(session, options) {
441
- this.log("Creating checkout session", {
442
- mode: session.mode,
443
- lineItems: session.lineItems.length
444
- });
445
- return this.request(
446
- "/payments/checkout",
447
- "POST",
448
- session,
449
- options
450
- );
451
- }
452
- async createCustomer(customer, options) {
453
- this.log("Creating customer", { email: customer.email });
454
- return this.request(
455
- "/payments/customers",
456
- "POST",
457
- customer,
458
- options
459
- );
460
- }
461
- async getCustomer(customerId, options) {
462
- this.log("Getting customer", { customerId });
463
- return this.request(
464
- `/payments/customers/${customerId}`,
465
- "GET",
466
- void 0,
467
- options
468
- );
469
- }
470
- async updateCustomer(customerId, updates, options) {
471
- this.log("Updating customer", { customerId });
472
- return this.request(
473
- `/payments/customers/${customerId}`,
474
- "PUT",
475
- updates,
476
- options
477
- );
478
- }
479
- async listPaymentMethods(customerId, options) {
480
- this.log("Listing payment methods", { customerId });
481
- return this.request(
482
- `/payments/customers/${customerId}/payment-methods`,
483
- "GET",
484
- void 0,
485
- options
486
- );
487
- }
488
- async attachPaymentMethod(paymentMethodId, customerId, options) {
489
- this.log("Attaching payment method", {
490
- paymentMethodId,
491
- customerId
492
- });
493
- return this.request(
494
- `/payments/payment-methods/${paymentMethodId}/attach`,
495
- "POST",
496
- { customerId },
497
- options
498
- );
499
- }
500
- async detachPaymentMethod(paymentMethodId, options) {
501
- this.log("Detaching payment method", { paymentMethodId });
502
- return this.request(
503
- `/payments/payment-methods/${paymentMethodId}/detach`,
504
- "POST",
505
- void 0,
506
- options
507
- );
508
- }
509
- };
510
-
511
308
  // src/index.ts
512
309
  var VlyIntegrations = class {
513
310
  ai;
514
311
  email;
515
- payments;
516
312
  constructor(config) {
517
313
  if (!config.deploymentToken) {
518
314
  throw new Error("Deployment token is required");
519
315
  }
520
316
  this.ai = new VlyAI(config);
521
317
  this.email = new VlyEmail(config);
522
- this.payments = new VlyPayments(config);
523
318
  }
524
319
  };
525
320
  function createVlyIntegrations(config) {
@@ -529,7 +324,6 @@ function createVlyIntegrations(config) {
529
324
  exports.VlyAI = VlyAI;
530
325
  exports.VlyEmail = VlyEmail;
531
326
  exports.VlyIntegrations = VlyIntegrations;
532
- exports.VlyPayments = VlyPayments;
533
327
  exports.createVlyIntegrations = createVlyIntegrations;
534
328
  //# sourceMappingURL=index.js.map
535
329
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ai/index.ts","../src/client.ts","../src/email/index.ts","../src/payments/index.ts","../src/index.ts"],"names":["createOpenAICompatible","generateText","streamText"],"mappings":"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","file":"index.js","sourcesContent":["import { createOpenAICompatible } from '@ai-sdk/openai-compatible';\nimport { generateText, streamText, type CoreMessage } from 'ai';\nimport type { \n AICompletionRequest, \n AICompletionResponse,\n RequestOptions,\n ApiResponse,\n VlyConfig\n} from '../types';\n\nexport class VlyAI {\n private provider: ReturnType<typeof createOpenAICompatible>;\n private config: VlyConfig;\n\n constructor(config: VlyConfig) {\n this.config = config;\n this.provider = createOpenAICompatible({\n name: 'vly-gateway',\n baseURL: 'https://ai-gateway.vly.ai/v1/llm',\n headers: {\n 'Authorization': `Bearer ${config.deploymentToken}`,\n },\n });\n }\n\n private getModel(modelName?: string) {\n return this.provider(modelName || 'gpt-5');\n }\n\n private mapMessages(messages: AICompletionRequest['messages']): CoreMessage[] {\n return messages.map(msg => ({\n role: msg.role,\n content: msg.content,\n }));\n }\n\n async completion(\n request: AICompletionRequest, \n _options?: RequestOptions\n ): Promise<ApiResponse<AICompletionResponse>> {\n if (this.config.debug) {\n console.log('[Vly] Creating AI completion', { model: request.model });\n }\n\n try {\n const model = this.getModel(request.model);\n const messages = this.mapMessages(request.messages);\n\n const result = await generateText({\n model: model as any,\n messages,\n temperature: request.temperature,\n maxOutputTokens: request.maxTokens,\n });\n\n const responseData: AICompletionResponse = {\n id: `vly-${Date.now()}`,\n choices: [{\n message: {\n role: 'assistant',\n content: result.text\n },\n finishReason: result.finishReason || 'stop'\n }],\n usage: {\n promptTokens: result.usage?.inputTokens || 0,\n completionTokens: result.usage?.outputTokens || 0,\n totalTokens: result.usage?.totalTokens || 0\n }\n };\n\n if (this.config.debug) {\n console.log('[Vly] AI completion successful', { \n tokensUsed: responseData.usage.totalTokens \n });\n }\n\n return {\n success: true,\n data: responseData\n };\n } catch (error: any) {\n if (this.config.debug) {\n console.error('[Vly] AI completion failed', { error: error.message });\n }\n \n return {\n success: false,\n error: error.message || 'Request failed'\n };\n }\n }\n\n async streamCompletion(\n request: AICompletionRequest,\n onChunk: (chunk: string) => void,\n _options?: RequestOptions\n ): Promise<ApiResponse<AICompletionResponse>> {\n if (this.config.debug) {\n console.log('[Vly] Creating streaming AI completion', { model: request.model });\n }\n\n try {\n const model = this.getModel(request.model);\n const messages = this.mapMessages(request.messages);\n\n const result = await streamText({\n model: model as any,\n messages,\n temperature: request.temperature,\n maxOutputTokens: request.maxTokens,\n });\n\n let fullResponse = '';\n\n for await (const delta of result.textStream) {\n fullResponse += delta;\n onChunk(delta);\n }\n\n // Wait for the stream to complete and get usage info\n const usage = await result.usage;\n\n const responseData: AICompletionResponse = {\n id: `vly-stream-${Date.now()}`,\n choices: [{\n message: {\n role: 'assistant',\n content: fullResponse\n },\n finishReason: 'stop'\n }],\n usage: {\n promptTokens: usage?.inputTokens || 0,\n completionTokens: usage?.outputTokens || 0,\n totalTokens: usage?.totalTokens || 0\n }\n };\n\n if (this.config.debug) {\n console.log('[Vly] Streaming AI completion successful', { \n tokensUsed: responseData.usage.totalTokens \n });\n }\n\n return {\n success: true,\n data: responseData\n };\n } catch (error: any) {\n if (this.config.debug) {\n console.error('[Vly] Streaming AI completion failed', { error: error.message });\n }\n \n return {\n success: false,\n error: error.message || 'Streaming request failed'\n };\n }\n }\n\n async embeddings(\n input: string | string[],\n _options?: RequestOptions & { model?: string }\n ): Promise<ApiResponse<{ embeddings: number[][]; usage: any }>> {\n if (this.config.debug) {\n console.log('[Vly] Creating embeddings', { inputCount: Array.isArray(input) ? input.length : 1 });\n }\n \n // Note: AI SDK doesn't have embeddings support for OpenAI-compatible providers yet\n // This would need to be implemented separately or use a different approach\n return {\n success: false,\n error: 'Embeddings not yet supported with AI SDK OpenAI-compatible provider'\n };\n }\n\n // Helper method to get the provider for direct AI SDK usage\n getProvider() {\n return this.provider;\n }\n}","import type { VlyConfig, RequestOptions, ApiResponse } from './types';\n\nexport class VlyClient {\n protected config: Required<VlyConfig>;\n\n constructor(config: VlyConfig) {\n this.config = {\n deploymentToken: config.deploymentToken,\n debug: config.debug || false\n };\n }\n\n protected async request<T = any>(\n endpoint: string,\n method: 'GET' | 'POST' | 'PUT' | 'DELETE',\n data?: any,\n options?: RequestOptions\n ): Promise<ApiResponse<T>> {\n const url = `https://ai-gateway.vly.ai${endpoint}`;\n const headers: Record<string, string> = {\n 'Authorization': `Bearer ${this.config.deploymentToken}`,\n 'Content-Type': 'application/json',\n 'X-Vly-Version': '0.1.0'\n };\n\n const fetchOptions: RequestInit = {\n method,\n headers,\n body: data ? JSON.stringify(data) : undefined,\n };\n\n // Add timeout using AbortController\n const controller = new AbortController();\n const timeout = options?.timeout || 30000;\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n fetchOptions.signal = controller.signal;\n\n try {\n const response = await fetch(url, fetchOptions);\n clearTimeout(timeoutId);\n \n const responseData = await response.json().catch(() => ({})) as any;\n\n if (response.ok) {\n return {\n success: true,\n data: responseData as T,\n usage: responseData?.usage\n };\n } else {\n const error = responseData?.error || `Request failed with status ${response.status}`;\n \n if (this.config.debug) {\n console.error(`Vly API Error: ${error}`, {\n endpoint,\n status: response.status,\n data: responseData\n });\n }\n\n return {\n success: false,\n error\n };\n }\n } catch (error: any) {\n clearTimeout(timeoutId);\n const errorMessage = error.name === 'AbortError' ? 'Request timeout' : error.message || 'Unknown error occurred';\n \n if (this.config.debug) {\n console.error(`Vly API Request Failed: ${errorMessage}`, {\n endpoint,\n error\n });\n }\n\n if (options?.retries && options.retries > 0) {\n if (this.config.debug) {\n console.log(`Retrying request... (${options.retries} retries left)`);\n }\n \n await new Promise(resolve => setTimeout(resolve, 1000));\n return this.request(endpoint, method, data, { \n ...options, \n retries: options.retries - 1 \n });\n }\n\n return {\n success: false,\n error: errorMessage\n };\n }\n }\n\n protected log(message: string, data?: any) {\n if (this.config.debug) {\n console.log(`[Vly] ${message}`, data || '');\n }\n }\n}","import { VlyClient } from '../client';\nimport type { \n EmailRequest, \n EmailResponse,\n RequestOptions,\n ApiResponse\n} from '../types';\n\nexport class VlyEmail extends VlyClient {\n async send(\n email: EmailRequest, \n options?: RequestOptions\n ): Promise<ApiResponse<EmailResponse>> {\n this.log('Sending email', { \n to: email.to, \n subject: email.subject \n });\n\n const payload = {\n to: Array.isArray(email.to) ? email.to : [email.to],\n from: email.from || 'noreply@vly.io',\n subject: email.subject,\n html: email.html,\n text: email.text,\n attachments: email.attachments,\n replyTo: email.replyTo,\n cc: email.cc ? (Array.isArray(email.cc) ? email.cc : [email.cc]) : undefined,\n bcc: email.bcc ? (Array.isArray(email.bcc) ? email.bcc : [email.bcc]) : undefined\n };\n\n const response = await this.request<EmailResponse>(\n '/v1/email/send',\n 'POST',\n payload,\n options\n );\n\n if (response.success) {\n this.log('Email sent successfully', { \n id: response.data?.id,\n status: response.data?.status \n });\n }\n\n return response;\n }\n\n async sendBatch(\n emails: EmailRequest[],\n options?: RequestOptions\n ): Promise<ApiResponse<EmailResponse[]>> {\n this.log('Sending batch emails', { count: emails.length });\n\n const payload = {\n emails: emails.map(email => ({\n to: Array.isArray(email.to) ? email.to : [email.to],\n from: email.from || 'noreply@vly.io',\n subject: email.subject,\n html: email.html,\n text: email.text,\n attachments: email.attachments,\n replyTo: email.replyTo,\n cc: email.cc ? (Array.isArray(email.cc) ? email.cc : [email.cc]) : undefined,\n bcc: email.bcc ? (Array.isArray(email.bcc) ? email.bcc : [email.bcc]) : undefined\n }))\n };\n\n return this.request<EmailResponse[]>(\n '/v1/email/batch',\n 'POST',\n payload,\n options\n );\n }\n\n async getStatus(\n emailId: string,\n options?: RequestOptions\n ): Promise<ApiResponse<EmailResponse>> {\n this.log('Getting email status', { emailId });\n\n return this.request<EmailResponse>(\n `/v1/email/status/${emailId}`,\n 'GET',\n undefined,\n options\n );\n }\n\n async verifyDomain(\n domain: string,\n options?: RequestOptions\n ): Promise<ApiResponse<{\n domain: string;\n verified: boolean;\n dnsRecords: Array<{\n type: string;\n name: string;\n value: string;\n verified: boolean;\n }>;\n }>> {\n this.log('Verifying domain', { domain });\n\n return this.request(\n '/v1/email/domains/verify',\n 'POST',\n { domain },\n options\n );\n }\n\n async listDomains(\n options?: RequestOptions\n ): Promise<ApiResponse<Array<{\n domain: string;\n verified: boolean;\n createdAt: string;\n verifiedAt?: string;\n }>>> {\n this.log('Listing email domains');\n\n return this.request(\n '/v1/email/domains',\n 'GET',\n undefined,\n options\n );\n }\n}","import { VlyClient } from '../client';\nimport type { \n PaymentIntent,\n PaymentIntentResponse,\n Subscription,\n SubscriptionResponse,\n CustomerPortalSession,\n CustomerPortalResponse,\n RequestOptions,\n ApiResponse\n} from '../types';\n\nexport class VlyPayments extends VlyClient {\n async createPaymentIntent(\n intent: PaymentIntent,\n options?: RequestOptions\n ): Promise<ApiResponse<PaymentIntentResponse>> {\n this.log('Creating payment intent', { \n amount: intent.amount,\n currency: intent.currency \n });\n\n const payload = {\n amount: intent.amount,\n currency: intent.currency || 'usd',\n description: intent.description,\n metadata: intent.metadata,\n customer: intent.customer\n };\n\n const response = await this.request<PaymentIntentResponse>(\n '/payments/intents',\n 'POST',\n payload,\n options\n );\n\n if (response.success) {\n this.log('Payment intent created', { \n id: response.data?.id,\n status: response.data?.status \n });\n }\n\n return response;\n }\n\n async confirmPaymentIntent(\n intentId: string,\n paymentMethodId: string,\n options?: RequestOptions\n ): Promise<ApiResponse<PaymentIntentResponse>> {\n this.log('Confirming payment intent', { intentId });\n\n return this.request<PaymentIntentResponse>(\n `/payments/intents/${intentId}/confirm`,\n 'POST',\n { paymentMethodId },\n options\n );\n }\n\n async getPaymentIntent(\n intentId: string,\n options?: RequestOptions\n ): Promise<ApiResponse<PaymentIntentResponse>> {\n this.log('Getting payment intent', { intentId });\n\n return this.request<PaymentIntentResponse>(\n `/payments/intents/${intentId}`,\n 'GET',\n undefined,\n options\n );\n }\n\n async cancelPaymentIntent(\n intentId: string,\n options?: RequestOptions\n ): Promise<ApiResponse<PaymentIntentResponse>> {\n this.log('Canceling payment intent', { intentId });\n\n return this.request<PaymentIntentResponse>(\n `/payments/intents/${intentId}/cancel`,\n 'POST',\n undefined,\n options\n );\n }\n\n async createSubscription(\n subscription: Subscription,\n options?: RequestOptions\n ): Promise<ApiResponse<SubscriptionResponse>> {\n this.log('Creating subscription', { \n customerId: subscription.customerId,\n priceId: subscription.priceId \n });\n\n const response = await this.request<SubscriptionResponse>(\n '/payments/subscriptions',\n 'POST',\n subscription,\n options\n );\n\n if (response.success) {\n this.log('Subscription created', { \n id: response.data?.id,\n status: response.data?.status \n });\n }\n\n return response;\n }\n\n async updateSubscription(\n subscriptionId: string,\n updates: Partial<Subscription>,\n options?: RequestOptions\n ): Promise<ApiResponse<SubscriptionResponse>> {\n this.log('Updating subscription', { subscriptionId });\n\n return this.request<SubscriptionResponse>(\n `/payments/subscriptions/${subscriptionId}`,\n 'PUT',\n updates,\n options\n );\n }\n\n async cancelSubscription(\n subscriptionId: string,\n immediately?: boolean,\n options?: RequestOptions\n ): Promise<ApiResponse<SubscriptionResponse>> {\n this.log('Canceling subscription', { \n subscriptionId,\n immediately \n });\n\n return this.request<SubscriptionResponse>(\n `/payments/subscriptions/${subscriptionId}/cancel`,\n 'POST',\n { immediately },\n options\n );\n }\n\n async getSubscription(\n subscriptionId: string,\n options?: RequestOptions\n ): Promise<ApiResponse<SubscriptionResponse>> {\n this.log('Getting subscription', { subscriptionId });\n\n return this.request<SubscriptionResponse>(\n `/payments/subscriptions/${subscriptionId}`,\n 'GET',\n undefined,\n options\n );\n }\n\n async listSubscriptions(\n customerId?: string,\n options?: RequestOptions & { limit?: number; offset?: number }\n ): Promise<ApiResponse<{\n subscriptions: SubscriptionResponse[];\n hasMore: boolean;\n total: number;\n }>> {\n this.log('Listing subscriptions', { customerId });\n\n const params = new URLSearchParams();\n if (customerId) params.append('customerId', customerId);\n if (options?.limit) params.append('limit', options.limit.toString());\n if (options?.offset) params.append('offset', options.offset.toString());\n\n const queryString = params.toString();\n const endpoint = `/payments/subscriptions${queryString ? `?${queryString}` : ''}`;\n\n return this.request(endpoint, 'GET', undefined, options);\n }\n\n async createCustomerPortal(\n session: CustomerPortalSession,\n options?: RequestOptions\n ): Promise<ApiResponse<CustomerPortalResponse>> {\n this.log('Creating customer portal session', { \n customerId: session.customerId \n });\n\n const response = await this.request<CustomerPortalResponse>(\n '/payments/portal',\n 'POST',\n session,\n options\n );\n\n if (response.success) {\n this.log('Customer portal session created', { \n id: response.data?.id,\n url: response.data?.url \n });\n }\n\n return response;\n }\n\n async createCheckoutSession(\n session: {\n customerId?: string;\n customerEmail?: string;\n lineItems: Array<{\n priceId: string;\n quantity: number;\n }>;\n mode: 'payment' | 'subscription';\n successUrl: string;\n cancelUrl: string;\n metadata?: Record<string, any>;\n },\n options?: RequestOptions\n ): Promise<ApiResponse<{\n id: string;\n url: string;\n }>> {\n this.log('Creating checkout session', { \n mode: session.mode,\n lineItems: session.lineItems.length \n });\n\n return this.request(\n '/payments/checkout',\n 'POST',\n session,\n options\n );\n }\n\n async createCustomer(\n customer: {\n email: string;\n name?: string;\n metadata?: Record<string, any>;\n },\n options?: RequestOptions\n ): Promise<ApiResponse<{\n id: string;\n email: string;\n name?: string;\n created: number;\n }>> {\n this.log('Creating customer', { email: customer.email });\n\n return this.request(\n '/payments/customers',\n 'POST',\n customer,\n options\n );\n }\n\n async getCustomer(\n customerId: string,\n options?: RequestOptions\n ): Promise<ApiResponse<{\n id: string;\n email: string;\n name?: string;\n created: number;\n metadata?: Record<string, any>;\n }>> {\n this.log('Getting customer', { customerId });\n\n return this.request(\n `/payments/customers/${customerId}`,\n 'GET',\n undefined,\n options\n );\n }\n\n async updateCustomer(\n customerId: string,\n updates: {\n email?: string;\n name?: string;\n metadata?: Record<string, any>;\n },\n options?: RequestOptions\n ): Promise<ApiResponse<{\n id: string;\n email: string;\n name?: string;\n created: number;\n metadata?: Record<string, any>;\n }>> {\n this.log('Updating customer', { customerId });\n\n return this.request(\n `/payments/customers/${customerId}`,\n 'PUT',\n updates,\n options\n );\n }\n\n async listPaymentMethods(\n customerId: string,\n options?: RequestOptions\n ): Promise<ApiResponse<Array<{\n id: string;\n type: string;\n card?: {\n brand: string;\n last4: string;\n expMonth: number;\n expYear: number;\n };\n created: number;\n }>>> {\n this.log('Listing payment methods', { customerId });\n\n return this.request(\n `/payments/customers/${customerId}/payment-methods`,\n 'GET',\n undefined,\n options\n );\n }\n\n async attachPaymentMethod(\n paymentMethodId: string,\n customerId: string,\n options?: RequestOptions\n ): Promise<ApiResponse<{\n id: string;\n customerId: string;\n attached: boolean;\n }>> {\n this.log('Attaching payment method', { \n paymentMethodId,\n customerId \n });\n\n return this.request(\n `/payments/payment-methods/${paymentMethodId}/attach`,\n 'POST',\n { customerId },\n options\n );\n }\n\n async detachPaymentMethod(\n paymentMethodId: string,\n options?: RequestOptions\n ): Promise<ApiResponse<{\n id: string;\n detached: boolean;\n }>> {\n this.log('Detaching payment method', { paymentMethodId });\n\n return this.request(\n `/payments/payment-methods/${paymentMethodId}/detach`,\n 'POST',\n undefined,\n options\n );\n }\n}","import type { VlyConfig } from './types';\nimport { VlyAI } from './ai';\nimport { VlyEmail } from './email';\nimport { VlyPayments } from './payments';\n\nexport * from './types';\nexport type { AIModel } from './types';\n\n// Re-export AI SDK types for convenience\nexport type { CoreMessage } from 'ai';\n\nexport class VlyIntegrations {\n public ai: VlyAI;\n public email: VlyEmail;\n public payments: VlyPayments;\n\n constructor(config: VlyConfig) {\n if (!config.deploymentToken) {\n throw new Error('Deployment token is required');\n }\n\n this.ai = new VlyAI(config);\n this.email = new VlyEmail(config);\n this.payments = new VlyPayments(config);\n }\n}\n\nexport function createVlyIntegrations(config: VlyConfig): VlyIntegrations {\n return new VlyIntegrations(config);\n}\n\nexport { VlyAI, VlyEmail, VlyPayments };"]}
1
+ {"version":3,"sources":["../src/ai/index.ts","../src/client.ts","../src/email/index.ts","../src/index.ts"],"names":["createOpenAICompatible","generateText","streamText"],"mappings":"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","file":"index.js","sourcesContent":["import { createOpenAICompatible } from '@ai-sdk/openai-compatible';\nimport { generateText, streamText, type CoreMessage } from 'ai';\nimport type { \n AICompletionRequest, \n AICompletionResponse,\n RequestOptions,\n ApiResponse,\n VlyConfig\n} from '../types';\n\nexport class VlyAI {\n private provider: ReturnType<typeof createOpenAICompatible>;\n private config: VlyConfig;\n\n constructor(config: VlyConfig) {\n this.config = config;\n this.provider = createOpenAICompatible({\n name: 'vly-gateway',\n baseURL: 'https://integrations.vly.ai/v1/llm',\n headers: {\n 'Authorization': `Bearer ${config.deploymentToken}`,\n },\n });\n }\n\n private getModel(modelName?: string) {\n return this.provider(modelName || 'gpt-5');\n }\n\n private mapMessages(messages: AICompletionRequest['messages']): CoreMessage[] {\n return messages.map(msg => ({\n role: msg.role,\n content: msg.content,\n }));\n }\n\n async completion(\n request: AICompletionRequest, \n _options?: RequestOptions\n ): Promise<ApiResponse<AICompletionResponse>> {\n if (this.config.debug) {\n console.log('[Vly] Creating AI completion', { model: request.model });\n }\n\n try {\n const model = this.getModel(request.model);\n const messages = this.mapMessages(request.messages);\n\n const result = await generateText({\n model: model as any,\n messages,\n temperature: request.temperature,\n maxOutputTokens: request.maxTokens,\n });\n\n const responseData: AICompletionResponse = {\n id: `vly-${Date.now()}`,\n choices: [{\n message: {\n role: 'assistant',\n content: result.text\n },\n finishReason: result.finishReason || 'stop'\n }],\n usage: {\n promptTokens: result.usage?.inputTokens || 0,\n completionTokens: result.usage?.outputTokens || 0,\n totalTokens: result.usage?.totalTokens || 0\n }\n };\n\n if (this.config.debug) {\n console.log('[Vly] AI completion successful', { \n tokensUsed: responseData.usage.totalTokens \n });\n }\n\n return {\n success: true,\n data: responseData\n };\n } catch (error: any) {\n if (this.config.debug) {\n console.error('[Vly] AI completion failed', { error: error.message });\n }\n \n return {\n success: false,\n error: error.message || 'Request failed'\n };\n }\n }\n\n async streamCompletion(\n request: AICompletionRequest,\n onChunk: (chunk: string) => void,\n _options?: RequestOptions\n ): Promise<ApiResponse<AICompletionResponse>> {\n if (this.config.debug) {\n console.log('[Vly] Creating streaming AI completion', { model: request.model });\n }\n\n try {\n const model = this.getModel(request.model);\n const messages = this.mapMessages(request.messages);\n\n const result = await streamText({\n model: model as any,\n messages,\n temperature: request.temperature,\n maxOutputTokens: request.maxTokens,\n });\n\n let fullResponse = '';\n\n for await (const delta of result.textStream) {\n fullResponse += delta;\n onChunk(delta);\n }\n\n // Wait for the stream to complete and get usage info\n const usage = await result.usage;\n\n const responseData: AICompletionResponse = {\n id: `vly-stream-${Date.now()}`,\n choices: [{\n message: {\n role: 'assistant',\n content: fullResponse\n },\n finishReason: 'stop'\n }],\n usage: {\n promptTokens: usage?.inputTokens || 0,\n completionTokens: usage?.outputTokens || 0,\n totalTokens: usage?.totalTokens || 0\n }\n };\n\n if (this.config.debug) {\n console.log('[Vly] Streaming AI completion successful', { \n tokensUsed: responseData.usage.totalTokens \n });\n }\n\n return {\n success: true,\n data: responseData\n };\n } catch (error: any) {\n if (this.config.debug) {\n console.error('[Vly] Streaming AI completion failed', { error: error.message });\n }\n \n return {\n success: false,\n error: error.message || 'Streaming request failed'\n };\n }\n }\n\n async embeddings(\n input: string | string[],\n _options?: RequestOptions & { model?: string }\n ): Promise<ApiResponse<{ embeddings: number[][]; usage: any }>> {\n if (this.config.debug) {\n console.log('[Vly] Creating embeddings', { inputCount: Array.isArray(input) ? input.length : 1 });\n }\n \n // Note: AI SDK doesn't have embeddings support for OpenAI-compatible providers yet\n // This would need to be implemented separately or use a different approach\n return {\n success: false,\n error: 'Embeddings not yet supported with AI SDK OpenAI-compatible provider'\n };\n }\n\n // Helper method to get the provider for direct AI SDK usage\n getProvider() {\n return this.provider;\n }\n}","import type { VlyConfig, RequestOptions, ApiResponse } from './types';\n\nexport class VlyClient {\n protected config: Required<VlyConfig>;\n\n constructor(config: VlyConfig) {\n this.config = {\n deploymentToken: config.deploymentToken,\n debug: config.debug || false\n };\n }\n\n protected async request<T = any>(\n endpoint: string,\n method: 'GET' | 'POST' | 'PUT' | 'DELETE',\n data?: any,\n options?: RequestOptions\n ): Promise<ApiResponse<T>> {\n const url = `https://integrations.vly.ai${endpoint}`;\n const headers: Record<string, string> = {\n 'Authorization': `Bearer ${this.config.deploymentToken}`,\n 'Content-Type': 'application/json',\n 'X-Vly-Version': '0.1.0'\n };\n\n const fetchOptions: RequestInit = {\n method,\n headers,\n body: data ? JSON.stringify(data) : undefined,\n };\n\n // Add timeout using AbortController\n const controller = new AbortController();\n const timeout = options?.timeout || 30000;\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n fetchOptions.signal = controller.signal;\n\n try {\n const response = await fetch(url, fetchOptions);\n clearTimeout(timeoutId);\n \n const responseData = await response.json().catch(() => ({})) as any;\n\n if (response.ok) {\n return {\n success: true,\n data: responseData as T,\n usage: responseData?.usage\n };\n } else {\n const error = responseData?.error || `Request failed with status ${response.status}`;\n \n if (this.config.debug) {\n console.error(`Vly API Error: ${error}`, {\n endpoint,\n status: response.status,\n data: responseData\n });\n }\n\n return {\n success: false,\n error\n };\n }\n } catch (error: any) {\n clearTimeout(timeoutId);\n const errorMessage = error.name === 'AbortError' ? 'Request timeout' : error.message || 'Unknown error occurred';\n \n if (this.config.debug) {\n console.error(`Vly API Request Failed: ${errorMessage}`, {\n endpoint,\n error\n });\n }\n\n if (options?.retries && options.retries > 0) {\n if (this.config.debug) {\n console.log(`Retrying request... (${options.retries} retries left)`);\n }\n \n await new Promise(resolve => setTimeout(resolve, 1000));\n return this.request(endpoint, method, data, { \n ...options, \n retries: options.retries - 1 \n });\n }\n\n return {\n success: false,\n error: errorMessage\n };\n }\n }\n\n protected log(message: string, data?: any) {\n if (this.config.debug) {\n console.log(`[Vly] ${message}`, data || '');\n }\n }\n}","import { VlyClient } from '../client';\nimport type { \n EmailRequest, \n EmailResponse,\n RequestOptions,\n ApiResponse\n} from '../types';\n\nexport class VlyEmail extends VlyClient {\n async send(\n email: EmailRequest, \n options?: RequestOptions\n ): Promise<ApiResponse<EmailResponse>> {\n this.log('Sending email', { \n to: email.to, \n subject: email.subject \n });\n\n const payload = {\n to: Array.isArray(email.to) ? email.to : [email.to],\n from: email.from || 'noreply@vly.io',\n subject: email.subject,\n html: email.html,\n text: email.text,\n attachments: email.attachments,\n replyTo: email.replyTo,\n cc: email.cc ? (Array.isArray(email.cc) ? email.cc : [email.cc]) : undefined,\n bcc: email.bcc ? (Array.isArray(email.bcc) ? email.bcc : [email.bcc]) : undefined\n };\n\n const response = await this.request<EmailResponse>(\n '/v1/email/send',\n 'POST',\n payload,\n options\n );\n\n if (response.success) {\n this.log('Email sent successfully', { \n id: response.data?.id,\n status: response.data?.status \n });\n }\n\n return response;\n }\n\n async sendBatch(\n emails: EmailRequest[],\n options?: RequestOptions\n ): Promise<ApiResponse<EmailResponse[]>> {\n this.log('Sending batch emails', { count: emails.length });\n\n const payload = {\n emails: emails.map(email => ({\n to: Array.isArray(email.to) ? email.to : [email.to],\n from: email.from || 'noreply@vly.io',\n subject: email.subject,\n html: email.html,\n text: email.text,\n attachments: email.attachments,\n replyTo: email.replyTo,\n cc: email.cc ? (Array.isArray(email.cc) ? email.cc : [email.cc]) : undefined,\n bcc: email.bcc ? (Array.isArray(email.bcc) ? email.bcc : [email.bcc]) : undefined\n }))\n };\n\n return this.request<EmailResponse[]>(\n '/v1/email/batch',\n 'POST',\n payload,\n options\n );\n }\n\n async getStatus(\n emailId: string,\n options?: RequestOptions\n ): Promise<ApiResponse<EmailResponse>> {\n this.log('Getting email status', { emailId });\n\n return this.request<EmailResponse>(\n `/v1/email/status/${emailId}`,\n 'GET',\n undefined,\n options\n );\n }\n\n async verifyDomain(\n domain: string,\n options?: RequestOptions\n ): Promise<ApiResponse<{\n domain: string;\n verified: boolean;\n dnsRecords: Array<{\n type: string;\n name: string;\n value: string;\n verified: boolean;\n }>;\n }>> {\n this.log('Verifying domain', { domain });\n\n return this.request(\n '/v1/email/domains/verify',\n 'POST',\n { domain },\n options\n );\n }\n\n async listDomains(\n options?: RequestOptions\n ): Promise<ApiResponse<Array<{\n domain: string;\n verified: boolean;\n createdAt: string;\n verifiedAt?: string;\n }>>> {\n this.log('Listing email domains');\n\n return this.request(\n '/v1/email/domains',\n 'GET',\n undefined,\n options\n );\n }\n}","import type { VlyConfig } from './types';\nimport { VlyAI } from './ai';\nimport { VlyEmail } from './email';\n\nexport * from './types';\nexport type { AIModel } from './types';\n\n// Re-export AI SDK types for convenience\nexport type { CoreMessage } from 'ai';\n\nexport class VlyIntegrations {\n public ai: VlyAI;\n public email: VlyEmail;\n\n constructor(config: VlyConfig) {\n if (!config.deploymentToken) {\n throw new Error('Deployment token is required');\n }\n\n this.ai = new VlyAI(config);\n this.email = new VlyEmail(config);\n }\n}\n\nexport function createVlyIntegrations(config: VlyConfig): VlyIntegrations {\n return new VlyIntegrations(config);\n}\n\nexport { VlyAI, VlyEmail };"]}
package/dist/index.mjs CHANGED
@@ -9,7 +9,7 @@ var VlyAI = class {
9
9
  this.config = config;
10
10
  this.provider = createOpenAICompatible({
11
11
  name: "vly-gateway",
12
- baseURL: "https://ai-gateway.vly.ai/v1/llm",
12
+ baseURL: "https://integrations.vly.ai/v1/llm",
13
13
  headers: {
14
14
  "Authorization": `Bearer ${config.deploymentToken}`
15
15
  }
@@ -149,7 +149,7 @@ var VlyClient = class {
149
149
  };
150
150
  }
151
151
  async request(endpoint, method, data, options) {
152
- const url = `https://ai-gateway.vly.ai${endpoint}`;
152
+ const url = `https://integrations.vly.ai${endpoint}`;
153
153
  const headers = {
154
154
  "Authorization": `Bearer ${this.config.deploymentToken}`,
155
155
  "Content-Type": "application/json",
@@ -303,227 +303,22 @@ var VlyEmail = class extends VlyClient {
303
303
  }
304
304
  };
305
305
 
306
- // src/payments/index.ts
307
- var VlyPayments = class extends VlyClient {
308
- async createPaymentIntent(intent, options) {
309
- this.log("Creating payment intent", {
310
- amount: intent.amount,
311
- currency: intent.currency
312
- });
313
- const payload = {
314
- amount: intent.amount,
315
- currency: intent.currency || "usd",
316
- description: intent.description,
317
- metadata: intent.metadata,
318
- customer: intent.customer
319
- };
320
- const response = await this.request(
321
- "/payments/intents",
322
- "POST",
323
- payload,
324
- options
325
- );
326
- if (response.success) {
327
- this.log("Payment intent created", {
328
- id: response.data?.id,
329
- status: response.data?.status
330
- });
331
- }
332
- return response;
333
- }
334
- async confirmPaymentIntent(intentId, paymentMethodId, options) {
335
- this.log("Confirming payment intent", { intentId });
336
- return this.request(
337
- `/payments/intents/${intentId}/confirm`,
338
- "POST",
339
- { paymentMethodId },
340
- options
341
- );
342
- }
343
- async getPaymentIntent(intentId, options) {
344
- this.log("Getting payment intent", { intentId });
345
- return this.request(
346
- `/payments/intents/${intentId}`,
347
- "GET",
348
- void 0,
349
- options
350
- );
351
- }
352
- async cancelPaymentIntent(intentId, options) {
353
- this.log("Canceling payment intent", { intentId });
354
- return this.request(
355
- `/payments/intents/${intentId}/cancel`,
356
- "POST",
357
- void 0,
358
- options
359
- );
360
- }
361
- async createSubscription(subscription, options) {
362
- this.log("Creating subscription", {
363
- customerId: subscription.customerId,
364
- priceId: subscription.priceId
365
- });
366
- const response = await this.request(
367
- "/payments/subscriptions",
368
- "POST",
369
- subscription,
370
- options
371
- );
372
- if (response.success) {
373
- this.log("Subscription created", {
374
- id: response.data?.id,
375
- status: response.data?.status
376
- });
377
- }
378
- return response;
379
- }
380
- async updateSubscription(subscriptionId, updates, options) {
381
- this.log("Updating subscription", { subscriptionId });
382
- return this.request(
383
- `/payments/subscriptions/${subscriptionId}`,
384
- "PUT",
385
- updates,
386
- options
387
- );
388
- }
389
- async cancelSubscription(subscriptionId, immediately, options) {
390
- this.log("Canceling subscription", {
391
- subscriptionId,
392
- immediately
393
- });
394
- return this.request(
395
- `/payments/subscriptions/${subscriptionId}/cancel`,
396
- "POST",
397
- { immediately },
398
- options
399
- );
400
- }
401
- async getSubscription(subscriptionId, options) {
402
- this.log("Getting subscription", { subscriptionId });
403
- return this.request(
404
- `/payments/subscriptions/${subscriptionId}`,
405
- "GET",
406
- void 0,
407
- options
408
- );
409
- }
410
- async listSubscriptions(customerId, options) {
411
- this.log("Listing subscriptions", { customerId });
412
- const params = new URLSearchParams();
413
- if (customerId) params.append("customerId", customerId);
414
- if (options?.limit) params.append("limit", options.limit.toString());
415
- if (options?.offset) params.append("offset", options.offset.toString());
416
- const queryString = params.toString();
417
- const endpoint = `/payments/subscriptions${queryString ? `?${queryString}` : ""}`;
418
- return this.request(endpoint, "GET", void 0, options);
419
- }
420
- async createCustomerPortal(session, options) {
421
- this.log("Creating customer portal session", {
422
- customerId: session.customerId
423
- });
424
- const response = await this.request(
425
- "/payments/portal",
426
- "POST",
427
- session,
428
- options
429
- );
430
- if (response.success) {
431
- this.log("Customer portal session created", {
432
- id: response.data?.id,
433
- url: response.data?.url
434
- });
435
- }
436
- return response;
437
- }
438
- async createCheckoutSession(session, options) {
439
- this.log("Creating checkout session", {
440
- mode: session.mode,
441
- lineItems: session.lineItems.length
442
- });
443
- return this.request(
444
- "/payments/checkout",
445
- "POST",
446
- session,
447
- options
448
- );
449
- }
450
- async createCustomer(customer, options) {
451
- this.log("Creating customer", { email: customer.email });
452
- return this.request(
453
- "/payments/customers",
454
- "POST",
455
- customer,
456
- options
457
- );
458
- }
459
- async getCustomer(customerId, options) {
460
- this.log("Getting customer", { customerId });
461
- return this.request(
462
- `/payments/customers/${customerId}`,
463
- "GET",
464
- void 0,
465
- options
466
- );
467
- }
468
- async updateCustomer(customerId, updates, options) {
469
- this.log("Updating customer", { customerId });
470
- return this.request(
471
- `/payments/customers/${customerId}`,
472
- "PUT",
473
- updates,
474
- options
475
- );
476
- }
477
- async listPaymentMethods(customerId, options) {
478
- this.log("Listing payment methods", { customerId });
479
- return this.request(
480
- `/payments/customers/${customerId}/payment-methods`,
481
- "GET",
482
- void 0,
483
- options
484
- );
485
- }
486
- async attachPaymentMethod(paymentMethodId, customerId, options) {
487
- this.log("Attaching payment method", {
488
- paymentMethodId,
489
- customerId
490
- });
491
- return this.request(
492
- `/payments/payment-methods/${paymentMethodId}/attach`,
493
- "POST",
494
- { customerId },
495
- options
496
- );
497
- }
498
- async detachPaymentMethod(paymentMethodId, options) {
499
- this.log("Detaching payment method", { paymentMethodId });
500
- return this.request(
501
- `/payments/payment-methods/${paymentMethodId}/detach`,
502
- "POST",
503
- void 0,
504
- options
505
- );
506
- }
507
- };
508
-
509
306
  // src/index.ts
510
307
  var VlyIntegrations = class {
511
308
  ai;
512
309
  email;
513
- payments;
514
310
  constructor(config) {
515
311
  if (!config.deploymentToken) {
516
312
  throw new Error("Deployment token is required");
517
313
  }
518
314
  this.ai = new VlyAI(config);
519
315
  this.email = new VlyEmail(config);
520
- this.payments = new VlyPayments(config);
521
316
  }
522
317
  };
523
318
  function createVlyIntegrations(config) {
524
319
  return new VlyIntegrations(config);
525
320
  }
526
321
 
527
- export { VlyAI, VlyEmail, VlyIntegrations, VlyPayments, createVlyIntegrations };
322
+ export { VlyAI, VlyEmail, VlyIntegrations, createVlyIntegrations };
528
323
  //# sourceMappingURL=index.mjs.map
529
324
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ai/index.ts","../src/client.ts","../src/email/index.ts","../src/payments/index.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import { createOpenAICompatible } from '@ai-sdk/openai-compatible';\nimport { generateText, streamText, type CoreMessage } from 'ai';\nimport type { \n AICompletionRequest, \n AICompletionResponse,\n RequestOptions,\n ApiResponse,\n VlyConfig\n} from '../types';\n\nexport class VlyAI {\n private provider: ReturnType<typeof createOpenAICompatible>;\n private config: VlyConfig;\n\n constructor(config: VlyConfig) {\n this.config = config;\n this.provider = createOpenAICompatible({\n name: 'vly-gateway',\n baseURL: 'https://ai-gateway.vly.ai/v1/llm',\n headers: {\n 'Authorization': `Bearer ${config.deploymentToken}`,\n },\n });\n }\n\n private getModel(modelName?: string) {\n return this.provider(modelName || 'gpt-5');\n }\n\n private mapMessages(messages: AICompletionRequest['messages']): CoreMessage[] {\n return messages.map(msg => ({\n role: msg.role,\n content: msg.content,\n }));\n }\n\n async completion(\n request: AICompletionRequest, \n _options?: RequestOptions\n ): Promise<ApiResponse<AICompletionResponse>> {\n if (this.config.debug) {\n console.log('[Vly] Creating AI completion', { model: request.model });\n }\n\n try {\n const model = this.getModel(request.model);\n const messages = this.mapMessages(request.messages);\n\n const result = await generateText({\n model: model as any,\n messages,\n temperature: request.temperature,\n maxOutputTokens: request.maxTokens,\n });\n\n const responseData: AICompletionResponse = {\n id: `vly-${Date.now()}`,\n choices: [{\n message: {\n role: 'assistant',\n content: result.text\n },\n finishReason: result.finishReason || 'stop'\n }],\n usage: {\n promptTokens: result.usage?.inputTokens || 0,\n completionTokens: result.usage?.outputTokens || 0,\n totalTokens: result.usage?.totalTokens || 0\n }\n };\n\n if (this.config.debug) {\n console.log('[Vly] AI completion successful', { \n tokensUsed: responseData.usage.totalTokens \n });\n }\n\n return {\n success: true,\n data: responseData\n };\n } catch (error: any) {\n if (this.config.debug) {\n console.error('[Vly] AI completion failed', { error: error.message });\n }\n \n return {\n success: false,\n error: error.message || 'Request failed'\n };\n }\n }\n\n async streamCompletion(\n request: AICompletionRequest,\n onChunk: (chunk: string) => void,\n _options?: RequestOptions\n ): Promise<ApiResponse<AICompletionResponse>> {\n if (this.config.debug) {\n console.log('[Vly] Creating streaming AI completion', { model: request.model });\n }\n\n try {\n const model = this.getModel(request.model);\n const messages = this.mapMessages(request.messages);\n\n const result = await streamText({\n model: model as any,\n messages,\n temperature: request.temperature,\n maxOutputTokens: request.maxTokens,\n });\n\n let fullResponse = '';\n\n for await (const delta of result.textStream) {\n fullResponse += delta;\n onChunk(delta);\n }\n\n // Wait for the stream to complete and get usage info\n const usage = await result.usage;\n\n const responseData: AICompletionResponse = {\n id: `vly-stream-${Date.now()}`,\n choices: [{\n message: {\n role: 'assistant',\n content: fullResponse\n },\n finishReason: 'stop'\n }],\n usage: {\n promptTokens: usage?.inputTokens || 0,\n completionTokens: usage?.outputTokens || 0,\n totalTokens: usage?.totalTokens || 0\n }\n };\n\n if (this.config.debug) {\n console.log('[Vly] Streaming AI completion successful', { \n tokensUsed: responseData.usage.totalTokens \n });\n }\n\n return {\n success: true,\n data: responseData\n };\n } catch (error: any) {\n if (this.config.debug) {\n console.error('[Vly] Streaming AI completion failed', { error: error.message });\n }\n \n return {\n success: false,\n error: error.message || 'Streaming request failed'\n };\n }\n }\n\n async embeddings(\n input: string | string[],\n _options?: RequestOptions & { model?: string }\n ): Promise<ApiResponse<{ embeddings: number[][]; usage: any }>> {\n if (this.config.debug) {\n console.log('[Vly] Creating embeddings', { inputCount: Array.isArray(input) ? input.length : 1 });\n }\n \n // Note: AI SDK doesn't have embeddings support for OpenAI-compatible providers yet\n // This would need to be implemented separately or use a different approach\n return {\n success: false,\n error: 'Embeddings not yet supported with AI SDK OpenAI-compatible provider'\n };\n }\n\n // Helper method to get the provider for direct AI SDK usage\n getProvider() {\n return this.provider;\n }\n}","import type { VlyConfig, RequestOptions, ApiResponse } from './types';\n\nexport class VlyClient {\n protected config: Required<VlyConfig>;\n\n constructor(config: VlyConfig) {\n this.config = {\n deploymentToken: config.deploymentToken,\n debug: config.debug || false\n };\n }\n\n protected async request<T = any>(\n endpoint: string,\n method: 'GET' | 'POST' | 'PUT' | 'DELETE',\n data?: any,\n options?: RequestOptions\n ): Promise<ApiResponse<T>> {\n const url = `https://ai-gateway.vly.ai${endpoint}`;\n const headers: Record<string, string> = {\n 'Authorization': `Bearer ${this.config.deploymentToken}`,\n 'Content-Type': 'application/json',\n 'X-Vly-Version': '0.1.0'\n };\n\n const fetchOptions: RequestInit = {\n method,\n headers,\n body: data ? JSON.stringify(data) : undefined,\n };\n\n // Add timeout using AbortController\n const controller = new AbortController();\n const timeout = options?.timeout || 30000;\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n fetchOptions.signal = controller.signal;\n\n try {\n const response = await fetch(url, fetchOptions);\n clearTimeout(timeoutId);\n \n const responseData = await response.json().catch(() => ({})) as any;\n\n if (response.ok) {\n return {\n success: true,\n data: responseData as T,\n usage: responseData?.usage\n };\n } else {\n const error = responseData?.error || `Request failed with status ${response.status}`;\n \n if (this.config.debug) {\n console.error(`Vly API Error: ${error}`, {\n endpoint,\n status: response.status,\n data: responseData\n });\n }\n\n return {\n success: false,\n error\n };\n }\n } catch (error: any) {\n clearTimeout(timeoutId);\n const errorMessage = error.name === 'AbortError' ? 'Request timeout' : error.message || 'Unknown error occurred';\n \n if (this.config.debug) {\n console.error(`Vly API Request Failed: ${errorMessage}`, {\n endpoint,\n error\n });\n }\n\n if (options?.retries && options.retries > 0) {\n if (this.config.debug) {\n console.log(`Retrying request... (${options.retries} retries left)`);\n }\n \n await new Promise(resolve => setTimeout(resolve, 1000));\n return this.request(endpoint, method, data, { \n ...options, \n retries: options.retries - 1 \n });\n }\n\n return {\n success: false,\n error: errorMessage\n };\n }\n }\n\n protected log(message: string, data?: any) {\n if (this.config.debug) {\n console.log(`[Vly] ${message}`, data || '');\n }\n }\n}","import { VlyClient } from '../client';\nimport type { \n EmailRequest, \n EmailResponse,\n RequestOptions,\n ApiResponse\n} from '../types';\n\nexport class VlyEmail extends VlyClient {\n async send(\n email: EmailRequest, \n options?: RequestOptions\n ): Promise<ApiResponse<EmailResponse>> {\n this.log('Sending email', { \n to: email.to, \n subject: email.subject \n });\n\n const payload = {\n to: Array.isArray(email.to) ? email.to : [email.to],\n from: email.from || 'noreply@vly.io',\n subject: email.subject,\n html: email.html,\n text: email.text,\n attachments: email.attachments,\n replyTo: email.replyTo,\n cc: email.cc ? (Array.isArray(email.cc) ? email.cc : [email.cc]) : undefined,\n bcc: email.bcc ? (Array.isArray(email.bcc) ? email.bcc : [email.bcc]) : undefined\n };\n\n const response = await this.request<EmailResponse>(\n '/v1/email/send',\n 'POST',\n payload,\n options\n );\n\n if (response.success) {\n this.log('Email sent successfully', { \n id: response.data?.id,\n status: response.data?.status \n });\n }\n\n return response;\n }\n\n async sendBatch(\n emails: EmailRequest[],\n options?: RequestOptions\n ): Promise<ApiResponse<EmailResponse[]>> {\n this.log('Sending batch emails', { count: emails.length });\n\n const payload = {\n emails: emails.map(email => ({\n to: Array.isArray(email.to) ? email.to : [email.to],\n from: email.from || 'noreply@vly.io',\n subject: email.subject,\n html: email.html,\n text: email.text,\n attachments: email.attachments,\n replyTo: email.replyTo,\n cc: email.cc ? (Array.isArray(email.cc) ? email.cc : [email.cc]) : undefined,\n bcc: email.bcc ? (Array.isArray(email.bcc) ? email.bcc : [email.bcc]) : undefined\n }))\n };\n\n return this.request<EmailResponse[]>(\n '/v1/email/batch',\n 'POST',\n payload,\n options\n );\n }\n\n async getStatus(\n emailId: string,\n options?: RequestOptions\n ): Promise<ApiResponse<EmailResponse>> {\n this.log('Getting email status', { emailId });\n\n return this.request<EmailResponse>(\n `/v1/email/status/${emailId}`,\n 'GET',\n undefined,\n options\n );\n }\n\n async verifyDomain(\n domain: string,\n options?: RequestOptions\n ): Promise<ApiResponse<{\n domain: string;\n verified: boolean;\n dnsRecords: Array<{\n type: string;\n name: string;\n value: string;\n verified: boolean;\n }>;\n }>> {\n this.log('Verifying domain', { domain });\n\n return this.request(\n '/v1/email/domains/verify',\n 'POST',\n { domain },\n options\n );\n }\n\n async listDomains(\n options?: RequestOptions\n ): Promise<ApiResponse<Array<{\n domain: string;\n verified: boolean;\n createdAt: string;\n verifiedAt?: string;\n }>>> {\n this.log('Listing email domains');\n\n return this.request(\n '/v1/email/domains',\n 'GET',\n undefined,\n options\n );\n }\n}","import { VlyClient } from '../client';\nimport type { \n PaymentIntent,\n PaymentIntentResponse,\n Subscription,\n SubscriptionResponse,\n CustomerPortalSession,\n CustomerPortalResponse,\n RequestOptions,\n ApiResponse\n} from '../types';\n\nexport class VlyPayments extends VlyClient {\n async createPaymentIntent(\n intent: PaymentIntent,\n options?: RequestOptions\n ): Promise<ApiResponse<PaymentIntentResponse>> {\n this.log('Creating payment intent', { \n amount: intent.amount,\n currency: intent.currency \n });\n\n const payload = {\n amount: intent.amount,\n currency: intent.currency || 'usd',\n description: intent.description,\n metadata: intent.metadata,\n customer: intent.customer\n };\n\n const response = await this.request<PaymentIntentResponse>(\n '/payments/intents',\n 'POST',\n payload,\n options\n );\n\n if (response.success) {\n this.log('Payment intent created', { \n id: response.data?.id,\n status: response.data?.status \n });\n }\n\n return response;\n }\n\n async confirmPaymentIntent(\n intentId: string,\n paymentMethodId: string,\n options?: RequestOptions\n ): Promise<ApiResponse<PaymentIntentResponse>> {\n this.log('Confirming payment intent', { intentId });\n\n return this.request<PaymentIntentResponse>(\n `/payments/intents/${intentId}/confirm`,\n 'POST',\n { paymentMethodId },\n options\n );\n }\n\n async getPaymentIntent(\n intentId: string,\n options?: RequestOptions\n ): Promise<ApiResponse<PaymentIntentResponse>> {\n this.log('Getting payment intent', { intentId });\n\n return this.request<PaymentIntentResponse>(\n `/payments/intents/${intentId}`,\n 'GET',\n undefined,\n options\n );\n }\n\n async cancelPaymentIntent(\n intentId: string,\n options?: RequestOptions\n ): Promise<ApiResponse<PaymentIntentResponse>> {\n this.log('Canceling payment intent', { intentId });\n\n return this.request<PaymentIntentResponse>(\n `/payments/intents/${intentId}/cancel`,\n 'POST',\n undefined,\n options\n );\n }\n\n async createSubscription(\n subscription: Subscription,\n options?: RequestOptions\n ): Promise<ApiResponse<SubscriptionResponse>> {\n this.log('Creating subscription', { \n customerId: subscription.customerId,\n priceId: subscription.priceId \n });\n\n const response = await this.request<SubscriptionResponse>(\n '/payments/subscriptions',\n 'POST',\n subscription,\n options\n );\n\n if (response.success) {\n this.log('Subscription created', { \n id: response.data?.id,\n status: response.data?.status \n });\n }\n\n return response;\n }\n\n async updateSubscription(\n subscriptionId: string,\n updates: Partial<Subscription>,\n options?: RequestOptions\n ): Promise<ApiResponse<SubscriptionResponse>> {\n this.log('Updating subscription', { subscriptionId });\n\n return this.request<SubscriptionResponse>(\n `/payments/subscriptions/${subscriptionId}`,\n 'PUT',\n updates,\n options\n );\n }\n\n async cancelSubscription(\n subscriptionId: string,\n immediately?: boolean,\n options?: RequestOptions\n ): Promise<ApiResponse<SubscriptionResponse>> {\n this.log('Canceling subscription', { \n subscriptionId,\n immediately \n });\n\n return this.request<SubscriptionResponse>(\n `/payments/subscriptions/${subscriptionId}/cancel`,\n 'POST',\n { immediately },\n options\n );\n }\n\n async getSubscription(\n subscriptionId: string,\n options?: RequestOptions\n ): Promise<ApiResponse<SubscriptionResponse>> {\n this.log('Getting subscription', { subscriptionId });\n\n return this.request<SubscriptionResponse>(\n `/payments/subscriptions/${subscriptionId}`,\n 'GET',\n undefined,\n options\n );\n }\n\n async listSubscriptions(\n customerId?: string,\n options?: RequestOptions & { limit?: number; offset?: number }\n ): Promise<ApiResponse<{\n subscriptions: SubscriptionResponse[];\n hasMore: boolean;\n total: number;\n }>> {\n this.log('Listing subscriptions', { customerId });\n\n const params = new URLSearchParams();\n if (customerId) params.append('customerId', customerId);\n if (options?.limit) params.append('limit', options.limit.toString());\n if (options?.offset) params.append('offset', options.offset.toString());\n\n const queryString = params.toString();\n const endpoint = `/payments/subscriptions${queryString ? `?${queryString}` : ''}`;\n\n return this.request(endpoint, 'GET', undefined, options);\n }\n\n async createCustomerPortal(\n session: CustomerPortalSession,\n options?: RequestOptions\n ): Promise<ApiResponse<CustomerPortalResponse>> {\n this.log('Creating customer portal session', { \n customerId: session.customerId \n });\n\n const response = await this.request<CustomerPortalResponse>(\n '/payments/portal',\n 'POST',\n session,\n options\n );\n\n if (response.success) {\n this.log('Customer portal session created', { \n id: response.data?.id,\n url: response.data?.url \n });\n }\n\n return response;\n }\n\n async createCheckoutSession(\n session: {\n customerId?: string;\n customerEmail?: string;\n lineItems: Array<{\n priceId: string;\n quantity: number;\n }>;\n mode: 'payment' | 'subscription';\n successUrl: string;\n cancelUrl: string;\n metadata?: Record<string, any>;\n },\n options?: RequestOptions\n ): Promise<ApiResponse<{\n id: string;\n url: string;\n }>> {\n this.log('Creating checkout session', { \n mode: session.mode,\n lineItems: session.lineItems.length \n });\n\n return this.request(\n '/payments/checkout',\n 'POST',\n session,\n options\n );\n }\n\n async createCustomer(\n customer: {\n email: string;\n name?: string;\n metadata?: Record<string, any>;\n },\n options?: RequestOptions\n ): Promise<ApiResponse<{\n id: string;\n email: string;\n name?: string;\n created: number;\n }>> {\n this.log('Creating customer', { email: customer.email });\n\n return this.request(\n '/payments/customers',\n 'POST',\n customer,\n options\n );\n }\n\n async getCustomer(\n customerId: string,\n options?: RequestOptions\n ): Promise<ApiResponse<{\n id: string;\n email: string;\n name?: string;\n created: number;\n metadata?: Record<string, any>;\n }>> {\n this.log('Getting customer', { customerId });\n\n return this.request(\n `/payments/customers/${customerId}`,\n 'GET',\n undefined,\n options\n );\n }\n\n async updateCustomer(\n customerId: string,\n updates: {\n email?: string;\n name?: string;\n metadata?: Record<string, any>;\n },\n options?: RequestOptions\n ): Promise<ApiResponse<{\n id: string;\n email: string;\n name?: string;\n created: number;\n metadata?: Record<string, any>;\n }>> {\n this.log('Updating customer', { customerId });\n\n return this.request(\n `/payments/customers/${customerId}`,\n 'PUT',\n updates,\n options\n );\n }\n\n async listPaymentMethods(\n customerId: string,\n options?: RequestOptions\n ): Promise<ApiResponse<Array<{\n id: string;\n type: string;\n card?: {\n brand: string;\n last4: string;\n expMonth: number;\n expYear: number;\n };\n created: number;\n }>>> {\n this.log('Listing payment methods', { customerId });\n\n return this.request(\n `/payments/customers/${customerId}/payment-methods`,\n 'GET',\n undefined,\n options\n );\n }\n\n async attachPaymentMethod(\n paymentMethodId: string,\n customerId: string,\n options?: RequestOptions\n ): Promise<ApiResponse<{\n id: string;\n customerId: string;\n attached: boolean;\n }>> {\n this.log('Attaching payment method', { \n paymentMethodId,\n customerId \n });\n\n return this.request(\n `/payments/payment-methods/${paymentMethodId}/attach`,\n 'POST',\n { customerId },\n options\n );\n }\n\n async detachPaymentMethod(\n paymentMethodId: string,\n options?: RequestOptions\n ): Promise<ApiResponse<{\n id: string;\n detached: boolean;\n }>> {\n this.log('Detaching payment method', { paymentMethodId });\n\n return this.request(\n `/payments/payment-methods/${paymentMethodId}/detach`,\n 'POST',\n undefined,\n options\n );\n }\n}","import type { VlyConfig } from './types';\nimport { VlyAI } from './ai';\nimport { VlyEmail } from './email';\nimport { VlyPayments } from './payments';\n\nexport * from './types';\nexport type { AIModel } from './types';\n\n// Re-export AI SDK types for convenience\nexport type { CoreMessage } from 'ai';\n\nexport class VlyIntegrations {\n public ai: VlyAI;\n public email: VlyEmail;\n public payments: VlyPayments;\n\n constructor(config: VlyConfig) {\n if (!config.deploymentToken) {\n throw new Error('Deployment token is required');\n }\n\n this.ai = new VlyAI(config);\n this.email = new VlyEmail(config);\n this.payments = new VlyPayments(config);\n }\n}\n\nexport function createVlyIntegrations(config: VlyConfig): VlyIntegrations {\n return new VlyIntegrations(config);\n}\n\nexport { VlyAI, VlyEmail, VlyPayments };"]}
1
+ {"version":3,"sources":["../src/ai/index.ts","../src/client.ts","../src/email/index.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import { createOpenAICompatible } from '@ai-sdk/openai-compatible';\nimport { generateText, streamText, type CoreMessage } from 'ai';\nimport type { \n AICompletionRequest, \n AICompletionResponse,\n RequestOptions,\n ApiResponse,\n VlyConfig\n} from '../types';\n\nexport class VlyAI {\n private provider: ReturnType<typeof createOpenAICompatible>;\n private config: VlyConfig;\n\n constructor(config: VlyConfig) {\n this.config = config;\n this.provider = createOpenAICompatible({\n name: 'vly-gateway',\n baseURL: 'https://integrations.vly.ai/v1/llm',\n headers: {\n 'Authorization': `Bearer ${config.deploymentToken}`,\n },\n });\n }\n\n private getModel(modelName?: string) {\n return this.provider(modelName || 'gpt-5');\n }\n\n private mapMessages(messages: AICompletionRequest['messages']): CoreMessage[] {\n return messages.map(msg => ({\n role: msg.role,\n content: msg.content,\n }));\n }\n\n async completion(\n request: AICompletionRequest, \n _options?: RequestOptions\n ): Promise<ApiResponse<AICompletionResponse>> {\n if (this.config.debug) {\n console.log('[Vly] Creating AI completion', { model: request.model });\n }\n\n try {\n const model = this.getModel(request.model);\n const messages = this.mapMessages(request.messages);\n\n const result = await generateText({\n model: model as any,\n messages,\n temperature: request.temperature,\n maxOutputTokens: request.maxTokens,\n });\n\n const responseData: AICompletionResponse = {\n id: `vly-${Date.now()}`,\n choices: [{\n message: {\n role: 'assistant',\n content: result.text\n },\n finishReason: result.finishReason || 'stop'\n }],\n usage: {\n promptTokens: result.usage?.inputTokens || 0,\n completionTokens: result.usage?.outputTokens || 0,\n totalTokens: result.usage?.totalTokens || 0\n }\n };\n\n if (this.config.debug) {\n console.log('[Vly] AI completion successful', { \n tokensUsed: responseData.usage.totalTokens \n });\n }\n\n return {\n success: true,\n data: responseData\n };\n } catch (error: any) {\n if (this.config.debug) {\n console.error('[Vly] AI completion failed', { error: error.message });\n }\n \n return {\n success: false,\n error: error.message || 'Request failed'\n };\n }\n }\n\n async streamCompletion(\n request: AICompletionRequest,\n onChunk: (chunk: string) => void,\n _options?: RequestOptions\n ): Promise<ApiResponse<AICompletionResponse>> {\n if (this.config.debug) {\n console.log('[Vly] Creating streaming AI completion', { model: request.model });\n }\n\n try {\n const model = this.getModel(request.model);\n const messages = this.mapMessages(request.messages);\n\n const result = await streamText({\n model: model as any,\n messages,\n temperature: request.temperature,\n maxOutputTokens: request.maxTokens,\n });\n\n let fullResponse = '';\n\n for await (const delta of result.textStream) {\n fullResponse += delta;\n onChunk(delta);\n }\n\n // Wait for the stream to complete and get usage info\n const usage = await result.usage;\n\n const responseData: AICompletionResponse = {\n id: `vly-stream-${Date.now()}`,\n choices: [{\n message: {\n role: 'assistant',\n content: fullResponse\n },\n finishReason: 'stop'\n }],\n usage: {\n promptTokens: usage?.inputTokens || 0,\n completionTokens: usage?.outputTokens || 0,\n totalTokens: usage?.totalTokens || 0\n }\n };\n\n if (this.config.debug) {\n console.log('[Vly] Streaming AI completion successful', { \n tokensUsed: responseData.usage.totalTokens \n });\n }\n\n return {\n success: true,\n data: responseData\n };\n } catch (error: any) {\n if (this.config.debug) {\n console.error('[Vly] Streaming AI completion failed', { error: error.message });\n }\n \n return {\n success: false,\n error: error.message || 'Streaming request failed'\n };\n }\n }\n\n async embeddings(\n input: string | string[],\n _options?: RequestOptions & { model?: string }\n ): Promise<ApiResponse<{ embeddings: number[][]; usage: any }>> {\n if (this.config.debug) {\n console.log('[Vly] Creating embeddings', { inputCount: Array.isArray(input) ? input.length : 1 });\n }\n \n // Note: AI SDK doesn't have embeddings support for OpenAI-compatible providers yet\n // This would need to be implemented separately or use a different approach\n return {\n success: false,\n error: 'Embeddings not yet supported with AI SDK OpenAI-compatible provider'\n };\n }\n\n // Helper method to get the provider for direct AI SDK usage\n getProvider() {\n return this.provider;\n }\n}","import type { VlyConfig, RequestOptions, ApiResponse } from './types';\n\nexport class VlyClient {\n protected config: Required<VlyConfig>;\n\n constructor(config: VlyConfig) {\n this.config = {\n deploymentToken: config.deploymentToken,\n debug: config.debug || false\n };\n }\n\n protected async request<T = any>(\n endpoint: string,\n method: 'GET' | 'POST' | 'PUT' | 'DELETE',\n data?: any,\n options?: RequestOptions\n ): Promise<ApiResponse<T>> {\n const url = `https://integrations.vly.ai${endpoint}`;\n const headers: Record<string, string> = {\n 'Authorization': `Bearer ${this.config.deploymentToken}`,\n 'Content-Type': 'application/json',\n 'X-Vly-Version': '0.1.0'\n };\n\n const fetchOptions: RequestInit = {\n method,\n headers,\n body: data ? JSON.stringify(data) : undefined,\n };\n\n // Add timeout using AbortController\n const controller = new AbortController();\n const timeout = options?.timeout || 30000;\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n fetchOptions.signal = controller.signal;\n\n try {\n const response = await fetch(url, fetchOptions);\n clearTimeout(timeoutId);\n \n const responseData = await response.json().catch(() => ({})) as any;\n\n if (response.ok) {\n return {\n success: true,\n data: responseData as T,\n usage: responseData?.usage\n };\n } else {\n const error = responseData?.error || `Request failed with status ${response.status}`;\n \n if (this.config.debug) {\n console.error(`Vly API Error: ${error}`, {\n endpoint,\n status: response.status,\n data: responseData\n });\n }\n\n return {\n success: false,\n error\n };\n }\n } catch (error: any) {\n clearTimeout(timeoutId);\n const errorMessage = error.name === 'AbortError' ? 'Request timeout' : error.message || 'Unknown error occurred';\n \n if (this.config.debug) {\n console.error(`Vly API Request Failed: ${errorMessage}`, {\n endpoint,\n error\n });\n }\n\n if (options?.retries && options.retries > 0) {\n if (this.config.debug) {\n console.log(`Retrying request... (${options.retries} retries left)`);\n }\n \n await new Promise(resolve => setTimeout(resolve, 1000));\n return this.request(endpoint, method, data, { \n ...options, \n retries: options.retries - 1 \n });\n }\n\n return {\n success: false,\n error: errorMessage\n };\n }\n }\n\n protected log(message: string, data?: any) {\n if (this.config.debug) {\n console.log(`[Vly] ${message}`, data || '');\n }\n }\n}","import { VlyClient } from '../client';\nimport type { \n EmailRequest, \n EmailResponse,\n RequestOptions,\n ApiResponse\n} from '../types';\n\nexport class VlyEmail extends VlyClient {\n async send(\n email: EmailRequest, \n options?: RequestOptions\n ): Promise<ApiResponse<EmailResponse>> {\n this.log('Sending email', { \n to: email.to, \n subject: email.subject \n });\n\n const payload = {\n to: Array.isArray(email.to) ? email.to : [email.to],\n from: email.from || 'noreply@vly.io',\n subject: email.subject,\n html: email.html,\n text: email.text,\n attachments: email.attachments,\n replyTo: email.replyTo,\n cc: email.cc ? (Array.isArray(email.cc) ? email.cc : [email.cc]) : undefined,\n bcc: email.bcc ? (Array.isArray(email.bcc) ? email.bcc : [email.bcc]) : undefined\n };\n\n const response = await this.request<EmailResponse>(\n '/v1/email/send',\n 'POST',\n payload,\n options\n );\n\n if (response.success) {\n this.log('Email sent successfully', { \n id: response.data?.id,\n status: response.data?.status \n });\n }\n\n return response;\n }\n\n async sendBatch(\n emails: EmailRequest[],\n options?: RequestOptions\n ): Promise<ApiResponse<EmailResponse[]>> {\n this.log('Sending batch emails', { count: emails.length });\n\n const payload = {\n emails: emails.map(email => ({\n to: Array.isArray(email.to) ? email.to : [email.to],\n from: email.from || 'noreply@vly.io',\n subject: email.subject,\n html: email.html,\n text: email.text,\n attachments: email.attachments,\n replyTo: email.replyTo,\n cc: email.cc ? (Array.isArray(email.cc) ? email.cc : [email.cc]) : undefined,\n bcc: email.bcc ? (Array.isArray(email.bcc) ? email.bcc : [email.bcc]) : undefined\n }))\n };\n\n return this.request<EmailResponse[]>(\n '/v1/email/batch',\n 'POST',\n payload,\n options\n );\n }\n\n async getStatus(\n emailId: string,\n options?: RequestOptions\n ): Promise<ApiResponse<EmailResponse>> {\n this.log('Getting email status', { emailId });\n\n return this.request<EmailResponse>(\n `/v1/email/status/${emailId}`,\n 'GET',\n undefined,\n options\n );\n }\n\n async verifyDomain(\n domain: string,\n options?: RequestOptions\n ): Promise<ApiResponse<{\n domain: string;\n verified: boolean;\n dnsRecords: Array<{\n type: string;\n name: string;\n value: string;\n verified: boolean;\n }>;\n }>> {\n this.log('Verifying domain', { domain });\n\n return this.request(\n '/v1/email/domains/verify',\n 'POST',\n { domain },\n options\n );\n }\n\n async listDomains(\n options?: RequestOptions\n ): Promise<ApiResponse<Array<{\n domain: string;\n verified: boolean;\n createdAt: string;\n verifiedAt?: string;\n }>>> {\n this.log('Listing email domains');\n\n return this.request(\n '/v1/email/domains',\n 'GET',\n undefined,\n options\n );\n }\n}","import type { VlyConfig } from './types';\nimport { VlyAI } from './ai';\nimport { VlyEmail } from './email';\n\nexport * from './types';\nexport type { AIModel } from './types';\n\n// Re-export AI SDK types for convenience\nexport type { CoreMessage } from 'ai';\n\nexport class VlyIntegrations {\n public ai: VlyAI;\n public email: VlyEmail;\n\n constructor(config: VlyConfig) {\n if (!config.deploymentToken) {\n throw new Error('Deployment token is required');\n }\n\n this.ai = new VlyAI(config);\n this.email = new VlyEmail(config);\n }\n}\n\nexport function createVlyIntegrations(config: VlyConfig): VlyIntegrations {\n return new VlyIntegrations(config);\n}\n\nexport { VlyAI, VlyEmail };"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vly-ai/integrations",
3
- "version": "0.5.2",
4
- "description": "First-order integrations for AI, email, and payments with automatic usage billing",
3
+ "version": "0.6.1",
4
+ "description": "Access AI models and email services through vly.ai without managing multiple API keys or accounts",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
7
7
  "types": "./dist/index.d.ts",
@@ -15,22 +15,11 @@
15
15
  "files": [
16
16
  "dist"
17
17
  ],
18
- "scripts": {
19
- "build": "tsup",
20
- "dev": "tsup --watch",
21
- "test": "vitest",
22
- "test:watch": "vitest --watch",
23
- "test:coverage": "vitest --coverage",
24
- "prepublishOnly": "npm run build",
25
- "type-check": "tsc --noEmit"
26
- },
27
18
  "keywords": [
28
19
  "vly",
29
20
  "integrations",
30
21
  "ai",
31
22
  "email",
32
- "payments",
33
- "stripe",
34
23
  "autumn"
35
24
  ],
36
25
  "author": "",
@@ -49,5 +38,13 @@
49
38
  },
50
39
  "engines": {
51
40
  "node": ">=18"
41
+ },
42
+ "scripts": {
43
+ "build": "tsup",
44
+ "dev": "tsup --watch",
45
+ "test": "vitest",
46
+ "test:watch": "vitest --watch",
47
+ "test:coverage": "vitest --coverage",
48
+ "type-check": "tsc --noEmit"
52
49
  }
53
- }
50
+ }