@sly_ai/sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +346 -0
- package/dist/a2a.d.mts +108 -0
- package/dist/a2a.d.ts +108 -0
- package/dist/a2a.js +173 -0
- package/dist/a2a.js.map +1 -0
- package/dist/a2a.mjs +171 -0
- package/dist/a2a.mjs.map +1 -0
- package/dist/acp.d.mts +201 -0
- package/dist/acp.d.ts +201 -0
- package/dist/acp.js +143 -0
- package/dist/acp.js.map +1 -0
- package/dist/acp.mjs +141 -0
- package/dist/acp.mjs.map +1 -0
- package/dist/ap2.d.mts +188 -0
- package/dist/ap2.d.ts +188 -0
- package/dist/ap2.js +135 -0
- package/dist/ap2.js.map +1 -0
- package/dist/ap2.mjs +133 -0
- package/dist/ap2.mjs.map +1 -0
- package/dist/cards.d.mts +750 -0
- package/dist/cards.d.ts +750 -0
- package/dist/cards.js +373 -0
- package/dist/cards.js.map +1 -0
- package/dist/cards.mjs +369 -0
- package/dist/cards.mjs.map +1 -0
- package/dist/client-Cwe2CLU7.d.mts +41 -0
- package/dist/client-CyJe3uWO.d.ts +41 -0
- package/dist/index.d.mts +662 -0
- package/dist/index.d.ts +662 -0
- package/dist/index.js +2709 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2700 -0
- package/dist/index.mjs.map +1 -0
- package/dist/langchain.d.mts +11 -0
- package/dist/langchain.d.ts +11 -0
- package/dist/langchain.js +25 -0
- package/dist/langchain.js.map +1 -0
- package/dist/langchain.mjs +23 -0
- package/dist/langchain.mjs.map +1 -0
- package/dist/types-df1EICn_.d.mts +165 -0
- package/dist/types-df1EICn_.d.ts +165 -0
- package/dist/ucp.d.mts +844 -0
- package/dist/ucp.d.ts +844 -0
- package/dist/ucp.js +616 -0
- package/dist/ucp.js.map +1 -0
- package/dist/ucp.mjs +614 -0
- package/dist/ucp.mjs.map +1 -0
- package/dist/vercel.d.mts +178 -0
- package/dist/vercel.d.ts +178 -0
- package/dist/vercel.js +143 -0
- package/dist/vercel.js.map +1 -0
- package/dist/vercel.mjs +138 -0
- package/dist/vercel.mjs.map +1 -0
- package/dist/x402.d.mts +209 -0
- package/dist/x402.d.ts +209 -0
- package/dist/x402.js +476 -0
- package/dist/x402.js.map +1 -0
- package/dist/x402.mjs +471 -0
- package/dist/x402.mjs.map +1 -0
- package/package.json +118 -0
package/dist/ucp.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/protocols/ucp/client.ts"],"names":[],"mappings":"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","file":"ucp.mjs","sourcesContent":["/**\n * UCP Client - Universal Commerce Protocol\n *\n * Wraps PayOS UCP API endpoints for settlement and merchant discovery.\n *\n * @see Story 43.9: UCP Client Module\n * @see https://ucp.dev/specification/overview/\n */\n\nimport type { PayOSClient } from '../../client';\nimport type {\n UCPProfile,\n UCPCorridor,\n UCPQuoteRequest,\n UCPQuote,\n UCPTokenRequest,\n UCPToken,\n UCPSettleRequest,\n UCPSettlement,\n ListSettlementsOptions,\n ListSettlementsResponse,\n UCPHandlerInfo,\n UCPCheckoutRequest,\n UCPCheckout,\n UCPCompleteCheckoutRequest,\n UCPOrder,\n // PayOS-hosted types (Phases 2-4)\n PayOSCheckout,\n CreatePayOSCheckoutRequest,\n UpdatePayOSCheckoutRequest,\n PayOSOrder,\n PayOSOrderStatus,\n ListPayOSOrdersOptions,\n ListPayOSOrdersResponse,\n PayOSExpectation,\n PayOSFulfillmentEvent,\n PayOSAdjustment,\n RegisterOAuthClientRequest,\n RegisterOAuthClientResponse,\n UCPLinkedAccount,\n UCPTokenResponse,\n UCPAuthorizationInfo,\n UCPConsentRequest,\n UCPConsentResponse,\n UCPScopeInfo,\n} from './types';\n\n// Profile cache for discovered merchants\nconst profileCache = new Map<string, { profile: UCPProfile; fetchedAt: number }>();\nconst PROFILE_CACHE_TTL_MS = 60 * 60 * 1000; // 1 hour\n\nexport class UCPClient {\n private client: PayOSClient;\n\n constructor(client: PayOSClient) {\n this.client = client;\n }\n\n // ===========================================================================\n // Discovery\n // ===========================================================================\n\n /**\n * Discover a UCP merchant's capabilities\n *\n * Fetches and caches the merchant's UCP profile from /.well-known/ucp\n *\n * @example\n * ```typescript\n * const merchant = await payos.ucp.discover('https://shop.example.com');\n * console.log(merchant.ucp.version);\n * console.log(merchant.payment?.handlers);\n * ```\n */\n public async discover(merchantUrl: string): Promise<UCPProfile> {\n // Normalize URL\n const baseUrl = merchantUrl.replace(/\\/$/, '');\n const profileUrl = `${baseUrl}/.well-known/ucp`;\n\n // Check cache\n const cached = profileCache.get(profileUrl);\n if (cached && Date.now() - cached.fetchedAt < PROFILE_CACHE_TTL_MS) {\n return cached.profile;\n }\n\n // Fetch profile\n const response = await fetch(profileUrl, {\n headers: {\n Accept: 'application/json',\n 'User-Agent': 'PayOS-SDK/1.0',\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to discover UCP profile: ${response.status} ${response.statusText}`);\n }\n\n const profile = (await response.json()) as UCPProfile;\n\n // Validate basic structure\n if (!profile.ucp?.version) {\n throw new Error('Invalid UCP profile: missing ucp.version');\n }\n\n // Cache the profile\n profileCache.set(profileUrl, {\n profile,\n fetchedAt: Date.now(),\n });\n\n return profile;\n }\n\n /**\n * Get PayOS's own UCP profile\n *\n * @example\n * ```typescript\n * const profile = await payos.ucp.getProfile();\n * console.log(profile.payment?.handlers);\n * ```\n */\n public async getProfile(): Promise<UCPProfile> {\n return this.client.request<UCPProfile>('/.well-known/ucp');\n }\n\n /**\n * Get available settlement corridors\n *\n * @example\n * ```typescript\n * const corridors = await payos.ucp.getCorridors();\n * console.log(corridors.find(c => c.rail === 'pix'));\n * ```\n */\n public async getCorridors(): Promise<UCPCorridor[]> {\n const response = await this.client.request<{ corridors: UCPCorridor[] }>(\n '/v1/ucp/corridors'\n );\n return response.corridors;\n }\n\n /**\n * Get UCP handler info\n *\n * @example\n * ```typescript\n * const info = await payos.ucp.getHandlerInfo();\n * console.log(info.handler.name); // com.payos.latam_settlement\n * ```\n */\n public async getHandlerInfo(): Promise<UCPHandlerInfo> {\n return this.client.request<UCPHandlerInfo>('/v1/ucp/info');\n }\n\n // ===========================================================================\n // Quotes\n // ===========================================================================\n\n /**\n * Get an FX quote for a settlement corridor\n *\n * @example\n * ```typescript\n * const quote = await payos.ucp.getQuote({\n * corridor: 'pix',\n * amount: 100,\n * currency: 'USD',\n * });\n * console.log(`${quote.from_amount} USD = ${quote.to_amount} BRL`);\n * ```\n */\n public async getQuote(request: UCPQuoteRequest): Promise<UCPQuote> {\n return this.client.request<UCPQuote>('/v1/ucp/quote', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n // ===========================================================================\n // Token Acquisition (Payment Handler flow)\n // ===========================================================================\n\n /**\n * Acquire a settlement token for completing a UCP checkout\n *\n * Tokens are valid for 15 minutes and lock in the FX rate.\n *\n * @example\n * ```typescript\n * const token = await payos.ucp.acquireToken({\n * corridor: 'pix',\n * amount: 100,\n * currency: 'USD',\n * recipient: {\n * type: 'pix',\n * pix_key: '12345678901',\n * pix_key_type: 'cpf',\n * name: 'Maria Silva',\n * },\n * });\n *\n * console.log(token.token); // ucp_tok_...\n * console.log(token.quote.to_amount); // 595.00 BRL\n * ```\n */\n public async acquireToken(request: UCPTokenRequest): Promise<UCPToken> {\n return this.client.request<UCPToken>('/v1/ucp/tokens', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n // ===========================================================================\n // Settlement Execution\n // ===========================================================================\n\n /**\n * Complete settlement using a previously acquired token\n *\n * @example\n * ```typescript\n * const settlement = await payos.ucp.settle({\n * token: 'ucp_tok_...',\n * idempotency_key: 'checkout_12345',\n * });\n *\n * console.log(settlement.status); // pending\n * console.log(settlement.id); // Use this to track status\n * ```\n */\n public async settle(request: UCPSettleRequest): Promise<UCPSettlement> {\n return this.client.request<UCPSettlement>('/v1/ucp/settle', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n /**\n * Get settlement status by ID\n *\n * @example\n * ```typescript\n * const settlement = await payos.ucp.getSettlement('uuid');\n * if (settlement.status === 'completed') {\n * console.log(`Completed at ${settlement.completed_at}`);\n * }\n * ```\n */\n public async getSettlement(settlementId: string): Promise<UCPSettlement> {\n return this.client.request<UCPSettlement>(`/v1/ucp/settlements/${settlementId}`);\n }\n\n /**\n * List settlements with optional filtering\n *\n * @example\n * ```typescript\n * const { data, pagination } = await payos.ucp.listSettlements({\n * status: 'completed',\n * corridor: 'pix',\n * limit: 50,\n * });\n * ```\n */\n public async listSettlements(\n options: ListSettlementsOptions = {}\n ): Promise<ListSettlementsResponse> {\n const params = new URLSearchParams();\n if (options.status) params.append('status', options.status);\n if (options.corridor) params.append('corridor', options.corridor);\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 path = queryString ? `/v1/ucp/settlements?${queryString}` : '/v1/ucp/settlements';\n\n return this.client.request<ListSettlementsResponse>(path);\n }\n\n // ===========================================================================\n // Checkout (Consuming UCP Merchants)\n // ===========================================================================\n\n /**\n * Create a checkout session with a UCP merchant\n *\n * @example\n * ```typescript\n * const checkout = await payos.ucp.createCheckout('https://shop.example.com', {\n * line_items: [\n * { product_id: 'prod_123', quantity: 2 },\n * ],\n * buyer: { email: 'buyer@example.com' },\n * });\n *\n * console.log(checkout.totals.total);\n * ```\n */\n public async createCheckout(\n merchantUrl: string,\n request: UCPCheckoutRequest\n ): Promise<UCPCheckout> {\n // Discover merchant to get checkout endpoint\n const profile = await this.discover(merchantUrl);\n\n if (!profile.checkout?.endpoint) {\n throw new Error('Merchant does not support UCP checkout');\n }\n\n const response = await fetch(profile.checkout.endpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'User-Agent': 'PayOS-SDK/1.0',\n },\n body: JSON.stringify(request),\n });\n\n if (!response.ok) {\n const error = await response.json().catch(() => ({}));\n throw new Error(`Failed to create checkout: ${response.status} - ${JSON.stringify(error)}`);\n }\n\n return (await response.json()) as UCPCheckout;\n }\n\n /**\n * Complete a checkout with PayOS LATAM settlement\n *\n * This is a convenience method that:\n * 1. Acquires a settlement token\n * 2. Completes the checkout with the merchant\n *\n * @example\n * ```typescript\n * const order = await payos.ucp.completeCheckout(\n * 'https://shop.example.com',\n * checkout.id,\n * {\n * corridor: 'pix',\n * recipient: {\n * type: 'pix',\n * pix_key: '12345678901',\n * pix_key_type: 'cpf',\n * name: 'Maria Silva',\n * },\n * }\n * );\n *\n * console.log(order.id);\n * console.log(order.payment.settlement_id);\n * ```\n */\n public async completeCheckout(\n merchantUrl: string,\n checkoutId: string,\n settlement: {\n corridor: 'pix' | 'spei';\n recipient: UCPTokenRequest['recipient'];\n }\n ): Promise<UCPOrder> {\n // Get checkout details to know the amount\n const profile = await this.discover(merchantUrl);\n\n if (!profile.checkout?.endpoint) {\n throw new Error('Merchant does not support UCP checkout');\n }\n\n // Fetch checkout to get amount\n const checkoutResponse = await fetch(`${profile.checkout.endpoint}/${checkoutId}`, {\n headers: {\n 'User-Agent': 'PayOS-SDK/1.0',\n },\n });\n\n if (!checkoutResponse.ok) {\n throw new Error(`Failed to fetch checkout: ${checkoutResponse.status}`);\n }\n\n const checkout = (await checkoutResponse.json()) as UCPCheckout;\n\n // Acquire settlement token\n const token = await this.acquireToken({\n corridor: settlement.corridor,\n amount: checkout.totals.total,\n currency: checkout.totals.currency as 'USD' | 'USDC',\n recipient: settlement.recipient,\n });\n\n // Complete checkout with merchant\n const completeRequest: UCPCompleteCheckoutRequest = {\n payment_handler: 'payos_latam',\n payment_data: {\n token: token.token,\n },\n };\n\n const completeResponse = await fetch(`${profile.checkout.endpoint}/${checkoutId}/complete`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'User-Agent': 'PayOS-SDK/1.0',\n },\n body: JSON.stringify(completeRequest),\n });\n\n if (!completeResponse.ok) {\n const error = await completeResponse.json().catch(() => ({}));\n throw new Error(`Failed to complete checkout: ${completeResponse.status} - ${JSON.stringify(error)}`);\n }\n\n return (await completeResponse.json()) as UCPOrder;\n }\n\n // ===========================================================================\n // Utilities\n // ===========================================================================\n\n /**\n * Clear the profile cache (useful for testing)\n */\n public clearCache(): void {\n profileCache.clear();\n }\n\n /**\n * Check if PayOS supports a specific corridor\n *\n * @example\n * ```typescript\n * if (await payos.ucp.supportsCorridors('USD', 'BRL', 'pix')) {\n * // Can settle via Pix\n * }\n * ```\n */\n public async supportsCorridor(\n sourceCurrency: string,\n destinationCurrency: string,\n rail: string\n ): Promise<boolean> {\n const corridors = await this.getCorridors();\n return corridors.some(\n (c) =>\n c.source_currency === sourceCurrency &&\n c.destination_currency === destinationCurrency &&\n c.rail === rail\n );\n }\n\n /**\n * Create Pix recipient helper\n *\n * @example\n * ```typescript\n * const recipient = payos.ucp.createPixRecipient({\n * pix_key: '12345678901',\n * pix_key_type: 'cpf',\n * name: 'Maria Silva',\n * });\n * ```\n */\n public createPixRecipient(params: {\n pix_key: string;\n pix_key_type: 'cpf' | 'cnpj' | 'email' | 'phone' | 'evp';\n name: string;\n tax_id?: string;\n }): UCPTokenRequest['recipient'] {\n return {\n type: 'pix',\n ...params,\n };\n }\n\n /**\n * Create SPEI recipient helper\n *\n * @example\n * ```typescript\n * const recipient = payos.ucp.createSpeiRecipient({\n * clabe: '012345678901234567',\n * name: 'Juan Garcia',\n * });\n * ```\n */\n public createSpeiRecipient(params: {\n clabe: string;\n name: string;\n rfc?: string;\n }): UCPTokenRequest['recipient'] {\n return {\n type: 'spei',\n ...params,\n };\n }\n\n // ===========================================================================\n // PayOS-Hosted Checkout Sessions (Phase 2)\n // ===========================================================================\n\n /**\n * Create a PayOS-hosted checkout session\n *\n * @example\n * ```typescript\n * const checkout = await payos.ucp.checkouts.create({\n * currency: 'USD',\n * line_items: [\n * { id: 'item_1', name: 'Product', quantity: 1, unit_price: 1000, total_price: 1000, currency: 'USD' }\n * ],\n * buyer: { email: 'buyer@example.com' },\n * });\n * ```\n */\n public get checkouts() {\n return {\n create: async (request: CreatePayOSCheckoutRequest): Promise<PayOSCheckout> => {\n return this.client.request<PayOSCheckout>('/v1/ucp/checkouts', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n },\n\n get: async (checkoutId: string): Promise<PayOSCheckout> => {\n return this.client.request<PayOSCheckout>(`/v1/ucp/checkouts/${checkoutId}`);\n },\n\n update: async (checkoutId: string, request: UpdatePayOSCheckoutRequest): Promise<PayOSCheckout> => {\n return this.client.request<PayOSCheckout>(`/v1/ucp/checkouts/${checkoutId}`, {\n method: 'PUT',\n body: JSON.stringify(request),\n });\n },\n\n complete: async (checkoutId: string): Promise<PayOSCheckout> => {\n return this.client.request<PayOSCheckout>(`/v1/ucp/checkouts/${checkoutId}/complete`, {\n method: 'POST',\n });\n },\n\n cancel: async (checkoutId: string): Promise<PayOSCheckout> => {\n return this.client.request<PayOSCheckout>(`/v1/ucp/checkouts/${checkoutId}/cancel`, {\n method: 'POST',\n });\n },\n\n addPaymentInstrument: async (\n checkoutId: string,\n instrument: { id: string; handler: string; type: string; last4?: string; brand?: string }\n ): Promise<PayOSCheckout> => {\n return this.client.request<PayOSCheckout>(`/v1/ucp/checkouts/${checkoutId}/instruments`, {\n method: 'POST',\n body: JSON.stringify(instrument),\n });\n },\n };\n }\n\n // ===========================================================================\n // PayOS Orders (Phase 3)\n // ===========================================================================\n\n /**\n * Manage PayOS orders\n *\n * @example\n * ```typescript\n * const order = await payos.ucp.orders.get('ord_123');\n * const orders = await payos.ucp.orders.list({ status: 'processing' });\n * ```\n */\n public get orders() {\n return {\n get: async (orderId: string): Promise<PayOSOrder> => {\n return this.client.request<PayOSOrder>(`/v1/ucp/orders/${orderId}`);\n },\n\n list: async (options: ListPayOSOrdersOptions = {}): Promise<ListPayOSOrdersResponse> => {\n const params = new URLSearchParams();\n if (options.status) params.append('status', options.status);\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 path = queryString ? `/v1/ucp/orders?${queryString}` : '/v1/ucp/orders';\n\n return this.client.request<ListPayOSOrdersResponse>(path);\n },\n\n updateStatus: async (orderId: string, status: PayOSOrderStatus): Promise<PayOSOrder> => {\n return this.client.request<PayOSOrder>(`/v1/ucp/orders/${orderId}/status`, {\n method: 'PUT',\n body: JSON.stringify({ status }),\n });\n },\n\n cancel: async (orderId: string, reason?: string): Promise<PayOSOrder> => {\n return this.client.request<PayOSOrder>(`/v1/ucp/orders/${orderId}/cancel`, {\n method: 'POST',\n body: JSON.stringify({ reason }),\n });\n },\n\n addExpectation: async (\n orderId: string,\n expectation: Omit<PayOSExpectation, 'id'>\n ): Promise<PayOSOrder> => {\n return this.client.request<PayOSOrder>(`/v1/ucp/orders/${orderId}/expectations`, {\n method: 'POST',\n body: JSON.stringify(expectation),\n });\n },\n\n updateExpectation: async (\n orderId: string,\n expectationId: string,\n updates: Partial<Omit<PayOSExpectation, 'id'>>\n ): Promise<PayOSOrder> => {\n return this.client.request<PayOSOrder>(\n `/v1/ucp/orders/${orderId}/expectations/${expectationId}`,\n {\n method: 'PUT',\n body: JSON.stringify(updates),\n }\n );\n },\n\n addEvent: async (\n orderId: string,\n event: Omit<PayOSFulfillmentEvent, 'id' | 'timestamp'>\n ): Promise<PayOSOrder> => {\n return this.client.request<PayOSOrder>(`/v1/ucp/orders/${orderId}/events`, {\n method: 'POST',\n body: JSON.stringify(event),\n });\n },\n\n getEvents: async (orderId: string): Promise<{ data: PayOSFulfillmentEvent[] }> => {\n return this.client.request<{ data: PayOSFulfillmentEvent[] }>(\n `/v1/ucp/orders/${orderId}/events`\n );\n },\n\n addAdjustment: async (\n orderId: string,\n adjustment: Omit<PayOSAdjustment, 'id' | 'created_at'>\n ): Promise<PayOSOrder> => {\n return this.client.request<PayOSOrder>(`/v1/ucp/orders/${orderId}/adjustments`, {\n method: 'POST',\n body: JSON.stringify(adjustment),\n });\n },\n };\n }\n\n // ===========================================================================\n // Identity Linking (Phase 4)\n // ===========================================================================\n\n /**\n * OAuth 2.0 identity linking for AI agents/platforms\n *\n * @example\n * ```typescript\n * // Register an OAuth client\n * const { client, client_secret } = await payos.ucp.identity.registerClient({\n * name: 'My AI Agent',\n * redirect_uris: ['https://myagent.com/callback'],\n * });\n *\n * // List linked accounts\n * const accounts = await payos.ucp.identity.listLinkedAccounts({ buyer_id: 'buyer_123' });\n * ```\n */\n public get identity() {\n return {\n /**\n * Register an OAuth client (platform/agent)\n */\n registerClient: async (request: RegisterOAuthClientRequest): Promise<RegisterOAuthClientResponse> => {\n return this.client.request<RegisterOAuthClientResponse>('/v1/ucp/identity/clients', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n },\n\n /**\n * Get authorization info for consent screen\n */\n getAuthorizationInfo: async (params: {\n response_type: 'code';\n client_id: string;\n redirect_uri: string;\n scope: string;\n state: string;\n code_challenge?: string;\n code_challenge_method?: 'S256' | 'plain';\n }): Promise<UCPAuthorizationInfo> => {\n const searchParams = new URLSearchParams();\n searchParams.append('response_type', params.response_type);\n searchParams.append('client_id', params.client_id);\n searchParams.append('redirect_uri', params.redirect_uri);\n searchParams.append('scope', params.scope);\n searchParams.append('state', params.state);\n if (params.code_challenge) {\n searchParams.append('code_challenge', params.code_challenge);\n }\n if (params.code_challenge_method) {\n searchParams.append('code_challenge_method', params.code_challenge_method);\n }\n\n return this.client.request<UCPAuthorizationInfo>(\n `/v1/ucp/identity/authorize?${searchParams.toString()}`\n );\n },\n\n /**\n * Submit consent decision (after user authenticates)\n */\n submitConsent: async (request: UCPConsentRequest): Promise<UCPConsentResponse> => {\n return this.client.request<UCPConsentResponse>('/v1/ucp/identity/authorize/consent', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n },\n\n /**\n * Exchange authorization code for tokens\n */\n exchangeCode: async (params: {\n client_id: string;\n client_secret?: string;\n code: string;\n redirect_uri: string;\n code_verifier?: string;\n }): Promise<UCPTokenResponse> => {\n return this.client.request<UCPTokenResponse>('/v1/ucp/identity/token', {\n method: 'POST',\n body: JSON.stringify({\n grant_type: 'authorization_code',\n ...params,\n }),\n });\n },\n\n /**\n * Refresh tokens\n */\n refreshTokens: async (params: {\n client_id: string;\n client_secret?: string;\n refresh_token: string;\n }): Promise<UCPTokenResponse> => {\n return this.client.request<UCPTokenResponse>('/v1/ucp/identity/token', {\n method: 'POST',\n body: JSON.stringify({\n grant_type: 'refresh_token',\n ...params,\n }),\n });\n },\n\n /**\n * Revoke a token\n */\n revokeToken: async (params: {\n token: string;\n token_type_hint?: 'access_token' | 'refresh_token';\n client_id: string;\n client_secret?: string;\n }): Promise<{ success: boolean }> => {\n return this.client.request<{ success: boolean }>('/v1/ucp/identity/revoke', {\n method: 'POST',\n body: JSON.stringify(params),\n });\n },\n\n /**\n * List linked accounts\n */\n listLinkedAccounts: async (params: {\n buyer_id?: string;\n platform_id?: string;\n limit?: number;\n offset?: number;\n }): Promise<{ data: UCPLinkedAccount[]; pagination?: { limit: number; offset: number; total: number } }> => {\n const searchParams = new URLSearchParams();\n if (params.buyer_id) searchParams.append('buyer_id', params.buyer_id);\n if (params.platform_id) searchParams.append('platform_id', params.platform_id);\n if (params.limit) searchParams.append('limit', params.limit.toString());\n if (params.offset) searchParams.append('offset', params.offset.toString());\n\n return this.client.request<{ data: UCPLinkedAccount[]; pagination?: { limit: number; offset: number; total: number } }>(\n `/v1/ucp/identity/linked-accounts?${searchParams.toString()}`\n );\n },\n\n /**\n * Unlink an account\n */\n unlinkAccount: async (accountId: string, buyerId: string): Promise<{ success: boolean }> => {\n return this.client.request<{ success: boolean }>(\n `/v1/ucp/identity/linked-accounts/${accountId}?buyer_id=${buyerId}`,\n { method: 'DELETE' }\n );\n },\n\n /**\n * Get available scopes\n */\n getScopes: async (): Promise<{ data: UCPScopeInfo[] }> => {\n return this.client.request<{ data: UCPScopeInfo[] }>('/v1/ucp/identity/scopes');\n },\n };\n }\n}\n"]}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import * as ai from 'ai';
|
|
2
|
+
import { S as SettlementQuote, a as Settlement, C as ComplianceCheckResponse } from './types-df1EICn_.mjs';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { PayOS as Sly } from './index.mjs';
|
|
5
|
+
import './client-Cwe2CLU7.mjs';
|
|
6
|
+
import './x402.mjs';
|
|
7
|
+
import 'express';
|
|
8
|
+
import './ap2.mjs';
|
|
9
|
+
import './acp.mjs';
|
|
10
|
+
import './ucp.mjs';
|
|
11
|
+
import './cards.mjs';
|
|
12
|
+
import './a2a.mjs';
|
|
13
|
+
import '@sly/types';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Create Vercel AI SDK tools from a Sly instance
|
|
17
|
+
*
|
|
18
|
+
* Returns an object with tools that can be passed directly to
|
|
19
|
+
* `generateText`, `streamText`, or `generateObject` from the `ai` package.
|
|
20
|
+
*/
|
|
21
|
+
declare function createSlyVercelTools(sly: Sly): {
|
|
22
|
+
get_settlement_quote: ai.CoreTool<z.ZodObject<{
|
|
23
|
+
fromCurrency: z.ZodEnum<["USD", "BRL", "MXN", "USDC"]>;
|
|
24
|
+
toCurrency: z.ZodEnum<["USD", "BRL", "MXN", "USDC"]>;
|
|
25
|
+
amount: z.ZodString;
|
|
26
|
+
rail: z.ZodOptional<z.ZodEnum<["pix", "spei", "wire", "usdc"]>>;
|
|
27
|
+
}, "strip", z.ZodTypeAny, {
|
|
28
|
+
amount: string;
|
|
29
|
+
fromCurrency: "USD" | "BRL" | "MXN" | "USDC";
|
|
30
|
+
toCurrency: "USD" | "BRL" | "MXN" | "USDC";
|
|
31
|
+
rail?: "pix" | "spei" | "wire" | "usdc" | undefined;
|
|
32
|
+
}, {
|
|
33
|
+
amount: string;
|
|
34
|
+
fromCurrency: "USD" | "BRL" | "MXN" | "USDC";
|
|
35
|
+
toCurrency: "USD" | "BRL" | "MXN" | "USDC";
|
|
36
|
+
rail?: "pix" | "spei" | "wire" | "usdc" | undefined;
|
|
37
|
+
}>, {
|
|
38
|
+
success: boolean;
|
|
39
|
+
data: SettlementQuote;
|
|
40
|
+
error?: undefined;
|
|
41
|
+
} | {
|
|
42
|
+
success: boolean;
|
|
43
|
+
error: any;
|
|
44
|
+
data?: undefined;
|
|
45
|
+
}> & {
|
|
46
|
+
execute: (args: {
|
|
47
|
+
amount: string;
|
|
48
|
+
fromCurrency: "USD" | "BRL" | "MXN" | "USDC";
|
|
49
|
+
toCurrency: "USD" | "BRL" | "MXN" | "USDC";
|
|
50
|
+
rail?: "pix" | "spei" | "wire" | "usdc" | undefined;
|
|
51
|
+
}, options: {
|
|
52
|
+
abortSignal?: AbortSignal;
|
|
53
|
+
}) => PromiseLike<{
|
|
54
|
+
success: boolean;
|
|
55
|
+
data: SettlementQuote;
|
|
56
|
+
error?: undefined;
|
|
57
|
+
} | {
|
|
58
|
+
success: boolean;
|
|
59
|
+
error: any;
|
|
60
|
+
data?: undefined;
|
|
61
|
+
}>;
|
|
62
|
+
};
|
|
63
|
+
create_settlement: ai.CoreTool<z.ZodObject<{
|
|
64
|
+
quoteId: z.ZodString;
|
|
65
|
+
destinationAccountId: z.ZodString;
|
|
66
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
67
|
+
}, "strip", z.ZodTypeAny, {
|
|
68
|
+
quoteId: string;
|
|
69
|
+
destinationAccountId: string;
|
|
70
|
+
metadata?: Record<string, any> | undefined;
|
|
71
|
+
}, {
|
|
72
|
+
quoteId: string;
|
|
73
|
+
destinationAccountId: string;
|
|
74
|
+
metadata?: Record<string, any> | undefined;
|
|
75
|
+
}>, {
|
|
76
|
+
success: boolean;
|
|
77
|
+
data: Settlement;
|
|
78
|
+
error?: undefined;
|
|
79
|
+
} | {
|
|
80
|
+
success: boolean;
|
|
81
|
+
error: any;
|
|
82
|
+
data?: undefined;
|
|
83
|
+
}> & {
|
|
84
|
+
execute: (args: {
|
|
85
|
+
quoteId: string;
|
|
86
|
+
destinationAccountId: string;
|
|
87
|
+
metadata?: Record<string, any> | undefined;
|
|
88
|
+
}, options: {
|
|
89
|
+
abortSignal?: AbortSignal;
|
|
90
|
+
}) => PromiseLike<{
|
|
91
|
+
success: boolean;
|
|
92
|
+
data: Settlement;
|
|
93
|
+
error?: undefined;
|
|
94
|
+
} | {
|
|
95
|
+
success: boolean;
|
|
96
|
+
error: any;
|
|
97
|
+
data?: undefined;
|
|
98
|
+
}>;
|
|
99
|
+
};
|
|
100
|
+
get_settlement_status: ai.CoreTool<z.ZodObject<{
|
|
101
|
+
settlementId: z.ZodString;
|
|
102
|
+
}, "strip", z.ZodTypeAny, {
|
|
103
|
+
settlementId: string;
|
|
104
|
+
}, {
|
|
105
|
+
settlementId: string;
|
|
106
|
+
}>, {
|
|
107
|
+
success: boolean;
|
|
108
|
+
data: Settlement;
|
|
109
|
+
error?: undefined;
|
|
110
|
+
} | {
|
|
111
|
+
success: boolean;
|
|
112
|
+
error: any;
|
|
113
|
+
data?: undefined;
|
|
114
|
+
}> & {
|
|
115
|
+
execute: (args: {
|
|
116
|
+
settlementId: string;
|
|
117
|
+
}, options: {
|
|
118
|
+
abortSignal?: AbortSignal;
|
|
119
|
+
}) => PromiseLike<{
|
|
120
|
+
success: boolean;
|
|
121
|
+
data: Settlement;
|
|
122
|
+
error?: undefined;
|
|
123
|
+
} | {
|
|
124
|
+
success: boolean;
|
|
125
|
+
error: any;
|
|
126
|
+
data?: undefined;
|
|
127
|
+
}>;
|
|
128
|
+
};
|
|
129
|
+
check_compliance: ai.CoreTool<z.ZodObject<{
|
|
130
|
+
recipientAccountId: z.ZodString;
|
|
131
|
+
amount: z.ZodString;
|
|
132
|
+
currency: z.ZodEnum<["USD", "BRL", "MXN"]>;
|
|
133
|
+
}, "strip", z.ZodTypeAny, {
|
|
134
|
+
amount: string;
|
|
135
|
+
recipientAccountId: string;
|
|
136
|
+
currency: "USD" | "BRL" | "MXN";
|
|
137
|
+
}, {
|
|
138
|
+
amount: string;
|
|
139
|
+
recipientAccountId: string;
|
|
140
|
+
currency: "USD" | "BRL" | "MXN";
|
|
141
|
+
}>, {
|
|
142
|
+
success: boolean;
|
|
143
|
+
data: ComplianceCheckResponse;
|
|
144
|
+
error?: undefined;
|
|
145
|
+
} | {
|
|
146
|
+
success: boolean;
|
|
147
|
+
error: any;
|
|
148
|
+
data?: undefined;
|
|
149
|
+
}> & {
|
|
150
|
+
execute: (args: {
|
|
151
|
+
amount: string;
|
|
152
|
+
recipientAccountId: string;
|
|
153
|
+
currency: "USD" | "BRL" | "MXN";
|
|
154
|
+
}, options: {
|
|
155
|
+
abortSignal?: AbortSignal;
|
|
156
|
+
}) => PromiseLike<{
|
|
157
|
+
success: boolean;
|
|
158
|
+
data: ComplianceCheckResponse;
|
|
159
|
+
error?: undefined;
|
|
160
|
+
} | {
|
|
161
|
+
success: boolean;
|
|
162
|
+
error: any;
|
|
163
|
+
data?: undefined;
|
|
164
|
+
}>;
|
|
165
|
+
};
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* System prompt for Vercel AI SDK agents using Sly tools
|
|
169
|
+
*/
|
|
170
|
+
declare const SLY_VERCEL_SYSTEM_PROMPT = "You are a helpful AI assistant with access to Sly payment operations.\n\nYou can help users with:\n- Getting settlement quotes for cross-border payments (USD, BRL, MXN, USDC)\n- Creating settlements and transfers\n- Checking settlement status\n- Verifying compliance for recipients\n\nPayment rails available:\n- Pix (Brazil): Instant settlement in ~10 seconds\n- SPEI (Mexico): Fast settlement in ~1 minute\n- Wire: Traditional bank transfer\n- USDC: Stablecoin settlement on blockchain\n\nAlways:\n1. Get a quote before creating a settlement\n2. Check compliance for new recipients\n3. Confirm important actions with the user\n4. Provide clear information about exchange rates and fees\n5. Explain the estimated settlement time\n\nWhen presenting quotes:\n- Show the exchange rate clearly\n- Mention any fees\n- Explain the estimated settlement time\n- Ask for confirmation before executing";
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Type for Vercel AI SDK tools
|
|
174
|
+
*/
|
|
175
|
+
type SlyVercelTools = ReturnType<typeof createSlyVercelTools>;
|
|
176
|
+
type PayOSVercelTools = SlyVercelTools;
|
|
177
|
+
|
|
178
|
+
export { SLY_VERCEL_SYSTEM_PROMPT as PAYOS_VERCEL_SYSTEM_PROMPT, type PayOSVercelTools, SLY_VERCEL_SYSTEM_PROMPT, type SlyVercelTools, createSlyVercelTools as createPayOSVercelTools, createSlyVercelTools };
|
package/dist/vercel.d.ts
ADDED
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import * as ai from 'ai';
|
|
2
|
+
import { S as SettlementQuote, a as Settlement, C as ComplianceCheckResponse } from './types-df1EICn_.js';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { PayOS as Sly } from './index.js';
|
|
5
|
+
import './client-CyJe3uWO.js';
|
|
6
|
+
import './x402.js';
|
|
7
|
+
import 'express';
|
|
8
|
+
import './ap2.js';
|
|
9
|
+
import './acp.js';
|
|
10
|
+
import './ucp.js';
|
|
11
|
+
import './cards.js';
|
|
12
|
+
import './a2a.js';
|
|
13
|
+
import '@sly/types';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Create Vercel AI SDK tools from a Sly instance
|
|
17
|
+
*
|
|
18
|
+
* Returns an object with tools that can be passed directly to
|
|
19
|
+
* `generateText`, `streamText`, or `generateObject` from the `ai` package.
|
|
20
|
+
*/
|
|
21
|
+
declare function createSlyVercelTools(sly: Sly): {
|
|
22
|
+
get_settlement_quote: ai.CoreTool<z.ZodObject<{
|
|
23
|
+
fromCurrency: z.ZodEnum<["USD", "BRL", "MXN", "USDC"]>;
|
|
24
|
+
toCurrency: z.ZodEnum<["USD", "BRL", "MXN", "USDC"]>;
|
|
25
|
+
amount: z.ZodString;
|
|
26
|
+
rail: z.ZodOptional<z.ZodEnum<["pix", "spei", "wire", "usdc"]>>;
|
|
27
|
+
}, "strip", z.ZodTypeAny, {
|
|
28
|
+
amount: string;
|
|
29
|
+
fromCurrency: "USD" | "BRL" | "MXN" | "USDC";
|
|
30
|
+
toCurrency: "USD" | "BRL" | "MXN" | "USDC";
|
|
31
|
+
rail?: "pix" | "spei" | "wire" | "usdc" | undefined;
|
|
32
|
+
}, {
|
|
33
|
+
amount: string;
|
|
34
|
+
fromCurrency: "USD" | "BRL" | "MXN" | "USDC";
|
|
35
|
+
toCurrency: "USD" | "BRL" | "MXN" | "USDC";
|
|
36
|
+
rail?: "pix" | "spei" | "wire" | "usdc" | undefined;
|
|
37
|
+
}>, {
|
|
38
|
+
success: boolean;
|
|
39
|
+
data: SettlementQuote;
|
|
40
|
+
error?: undefined;
|
|
41
|
+
} | {
|
|
42
|
+
success: boolean;
|
|
43
|
+
error: any;
|
|
44
|
+
data?: undefined;
|
|
45
|
+
}> & {
|
|
46
|
+
execute: (args: {
|
|
47
|
+
amount: string;
|
|
48
|
+
fromCurrency: "USD" | "BRL" | "MXN" | "USDC";
|
|
49
|
+
toCurrency: "USD" | "BRL" | "MXN" | "USDC";
|
|
50
|
+
rail?: "pix" | "spei" | "wire" | "usdc" | undefined;
|
|
51
|
+
}, options: {
|
|
52
|
+
abortSignal?: AbortSignal;
|
|
53
|
+
}) => PromiseLike<{
|
|
54
|
+
success: boolean;
|
|
55
|
+
data: SettlementQuote;
|
|
56
|
+
error?: undefined;
|
|
57
|
+
} | {
|
|
58
|
+
success: boolean;
|
|
59
|
+
error: any;
|
|
60
|
+
data?: undefined;
|
|
61
|
+
}>;
|
|
62
|
+
};
|
|
63
|
+
create_settlement: ai.CoreTool<z.ZodObject<{
|
|
64
|
+
quoteId: z.ZodString;
|
|
65
|
+
destinationAccountId: z.ZodString;
|
|
66
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
67
|
+
}, "strip", z.ZodTypeAny, {
|
|
68
|
+
quoteId: string;
|
|
69
|
+
destinationAccountId: string;
|
|
70
|
+
metadata?: Record<string, any> | undefined;
|
|
71
|
+
}, {
|
|
72
|
+
quoteId: string;
|
|
73
|
+
destinationAccountId: string;
|
|
74
|
+
metadata?: Record<string, any> | undefined;
|
|
75
|
+
}>, {
|
|
76
|
+
success: boolean;
|
|
77
|
+
data: Settlement;
|
|
78
|
+
error?: undefined;
|
|
79
|
+
} | {
|
|
80
|
+
success: boolean;
|
|
81
|
+
error: any;
|
|
82
|
+
data?: undefined;
|
|
83
|
+
}> & {
|
|
84
|
+
execute: (args: {
|
|
85
|
+
quoteId: string;
|
|
86
|
+
destinationAccountId: string;
|
|
87
|
+
metadata?: Record<string, any> | undefined;
|
|
88
|
+
}, options: {
|
|
89
|
+
abortSignal?: AbortSignal;
|
|
90
|
+
}) => PromiseLike<{
|
|
91
|
+
success: boolean;
|
|
92
|
+
data: Settlement;
|
|
93
|
+
error?: undefined;
|
|
94
|
+
} | {
|
|
95
|
+
success: boolean;
|
|
96
|
+
error: any;
|
|
97
|
+
data?: undefined;
|
|
98
|
+
}>;
|
|
99
|
+
};
|
|
100
|
+
get_settlement_status: ai.CoreTool<z.ZodObject<{
|
|
101
|
+
settlementId: z.ZodString;
|
|
102
|
+
}, "strip", z.ZodTypeAny, {
|
|
103
|
+
settlementId: string;
|
|
104
|
+
}, {
|
|
105
|
+
settlementId: string;
|
|
106
|
+
}>, {
|
|
107
|
+
success: boolean;
|
|
108
|
+
data: Settlement;
|
|
109
|
+
error?: undefined;
|
|
110
|
+
} | {
|
|
111
|
+
success: boolean;
|
|
112
|
+
error: any;
|
|
113
|
+
data?: undefined;
|
|
114
|
+
}> & {
|
|
115
|
+
execute: (args: {
|
|
116
|
+
settlementId: string;
|
|
117
|
+
}, options: {
|
|
118
|
+
abortSignal?: AbortSignal;
|
|
119
|
+
}) => PromiseLike<{
|
|
120
|
+
success: boolean;
|
|
121
|
+
data: Settlement;
|
|
122
|
+
error?: undefined;
|
|
123
|
+
} | {
|
|
124
|
+
success: boolean;
|
|
125
|
+
error: any;
|
|
126
|
+
data?: undefined;
|
|
127
|
+
}>;
|
|
128
|
+
};
|
|
129
|
+
check_compliance: ai.CoreTool<z.ZodObject<{
|
|
130
|
+
recipientAccountId: z.ZodString;
|
|
131
|
+
amount: z.ZodString;
|
|
132
|
+
currency: z.ZodEnum<["USD", "BRL", "MXN"]>;
|
|
133
|
+
}, "strip", z.ZodTypeAny, {
|
|
134
|
+
amount: string;
|
|
135
|
+
recipientAccountId: string;
|
|
136
|
+
currency: "USD" | "BRL" | "MXN";
|
|
137
|
+
}, {
|
|
138
|
+
amount: string;
|
|
139
|
+
recipientAccountId: string;
|
|
140
|
+
currency: "USD" | "BRL" | "MXN";
|
|
141
|
+
}>, {
|
|
142
|
+
success: boolean;
|
|
143
|
+
data: ComplianceCheckResponse;
|
|
144
|
+
error?: undefined;
|
|
145
|
+
} | {
|
|
146
|
+
success: boolean;
|
|
147
|
+
error: any;
|
|
148
|
+
data?: undefined;
|
|
149
|
+
}> & {
|
|
150
|
+
execute: (args: {
|
|
151
|
+
amount: string;
|
|
152
|
+
recipientAccountId: string;
|
|
153
|
+
currency: "USD" | "BRL" | "MXN";
|
|
154
|
+
}, options: {
|
|
155
|
+
abortSignal?: AbortSignal;
|
|
156
|
+
}) => PromiseLike<{
|
|
157
|
+
success: boolean;
|
|
158
|
+
data: ComplianceCheckResponse;
|
|
159
|
+
error?: undefined;
|
|
160
|
+
} | {
|
|
161
|
+
success: boolean;
|
|
162
|
+
error: any;
|
|
163
|
+
data?: undefined;
|
|
164
|
+
}>;
|
|
165
|
+
};
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* System prompt for Vercel AI SDK agents using Sly tools
|
|
169
|
+
*/
|
|
170
|
+
declare const SLY_VERCEL_SYSTEM_PROMPT = "You are a helpful AI assistant with access to Sly payment operations.\n\nYou can help users with:\n- Getting settlement quotes for cross-border payments (USD, BRL, MXN, USDC)\n- Creating settlements and transfers\n- Checking settlement status\n- Verifying compliance for recipients\n\nPayment rails available:\n- Pix (Brazil): Instant settlement in ~10 seconds\n- SPEI (Mexico): Fast settlement in ~1 minute\n- Wire: Traditional bank transfer\n- USDC: Stablecoin settlement on blockchain\n\nAlways:\n1. Get a quote before creating a settlement\n2. Check compliance for new recipients\n3. Confirm important actions with the user\n4. Provide clear information about exchange rates and fees\n5. Explain the estimated settlement time\n\nWhen presenting quotes:\n- Show the exchange rate clearly\n- Mention any fees\n- Explain the estimated settlement time\n- Ask for confirmation before executing";
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Type for Vercel AI SDK tools
|
|
174
|
+
*/
|
|
175
|
+
type SlyVercelTools = ReturnType<typeof createSlyVercelTools>;
|
|
176
|
+
type PayOSVercelTools = SlyVercelTools;
|
|
177
|
+
|
|
178
|
+
export { SLY_VERCEL_SYSTEM_PROMPT as PAYOS_VERCEL_SYSTEM_PROMPT, type PayOSVercelTools, SLY_VERCEL_SYSTEM_PROMPT, type SlyVercelTools, createSlyVercelTools as createPayOSVercelTools, createSlyVercelTools };
|
package/dist/vercel.js
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var ai = require('ai');
|
|
4
|
+
var zod = require('zod');
|
|
5
|
+
|
|
6
|
+
// src/vercel/tools.ts
|
|
7
|
+
function createSlyVercelTools(sly) {
|
|
8
|
+
return {
|
|
9
|
+
get_settlement_quote: ai.tool({
|
|
10
|
+
description: "Get a settlement quote for cross-border payment with FX rates and fees. Use this when a user wants to know how much money will be received in another currency.",
|
|
11
|
+
parameters: zod.z.object({
|
|
12
|
+
fromCurrency: zod.z.enum(["USD", "BRL", "MXN", "USDC"]).describe("Source currency"),
|
|
13
|
+
toCurrency: zod.z.enum(["USD", "BRL", "MXN", "USDC"]).describe("Destination currency"),
|
|
14
|
+
amount: zod.z.string().describe("Amount to convert"),
|
|
15
|
+
rail: zod.z.enum(["pix", "spei", "wire", "usdc"]).optional().describe("Settlement rail (optional)")
|
|
16
|
+
}),
|
|
17
|
+
execute: async ({ fromCurrency, toCurrency, amount, rail }) => {
|
|
18
|
+
try {
|
|
19
|
+
const quote = await sly.getSettlementQuote({
|
|
20
|
+
fromCurrency,
|
|
21
|
+
toCurrency,
|
|
22
|
+
amount,
|
|
23
|
+
rail
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
success: true,
|
|
27
|
+
data: quote
|
|
28
|
+
};
|
|
29
|
+
} catch (error) {
|
|
30
|
+
return {
|
|
31
|
+
success: false,
|
|
32
|
+
error: error.message
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}),
|
|
37
|
+
create_settlement: ai.tool({
|
|
38
|
+
description: "Execute a settlement using a quote ID. Use this after getting a quote to actually send the money.",
|
|
39
|
+
parameters: zod.z.object({
|
|
40
|
+
quoteId: zod.z.string().describe("Quote ID from get_settlement_quote"),
|
|
41
|
+
destinationAccountId: zod.z.string().describe("Destination account ID"),
|
|
42
|
+
metadata: zod.z.record(zod.z.any()).optional().describe("Optional metadata")
|
|
43
|
+
}),
|
|
44
|
+
execute: async ({ quoteId, destinationAccountId, metadata }) => {
|
|
45
|
+
try {
|
|
46
|
+
const settlement = await sly.createSettlement({
|
|
47
|
+
quoteId,
|
|
48
|
+
destinationAccountId,
|
|
49
|
+
metadata
|
|
50
|
+
});
|
|
51
|
+
return {
|
|
52
|
+
success: true,
|
|
53
|
+
data: settlement
|
|
54
|
+
};
|
|
55
|
+
} catch (error) {
|
|
56
|
+
return {
|
|
57
|
+
success: false,
|
|
58
|
+
error: error.message
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}),
|
|
63
|
+
get_settlement_status: ai.tool({
|
|
64
|
+
description: "Check the status of a settlement. Use this to track if a payment has completed.",
|
|
65
|
+
parameters: zod.z.object({
|
|
66
|
+
settlementId: zod.z.string().describe("Settlement ID")
|
|
67
|
+
}),
|
|
68
|
+
execute: async ({ settlementId }) => {
|
|
69
|
+
try {
|
|
70
|
+
const settlement = await sly.getSettlement(settlementId);
|
|
71
|
+
return {
|
|
72
|
+
success: true,
|
|
73
|
+
data: settlement
|
|
74
|
+
};
|
|
75
|
+
} catch (error) {
|
|
76
|
+
return {
|
|
77
|
+
success: false,
|
|
78
|
+
error: error.message
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}),
|
|
83
|
+
check_compliance: ai.tool({
|
|
84
|
+
description: "Check if a recipient passes compliance checks before sending payment. Use this to verify a recipient is valid.",
|
|
85
|
+
parameters: zod.z.object({
|
|
86
|
+
recipientAccountId: zod.z.string().describe("Recipient account ID"),
|
|
87
|
+
amount: zod.z.string().describe("Payment amount"),
|
|
88
|
+
currency: zod.z.enum(["USD", "BRL", "MXN"]).describe("Payment currency")
|
|
89
|
+
}),
|
|
90
|
+
execute: async ({ recipientAccountId, amount, currency }) => {
|
|
91
|
+
try {
|
|
92
|
+
const result = await sly.checkCompliance({
|
|
93
|
+
recipientAccountId,
|
|
94
|
+
amount,
|
|
95
|
+
currency
|
|
96
|
+
});
|
|
97
|
+
return {
|
|
98
|
+
success: true,
|
|
99
|
+
data: result
|
|
100
|
+
};
|
|
101
|
+
} catch (error) {
|
|
102
|
+
return {
|
|
103
|
+
success: false,
|
|
104
|
+
error: error.message
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
})
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
var SLY_VERCEL_SYSTEM_PROMPT = `You are a helpful AI assistant with access to Sly payment operations.
|
|
112
|
+
|
|
113
|
+
You can help users with:
|
|
114
|
+
- Getting settlement quotes for cross-border payments (USD, BRL, MXN, USDC)
|
|
115
|
+
- Creating settlements and transfers
|
|
116
|
+
- Checking settlement status
|
|
117
|
+
- Verifying compliance for recipients
|
|
118
|
+
|
|
119
|
+
Payment rails available:
|
|
120
|
+
- Pix (Brazil): Instant settlement in ~10 seconds
|
|
121
|
+
- SPEI (Mexico): Fast settlement in ~1 minute
|
|
122
|
+
- Wire: Traditional bank transfer
|
|
123
|
+
- USDC: Stablecoin settlement on blockchain
|
|
124
|
+
|
|
125
|
+
Always:
|
|
126
|
+
1. Get a quote before creating a settlement
|
|
127
|
+
2. Check compliance for new recipients
|
|
128
|
+
3. Confirm important actions with the user
|
|
129
|
+
4. Provide clear information about exchange rates and fees
|
|
130
|
+
5. Explain the estimated settlement time
|
|
131
|
+
|
|
132
|
+
When presenting quotes:
|
|
133
|
+
- Show the exchange rate clearly
|
|
134
|
+
- Mention any fees
|
|
135
|
+
- Explain the estimated settlement time
|
|
136
|
+
- Ask for confirmation before executing`;
|
|
137
|
+
|
|
138
|
+
exports.PAYOS_VERCEL_SYSTEM_PROMPT = SLY_VERCEL_SYSTEM_PROMPT;
|
|
139
|
+
exports.SLY_VERCEL_SYSTEM_PROMPT = SLY_VERCEL_SYSTEM_PROMPT;
|
|
140
|
+
exports.createPayOSVercelTools = createSlyVercelTools;
|
|
141
|
+
exports.createSlyVercelTools = createSlyVercelTools;
|
|
142
|
+
//# sourceMappingURL=vercel.js.map
|
|
143
|
+
//# sourceMappingURL=vercel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/vercel/tools.ts"],"names":["tool","z"],"mappings":"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","file":"vercel.js","sourcesContent":["/**\n * Vercel AI SDK Tools for Sly\n *\n * Provides Sly capabilities as Vercel AI SDK tools for use with\n * Next.js applications, streaming responses, and React hooks.\n *\n * @example\n * ```typescript\n * import { createSlyVercelTools } from '@sly/sdk/vercel';\n * import { openai } from '@ai-sdk/openai';\n * import { generateText } from 'ai';\n *\n * const sly = new Sly({ apiKey: '...', environment: 'sandbox' });\n * const tools = createSlyVercelTools(sly);\n *\n * const result = await generateText({\n * model: openai('gpt-4'),\n * prompt: 'Send $100 to Brazil via Pix',\n * tools,\n * });\n * ```\n */\n\nimport { tool } from 'ai';\nimport { z } from 'zod';\nimport type { Sly } from '../index';\n\n/**\n * Create Vercel AI SDK tools from a Sly instance\n *\n * Returns an object with tools that can be passed directly to\n * `generateText`, `streamText`, or `generateObject` from the `ai` package.\n */\nexport function createSlyVercelTools(sly: Sly) {\n return {\n get_settlement_quote: tool({\n description: 'Get a settlement quote for cross-border payment with FX rates and fees. Use this when a user wants to know how much money will be received in another currency.',\n parameters: z.object({\n fromCurrency: z.enum(['USD', 'BRL', 'MXN', 'USDC']).describe('Source currency'),\n toCurrency: z.enum(['USD', 'BRL', 'MXN', 'USDC']).describe('Destination currency'),\n amount: z.string().describe('Amount to convert'),\n rail: z.enum(['pix', 'spei', 'wire', 'usdc']).optional().describe('Settlement rail (optional)'),\n }),\n execute: async ({ fromCurrency, toCurrency, amount, rail }) => {\n try {\n const quote = await sly.getSettlementQuote({\n fromCurrency,\n toCurrency,\n amount,\n rail,\n });\n return {\n success: true,\n data: quote,\n };\n } catch (error: any) {\n return {\n success: false,\n error: error.message,\n };\n }\n },\n }),\n\n create_settlement: tool({\n description: 'Execute a settlement using a quote ID. Use this after getting a quote to actually send the money.',\n parameters: z.object({\n quoteId: z.string().describe('Quote ID from get_settlement_quote'),\n destinationAccountId: z.string().describe('Destination account ID'),\n metadata: z.record(z.any()).optional().describe('Optional metadata'),\n }),\n execute: async ({ quoteId, destinationAccountId, metadata }) => {\n try {\n const settlement = await sly.createSettlement({\n quoteId,\n destinationAccountId,\n metadata,\n });\n return {\n success: true,\n data: settlement,\n };\n } catch (error: any) {\n return {\n success: false,\n error: error.message,\n };\n }\n },\n }),\n\n get_settlement_status: tool({\n description: 'Check the status of a settlement. Use this to track if a payment has completed.',\n parameters: z.object({\n settlementId: z.string().describe('Settlement ID'),\n }),\n execute: async ({ settlementId }) => {\n try {\n const settlement = await sly.getSettlement(settlementId);\n return {\n success: true,\n data: settlement,\n };\n } catch (error: any) {\n return {\n success: false,\n error: error.message,\n };\n }\n },\n }),\n\n check_compliance: tool({\n description: 'Check if a recipient passes compliance checks before sending payment. Use this to verify a recipient is valid.',\n parameters: z.object({\n recipientAccountId: z.string().describe('Recipient account ID'),\n amount: z.string().describe('Payment amount'),\n currency: z.enum(['USD', 'BRL', 'MXN']).describe('Payment currency'),\n }),\n execute: async ({ recipientAccountId, amount, currency }) => {\n try {\n const result = await sly.checkCompliance({\n recipientAccountId,\n amount,\n currency,\n });\n return {\n success: true,\n data: result,\n };\n } catch (error: any) {\n return {\n success: false,\n error: error.message,\n };\n }\n },\n }),\n };\n}\n\n/**\n * System prompt for Vercel AI SDK agents using Sly tools\n */\nexport const SLY_VERCEL_SYSTEM_PROMPT = `You are a helpful AI assistant with access to Sly payment operations.\n\nYou can help users with:\n- Getting settlement quotes for cross-border payments (USD, BRL, MXN, USDC)\n- Creating settlements and transfers\n- Checking settlement status\n- Verifying compliance for recipients\n\nPayment rails available:\n- Pix (Brazil): Instant settlement in ~10 seconds\n- SPEI (Mexico): Fast settlement in ~1 minute\n- Wire: Traditional bank transfer\n- USDC: Stablecoin settlement on blockchain\n\nAlways:\n1. Get a quote before creating a settlement\n2. Check compliance for new recipients\n3. Confirm important actions with the user\n4. Provide clear information about exchange rates and fees\n5. Explain the estimated settlement time\n\nWhen presenting quotes:\n- Show the exchange rate clearly\n- Mention any fees\n- Explain the estimated settlement time\n- Ask for confirmation before executing`;\n\n// Backward compatibility alias\nexport { SLY_VERCEL_SYSTEM_PROMPT as PAYOS_VERCEL_SYSTEM_PROMPT };\n\n/**\n * Type for Vercel AI SDK tools\n */\nexport type SlyVercelTools = ReturnType<typeof createSlyVercelTools>;\n\n// Backward compatibility alias\nexport type PayOSVercelTools = SlyVercelTools;\n\n// Backward compatibility alias for function\nexport { createSlyVercelTools as createPayOSVercelTools };\n\n"]}
|