@solvapay/server 1.0.8-preview.8 → 1.0.8

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.
Files changed (148) hide show
  1. package/README.md +80 -2
  2. package/dist/edge.d.ts +495 -61
  3. package/dist/edge.js +648 -187
  4. package/dist/fetch/index.cjs +3071 -0
  5. package/dist/fetch/index.d.cts +112 -0
  6. package/dist/fetch/index.d.ts +112 -0
  7. package/dist/fetch/index.js +3017 -0
  8. package/dist/index.cjs +603 -5013
  9. package/dist/index.d.cts +490 -156
  10. package/dist/index.d.ts +490 -156
  11. package/dist/index.js +571 -695
  12. package/package.json +15 -12
  13. package/dist/chunk-MLKGABMK.js +0 -9
  14. package/dist/chunk-R5U7XKVJ.js +0 -16
  15. package/dist/dist-EPVKJAIP.js +0 -94
  16. package/dist/dist-JBJ4HMP7.js +0 -94
  17. package/dist/esm-5GYCIXIY.js +0 -3475
  18. package/dist/esm-UW7WCMEK.js +0 -3475
  19. package/dist/src/adapters/base.d.ts +0 -57
  20. package/dist/src/adapters/base.d.ts.map +0 -1
  21. package/dist/src/adapters/base.js +0 -73
  22. package/dist/src/adapters/base.js.map +0 -1
  23. package/dist/src/adapters/http.d.ts +0 -25
  24. package/dist/src/adapters/http.d.ts.map +0 -1
  25. package/dist/src/adapters/http.js +0 -99
  26. package/dist/src/adapters/http.js.map +0 -1
  27. package/dist/src/adapters/index.d.ts +0 -11
  28. package/dist/src/adapters/index.d.ts.map +0 -1
  29. package/dist/src/adapters/index.js +0 -10
  30. package/dist/src/adapters/index.js.map +0 -1
  31. package/dist/src/adapters/mcp.d.ts +0 -24
  32. package/dist/src/adapters/mcp.d.ts.map +0 -1
  33. package/dist/src/adapters/mcp.js +0 -75
  34. package/dist/src/adapters/mcp.js.map +0 -1
  35. package/dist/src/adapters/next.d.ts +0 -24
  36. package/dist/src/adapters/next.d.ts.map +0 -1
  37. package/dist/src/adapters/next.js +0 -109
  38. package/dist/src/adapters/next.js.map +0 -1
  39. package/dist/src/client.d.ts +0 -58
  40. package/dist/src/client.d.ts.map +0 -1
  41. package/dist/src/client.js +0 -495
  42. package/dist/src/client.js.map +0 -1
  43. package/dist/src/edge.d.ts +0 -22
  44. package/dist/src/edge.d.ts.map +0 -1
  45. package/dist/src/edge.js +0 -91
  46. package/dist/src/edge.js.map +0 -1
  47. package/dist/src/factory.d.ts +0 -605
  48. package/dist/src/factory.d.ts.map +0 -1
  49. package/dist/src/factory.js +0 -215
  50. package/dist/src/factory.js.map +0 -1
  51. package/dist/src/helpers/auth.d.ts +0 -47
  52. package/dist/src/helpers/auth.d.ts.map +0 -1
  53. package/dist/src/helpers/auth.js +0 -73
  54. package/dist/src/helpers/auth.js.map +0 -1
  55. package/dist/src/helpers/checkout.d.ts +0 -45
  56. package/dist/src/helpers/checkout.d.ts.map +0 -1
  57. package/dist/src/helpers/checkout.js +0 -89
  58. package/dist/src/helpers/checkout.js.map +0 -1
  59. package/dist/src/helpers/customer.d.ts +0 -51
  60. package/dist/src/helpers/customer.d.ts.map +0 -1
  61. package/dist/src/helpers/customer.js +0 -77
  62. package/dist/src/helpers/customer.js.map +0 -1
  63. package/dist/src/helpers/error.d.ts +0 -15
  64. package/dist/src/helpers/error.d.ts.map +0 -1
  65. package/dist/src/helpers/error.js +0 -35
  66. package/dist/src/helpers/error.js.map +0 -1
  67. package/dist/src/helpers/index.d.ts +0 -17
  68. package/dist/src/helpers/index.d.ts.map +0 -1
  69. package/dist/src/helpers/index.js +0 -23
  70. package/dist/src/helpers/index.js.map +0 -1
  71. package/dist/src/helpers/payment.d.ts +0 -107
  72. package/dist/src/helpers/payment.d.ts.map +0 -1
  73. package/dist/src/helpers/payment.js +0 -150
  74. package/dist/src/helpers/payment.js.map +0 -1
  75. package/dist/src/helpers/plans.d.ts +0 -19
  76. package/dist/src/helpers/plans.d.ts.map +0 -1
  77. package/dist/src/helpers/plans.js +0 -53
  78. package/dist/src/helpers/plans.js.map +0 -1
  79. package/dist/src/helpers/renewal.d.ts +0 -23
  80. package/dist/src/helpers/renewal.d.ts.map +0 -1
  81. package/dist/src/helpers/renewal.js +0 -90
  82. package/dist/src/helpers/renewal.js.map +0 -1
  83. package/dist/src/helpers/subscription.d.ts +0 -23
  84. package/dist/src/helpers/subscription.d.ts.map +0 -1
  85. package/dist/src/helpers/subscription.js +0 -101
  86. package/dist/src/helpers/subscription.js.map +0 -1
  87. package/dist/src/helpers/types.d.ts +0 -22
  88. package/dist/src/helpers/types.d.ts.map +0 -1
  89. package/dist/src/helpers/types.js +0 -7
  90. package/dist/src/helpers/types.js.map +0 -1
  91. package/dist/src/index.d.ts +0 -73
  92. package/dist/src/index.d.ts.map +0 -1
  93. package/dist/src/index.js +0 -106
  94. package/dist/src/index.js.map +0 -1
  95. package/dist/src/mcp/auth-bridge.d.ts +0 -9
  96. package/dist/src/mcp/auth-bridge.d.ts.map +0 -1
  97. package/dist/src/mcp/auth-bridge.js +0 -46
  98. package/dist/src/mcp/auth-bridge.js.map +0 -1
  99. package/dist/src/mcp/oauth-bridge.d.ts +0 -48
  100. package/dist/src/mcp/oauth-bridge.d.ts.map +0 -1
  101. package/dist/src/mcp/oauth-bridge.js +0 -110
  102. package/dist/src/mcp/oauth-bridge.js.map +0 -1
  103. package/dist/src/mcp-auth.d.ts +0 -17
  104. package/dist/src/mcp-auth.d.ts.map +0 -1
  105. package/dist/src/mcp-auth.js +0 -57
  106. package/dist/src/mcp-auth.js.map +0 -1
  107. package/dist/src/paywall.d.ts +0 -119
  108. package/dist/src/paywall.d.ts.map +0 -1
  109. package/dist/src/paywall.js +0 -700
  110. package/dist/src/paywall.js.map +0 -1
  111. package/dist/src/register-virtual-tools-mcp.d.ts +0 -23
  112. package/dist/src/register-virtual-tools-mcp.d.ts.map +0 -1
  113. package/dist/src/register-virtual-tools-mcp.js +0 -86
  114. package/dist/src/register-virtual-tools-mcp.js.map +0 -1
  115. package/dist/src/types/client.d.ts +0 -216
  116. package/dist/src/types/client.d.ts.map +0 -1
  117. package/dist/src/types/client.js +0 -7
  118. package/dist/src/types/client.js.map +0 -1
  119. package/dist/src/types/generated.d.ts +0 -2834
  120. package/dist/src/types/generated.d.ts.map +0 -1
  121. package/dist/src/types/generated.js +0 -6
  122. package/dist/src/types/generated.js.map +0 -1
  123. package/dist/src/types/index.d.ts +0 -13
  124. package/dist/src/types/index.d.ts.map +0 -1
  125. package/dist/src/types/index.js +0 -8
  126. package/dist/src/types/index.js.map +0 -1
  127. package/dist/src/types/options.d.ts +0 -126
  128. package/dist/src/types/options.d.ts.map +0 -1
  129. package/dist/src/types/options.js +0 -8
  130. package/dist/src/types/options.js.map +0 -1
  131. package/dist/src/types/paywall.d.ts +0 -64
  132. package/dist/src/types/paywall.d.ts.map +0 -1
  133. package/dist/src/types/paywall.js +0 -7
  134. package/dist/src/types/paywall.js.map +0 -1
  135. package/dist/src/types/webhook.d.ts +0 -50
  136. package/dist/src/types/webhook.d.ts.map +0 -1
  137. package/dist/src/types/webhook.js +0 -2
  138. package/dist/src/types/webhook.js.map +0 -1
  139. package/dist/src/utils.d.ts +0 -110
  140. package/dist/src/utils.d.ts.map +0 -1
  141. package/dist/src/utils.js +0 -217
  142. package/dist/src/utils.js.map +0 -1
  143. package/dist/src/virtual-tools.d.ts +0 -44
  144. package/dist/src/virtual-tools.d.ts.map +0 -1
  145. package/dist/src/virtual-tools.js +0 -140
  146. package/dist/src/virtual-tools.js.map +0 -1
  147. package/dist/tsconfig.tsbuildinfo +0 -1
  148. package/dist/webapi-K5XBCEO6.js +0 -3775
