pay-lobster 1.0.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 +401 -0
- package/README.md.bak +401 -0
- package/dist/agent.d.ts +132 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +224 -0
- package/dist/agent.js.map +1 -0
- package/dist/analytics.d.ts +120 -0
- package/dist/analytics.d.ts.map +1 -0
- package/dist/analytics.js +345 -0
- package/dist/analytics.js.map +1 -0
- package/dist/approvals.d.ts +168 -0
- package/dist/approvals.d.ts.map +1 -0
- package/dist/approvals.js +406 -0
- package/dist/approvals.js.map +1 -0
- package/dist/circle-client.d.ts +152 -0
- package/dist/circle-client.d.ts.map +1 -0
- package/dist/circle-client.js +266 -0
- package/dist/circle-client.js.map +1 -0
- package/dist/commission.d.ts +191 -0
- package/dist/commission.d.ts.map +1 -0
- package/dist/commission.js +475 -0
- package/dist/commission.js.map +1 -0
- package/dist/condition-builder.d.ts +98 -0
- package/dist/condition-builder.d.ts.map +1 -0
- package/dist/condition-builder.js +193 -0
- package/dist/condition-builder.js.map +1 -0
- package/dist/contacts.d.ts +179 -0
- package/dist/contacts.d.ts.map +1 -0
- package/dist/contacts.js +445 -0
- package/dist/contacts.js.map +1 -0
- package/dist/easy.d.ts +22 -0
- package/dist/easy.d.ts.map +1 -0
- package/dist/easy.js +40 -0
- package/dist/easy.js.map +1 -0
- package/dist/erc8004/constants.d.ts +152 -0
- package/dist/erc8004/constants.d.ts.map +1 -0
- package/dist/erc8004/constants.js +114 -0
- package/dist/erc8004/constants.js.map +1 -0
- package/dist/erc8004/discovery.d.ts +84 -0
- package/dist/erc8004/discovery.d.ts.map +1 -0
- package/dist/erc8004/discovery.js +217 -0
- package/dist/erc8004/discovery.js.map +1 -0
- package/dist/erc8004/identity.d.ts +91 -0
- package/dist/erc8004/identity.d.ts.map +1 -0
- package/dist/erc8004/identity.js +250 -0
- package/dist/erc8004/identity.js.map +1 -0
- package/dist/erc8004/index.d.ts +147 -0
- package/dist/erc8004/index.d.ts.map +1 -0
- package/dist/erc8004/index.js +225 -0
- package/dist/erc8004/index.js.map +1 -0
- package/dist/erc8004/reputation.d.ts +133 -0
- package/dist/erc8004/reputation.d.ts.map +1 -0
- package/dist/erc8004/reputation.js +277 -0
- package/dist/erc8004/reputation.js.map +1 -0
- package/dist/escrow-templates.d.ts +38 -0
- package/dist/escrow-templates.d.ts.map +1 -0
- package/dist/escrow-templates.js +419 -0
- package/dist/escrow-templates.js.map +1 -0
- package/dist/escrow.d.ts +320 -0
- package/dist/escrow.d.ts.map +1 -0
- package/dist/escrow.js +854 -0
- package/dist/escrow.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/invoices.d.ts +212 -0
- package/dist/invoices.d.ts.map +1 -0
- package/dist/invoices.js +393 -0
- package/dist/invoices.js.map +1 -0
- package/dist/notifications.d.ts +141 -0
- package/dist/notifications.d.ts.map +1 -0
- package/dist/notifications.js +350 -0
- package/dist/notifications.js.map +1 -0
- package/dist/tips.d.ts +171 -0
- package/dist/tips.d.ts.map +1 -0
- package/dist/tips.js +390 -0
- package/dist/tips.js.map +1 -0
- package/dist/types.d.ts +100 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/x402-client.d.ts +127 -0
- package/dist/x402-client.d.ts.map +1 -0
- package/dist/x402-client.js +350 -0
- package/dist/x402-client.js.map +1 -0
- package/dist/x402-server.d.ts +133 -0
- package/dist/x402-server.d.ts.map +1 -0
- package/dist/x402-server.js +330 -0
- package/dist/x402-server.js.map +1 -0
- package/lib/agent.ts +273 -0
- package/lib/analytics.ts +474 -0
- package/lib/analytics.ts.bak +474 -0
- package/lib/approvals.ts +585 -0
- package/lib/approvals.ts.bak +585 -0
- package/lib/circle-client.ts +376 -0
- package/lib/circle-client.ts.bak +376 -0
- package/lib/commission.ts +680 -0
- package/lib/commission.ts.bak +680 -0
- package/lib/condition-builder.ts +223 -0
- package/lib/condition-builder.ts.bak +223 -0
- package/lib/contacts.ts +615 -0
- package/lib/contacts.ts.bak +615 -0
- package/lib/easy.ts +46 -0
- package/lib/easy.ts.bak +352 -0
- package/lib/erc8004/constants.ts +175 -0
- package/lib/erc8004/discovery.ts +299 -0
- package/lib/erc8004/identity.ts +327 -0
- package/lib/erc8004/index.ts +285 -0
- package/lib/erc8004/reputation.ts +368 -0
- package/lib/escrow-templates.ts +462 -0
- package/lib/escrow.ts +1216 -0
- package/lib/index.ts +13 -0
- package/lib/invoices.ts +588 -0
- package/lib/notifications.ts +484 -0
- package/lib/tips.ts +570 -0
- package/lib/types.ts +108 -0
- package/lib/x402-client.ts +471 -0
- package/lib/x402-server.ts +462 -0
- package/package.json +58 -0
package/dist/tips.js
ADDED
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Tip Jar / Creator Economy Module
|
|
4
|
+
*
|
|
5
|
+
* Enable Clawdbot operators and agents to receive USDC tips
|
|
6
|
+
* via simple commands. Built for the creator economy.
|
|
7
|
+
*/
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.TipJarManager = void 0;
|
|
13
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
14
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
15
|
+
const path_1 = __importDefault(require("path"));
|
|
16
|
+
const DATA_DIR = process.env.USDC_DATA_DIR || './data';
|
|
17
|
+
/**
|
|
18
|
+
* Tip Jar Manager
|
|
19
|
+
*/
|
|
20
|
+
class TipJarManager {
|
|
21
|
+
constructor(dataDir = DATA_DIR) {
|
|
22
|
+
this.jarsPath = path_1.default.join(dataDir, 'tip-jars.json');
|
|
23
|
+
this.tipsPath = path_1.default.join(dataDir, 'tips.json');
|
|
24
|
+
}
|
|
25
|
+
async loadJars() {
|
|
26
|
+
try {
|
|
27
|
+
const data = await promises_1.default.readFile(this.jarsPath, 'utf-8');
|
|
28
|
+
return JSON.parse(data);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async saveJars(jars) {
|
|
35
|
+
await promises_1.default.mkdir(path_1.default.dirname(this.jarsPath), { recursive: true });
|
|
36
|
+
await promises_1.default.writeFile(this.jarsPath, JSON.stringify(jars, null, 2));
|
|
37
|
+
}
|
|
38
|
+
async loadTips() {
|
|
39
|
+
try {
|
|
40
|
+
const data = await promises_1.default.readFile(this.tipsPath, 'utf-8');
|
|
41
|
+
return JSON.parse(data);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async saveTips(tips) {
|
|
48
|
+
await promises_1.default.mkdir(path_1.default.dirname(this.tipsPath), { recursive: true });
|
|
49
|
+
await promises_1.default.writeFile(this.tipsPath, JSON.stringify(tips, null, 2));
|
|
50
|
+
}
|
|
51
|
+
// ============ Tip Jar Management ============
|
|
52
|
+
/**
|
|
53
|
+
* Create a new tip jar
|
|
54
|
+
*/
|
|
55
|
+
async createJar(params) {
|
|
56
|
+
const jars = await this.loadJars();
|
|
57
|
+
// Check for duplicate slug
|
|
58
|
+
if (params.publicSlug) {
|
|
59
|
+
const existing = jars.find(j => j.publicSlug === params.publicSlug);
|
|
60
|
+
if (existing) {
|
|
61
|
+
throw new Error(`Slug "${params.publicSlug}" is already taken`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const jar = {
|
|
65
|
+
id: crypto_1.default.randomUUID(),
|
|
66
|
+
name: params.name || `${params.ownerName}'s Tip Jar`,
|
|
67
|
+
description: params.description,
|
|
68
|
+
ownerId: params.ownerId,
|
|
69
|
+
ownerName: params.ownerName,
|
|
70
|
+
addresses: params.addresses.map((a, i) => ({
|
|
71
|
+
...a,
|
|
72
|
+
isDefault: i === 0,
|
|
73
|
+
})),
|
|
74
|
+
settings: {
|
|
75
|
+
minTip: params.settings?.minTip || '1',
|
|
76
|
+
suggestedAmounts: params.settings?.suggestedAmounts || ['5', '10', '25', '50'],
|
|
77
|
+
thankYouMessage: params.settings?.thankYouMessage || 'Thanks for the tip! 🙏',
|
|
78
|
+
allowAnonymous: params.settings?.allowAnonymous ?? true,
|
|
79
|
+
notifyOnTip: params.settings?.notifyOnTip ?? true,
|
|
80
|
+
},
|
|
81
|
+
stats: {
|
|
82
|
+
totalReceived: '0',
|
|
83
|
+
tipCount: 0,
|
|
84
|
+
uniqueTippers: 0,
|
|
85
|
+
largestTip: '0',
|
|
86
|
+
},
|
|
87
|
+
publicSlug: params.publicSlug,
|
|
88
|
+
createdAt: new Date().toISOString(),
|
|
89
|
+
updatedAt: new Date().toISOString(),
|
|
90
|
+
};
|
|
91
|
+
jars.push(jar);
|
|
92
|
+
await this.saveJars(jars);
|
|
93
|
+
return jar;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get tip jar by ID, slug, or owner
|
|
97
|
+
*/
|
|
98
|
+
async getJar(identifier) {
|
|
99
|
+
const jars = await this.loadJars();
|
|
100
|
+
return jars.find(j => j.id === identifier ||
|
|
101
|
+
j.publicSlug === identifier ||
|
|
102
|
+
j.ownerId === identifier) || null;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Update tip jar settings
|
|
106
|
+
*/
|
|
107
|
+
async updateJar(id, updates) {
|
|
108
|
+
const jars = await this.loadJars();
|
|
109
|
+
const jar = jars.find(j => j.id === id);
|
|
110
|
+
if (jar) {
|
|
111
|
+
if (updates.name)
|
|
112
|
+
jar.name = updates.name;
|
|
113
|
+
if (updates.description !== undefined)
|
|
114
|
+
jar.description = updates.description;
|
|
115
|
+
if (updates.publicSlug !== undefined) {
|
|
116
|
+
// Check for duplicate
|
|
117
|
+
if (updates.publicSlug && jars.some(j => j.id !== id && j.publicSlug === updates.publicSlug)) {
|
|
118
|
+
throw new Error(`Slug "${updates.publicSlug}" is already taken`);
|
|
119
|
+
}
|
|
120
|
+
jar.publicSlug = updates.publicSlug;
|
|
121
|
+
}
|
|
122
|
+
if (updates.settings) {
|
|
123
|
+
jar.settings = { ...jar.settings, ...updates.settings };
|
|
124
|
+
}
|
|
125
|
+
jar.updatedAt = new Date().toISOString();
|
|
126
|
+
await this.saveJars(jars);
|
|
127
|
+
}
|
|
128
|
+
return jar || null;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Add address to tip jar
|
|
132
|
+
*/
|
|
133
|
+
async addAddress(jarId, chain, address) {
|
|
134
|
+
const jars = await this.loadJars();
|
|
135
|
+
const jar = jars.find(j => j.id === jarId);
|
|
136
|
+
if (jar) {
|
|
137
|
+
if (jar.addresses.some(a => a.chain === chain)) {
|
|
138
|
+
throw new Error(`Address for ${chain} already exists`);
|
|
139
|
+
}
|
|
140
|
+
jar.addresses.push({ chain, address, isDefault: false });
|
|
141
|
+
jar.updatedAt = new Date().toISOString();
|
|
142
|
+
await this.saveJars(jars);
|
|
143
|
+
}
|
|
144
|
+
return jar || null;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Set default address
|
|
148
|
+
*/
|
|
149
|
+
async setDefaultAddress(jarId, chain) {
|
|
150
|
+
const jars = await this.loadJars();
|
|
151
|
+
const jar = jars.find(j => j.id === jarId);
|
|
152
|
+
if (jar) {
|
|
153
|
+
jar.addresses.forEach(a => {
|
|
154
|
+
a.isDefault = a.chain === chain;
|
|
155
|
+
});
|
|
156
|
+
jar.updatedAt = new Date().toISOString();
|
|
157
|
+
await this.saveJars(jars);
|
|
158
|
+
}
|
|
159
|
+
return jar || null;
|
|
160
|
+
}
|
|
161
|
+
// ============ Tip Processing ============
|
|
162
|
+
/**
|
|
163
|
+
* Record a tip
|
|
164
|
+
*/
|
|
165
|
+
async recordTip(params) {
|
|
166
|
+
const jars = await this.loadJars();
|
|
167
|
+
const jar = jars.find(j => j.id === params.tipJarId);
|
|
168
|
+
if (!jar) {
|
|
169
|
+
throw new Error('Tip jar not found');
|
|
170
|
+
}
|
|
171
|
+
const tips = await this.loadTips();
|
|
172
|
+
const tip = {
|
|
173
|
+
id: crypto_1.default.randomUUID(),
|
|
174
|
+
tipJarId: params.tipJarId,
|
|
175
|
+
fromAddress: params.fromAddress,
|
|
176
|
+
fromName: params.fromName,
|
|
177
|
+
isAnonymous: params.isAnonymous ?? false,
|
|
178
|
+
amount: params.amount,
|
|
179
|
+
chain: params.chain,
|
|
180
|
+
txHash: params.txHash,
|
|
181
|
+
message: params.message,
|
|
182
|
+
status: 'confirmed',
|
|
183
|
+
confirmedAt: new Date().toISOString(),
|
|
184
|
+
createdAt: new Date().toISOString(),
|
|
185
|
+
};
|
|
186
|
+
tips.push(tip);
|
|
187
|
+
await this.saveTips(tips);
|
|
188
|
+
// Update jar stats
|
|
189
|
+
const amount = parseFloat(params.amount);
|
|
190
|
+
jar.stats.totalReceived = (parseFloat(jar.stats.totalReceived) + amount).toString();
|
|
191
|
+
jar.stats.tipCount++;
|
|
192
|
+
// Check if new unique tipper
|
|
193
|
+
const previousTips = tips.filter(t => t.tipJarId === jar.id &&
|
|
194
|
+
t.fromAddress.toLowerCase() === params.fromAddress.toLowerCase() &&
|
|
195
|
+
t.id !== tip.id);
|
|
196
|
+
if (previousTips.length === 0) {
|
|
197
|
+
jar.stats.uniqueTippers++;
|
|
198
|
+
}
|
|
199
|
+
// Update largest tip
|
|
200
|
+
if (amount > parseFloat(jar.stats.largestTip)) {
|
|
201
|
+
jar.stats.largestTip = params.amount;
|
|
202
|
+
}
|
|
203
|
+
jar.stats.lastTipAt = new Date().toISOString();
|
|
204
|
+
jar.updatedAt = new Date().toISOString();
|
|
205
|
+
await this.saveJars(jars);
|
|
206
|
+
return tip;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Get tips for a jar
|
|
210
|
+
*/
|
|
211
|
+
async getTips(jarId, options) {
|
|
212
|
+
let tips = await this.loadTips();
|
|
213
|
+
tips = tips.filter(t => t.tipJarId === jarId);
|
|
214
|
+
if (options?.includeAnonymous === false) {
|
|
215
|
+
tips = tips.filter(t => !t.isAnonymous);
|
|
216
|
+
}
|
|
217
|
+
tips.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
|
|
218
|
+
if (options?.limit) {
|
|
219
|
+
tips = tips.slice(0, options.limit);
|
|
220
|
+
}
|
|
221
|
+
return tips;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Get recent tips across all jars (for activity feed)
|
|
225
|
+
*/
|
|
226
|
+
async getRecentTips(limit = 10) {
|
|
227
|
+
const tips = await this.loadTips();
|
|
228
|
+
const jars = await this.loadJars();
|
|
229
|
+
const jarMap = new Map(jars.map(j => [j.id, j]));
|
|
230
|
+
return tips
|
|
231
|
+
.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())
|
|
232
|
+
.slice(0, limit)
|
|
233
|
+
.map(tip => ({
|
|
234
|
+
...tip,
|
|
235
|
+
jarName: jarMap.get(tip.tipJarId)?.name || 'Unknown',
|
|
236
|
+
}));
|
|
237
|
+
}
|
|
238
|
+
// ============ Leaderboards ============
|
|
239
|
+
/**
|
|
240
|
+
* Generate leaderboard for a tip jar
|
|
241
|
+
*/
|
|
242
|
+
async getLeaderboard(jarId, period = 'all-time') {
|
|
243
|
+
let tips = await this.loadTips();
|
|
244
|
+
tips = tips.filter(t => t.tipJarId === jarId && !t.isAnonymous);
|
|
245
|
+
// Filter by period
|
|
246
|
+
const now = new Date();
|
|
247
|
+
if (period === 'weekly') {
|
|
248
|
+
const weekAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
|
|
249
|
+
tips = tips.filter(t => new Date(t.createdAt) >= weekAgo);
|
|
250
|
+
}
|
|
251
|
+
else if (period === 'monthly') {
|
|
252
|
+
const monthAgo = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);
|
|
253
|
+
tips = tips.filter(t => new Date(t.createdAt) >= monthAgo);
|
|
254
|
+
}
|
|
255
|
+
// Aggregate by tipper
|
|
256
|
+
const tipperMap = new Map();
|
|
257
|
+
for (const tip of tips) {
|
|
258
|
+
const key = tip.fromAddress.toLowerCase();
|
|
259
|
+
const existing = tipperMap.get(key) || {
|
|
260
|
+
name: tip.fromName || this.shortAddress(tip.fromAddress),
|
|
261
|
+
total: 0,
|
|
262
|
+
count: 0
|
|
263
|
+
};
|
|
264
|
+
existing.total += parseFloat(tip.amount);
|
|
265
|
+
existing.count++;
|
|
266
|
+
if (tip.fromName)
|
|
267
|
+
existing.name = tip.fromName;
|
|
268
|
+
tipperMap.set(key, existing);
|
|
269
|
+
}
|
|
270
|
+
// Sort and rank
|
|
271
|
+
const entries = Array.from(tipperMap.entries())
|
|
272
|
+
.map(([address, data]) => ({
|
|
273
|
+
address,
|
|
274
|
+
name: data.name,
|
|
275
|
+
totalTipped: data.total.toFixed(2),
|
|
276
|
+
tipCount: data.count,
|
|
277
|
+
}))
|
|
278
|
+
.sort((a, b) => parseFloat(b.totalTipped) - parseFloat(a.totalTipped))
|
|
279
|
+
.map((entry, i) => ({ rank: i + 1, ...entry }));
|
|
280
|
+
return {
|
|
281
|
+
tipJarId: jarId,
|
|
282
|
+
period,
|
|
283
|
+
entries,
|
|
284
|
+
generatedAt: new Date().toISOString(),
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
// ============ Tip Commands (for Clawdbot) ============
|
|
288
|
+
/**
|
|
289
|
+
* Parse tip command and return tip info
|
|
290
|
+
* Supports: "tip @gustav 10", "tip 5 to gustav", etc.
|
|
291
|
+
*/
|
|
292
|
+
parseTipCommand(command) {
|
|
293
|
+
// Patterns:
|
|
294
|
+
// "tip @gustav 10"
|
|
295
|
+
// "tip 10 to @gustav"
|
|
296
|
+
// "tip gustav 10 usdc thanks!"
|
|
297
|
+
const patterns = [
|
|
298
|
+
// tip @recipient amount [message]
|
|
299
|
+
/^tip\s+@?(\w+)\s+(\d+(?:\.\d+)?)\s*(?:usdc)?\s*(.*)$/i,
|
|
300
|
+
// tip amount to @recipient [message]
|
|
301
|
+
/^tip\s+(\d+(?:\.\d+)?)\s*(?:usdc)?\s+to\s+@?(\w+)\s*(.*)$/i,
|
|
302
|
+
];
|
|
303
|
+
for (const pattern of patterns) {
|
|
304
|
+
const match = command.match(pattern);
|
|
305
|
+
if (match) {
|
|
306
|
+
if (pattern === patterns[0]) {
|
|
307
|
+
return {
|
|
308
|
+
recipient: match[1],
|
|
309
|
+
amount: match[2],
|
|
310
|
+
message: match[3]?.trim() || undefined,
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
return {
|
|
315
|
+
recipient: match[2],
|
|
316
|
+
amount: match[1],
|
|
317
|
+
message: match[3]?.trim() || undefined,
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
return null;
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Generate tip jar card/embed for display
|
|
326
|
+
*/
|
|
327
|
+
formatTipJarCard(jar) {
|
|
328
|
+
const defaultAddr = jar.addresses.find(a => a.isDefault) || jar.addresses[0];
|
|
329
|
+
let card = `💰 **${jar.name}**\n`;
|
|
330
|
+
if (jar.description) {
|
|
331
|
+
card += `${jar.description}\n`;
|
|
332
|
+
}
|
|
333
|
+
card += `\n`;
|
|
334
|
+
card += `Owner: ${jar.ownerName}\n`;
|
|
335
|
+
card += `Total Received: **$${parseFloat(jar.stats.totalReceived).toFixed(2)} USDC**\n`;
|
|
336
|
+
card += `Tips: ${jar.stats.tipCount} from ${jar.stats.uniqueTippers} tippers\n`;
|
|
337
|
+
card += `\n`;
|
|
338
|
+
card += `**Quick Tip:**\n`;
|
|
339
|
+
card += jar.settings.suggestedAmounts.map(a => `[$${a}]`).join(' ') + '\n';
|
|
340
|
+
card += `\n`;
|
|
341
|
+
card += `Send to: \`${defaultAddr.address}\`\n`;
|
|
342
|
+
card += `Chain: ${defaultAddr.chain}\n`;
|
|
343
|
+
if (jar.publicSlug) {
|
|
344
|
+
card += `\nLink: tip.clawd.bot/${jar.publicSlug}`;
|
|
345
|
+
}
|
|
346
|
+
return card;
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Format tip notification
|
|
350
|
+
*/
|
|
351
|
+
formatTipNotification(tip, jar) {
|
|
352
|
+
const senderName = tip.isAnonymous ? 'Anonymous' : (tip.fromName || this.shortAddress(tip.fromAddress));
|
|
353
|
+
let notif = `🎉 **New Tip!**\n\n`;
|
|
354
|
+
notif += `${senderName} tipped **$${tip.amount} USDC**`;
|
|
355
|
+
if (tip.message) {
|
|
356
|
+
notif += `\n\n"${tip.message}"`;
|
|
357
|
+
}
|
|
358
|
+
notif += `\n\n${jar.settings.thankYouMessage}`;
|
|
359
|
+
return notif;
|
|
360
|
+
}
|
|
361
|
+
shortAddress(address) {
|
|
362
|
+
return `${address.slice(0, 6)}...${address.slice(-4)}`;
|
|
363
|
+
}
|
|
364
|
+
// ============ Agent-to-Agent Tips ============
|
|
365
|
+
/**
|
|
366
|
+
* Send tip from one agent to another
|
|
367
|
+
* Returns the transaction to be executed
|
|
368
|
+
*/
|
|
369
|
+
async prepareAgentTip(params) {
|
|
370
|
+
// Find recipient's tip jar
|
|
371
|
+
const toJar = await this.getJar(params.toAgentId);
|
|
372
|
+
if (!toJar) {
|
|
373
|
+
return null;
|
|
374
|
+
}
|
|
375
|
+
const defaultAddr = toJar.addresses.find(a => a.isDefault) || toJar.addresses[0];
|
|
376
|
+
if (!defaultAddr) {
|
|
377
|
+
return null;
|
|
378
|
+
}
|
|
379
|
+
return {
|
|
380
|
+
toJar,
|
|
381
|
+
toAddress: defaultAddr.address,
|
|
382
|
+
chain: defaultAddr.chain,
|
|
383
|
+
amount: params.amount,
|
|
384
|
+
message: params.message,
|
|
385
|
+
};
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
exports.TipJarManager = TipJarManager;
|
|
389
|
+
exports.default = TipJarManager;
|
|
390
|
+
//# sourceMappingURL=tips.js.map
|
package/dist/tips.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tips.js","sourceRoot":"","sources":["../lib/tips.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pay Lobster Type Definitions
|
|
3
|
+
*/
|
|
4
|
+
export interface LobsterConfig {
|
|
5
|
+
/** Circle API key for wallet operations */
|
|
6
|
+
circleApiKey?: string;
|
|
7
|
+
/** Ethereum private key for direct transactions */
|
|
8
|
+
privateKey?: string;
|
|
9
|
+
/** Network: 'base' | 'base-sepolia' | 'ethereum' */
|
|
10
|
+
network?: 'base' | 'base-sepolia' | 'ethereum';
|
|
11
|
+
/** Existing Circle wallet ID */
|
|
12
|
+
walletId?: string;
|
|
13
|
+
/** Custom RPC URL */
|
|
14
|
+
rpcUrl?: string;
|
|
15
|
+
/** Enable ERC-8004 trust verification */
|
|
16
|
+
enableTrust?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface Wallet {
|
|
19
|
+
id: string;
|
|
20
|
+
address: string;
|
|
21
|
+
network: string;
|
|
22
|
+
balance?: string;
|
|
23
|
+
createdAt?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface Transfer {
|
|
26
|
+
id: string;
|
|
27
|
+
hash?: string;
|
|
28
|
+
status: 'pending' | 'confirmed' | 'failed';
|
|
29
|
+
amount: string;
|
|
30
|
+
to: string;
|
|
31
|
+
from: string;
|
|
32
|
+
memo?: string;
|
|
33
|
+
createdAt: string;
|
|
34
|
+
}
|
|
35
|
+
export interface Escrow {
|
|
36
|
+
id: string;
|
|
37
|
+
amount: string;
|
|
38
|
+
buyer: string;
|
|
39
|
+
seller: string;
|
|
40
|
+
status: 'funded' | 'released' | 'disputed' | 'refunded';
|
|
41
|
+
conditions?: EscrowConditions;
|
|
42
|
+
createdAt: string;
|
|
43
|
+
}
|
|
44
|
+
export interface EscrowConditions {
|
|
45
|
+
type: 'milestone' | 'time' | 'approval';
|
|
46
|
+
description: string;
|
|
47
|
+
deadline?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface TrustScore {
|
|
50
|
+
score: number;
|
|
51
|
+
level: 'new' | 'established' | 'trusted' | 'verified';
|
|
52
|
+
totalTransactions: number;
|
|
53
|
+
successRate: number;
|
|
54
|
+
ratings?: Rating[];
|
|
55
|
+
}
|
|
56
|
+
export interface Rating {
|
|
57
|
+
rating: number;
|
|
58
|
+
comment?: string;
|
|
59
|
+
from: string;
|
|
60
|
+
createdAt: string;
|
|
61
|
+
}
|
|
62
|
+
export interface Agent {
|
|
63
|
+
address: string;
|
|
64
|
+
name: string;
|
|
65
|
+
capabilities: string[];
|
|
66
|
+
pricing?: Record<string, string>;
|
|
67
|
+
trustScore?: TrustScore;
|
|
68
|
+
metadata?: Record<string, any>;
|
|
69
|
+
}
|
|
70
|
+
export interface TransferOptions {
|
|
71
|
+
to: string;
|
|
72
|
+
amount: string;
|
|
73
|
+
memo?: string;
|
|
74
|
+
idempotencyKey?: string;
|
|
75
|
+
}
|
|
76
|
+
export interface EscrowOptions {
|
|
77
|
+
amount: string;
|
|
78
|
+
recipient: string;
|
|
79
|
+
conditions?: EscrowConditions;
|
|
80
|
+
template?: 'freelance' | 'marketplace' | 'rental';
|
|
81
|
+
deadline?: string;
|
|
82
|
+
milestones?: {
|
|
83
|
+
name: string;
|
|
84
|
+
amount: string;
|
|
85
|
+
}[];
|
|
86
|
+
}
|
|
87
|
+
export interface DiscoverOptions {
|
|
88
|
+
capability?: string;
|
|
89
|
+
minTrustScore?: number;
|
|
90
|
+
maxPrice?: string;
|
|
91
|
+
limit?: number;
|
|
92
|
+
}
|
|
93
|
+
export interface AutonomousConfig {
|
|
94
|
+
enabled: boolean;
|
|
95
|
+
dailyLimit: string;
|
|
96
|
+
perTransactionLimit: string;
|
|
97
|
+
autoApproveBelow: string;
|
|
98
|
+
allowedCapabilities: string[];
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../lib/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../lib/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* x402 Payment-Enabled HTTP Client
|
|
3
|
+
*
|
|
4
|
+
* Wraps fetch() to automatically handle 402 Payment Required responses.
|
|
5
|
+
* Uses Circle Programmable Wallets to pay and retry with signature.
|
|
6
|
+
*/
|
|
7
|
+
import { CircleClient } from './circle-client';
|
|
8
|
+
export interface PaymentChallenge {
|
|
9
|
+
'x-payment-required': {
|
|
10
|
+
version: '1';
|
|
11
|
+
network: string;
|
|
12
|
+
receiver: string;
|
|
13
|
+
asset: string;
|
|
14
|
+
amount: string;
|
|
15
|
+
description: string;
|
|
16
|
+
expires: number;
|
|
17
|
+
nonce: string;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export interface PaymentReceipt {
|
|
21
|
+
url: string;
|
|
22
|
+
challenge: PaymentChallenge['x-payment-required'];
|
|
23
|
+
txHash: string;
|
|
24
|
+
signature: string;
|
|
25
|
+
paidAt: string;
|
|
26
|
+
expiresAt: number;
|
|
27
|
+
}
|
|
28
|
+
export interface X402ClientConfig {
|
|
29
|
+
wallet: CircleClient;
|
|
30
|
+
walletId?: string;
|
|
31
|
+
maxAutoPayUSDC?: string;
|
|
32
|
+
requireConfirmation?: boolean;
|
|
33
|
+
cacheReceipts?: boolean;
|
|
34
|
+
cacheDir?: string;
|
|
35
|
+
onPayment?: (amount: string, url: string, txHash: string) => void;
|
|
36
|
+
onChallenge?: (challenge: PaymentChallenge) => void;
|
|
37
|
+
onVerified?: (receipt: PaymentReceipt) => void;
|
|
38
|
+
onError?: (error: Error, url: string) => void;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* x402-enabled fetch function
|
|
42
|
+
*/
|
|
43
|
+
export type X402Fetch = (url: string | URL | Request, init?: RequestInit) => Promise<Response>;
|
|
44
|
+
/**
|
|
45
|
+
* Create a payment-enabled fetch wrapper
|
|
46
|
+
*/
|
|
47
|
+
export declare function createX402Fetch(config: X402ClientConfig): X402Fetch;
|
|
48
|
+
/**
|
|
49
|
+
* X402 HTTP Client
|
|
50
|
+
*/
|
|
51
|
+
export declare class X402Client {
|
|
52
|
+
private wallet;
|
|
53
|
+
private walletId?;
|
|
54
|
+
private maxAutoPayUSDC?;
|
|
55
|
+
private requireConfirmation;
|
|
56
|
+
private cacheReceipts;
|
|
57
|
+
private cacheDir;
|
|
58
|
+
private onPayment?;
|
|
59
|
+
private onChallenge?;
|
|
60
|
+
private onVerified?;
|
|
61
|
+
private onError?;
|
|
62
|
+
private receiptCache;
|
|
63
|
+
constructor(config: X402ClientConfig);
|
|
64
|
+
/**
|
|
65
|
+
* Main fetch method - handles 402 automatically
|
|
66
|
+
*/
|
|
67
|
+
fetch(url: string | URL | Request, init?: RequestInit): Promise<Response>;
|
|
68
|
+
/**
|
|
69
|
+
* Handle 402 Payment Required response
|
|
70
|
+
*/
|
|
71
|
+
private handlePaymentRequired;
|
|
72
|
+
/**
|
|
73
|
+
* Execute USDC payment via Circle
|
|
74
|
+
*/
|
|
75
|
+
private executePayment;
|
|
76
|
+
/**
|
|
77
|
+
* Fetch with payment signature header
|
|
78
|
+
*/
|
|
79
|
+
private fetchWithPayment;
|
|
80
|
+
/**
|
|
81
|
+
* Parse payment challenge from 402 response
|
|
82
|
+
*/
|
|
83
|
+
private parsePaymentChallenge;
|
|
84
|
+
/**
|
|
85
|
+
* Generate payment signature from challenge and tx hash
|
|
86
|
+
*/
|
|
87
|
+
private generatePaymentSignature;
|
|
88
|
+
/**
|
|
89
|
+
* Confirm payment with user (if required)
|
|
90
|
+
*/
|
|
91
|
+
private confirmPayment;
|
|
92
|
+
/**
|
|
93
|
+
* Get cached receipt for URL
|
|
94
|
+
*/
|
|
95
|
+
private getCachedReceipt;
|
|
96
|
+
/**
|
|
97
|
+
* Cache payment receipt
|
|
98
|
+
*/
|
|
99
|
+
private cacheReceipt;
|
|
100
|
+
/**
|
|
101
|
+
* Load cached receipts from disk
|
|
102
|
+
*/
|
|
103
|
+
private loadReceiptCache;
|
|
104
|
+
/**
|
|
105
|
+
* Get receipt history
|
|
106
|
+
*/
|
|
107
|
+
getReceiptHistory(): Promise<PaymentReceipt[]>;
|
|
108
|
+
/**
|
|
109
|
+
* Clear receipt cache
|
|
110
|
+
*/
|
|
111
|
+
clearCache(): Promise<void>;
|
|
112
|
+
/**
|
|
113
|
+
* Extract URL string from various input types
|
|
114
|
+
*/
|
|
115
|
+
private getUrlString;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Helper: Create simple x402 client with minimal config
|
|
119
|
+
*/
|
|
120
|
+
export declare function simpleX402Fetch(wallet: CircleClient, maxAutoPayUSDC?: string): X402Fetch;
|
|
121
|
+
declare const _default: {
|
|
122
|
+
createX402Fetch: typeof createX402Fetch;
|
|
123
|
+
simpleX402Fetch: typeof simpleX402Fetch;
|
|
124
|
+
X402Client: typeof X402Client;
|
|
125
|
+
};
|
|
126
|
+
export default _default;
|
|
127
|
+
//# sourceMappingURL=x402-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402-client.d.ts","sourceRoot":"","sources":["../lib/x402-client.ts"],"names":[],"mappings":"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"}
|