paygate-mcp 3.6.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/types.d.ts CHANGED
@@ -70,6 +70,8 @@ export interface PayGateConfig {
70
70
  webhookSecret: string | null;
71
71
  /** Maximum retries for failed webhook deliveries. Default: 5. */
72
72
  webhookMaxRetries?: number;
73
+ /** Webhook filter rules for routing events to different destinations. */
74
+ webhookFilters?: WebhookFilterRule[];
73
75
  /** Refund credits when downstream tool call fails. Default: false. */
74
76
  refundOnFailure: boolean;
75
77
  /** Global usage quota defaults (daily/monthly limits). Null = unlimited. */
@@ -92,6 +94,22 @@ export interface PayGateConfig {
92
94
  cooldownSeconds?: number;
93
95
  }>;
94
96
  }
97
+ export interface WebhookFilterRule {
98
+ /** Unique filter ID (auto-generated if not provided). */
99
+ id: string;
100
+ /** Human-readable name for this filter. */
101
+ name: string;
102
+ /** Event types to match (e.g., ['key.created', 'key.revoked']). Use ['*'] for all events. */
103
+ events: string[];
104
+ /** Destination webhook URL for matched events. */
105
+ url: string;
106
+ /** Optional signing secret for this destination (overrides global secret). */
107
+ secret?: string;
108
+ /** API key prefixes to match (e.g., ['pk_prod_']). Undefined/empty = all keys. */
109
+ keyPrefixes?: string[];
110
+ /** Whether this filter is active. Default: true. */
111
+ active: boolean;
112
+ }
95
113
  export interface ServerBackendConfig {
96
114
  /** Unique prefix for this server's tools (e.g., "filesystem", "github").
97
115
  * Tools are exposed as "prefix:tool_name". */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -17,6 +17,7 @@ exports.DEFAULT_CONFIG = {
17
17
  webhookUrl: null,
18
18
  webhookSecret: null,
19
19
  webhookMaxRetries: 5,
20
+ webhookFilters: [],
20
21
  refundOnFailure: false,
21
22
  };
22
23
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA2HU,QAAA,cAAc,GAAkB;IAC3C,IAAI,EAAE,oBAAoB;IAC1B,aAAa,EAAE,EAAE;IACjB,UAAU,EAAE,EAAE;IACd,IAAI,EAAE,IAAI;IACV,qBAAqB,EAAE,CAAC;IACxB,WAAW,EAAE,EAAE;IACf,qBAAqB,EAAE,EAAE;IACzB,WAAW,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,2BAA2B,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,CAAC;IAC/H,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,IAAI;IACnB,iBAAiB,EAAE,CAAC;IACpB,eAAe,EAAE,KAAK;CACvB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAgJU,QAAA,cAAc,GAAkB;IAC3C,IAAI,EAAE,oBAAoB;IAC1B,aAAa,EAAE,EAAE;IACjB,UAAU,EAAE,EAAE;IACd,IAAI,EAAE,IAAI;IACV,qBAAqB,EAAE,CAAC;IACxB,WAAW,EAAE,EAAE;IACf,qBAAqB,EAAE,EAAE;IACzB,WAAW,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,2BAA2B,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,CAAC;IAC/H,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,IAAI;IACnB,iBAAiB,EAAE,CAAC;IACpB,cAAc,EAAE,EAAE;IAClB,eAAe,EAAE,KAAK;CACvB,CAAC"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * WebhookRouter — Route webhook events to different destinations based on filter rules.
3
+ *
4
+ * Filter rules match on:
5
+ * - Event type (exact match or '*' wildcard)
6
+ * - API key prefix (e.g., 'pk_prod_')
7
+ *
8
+ * Events can be routed to multiple destinations if multiple rules match.
9
+ * Unmatched events fall through to the default webhook URL (if configured).
10
+ *
11
+ * Each unique destination URL gets its own WebhookEmitter with independent
12
+ * retry queues, dead letter queues, and delivery stats.
13
+ *
14
+ * Admin API:
15
+ * POST /webhooks/filters — Create filter rule
16
+ * GET /webhooks/filters — List filter rules
17
+ * POST /webhooks/filters/update — Update filter rule
18
+ * POST /webhooks/filters/delete — Delete filter rule
19
+ */
20
+ import { WebhookEmitter, WebhookAdminEvent } from './webhook';
21
+ import { UsageEvent, WebhookFilterRule } from './types';
22
+ export declare class WebhookRouter {
23
+ /** Default emitter for unmatched events (null if no default URL). */
24
+ private defaultEmitter;
25
+ /** Per-URL emitters for filter destinations. */
26
+ private emitters;
27
+ /** Active filter rules. */
28
+ private rules;
29
+ /** Global config for new emitters. */
30
+ private readonly maxRetries;
31
+ constructor(options?: {
32
+ defaultUrl?: string | null;
33
+ defaultSecret?: string | null;
34
+ maxRetries?: number;
35
+ filters?: WebhookFilterRule[];
36
+ });
37
+ /**
38
+ * Add a filter rule. Creates a new emitter for the destination URL if needed.
39
+ */
40
+ addRule(rule: WebhookFilterRule): WebhookFilterRule;
41
+ /**
42
+ * Update an existing filter rule.
43
+ */
44
+ updateRule(id: string, updates: Partial<Omit<WebhookFilterRule, 'id'>>): WebhookFilterRule;
45
+ /**
46
+ * Delete a filter rule by ID.
47
+ */
48
+ deleteRule(id: string): boolean;
49
+ /**
50
+ * List all filter rules.
51
+ */
52
+ listRules(): WebhookFilterRule[];
53
+ /**
54
+ * Get a filter rule by ID.
55
+ */
56
+ getRule(id: string): WebhookFilterRule | undefined;
57
+ get ruleCount(): number;
58
+ /**
59
+ * Route a usage event to matching filter destinations + default.
60
+ */
61
+ emit(event: UsageEvent): void;
62
+ /**
63
+ * Route an admin event to matching filter destinations + default.
64
+ */
65
+ emitAdmin(type: WebhookAdminEvent['type'], actor: string, metadata?: Record<string, unknown>): void;
66
+ /**
67
+ * Check if an event type + API key matches a filter rule.
68
+ */
69
+ private matchesRule;
70
+ private getOrCreateEmitter;
71
+ /**
72
+ * Remove emitters for URLs that are no longer referenced by any rule.
73
+ */
74
+ private cleanupOrphanedEmitters;
75
+ /**
76
+ * Get the default emitter (for backward-compatible /webhooks/stats and /webhooks/dead-letter).
77
+ */
78
+ get defaultWebhook(): WebhookEmitter | null;
79
+ /**
80
+ * Get aggregate stats across all emitters.
81
+ */
82
+ getAggregateStats(): {
83
+ emitterCount: number;
84
+ filterCount: number;
85
+ perUrl: Record<string, ReturnType<WebhookEmitter['getRetryStats']>>;
86
+ };
87
+ destroy(): void;
88
+ }
89
+ //# sourceMappingURL=webhook-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-router.d.ts","sourceRoot":"","sources":["../src/webhook-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAgB,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAIxD,qBAAa,aAAa;IACxB,qEAAqE;IACrE,OAAO,CAAC,cAAc,CAAwB;IAC9C,gDAAgD;IAChD,OAAO,CAAC,QAAQ,CAAqC;IACrD,2BAA2B;IAC3B,OAAO,CAAC,KAAK,CAA2B;IACxC,sCAAsC;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,GAAE;QACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;KAC1B;IAuBN;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,iBAAiB;IAsBnD;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,GAAG,iBAAiB;IAiB1F;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAU/B;;OAEG;IACH,SAAS,IAAI,iBAAiB,EAAE;IAIhC;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIlD,IAAI,SAAS,IAAI,MAAM,CAEtB;IAID;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAoB7B;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,IAAI;IAqBvG;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAY/B;;OAEG;IACH,IAAI,cAAc,IAAI,cAAc,GAAG,IAAI,CAE1C;IAED;;OAEG;IACH,iBAAiB,IAAI;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;KACrE;IAoBD,OAAO,IAAI,IAAI;CAUhB"}
@@ -0,0 +1,249 @@
1
+ "use strict";
2
+ /**
3
+ * WebhookRouter — Route webhook events to different destinations based on filter rules.
4
+ *
5
+ * Filter rules match on:
6
+ * - Event type (exact match or '*' wildcard)
7
+ * - API key prefix (e.g., 'pk_prod_')
8
+ *
9
+ * Events can be routed to multiple destinations if multiple rules match.
10
+ * Unmatched events fall through to the default webhook URL (if configured).
11
+ *
12
+ * Each unique destination URL gets its own WebhookEmitter with independent
13
+ * retry queues, dead letter queues, and delivery stats.
14
+ *
15
+ * Admin API:
16
+ * POST /webhooks/filters — Create filter rule
17
+ * GET /webhooks/filters — List filter rules
18
+ * POST /webhooks/filters/update — Update filter rule
19
+ * POST /webhooks/filters/delete — Delete filter rule
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.WebhookRouter = void 0;
23
+ const crypto_1 = require("crypto");
24
+ const webhook_1 = require("./webhook");
25
+ // ─── WebhookRouter ─────────────────────────────────────────────────────────
26
+ class WebhookRouter {
27
+ /** Default emitter for unmatched events (null if no default URL). */
28
+ defaultEmitter;
29
+ /** Per-URL emitters for filter destinations. */
30
+ emitters = new Map();
31
+ /** Active filter rules. */
32
+ rules = [];
33
+ /** Global config for new emitters. */
34
+ maxRetries;
35
+ constructor(options = {}) {
36
+ this.maxRetries = options.maxRetries ?? 5;
37
+ // Default emitter
38
+ if (options.defaultUrl) {
39
+ this.defaultEmitter = new webhook_1.WebhookEmitter(options.defaultUrl, {
40
+ secret: options.defaultSecret || null,
41
+ maxRetries: this.maxRetries,
42
+ });
43
+ }
44
+ else {
45
+ this.defaultEmitter = null;
46
+ }
47
+ // Initialize filter rules and their emitters
48
+ if (options.filters) {
49
+ for (const rule of options.filters) {
50
+ this.addRule(rule);
51
+ }
52
+ }
53
+ }
54
+ // ─── Filter CRUD ──────────────────────────────────────────────────────────
55
+ /**
56
+ * Add a filter rule. Creates a new emitter for the destination URL if needed.
57
+ */
58
+ addRule(rule) {
59
+ // Ensure ID
60
+ if (!rule.id) {
61
+ rule.id = 'wf_' + (0, crypto_1.randomBytes)(8).toString('hex');
62
+ }
63
+ // Validate
64
+ if (!rule.url)
65
+ throw new Error('Filter rule must have a URL');
66
+ if (!rule.events || rule.events.length === 0)
67
+ throw new Error('Filter rule must have at least one event type');
68
+ if (!rule.name)
69
+ rule.name = `Filter ${rule.id}`;
70
+ if (rule.active === undefined)
71
+ rule.active = true;
72
+ // Deduplicate by ID
73
+ this.rules = this.rules.filter(r => r.id !== rule.id);
74
+ this.rules.push(rule);
75
+ // Ensure emitter for this URL exists
76
+ this.getOrCreateEmitter(rule.url, rule.secret || null);
77
+ return rule;
78
+ }
79
+ /**
80
+ * Update an existing filter rule.
81
+ */
82
+ updateRule(id, updates) {
83
+ const rule = this.rules.find(r => r.id === id);
84
+ if (!rule)
85
+ throw new Error(`Filter rule '${id}' not found`);
86
+ if (updates.name !== undefined)
87
+ rule.name = updates.name;
88
+ if (updates.events !== undefined)
89
+ rule.events = updates.events;
90
+ if (updates.url !== undefined) {
91
+ rule.url = updates.url;
92
+ this.getOrCreateEmitter(rule.url, updates.secret ?? rule.secret ?? null);
93
+ }
94
+ if (updates.secret !== undefined)
95
+ rule.secret = updates.secret;
96
+ if (updates.keyPrefixes !== undefined)
97
+ rule.keyPrefixes = updates.keyPrefixes;
98
+ if (updates.active !== undefined)
99
+ rule.active = updates.active;
100
+ return rule;
101
+ }
102
+ /**
103
+ * Delete a filter rule by ID.
104
+ */
105
+ deleteRule(id) {
106
+ const idx = this.rules.findIndex(r => r.id === id);
107
+ if (idx === -1)
108
+ return false;
109
+ this.rules.splice(idx, 1);
110
+ // Clean up orphaned emitters (URL no longer referenced by any rule)
111
+ this.cleanupOrphanedEmitters();
112
+ return true;
113
+ }
114
+ /**
115
+ * List all filter rules.
116
+ */
117
+ listRules() {
118
+ return [...this.rules];
119
+ }
120
+ /**
121
+ * Get a filter rule by ID.
122
+ */
123
+ getRule(id) {
124
+ return this.rules.find(r => r.id === id);
125
+ }
126
+ get ruleCount() {
127
+ return this.rules.length;
128
+ }
129
+ // ─── Event Routing ────────────────────────────────────────────────────────
130
+ /**
131
+ * Route a usage event to matching filter destinations + default.
132
+ */
133
+ emit(event) {
134
+ let matched = false;
135
+ for (const rule of this.rules) {
136
+ if (!rule.active)
137
+ continue;
138
+ if (this.matchesRule(rule, event.tool ? 'usage' : 'usage', event.apiKey)) {
139
+ const emitter = this.emitters.get(rule.url);
140
+ if (emitter) {
141
+ emitter.emit(event);
142
+ matched = true;
143
+ }
144
+ }
145
+ }
146
+ // Fall through to default if no filter matched (or always send to default)
147
+ if (this.defaultEmitter) {
148
+ this.defaultEmitter.emit(event);
149
+ }
150
+ }
151
+ /**
152
+ * Route an admin event to matching filter destinations + default.
153
+ */
154
+ emitAdmin(type, actor, metadata = {}) {
155
+ const apiKey = metadata.keyMasked || metadata.apiKey || '';
156
+ for (const rule of this.rules) {
157
+ if (!rule.active)
158
+ continue;
159
+ if (this.matchesRule(rule, type, apiKey)) {
160
+ const emitter = this.emitters.get(rule.url);
161
+ if (emitter) {
162
+ emitter.emitAdmin(type, actor, metadata);
163
+ }
164
+ }
165
+ }
166
+ // Always send to default (backward compatible)
167
+ if (this.defaultEmitter) {
168
+ this.defaultEmitter.emitAdmin(type, actor, metadata);
169
+ }
170
+ }
171
+ // ─── Rule Matching ────────────────────────────────────────────────────────
172
+ /**
173
+ * Check if an event type + API key matches a filter rule.
174
+ */
175
+ matchesRule(rule, eventType, apiKey) {
176
+ // Match event type
177
+ const eventsMatch = rule.events.includes('*') || rule.events.includes(eventType);
178
+ if (!eventsMatch)
179
+ return false;
180
+ // Match key prefix (if specified)
181
+ if (rule.keyPrefixes && rule.keyPrefixes.length > 0) {
182
+ const keyMatches = rule.keyPrefixes.some(prefix => apiKey.startsWith(prefix));
183
+ if (!keyMatches)
184
+ return false;
185
+ }
186
+ return true;
187
+ }
188
+ // ─── Emitter Management ───────────────────────────────────────────────────
189
+ getOrCreateEmitter(url, secret) {
190
+ let emitter = this.emitters.get(url);
191
+ if (!emitter) {
192
+ emitter = new webhook_1.WebhookEmitter(url, {
193
+ secret,
194
+ maxRetries: this.maxRetries,
195
+ });
196
+ this.emitters.set(url, emitter);
197
+ }
198
+ return emitter;
199
+ }
200
+ /**
201
+ * Remove emitters for URLs that are no longer referenced by any rule.
202
+ */
203
+ cleanupOrphanedEmitters() {
204
+ const usedUrls = new Set(this.rules.map(r => r.url));
205
+ for (const [url, emitter] of this.emitters) {
206
+ if (!usedUrls.has(url)) {
207
+ emitter.destroy();
208
+ this.emitters.delete(url);
209
+ }
210
+ }
211
+ }
212
+ // ─── Stats / Inspection ───────────────────────────────────────────────────
213
+ /**
214
+ * Get the default emitter (for backward-compatible /webhooks/stats and /webhooks/dead-letter).
215
+ */
216
+ get defaultWebhook() {
217
+ return this.defaultEmitter;
218
+ }
219
+ /**
220
+ * Get aggregate stats across all emitters.
221
+ */
222
+ getAggregateStats() {
223
+ const perUrl = {};
224
+ if (this.defaultEmitter) {
225
+ perUrl['default'] = this.defaultEmitter.getRetryStats();
226
+ }
227
+ for (const [url, emitter] of this.emitters) {
228
+ perUrl[url] = emitter.getRetryStats();
229
+ }
230
+ return {
231
+ emitterCount: this.emitters.size + (this.defaultEmitter ? 1 : 0),
232
+ filterCount: this.rules.length,
233
+ perUrl,
234
+ };
235
+ }
236
+ // ─── Lifecycle ────────────────────────────────────────────────────────────
237
+ destroy() {
238
+ if (this.defaultEmitter) {
239
+ this.defaultEmitter.destroy();
240
+ this.defaultEmitter = null;
241
+ }
242
+ for (const emitter of this.emitters.values()) {
243
+ emitter.destroy();
244
+ }
245
+ this.emitters.clear();
246
+ }
247
+ }
248
+ exports.WebhookRouter = WebhookRouter;
249
+ //# sourceMappingURL=webhook-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-router.js","sourceRoot":"","sources":["../src/webhook-router.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAEH,mCAAqC;AACrC,uCAA4E;AAG5E,8EAA8E;AAE9E,MAAa,aAAa;IACxB,qEAAqE;IAC7D,cAAc,CAAwB;IAC9C,gDAAgD;IACxC,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IACrD,2BAA2B;IACnB,KAAK,GAAwB,EAAE,CAAC;IACxC,sCAAsC;IACrB,UAAU,CAAS;IAEpC,YAAY,UAKR,EAAE;QACJ,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;QAE1C,kBAAkB;QAClB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,IAAI,CAAC,cAAc,GAAG,IAAI,wBAAc,CAAC,OAAO,CAAC,UAAU,EAAE;gBAC3D,MAAM,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;gBACrC,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QAED,6CAA6C;QAC7C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,6EAA6E;IAE7E;;OAEG;IACH,OAAO,CAAC,IAAuB;QAC7B,YAAY;QACZ,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG,IAAA,oBAAW,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC;QAED,WAAW;QACX,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC/G,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,UAAU,IAAI,CAAC,EAAE,EAAE,CAAC;QAChD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAElD,oBAAoB;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtB,qCAAqC;QACrC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;QAEvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,EAAU,EAAE,OAA+C;QACpE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;QAE5D,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC/D,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YACvB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC/D,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAC9E,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,EAAU;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAE1B,oEAAoE;QACpE,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,EAAU;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,6EAA6E;IAE7E;;OAEG;IACH,IAAI,CAAC,KAAiB;QACpB,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,SAAS;YAC3B,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5C,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACpB,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,IAA+B,EAAE,KAAa,EAAE,WAAoC,EAAE;QAC9F,MAAM,MAAM,GAAI,QAAQ,CAAC,SAAoB,IAAK,QAAQ,CAAC,MAAiB,IAAI,EAAE,CAAC;QAEnF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,SAAS;YAC3B,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;gBACzC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5C,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC;QAED,+CAA+C;QAC/C,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,6EAA6E;IAE7E;;OAEG;IACK,WAAW,CAAC,IAAuB,EAAE,SAAiB,EAAE,MAAc;QAC5E,mBAAmB;QACnB,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACjF,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;QAE/B,kCAAkC;QAClC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,UAAU;gBAAE,OAAO,KAAK,CAAC;QAChC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6EAA6E;IAErE,kBAAkB,CAAC,GAAW,EAAE,MAAqB;QAC3D,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,wBAAc,CAAC,GAAG,EAAE;gBAChC,MAAM;gBACN,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,uBAAuB;QAC7B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,6EAA6E;IAE7E;;OAEG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,iBAAiB;QAKf,MAAM,MAAM,GAAgE,EAAE,CAAC;QAE/E,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;QAC1D,CAAC;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QACxC,CAAC;QAED,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YAC9B,MAAM;SACP,CAAC;IACJ,CAAC;IAED,6EAA6E;IAE7E,OAAO;QACL,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF;AA7PD,sCA6PC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "paygate-mcp",
3
- "version": "3.6.0",
3
+ "version": "3.8.0",
4
4
  "description": "Pay-per-tool-call gating proxy for MCP servers. Wrap any MCP server with API key auth, per-tool pricing, rate limiting, and usage metering.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",