package/dist/src/utils.js DELETED
@@ -1,217 +0,0 @@
1
- /**
2
- * Utility functions for the SolvaPay Server SDK
3
- */
4
- /**
5
- * Execute an async function with automatic retry logic.
6
- *
7
- * This utility function provides configurable retry logic with exponential backoff,
8
- * conditional retry logic, and retry callbacks. Useful for handling transient
9
- * network errors or rate limiting.
10
- *
11
- * @template T The return type of the async function
12
- * @param fn The async function to execute
13
- * @param options Retry configuration options
14
- * @param options.maxRetries - Maximum number of retry attempts (default: 2)
15
- * @param options.initialDelay - Initial delay in milliseconds before first retry (default: 500)
16
- * @param options.backoffStrategy - Backoff strategy: 'fixed', 'linear', or 'exponential' (default: 'fixed')
17
- * @param options.shouldRetry - Optional function to determine if error should be retried
18
- * @param options.onRetry - Optional callback called before each retry attempt
19
- * @returns A promise that resolves with the function result or rejects with the last error
20
- *
21
- * @example
22
- * ```typescript
23
- * // Simple retry with defaults (2 retries, 500ms delay)
24
- * const result = await withRetry(() => apiCall());
25
- *
26
- * // Custom retry with exponential backoff
27
- * const result = await withRetry(
28
- * () => apiCall(),
29
- * {
30
- * maxRetries: 3,
31
- * initialDelay: 1000,
32
- * backoffStrategy: 'exponential',
33
- * shouldRetry: (error) => error.message.includes('timeout'),
34
- * onRetry: (error, attempt) => console.log(`Retry ${attempt + 1}`)
35
- * }
36
- * );
37
- * ```
38
- *
39
- * @since 1.0.0
40
- */
41
- export async function withRetry(fn, options = {}) {
42
- const { maxRetries = 2, initialDelay = 500, backoffStrategy = 'fixed', shouldRetry, onRetry, } = options;
43
- let lastError;
44
- for (let attempt = 0; attempt <= maxRetries; attempt++) {
45
- try {
46
- return await fn();
47
- }
48
- catch (error) {
49
- lastError = error instanceof Error ? error : new Error(String(error));
50
- const isLastAttempt = attempt === maxRetries;
51
- // Check if we should retry
52
- if (isLastAttempt) {
53
- throw lastError;
54
- }
55
- // If shouldRetry is provided, use it to determine if we should retry
56
- if (shouldRetry && !shouldRetry(lastError, attempt)) {
57
- throw lastError;
58
- }
59
- // Calculate delay based on backoff strategy
60
- const delay = calculateDelay(initialDelay, attempt, backoffStrategy);
61
- // Call onRetry callback if provided
62
- if (onRetry) {
63
- onRetry(lastError, attempt);
64
- }
65
- // Wait before retrying
66
- await sleep(delay);
67
- }
68
- }
69
- // This should never be reached, but TypeScript needs it
70
- throw lastError;
71
- }
72
- /**
73
- * Calculate the delay before the next retry based on the backoff strategy
74
- */
75
- function calculateDelay(initialDelay, attempt, strategy) {
76
- switch (strategy) {
77
- case 'fixed':
78
- return initialDelay;
79
- case 'linear':
80
- return initialDelay * (attempt + 1);
81
- case 'exponential':
82
- return initialDelay * Math.pow(2, attempt);
83
- default:
84
- return initialDelay;
85
- }
86
- }
87
- /**
88
- * Sleep for a specified duration
89
- */
90
- function sleep(ms) {
91
- return new Promise(resolve => setTimeout(resolve, ms));
92
- }
93
- /**
94
- * Request deduplication manager
95
- *
96
- * Prevents duplicate API calls by:
97
- * 1. Deduplicating concurrent requests (multiple requests share the same promise)
98
- * 2. Caching results for a short time (prevents duplicate sequential requests)
99
- *
100
- * Suitable for:
101
- * - Single-instance deployments (in-memory cache)
102
- * - Serverless functions (prevents duplicate invocations)
103
- *
104
- * Note: For multi-instance deployments, consider using Redis or a shared cache
105
- *
106
- * @example
107
- * ```typescript
108
- * const deduplicator = createRequestDeduplicator<ApiResponse>();
109
- *
110
- * // All these calls will share the same promise and return the same result
111
- * const result1 = await deduplicator.deduplicate('user-123', () => fetchUserData('user-123'));
112
- * const result2 = await deduplicator.deduplicate('user-123', () => fetchUserData('user-123'));
113
- * const result3 = await deduplicator.deduplicate('user-123', () => fetchUserData('user-123'));
114
- * ```
115
- */
116
- export function createRequestDeduplicator(options = {}) {
117
- const { cacheTTL = 2000, maxCacheSize = 1000, cacheErrors = true } = options;
118
- const inFlightRequests = new Map();
119
- const resultCache = new Map();
120
- // Cleanup interval runs in background - intentionally not stored for clearing
121
- let _cleanupInterval = null;
122
- // Start cleanup interval if caching is enabled
123
- if (cacheTTL > 0) {
124
- _cleanupInterval = setInterval(() => {
125
- const now = Date.now();
126
- const entriesToDelete = [];
127
- for (const [key, cached] of resultCache.entries()) {
128
- if (now - cached.timestamp >= cacheTTL) {
129
- entriesToDelete.push(key);
130
- }
131
- }
132
- for (const key of entriesToDelete) {
133
- resultCache.delete(key);
134
- }
135
- // Enforce max cache size (remove oldest entries if exceeded)
136
- if (resultCache.size > maxCacheSize) {
137
- const sortedEntries = Array.from(resultCache.entries()).sort((a, b) => a[1].timestamp - b[1].timestamp);
138
- const toRemove = sortedEntries.slice(0, resultCache.size - maxCacheSize);
139
- for (const [key] of toRemove) {
140
- resultCache.delete(key);
141
- }
142
- }
143
- }, Math.min(cacheTTL, 1000)); // Clean up at least every second or every cacheTTL, whichever is smaller
144
- }
145
- const deduplicate = async (key, fn) => {
146
- // Check cache first if caching is enabled
147
- if (cacheTTL > 0) {
148
- const cached = resultCache.get(key);
149
- if (cached && Date.now() - cached.timestamp < cacheTTL) {
150
- // Cache hit - return immediately without executing callback
151
- return cached.data;
152
- }
153
- else if (cached) {
154
- // Cache expired - remove it
155
- resultCache.delete(key);
156
- }
157
- }
158
- // Check if request is already in-flight
159
- let requestPromise = inFlightRequests.get(key);
160
- if (!requestPromise) {
161
- // Create new promise
162
- requestPromise = (async () => {
163
- try {
164
- const result = await fn();
165
- // Cache successful results
166
- if (cacheTTL > 0) {
167
- resultCache.set(key, {
168
- data: result,
169
- timestamp: Date.now(),
170
- });
171
- }
172
- return result;
173
- }
174
- catch (error) {
175
- // Cache error results if enabled
176
- if (cacheTTL > 0 && cacheErrors) {
177
- resultCache.set(key, {
178
- data: error,
179
- timestamp: Date.now(),
180
- });
181
- }
182
- throw error;
183
- }
184
- finally {
185
- // Clean up in-flight request
186
- inFlightRequests.delete(key);
187
- }
188
- })();
189
- // Store promise atomically (double-check locking pattern)
190
- const existingPromise = inFlightRequests.get(key);
191
- if (existingPromise) {
192
- requestPromise = existingPromise;
193
- }
194
- else {
195
- inFlightRequests.set(key, requestPromise);
196
- }
197
- }
198
- return requestPromise;
199
- };
200
- const clearCache = (key) => {
201
- resultCache.delete(key);
202
- };
203
- const clearAllCache = () => {
204
- resultCache.clear();
205
- };
206
- const getStats = () => ({
207
- inFlight: inFlightRequests.size,
208
- cached: resultCache.size,
209
- });
210
- return {
211
- deduplicate,
212
- clearCache,
213
- clearAllCache,
214
- getStats,
215
- };
216
- }
217
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Virtual Tools for MCP Server Monetization
3
- *
4
- * Provides the same self-service tools (get_user_info, upgrade, manage_account)
5
- * that hosted MCP Pay servers get automatically, but for SDK-integrated servers.
6
- * These tools are NOT usage-tracked and bypass the paywall.
7
- */
8
- import type { SolvaPayClient } from './types';
9
- import type { McpToolExtra } from './types';
10
- export interface VirtualToolsOptions {
11
- /** Product reference (required) */
12
- product: string;
13
- /** Extract customer reference from MCP tool args */
14
- getCustomerRef: (args: Record<string, unknown>, extra?: McpToolExtra) => string;
15
- /** Tool names to exclude from registration (optional) */
16
- exclude?: string[];
17
- }
18
- export interface VirtualToolDefinition {
19
- name: string;
20
- description: string;
21
- inputSchema: {
22
- type: 'object';
23
- properties: Record<string, object>;
24
- required: string[];
25
- };
26
- handler: (args: Record<string, unknown>, extra?: McpToolExtra) => Promise<{
27
- content: Array<{
28
- type: string;
29
- text: string;
30
- }>;
31
- isError?: boolean;
32
- }>;
33
- }
34
- export declare const VIRTUAL_TOOL_DEFINITIONS: {
35
- name: string;
36
- description: string;
37
- inputSchema: {
38
- type: "object";
39
- properties: Record<string, object>;
40
- required: string[];
41
- };
42
- }[];
43
- export declare function createVirtualTools(apiClient: SolvaPayClient, options: VirtualToolsOptions): VirtualToolDefinition[];
44
- //# sourceMappingURL=virtual-tools.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"virtual-tools.d.ts","sourceRoot":"","sources":["../../src/virtual-tools.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAI3C,MAAM,WAAW,mBAAmB;IAClC,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,oDAAoD;IACpD,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY,KAAK,MAAM,CAAA;IAC/E,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAA;QACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAClC,QAAQ,EAAE,MAAM,EAAE,CAAA;KACnB,CAAA;IACD,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC;QACxE,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QAC9C,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,CAAC,CAAA;CACH;AAmDD,eAAO,MAAM,wBAAwB;;;;;oBAvCf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;kBACxB,MAAM,EAAE;;GAsCmE,CAAA;AA0G/F,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,cAAc,EACzB,OAAO,EAAE,mBAAmB,GAC3B,qBAAqB,EAAE,CAoBzB"}
@@ -1,140 +0,0 @@
1
- /**
2
- * Virtual Tools for MCP Server Monetization
3
- *
4
- * Provides the same self-service tools (get_user_info, upgrade, manage_account)
5
- * that hosted MCP Pay servers get automatically, but for SDK-integrated servers.
6
- * These tools are NOT usage-tracked and bypass the paywall.
7
- */
8
- // ── Tool Definitions (matching hosted MCP Pay) ─────────────────────────
9
- const TOOL_GET_USER_INFO = {
10
- name: 'get_user_info',
11
- description: 'Get information about the current user and their purchase status for this MCP server. ' +
12
- 'Returns user profile (reference, name, email) and active purchase details including product name, ' +
13
- 'type, dates, and usage limit if applicable.',
14
- inputSchema: {
15
- type: 'object',
16
- properties: {},
17
- required: [],
18
- },
19
- };
20
- const TOOL_UPGRADE = {
21
- name: 'upgrade',
22
- description: 'Get available pricing options and checkout URLs for upgrading. ' +
23
- 'Returns a list of available pricing options with their details (price, features) and checkout URLs. ' +
24
- 'Users can click on a checkout URL to purchase. If a specific planRef is provided, ' +
25
- 'returns only the checkout URL for that pricing option.',
26
- inputSchema: {
27
- type: 'object',
28
- properties: {
29
- planRef: {
30
- type: 'string',
31
- description: 'Optional pricing reference (e.g., "pln_abc123") to get a checkout URL for a specific option. ' +
32
- 'If not provided, returns all available pricing options with their checkout URLs.',
33
- },
34
- },
35
- required: [],
36
- },
37
- };
38
- const TOOL_MANAGE_ACCOUNT = {
39
- name: 'manage_account',
40
- description: 'Get a URL to the customer portal where users can view and manage their account. ' +
41
- 'The portal shows current account status, billing history, and allows subscription changes. ' +
42
- 'Returns a secure, time-limited URL that the user can click to access their account management page.',
43
- inputSchema: {
44
- type: 'object',
45
- properties: {},
46
- required: [],
47
- },
48
- };
49
- export const VIRTUAL_TOOL_DEFINITIONS = [TOOL_GET_USER_INFO, TOOL_UPGRADE, TOOL_MANAGE_ACCOUNT];
50
- // ── Tool Handlers ──────────────────────────────────────────────────────
51
- function mcpTextResult(text) {
52
- return { content: [{ type: 'text', text }] };
53
- }
54
- function mcpErrorResult(message) {
55
- return { content: [{ type: 'text', text: JSON.stringify({ error: message }) }], isError: true };
56
- }
57
- function createGetUserInfoHandler(apiClient, productRef, getCustomerRef) {
58
- return async (args, extra) => {
59
- const customerRef = getCustomerRef(args, extra);
60
- try {
61
- if (!apiClient.getUserInfo) {
62
- return mcpErrorResult('getUserInfo is not available on this API client');
63
- }
64
- const userInfo = await apiClient.getUserInfo({ customerRef, productRef });
65
- return mcpTextResult(JSON.stringify(userInfo, null, 2));
66
- }
67
- catch (error) {
68
- return mcpErrorResult(`Failed to retrieve user information: ${error instanceof Error ? error.message : 'Unknown error'}`);
69
- }
70
- };
71
- }
72
- function createUpgradeHandler(apiClient, productRef, getCustomerRef) {
73
- return async (args, extra) => {
74
- const customerRef = getCustomerRef(args, extra);
75
- const planRef = typeof args.planRef === 'string' ? args.planRef : undefined;
76
- try {
77
- const result = await apiClient.createCheckoutSession({
78
- customerRef,
79
- productRef,
80
- ...(planRef && { planRef }),
81
- });
82
- const checkoutUrl = result.checkoutUrl;
83
- if (planRef) {
84
- const responseText = `## Upgrade\n\n` +
85
- `**[Click here to upgrade →](${checkoutUrl})**\n\n` +
86
- `After completing the checkout, your purchase will be activated immediately.`;
87
- return mcpTextResult(responseText);
88
- }
89
- const responseText = `## Upgrade Your Subscription\n\n` +
90
- `**[Click here to view pricing options and upgrade →](${checkoutUrl})**\n\n` +
91
- `You'll be able to compare options and select the one that's right for you.`;
92
- return mcpTextResult(responseText);
93
- }
94
- catch (error) {
95
- return mcpErrorResult(`Failed to create checkout session: ${error instanceof Error ? error.message : 'Unknown error'}`);
96
- }
97
- };
98
- }
99
- function createManageAccountHandler(apiClient, productRef, getCustomerRef) {
100
- return async (args, extra) => {
101
- const customerRef = getCustomerRef(args, extra);
102
- try {
103
- const session = await apiClient.createCustomerSession({ customerRef, productRef });
104
- const portalUrl = session.customerUrl;
105
- const responseText = `## Manage Your Account\n\n` +
106
- `Access your account management portal to:\n` +
107
- `- View your current account status\n` +
108
- `- See billing history and invoices\n` +
109
- `- Update payment methods\n` +
110
- `- Cancel or modify your subscription\n\n` +
111
- `**[Open Account Portal →](${portalUrl})**\n\n` +
112
- `This link is secure and will expire after a short period.`;
113
- return mcpTextResult(responseText);
114
- }
115
- catch (error) {
116
- return mcpErrorResult(`Failed to create customer portal session: ${error instanceof Error ? error.message : 'Unknown error'}`);
117
- }
118
- };
119
- }
120
- // ── Public API ─────────────────────────────────────────────────────────
121
- export function createVirtualTools(apiClient, options) {
122
- const { product, getCustomerRef, exclude = [] } = options;
123
- const excludeSet = new Set(exclude);
124
- const allTools = [
125
- {
126
- ...TOOL_GET_USER_INFO,
127
- handler: createGetUserInfoHandler(apiClient, product, getCustomerRef),
128
- },
129
- {
130
- ...TOOL_UPGRADE,
131
- handler: createUpgradeHandler(apiClient, product, getCustomerRef),
132
- },
133
- {
134
- ...TOOL_MANAGE_ACCOUNT,
135
- handler: createManageAccountHandler(apiClient, product, getCustomerRef),
136
- },
137
- ];
138
- return allTools.filter(t => !excludeSet.has(t.name));
139
- }
140
- //# sourceMappingURL=virtual-tools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"virtual-tools.js","sourceRoot":"","sources":["../../src/virtual-tools.ts"],"names":[],"mappings":"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"}