@firela/billclaw-openclaw 0.1.5 → 0.3.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/LICENSE +21 -0
- package/dist/oauth/gmail.d.ts +21 -9
- package/dist/oauth/gmail.d.ts.map +1 -1
- package/dist/oauth/gmail.js +88 -145
- package/dist/oauth/gmail.js.map +1 -1
- package/dist/oauth/plaid.d.ts +10 -8
- package/dist/oauth/plaid.d.ts.map +1 -1
- package/dist/oauth/plaid.js +55 -60
- package/dist/oauth/plaid.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +3 -0
- package/dist/plugin.js.map +1 -1
- package/dist/services/webhook-handler.d.ts +15 -8
- package/dist/services/webhook-handler.d.ts.map +1 -1
- package/dist/services/webhook-handler.js +255 -75
- package/dist/services/webhook-handler.js.map +1 -1
- package/dist/tools/index.d.ts +3 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +110 -20
- package/dist/tools/index.js.map +1 -1
- package/package.json +14 -14
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,16 @@
|
|
|
2
2
|
* Webhook handlers for BillClaw OpenClaw plugin
|
|
3
3
|
*
|
|
4
4
|
* This module provides HTTP route handlers for receiving webhooks from
|
|
5
|
-
* external services (Plaid, GoCardless, etc.)
|
|
6
|
-
*
|
|
5
|
+
* external services (Plaid, GoCardless, etc.) using the Core webhook layer.
|
|
6
|
+
*
|
|
7
|
+
* P0 Security Features:
|
|
8
|
+
* - Replay attack protection (timestamp + nonce validation)
|
|
9
|
+
* - Rate limiting (per-IP fixed-window)
|
|
10
|
+
* - Signature verification
|
|
11
|
+
*
|
|
12
|
+
* P1 Error Handling:
|
|
13
|
+
* - Sync failures emit sync.failed event
|
|
14
|
+
* - Retry logic with exponential backoff (3 retries)
|
|
7
15
|
*/
|
|
8
16
|
import type { OpenClawPluginApi } from "../types/openclaw-plugin.js";
|
|
9
17
|
/**
|
|
@@ -15,12 +23,11 @@ interface WebhookHandlerDependencies {
|
|
|
15
23
|
}
|
|
16
24
|
/**
|
|
17
25
|
* Register webhook handlers with OpenClaw HTTP routes
|
|
18
|
-
*
|
|
19
|
-
* This function registers HTTP routes for:
|
|
20
|
-
* - /webhook/plaid - Plaid webhook handler
|
|
21
|
-
* - /webhook/gocardless - GoCardless webhook handler
|
|
22
|
-
* - /webhook/test - Test webhook endpoint
|
|
23
26
|
*/
|
|
24
|
-
export declare function registerWebhookHandlers(dependencies: WebhookHandlerDependencies): void
|
|
27
|
+
export declare function registerWebhookHandlers(dependencies: WebhookHandlerDependencies): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Cleanup rate limit entries (call periodically)
|
|
30
|
+
*/
|
|
31
|
+
export declare function cleanupRateLimits(): void;
|
|
25
32
|
export {};
|
|
26
33
|
//# sourceMappingURL=webhook-handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-handler.d.ts","sourceRoot":"","sources":["../../src/services/webhook-handler.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"webhook-handler.d.ts","sourceRoot":"","sources":["../../src/services/webhook-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAYpE;;GAEG;AACH,UAAU,0BAA0B;IAClC,GAAG,EAAE,iBAAiB,CAAA;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAG5B;AAiFD;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,0BAA0B,GACvC,OAAO,CAAC,IAAI,CAAC,CA8Hf;AAkND;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAOxC"}
|
|
@@ -2,19 +2,39 @@
|
|
|
2
2
|
* Webhook handlers for BillClaw OpenClaw plugin
|
|
3
3
|
*
|
|
4
4
|
* This module provides HTTP route handlers for receiving webhooks from
|
|
5
|
-
* external services (Plaid, GoCardless, etc.)
|
|
6
|
-
*
|
|
5
|
+
* external services (Plaid, GoCardless, etc.) using the Core webhook layer.
|
|
6
|
+
*
|
|
7
|
+
* P0 Security Features:
|
|
8
|
+
* - Replay attack protection (timestamp + nonce validation)
|
|
9
|
+
* - Rate limiting (per-IP fixed-window)
|
|
10
|
+
* - Signature verification
|
|
11
|
+
*
|
|
12
|
+
* P1 Error Handling:
|
|
13
|
+
* - Sync failures emit sync.failed event
|
|
14
|
+
* - Retry logic with exponential backoff (3 retries)
|
|
7
15
|
*/
|
|
8
|
-
import {
|
|
9
|
-
|
|
16
|
+
import { WebhookProcessor, createWebhookSecurity, createWebhookDeduplication, createSyncRateLimiter, PlaidWebhookHandler, GoCardlessWebhookHandler, } from "@firela/billclaw-core";
|
|
17
|
+
import { emitEvent, emitSyncFailed } from "@firela/billclaw-core";
|
|
18
|
+
// Global state
|
|
10
19
|
let api = null;
|
|
11
20
|
let configWebhooks = [];
|
|
12
21
|
let plaidWebhookSecret;
|
|
22
|
+
// gocardlessWebhookSecret reserved for future use
|
|
23
|
+
// let gocardlessWebhookSecret: string | undefined
|
|
24
|
+
// Core components
|
|
25
|
+
let processor = null;
|
|
26
|
+
let rateLimiter = null;
|
|
27
|
+
const rateLimitMap = new Map();
|
|
28
|
+
// Rate limit configuration
|
|
29
|
+
const RATE_LIMITS = {
|
|
30
|
+
plaid: { requests: 100, window: 60_000 }, // 100/min
|
|
31
|
+
gocardless: { requests: 50, window: 60_000 }, // 50/min
|
|
32
|
+
test: { requests: 30, window: 60_000 }, // 30/min
|
|
33
|
+
};
|
|
13
34
|
/**
|
|
14
35
|
* Convert OpenClaw logger to BillClaw Logger interface
|
|
15
36
|
*/
|
|
16
37
|
function toLogger(logger) {
|
|
17
|
-
// Ensure all methods are defined and callable
|
|
18
38
|
const log = logger?.info || (() => { });
|
|
19
39
|
const logError = logger?.error || (() => { });
|
|
20
40
|
const logWarn = logger?.warn || (() => console.warn);
|
|
@@ -26,22 +46,112 @@ function toLogger(logger) {
|
|
|
26
46
|
debug: logDebug,
|
|
27
47
|
};
|
|
28
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Check rate limit for a source and IP
|
|
51
|
+
*/
|
|
52
|
+
function checkRateLimit(source, ip) {
|
|
53
|
+
const now = Date.now();
|
|
54
|
+
const key = `${source}:${ip}`;
|
|
55
|
+
const limit = RATE_LIMITS[source];
|
|
56
|
+
let entry = rateLimitMap.get(key);
|
|
57
|
+
// Reset if window expired
|
|
58
|
+
if (!entry || now > entry.resetTime) {
|
|
59
|
+
entry = { count: 0, resetTime: now + limit.window };
|
|
60
|
+
rateLimitMap.set(key, entry);
|
|
61
|
+
}
|
|
62
|
+
// Check if exceeded
|
|
63
|
+
if (entry.count >= limit.requests) {
|
|
64
|
+
const retryAfter = Math.ceil((entry.resetTime - now) / 1000);
|
|
65
|
+
return { allowed: false, retryAfter };
|
|
66
|
+
}
|
|
67
|
+
// Increment counter
|
|
68
|
+
entry.count++;
|
|
69
|
+
return { allowed: true };
|
|
70
|
+
}
|
|
29
71
|
/**
|
|
30
72
|
* Register webhook handlers with OpenClaw HTTP routes
|
|
31
|
-
*
|
|
32
|
-
* This function registers HTTP routes for:
|
|
33
|
-
* - /webhook/plaid - Plaid webhook handler
|
|
34
|
-
* - /webhook/gocardless - GoCardless webhook handler
|
|
35
|
-
* - /webhook/test - Test webhook endpoint
|
|
36
73
|
*/
|
|
37
|
-
export function registerWebhookHandlers(dependencies) {
|
|
74
|
+
export async function registerWebhookHandlers(dependencies) {
|
|
38
75
|
api = dependencies.api;
|
|
39
76
|
plaidWebhookSecret = dependencies.plaidWebhookSecret;
|
|
77
|
+
// gocardlessWebhookSecret reserved for future use
|
|
78
|
+
// gocardlessWebhookSecret = dependencies.gocardlessWebhookSecret
|
|
40
79
|
// Get webhooks from config
|
|
41
80
|
const pluginConfig = api.pluginConfig;
|
|
42
81
|
configWebhooks = pluginConfig?.webhooks || [];
|
|
43
|
-
api.logger
|
|
82
|
+
const logger = toLogger(api.logger);
|
|
83
|
+
// Initialize Core components
|
|
84
|
+
const storageBase = pluginConfig?.storage?.path || "~/.billclaw";
|
|
85
|
+
const basePath = storageBase.startsWith("~")
|
|
86
|
+
? storageBase.replace("~", process.env.HOME || "")
|
|
87
|
+
: storageBase;
|
|
88
|
+
// Create deduplication cache
|
|
89
|
+
const deduplication = await createWebhookDeduplication({
|
|
90
|
+
basePath,
|
|
91
|
+
logger,
|
|
92
|
+
});
|
|
93
|
+
// Create security layer
|
|
94
|
+
const security = createWebhookSecurity(deduplication, logger);
|
|
95
|
+
// Create rate limiter
|
|
96
|
+
rateLimiter = createSyncRateLimiter(logger);
|
|
97
|
+
// Create processor
|
|
98
|
+
processor = new WebhookProcessor({
|
|
99
|
+
logger,
|
|
100
|
+
webhookSecret: plaidWebhookSecret,
|
|
101
|
+
security,
|
|
102
|
+
});
|
|
103
|
+
// Register handlers
|
|
104
|
+
processor.registerHandler("plaid", new PlaidWebhookHandler({
|
|
105
|
+
logger,
|
|
106
|
+
findAccountByItemId: async (itemId) => {
|
|
107
|
+
const accounts = pluginConfig?.accounts || [];
|
|
108
|
+
return accounts.find((acc) => acc.type === "plaid" && acc.plaidItemId === itemId && acc.enabled);
|
|
109
|
+
},
|
|
110
|
+
triggerSync: async (accountId) => {
|
|
111
|
+
const { plaidSyncTool } = await import("../tools/index.js");
|
|
112
|
+
// P1: Retry logic with exponential backoff
|
|
113
|
+
let lastError = null;
|
|
114
|
+
for (let attempt = 0; attempt < 3; attempt++) {
|
|
115
|
+
try {
|
|
116
|
+
await plaidSyncTool.execute(api, { accountId });
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
lastError = error;
|
|
121
|
+
if (attempt < 2) {
|
|
122
|
+
// Exponential backoff: 1s, 2s, 4s
|
|
123
|
+
const delay = 2 ** attempt * 1000;
|
|
124
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// All retries failed - emit sync.failed event (P1)
|
|
129
|
+
logger.error?.(`Webhook-triggered sync failed for ${accountId}:`, lastError);
|
|
130
|
+
await emitSyncFailed(logger, configWebhooks, accountId, `webhook_${Date.now()}`, lastError?.message || "Unknown error").catch((err) => logger.debug?.(`Event emission failed:`, err));
|
|
131
|
+
throw lastError;
|
|
132
|
+
},
|
|
133
|
+
emitEvent: async (eventType, data) => {
|
|
134
|
+
await emitEvent(logger, configWebhooks, eventType, data);
|
|
135
|
+
},
|
|
136
|
+
webhooks: configWebhooks,
|
|
137
|
+
rateLimiter: {
|
|
138
|
+
isWebhookSyncAllowed: (accountId) => {
|
|
139
|
+
if (!rateLimiter)
|
|
140
|
+
return true;
|
|
141
|
+
return rateLimiter.isWebhookSyncAllowed(accountId);
|
|
142
|
+
},
|
|
143
|
+
recordWebhookSync: (accountId) => {
|
|
144
|
+
if (!rateLimiter)
|
|
145
|
+
return;
|
|
146
|
+
rateLimiter.recordWebhookSync(accountId);
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
}));
|
|
150
|
+
processor.registerHandler("gocardless", new GoCardlessWebhookHandler({
|
|
151
|
+
logger,
|
|
152
|
+
}));
|
|
44
153
|
// Register HTTP routes
|
|
154
|
+
api.logger.info?.("billclaw webhook handler registered with Core layer");
|
|
45
155
|
api.http?.register({
|
|
46
156
|
path: "/webhook/plaid",
|
|
47
157
|
method: "POST",
|
|
@@ -61,67 +171,75 @@ export function registerWebhookHandlers(dependencies) {
|
|
|
61
171
|
handler: handleTestWebhook,
|
|
62
172
|
});
|
|
63
173
|
}
|
|
174
|
+
/**
|
|
175
|
+
* Get client IP from request
|
|
176
|
+
*/
|
|
177
|
+
function getClientIp(request) {
|
|
178
|
+
// Check for forwarded IP (proxy/load balancer)
|
|
179
|
+
const forwarded = request.headers["x-forwarded-for"];
|
|
180
|
+
if (forwarded) {
|
|
181
|
+
return forwarded.split(",")[0].trim();
|
|
182
|
+
}
|
|
183
|
+
// Check for real IP header
|
|
184
|
+
const realIp = request.headers["x-real-ip"];
|
|
185
|
+
if (realIp) {
|
|
186
|
+
return realIp;
|
|
187
|
+
}
|
|
188
|
+
// Fallback to query param or default
|
|
189
|
+
return request.query.ip || "unknown";
|
|
190
|
+
}
|
|
64
191
|
/**
|
|
65
192
|
* Handle Plaid webhook
|
|
66
193
|
*
|
|
67
|
-
*
|
|
68
|
-
* - TRANSACTIONS/SYNC_UPDATES_AVAILABLE: Trigger sync for the item
|
|
69
|
-
* - ITEM/ERROR: Emit account.error event
|
|
70
|
-
* - ITEM/LOGIN_REQUIRED: Notify user to re-authenticate
|
|
194
|
+
* Applies rate limiting and delegates to Core processor.
|
|
71
195
|
*/
|
|
72
196
|
async function handlePlaidWebhook(request) {
|
|
73
197
|
try {
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
status: 401,
|
|
87
|
-
body: { received: false, error: "Invalid signature" },
|
|
88
|
-
};
|
|
89
|
-
}
|
|
198
|
+
const ip = getClientIp(request);
|
|
199
|
+
// P0: Rate limiting check
|
|
200
|
+
const rateLimit = checkRateLimit("plaid", ip);
|
|
201
|
+
if (!rateLimit.allowed) {
|
|
202
|
+
api?.logger.warn?.(`Rate limit exceeded for Plaid webhook from ${ip}`);
|
|
203
|
+
return {
|
|
204
|
+
status: 429,
|
|
205
|
+
body: {
|
|
206
|
+
received: false,
|
|
207
|
+
error: `Rate limit exceeded. Retry after ${rateLimit.retryAfter} seconds`,
|
|
208
|
+
},
|
|
209
|
+
};
|
|
90
210
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
const pluginConfig = api?.pluginConfig;
|
|
97
|
-
const account = pluginConfig?.accounts?.find((acc) => acc.type === "plaid" && acc.plaidItemId === itemId && acc.enabled);
|
|
98
|
-
if (account && api) {
|
|
99
|
-
// Trigger async sync (don't wait for completion)
|
|
100
|
-
const { plaidSyncTool } = await import("../tools/index.js");
|
|
101
|
-
plaidSyncTool
|
|
102
|
-
.execute(api, { accountId: account.id })
|
|
103
|
-
.catch((error) => {
|
|
104
|
-
api?.logger.error?.(`Webhook-triggered sync failed:`, error);
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
break;
|
|
109
|
-
case "ITEM":
|
|
110
|
-
if (webhookCode === "ERROR" || webhookCode === "LOGIN_REQUIRED") {
|
|
111
|
-
const error = body.error ?? {
|
|
112
|
-
error_code: webhookCode,
|
|
113
|
-
error_message: "Item login required",
|
|
114
|
-
};
|
|
115
|
-
// Emit account error event
|
|
116
|
-
await emitEvent(toLogger(api.logger), configWebhooks, "account.error", {
|
|
117
|
-
accountId: itemId,
|
|
118
|
-
accountType: "plaid",
|
|
119
|
-
error: JSON.stringify(error),
|
|
120
|
-
}).catch((err) => api?.logger.debug?.(`Event emission failed:`, err));
|
|
121
|
-
}
|
|
122
|
-
break;
|
|
211
|
+
if (!processor) {
|
|
212
|
+
return {
|
|
213
|
+
status: 500,
|
|
214
|
+
body: { received: false, error: "Webhook processor not initialized" },
|
|
215
|
+
};
|
|
123
216
|
}
|
|
124
|
-
|
|
217
|
+
// Normalize request to Core format
|
|
218
|
+
const webhookRequest = {
|
|
219
|
+
body: request.body,
|
|
220
|
+
headers: request.headers,
|
|
221
|
+
query: request.query,
|
|
222
|
+
source: "plaid",
|
|
223
|
+
timestamp: request.headers["plaid-timestamp"]
|
|
224
|
+
? parseInt(request.headers["plaid-timestamp"], 10)
|
|
225
|
+
: undefined,
|
|
226
|
+
nonce: request.body.webhook_id
|
|
227
|
+
? `${request.body.webhook_id}_${request.body.webhook_code}`
|
|
228
|
+
: undefined,
|
|
229
|
+
signature: request.headers["plaid-verification"],
|
|
230
|
+
};
|
|
231
|
+
// Process with Core
|
|
232
|
+
const response = await processor.process(webhookRequest);
|
|
233
|
+
// Convert Core response to OpenClaw format
|
|
234
|
+
return {
|
|
235
|
+
status: response.status,
|
|
236
|
+
body: {
|
|
237
|
+
received: response.body.received,
|
|
238
|
+
error: typeof response.body.error === "string"
|
|
239
|
+
? response.body.error
|
|
240
|
+
: response.body.error?.message || response.body.error?.code,
|
|
241
|
+
},
|
|
242
|
+
};
|
|
125
243
|
}
|
|
126
244
|
catch (error) {
|
|
127
245
|
api?.logger.error?.(`Error handling Plaid webhook:`, error);
|
|
@@ -134,29 +252,80 @@ async function handlePlaidWebhook(request) {
|
|
|
134
252
|
/**
|
|
135
253
|
* Handle GoCardless webhook
|
|
136
254
|
*
|
|
137
|
-
*
|
|
255
|
+
* Applies rate limiting and delegates to Core processor.
|
|
138
256
|
*/
|
|
139
|
-
async function handleGoCardlessWebhook(
|
|
257
|
+
async function handleGoCardlessWebhook(request) {
|
|
140
258
|
try {
|
|
141
|
-
|
|
142
|
-
//
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
259
|
+
const ip = getClientIp(request);
|
|
260
|
+
// P0: Rate limiting check
|
|
261
|
+
const rateLimit = checkRateLimit("gocardless", ip);
|
|
262
|
+
if (!rateLimit.allowed) {
|
|
263
|
+
api?.logger.warn?.(`Rate limit exceeded for GoCardless webhook from ${ip}`);
|
|
264
|
+
return {
|
|
265
|
+
status: 429,
|
|
266
|
+
body: {
|
|
267
|
+
received: false,
|
|
268
|
+
error: `Rate limit exceeded. Retry after ${rateLimit.retryAfter} seconds`,
|
|
269
|
+
},
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
if (!processor) {
|
|
273
|
+
return {
|
|
274
|
+
status: 500,
|
|
275
|
+
body: { received: false, error: "Webhook processor not initialized" },
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
// Normalize request to Core format
|
|
279
|
+
const webhookRequest = {
|
|
280
|
+
body: request.body,
|
|
281
|
+
headers: request.headers,
|
|
282
|
+
query: request.query,
|
|
283
|
+
source: "gocardless",
|
|
284
|
+
// GoCardless doesn't provide timestamp/nonce in standard format
|
|
285
|
+
// Signature is in body.signature
|
|
286
|
+
signature: request.body?.signature,
|
|
287
|
+
};
|
|
288
|
+
// Process with Core
|
|
289
|
+
const response = await processor.process(webhookRequest);
|
|
290
|
+
// Convert Core response to OpenClaw format
|
|
291
|
+
return {
|
|
292
|
+
status: response.status,
|
|
293
|
+
body: {
|
|
294
|
+
received: response.body.received,
|
|
295
|
+
error: typeof response.body.error === "string"
|
|
296
|
+
? response.body.error
|
|
297
|
+
: response.body.error?.message || response.body.error?.code,
|
|
298
|
+
},
|
|
299
|
+
};
|
|
147
300
|
}
|
|
148
301
|
catch (error) {
|
|
149
302
|
api?.logger.error?.(`Error handling GoCardless webhook:`, error);
|
|
150
|
-
return {
|
|
303
|
+
return {
|
|
304
|
+
status: 500,
|
|
305
|
+
body: { received: false, error: "Internal server error" },
|
|
306
|
+
};
|
|
151
307
|
}
|
|
152
308
|
}
|
|
153
309
|
/**
|
|
154
310
|
* Handle test webhook
|
|
155
311
|
*
|
|
156
|
-
* Sends a test event to all configured webhooks
|
|
312
|
+
* Sends a test event to all configured webhooks.
|
|
157
313
|
*/
|
|
158
314
|
async function handleTestWebhook(_request) {
|
|
159
315
|
try {
|
|
316
|
+
const ip = getClientIp(_request);
|
|
317
|
+
// P0: Rate limiting check
|
|
318
|
+
const rateLimit = checkRateLimit("test", ip);
|
|
319
|
+
if (!rateLimit.allowed) {
|
|
320
|
+
api?.logger.warn?.(`Rate limit exceeded for test webhook from ${ip}`);
|
|
321
|
+
return {
|
|
322
|
+
status: 429,
|
|
323
|
+
body: {
|
|
324
|
+
sent: false,
|
|
325
|
+
error: `Rate limit exceeded. Retry after ${rateLimit.retryAfter} seconds`,
|
|
326
|
+
},
|
|
327
|
+
};
|
|
328
|
+
}
|
|
160
329
|
api?.logger.info?.("Received test webhook request");
|
|
161
330
|
// Emit test event to all configured webhooks
|
|
162
331
|
await emitEvent(toLogger(api.logger), configWebhooks, "webhook.test", {
|
|
@@ -173,4 +342,15 @@ async function handleTestWebhook(_request) {
|
|
|
173
342
|
};
|
|
174
343
|
}
|
|
175
344
|
}
|
|
345
|
+
/**
|
|
346
|
+
* Cleanup rate limit entries (call periodically)
|
|
347
|
+
*/
|
|
348
|
+
export function cleanupRateLimits() {
|
|
349
|
+
const now = Date.now();
|
|
350
|
+
for (const [key, entry] of rateLimitMap.entries()) {
|
|
351
|
+
if (now > entry.resetTime) {
|
|
352
|
+
rateLimitMap.delete(key);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}
|
|
176
356
|
//# sourceMappingURL=webhook-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-handler.js","sourceRoot":"","sources":["../../src/services/webhook-handler.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"webhook-handler.js","sourceRoot":"","sources":["../../src/services/webhook-handler.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* OpenClaw tool adapters for BillClaw
|
|
3
3
|
*
|
|
4
4
|
* These adapters wrap the core BillClaw functionality to work with
|
|
5
|
-
* OpenClaw's tool API.
|
|
5
|
+
* OpenClaw's tool API. Returns dual-mode output:
|
|
6
|
+
* - machineReadable: Structured data for AI agents to parse and act on
|
|
7
|
+
* - humanReadable: Formatted text for display to users
|
|
6
8
|
*/
|
|
7
9
|
import type { OpenClawPluginApi } from "../types/openclaw-plugin.js";
|
|
8
10
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAYpE;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;iBAYL,iBAAiB,UAAU;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;CA+DrE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;iBAkBlB,iBAAiB,UACd;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;CAiEhD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;kBAgBhB,iBAAiB,UACf;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;;;;;;CAqB3C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;iBAkB1B,iBAAiB,UACd;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;CAqElD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;iBAYhB,iBAAiB,WAAW;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;CAoBnE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;kBAYb,iBAAiB,UAAU;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;CAmBlE,CAAA"}
|