@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 +22 -62
- package/dist/index.d.mts +1 -132
- package/dist/index.d.ts +1 -132
- package/dist/index.js +2 -208
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -208
- package/dist/index.mjs.map +1 -1
- package/package.json +11 -14
package/README.md
CHANGED
|
@@ -1,26 +1,36 @@
|
|
|
1
|
-
# vly-integrations
|
|
1
|
+
# @vly-ai/integrations
|
|
2
2
|
|
|
3
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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://
|
|
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
|
|
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
|
|
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://
|
|
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://
|
|
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://
|
|
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://
|
|
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,
|
|
322
|
+
export { VlyAI, VlyEmail, VlyIntegrations, createVlyIntegrations };
|
|
528
323
|
//# sourceMappingURL=index.mjs.map
|
|
529
324
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.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":[],"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.
|
|
4
|
-
"description": "
|
|
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
|
+
}
|