paytaca-cli 0.3.2 → 0.4.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.
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerChatCommands(program: Command): void;
3
+ //# sourceMappingURL=chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAoBnC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgpB3D"}
@@ -0,0 +1,592 @@
1
+ import chalk from 'chalk';
2
+ import { finalizeEvent } from 'nostr-tools';
3
+ import { hexToBytes } from 'nostr-tools/utils';
4
+ import { decode as nip19Decode } from 'nostr-tools/nip19';
5
+ import { loadMnemonic } from '../wallet/index.js';
6
+ import { ChatStore } from '../nostr/store.js';
7
+ import { relayService } from '../nostr/relay.js';
8
+ function formatTimestamp(unix) {
9
+ const d = new Date(unix * 1000);
10
+ const now = new Date();
11
+ const isToday = d.toDateString() === now.toDateString();
12
+ if (isToday) {
13
+ return d.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
14
+ }
15
+ return d.toLocaleDateString([], { month: 'short', day: 'numeric' }) +
16
+ ' ' + d.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
17
+ }
18
+ export function registerChatCommands(program) {
19
+ const chat = program
20
+ .command('chat')
21
+ .description('Nostr-based chat');
22
+ chat
23
+ .command('list')
24
+ .description('List conversations')
25
+ .option('--json', 'Output as JSON')
26
+ .action(async (opts) => {
27
+ const data = loadMnemonic();
28
+ if (!data) {
29
+ console.log(chalk.red('\nNo wallet found. Run `paytaca wallet create` or `paytaca wallet import` first.\n'));
30
+ process.exit(1);
31
+ }
32
+ const store = new ChatStore();
33
+ await store.initialize(data.mnemonic);
34
+ const rooms = store.getRooms();
35
+ if (rooms.length === 0) {
36
+ console.log(chalk.dim('\n No conversations yet.\n'));
37
+ store.cleanup();
38
+ process.exit(0);
39
+ }
40
+ // Resolve display names and BCH addresses for all rooms' other members
41
+ const otherPubKeys = [...new Set(rooms.map(r => store.getOtherMember(r)).filter(Boolean))];
42
+ await Promise.allSettled(otherPubKeys.map(async (pk) => {
43
+ await store.resolveDisplayName(pk);
44
+ await store.resolveBchAddress(pk);
45
+ }));
46
+ if (opts.json) {
47
+ console.log(JSON.stringify(rooms.map(r => {
48
+ const otherPk = store.getOtherMember(r);
49
+ const msgs = store.getMessages(r.id);
50
+ const readIds = store.readMessageIds[r.id] || {};
51
+ const unreadCount = msgs.filter(m => {
52
+ return m.sender !== store.keys?.pubKeyHex && !readIds[m.id];
53
+ }).length;
54
+ return {
55
+ id: r.id,
56
+ name: otherPk ? store.getContactName(otherPk) : r.name,
57
+ displayName: otherPk ? (store.displayNameCache[otherPk] || null) : null,
58
+ bchAddress: otherPk ? (store.bchAddressCache[otherPk] || null) : null,
59
+ type: r.type,
60
+ members: r.members,
61
+ subject: r.subject,
62
+ createdAt: r.createdAt,
63
+ updatedAt: r.updatedAt,
64
+ messageCount: msgs.length,
65
+ unreadCount,
66
+ };
67
+ })));
68
+ store.cleanup();
69
+ process.exit(0);
70
+ }
71
+ console.log();
72
+ for (const room of rooms) {
73
+ const otherPubKey = store.getOtherMember(room);
74
+ const displayName = otherPubKey
75
+ ? store.getContactName(otherPubKey)
76
+ : room.name;
77
+ const msgs = store.getMessages(room.id);
78
+ const lastMsg = msgs.length > 0 ? msgs[msgs.length - 1] : null;
79
+ const preview = lastMsg
80
+ ? (lastMsg.content.length > 50 ? lastMsg.content.slice(0, 50) + '...' : lastMsg.content)
81
+ : chalk.dim('(no messages)');
82
+ const time = lastMsg ? formatTimestamp(lastMsg.created_at) : '';
83
+ const unread = msgs.filter(m => {
84
+ const readIds = store.readMessageIds[room.id] || {};
85
+ return m.sender !== store.keys?.pubKeyHex && !readIds[m.id];
86
+ }).length;
87
+ const unreadBadge = unread > 0 ? ` [${unread}]` : '';
88
+ console.log(` ${chalk.bold(displayName)}${unreadBadge}`);
89
+ console.log(` ${room.id}`);
90
+ console.log(` ${preview} ${chalk.dim(time)}`);
91
+ console.log();
92
+ }
93
+ store.cleanup();
94
+ process.exit(0);
95
+ });
96
+ chat
97
+ .command('open')
98
+ .description('Open a conversation and show messages')
99
+ .argument('<room-id>', 'Room ID (full or prefix)')
100
+ .option('--tail <count>', 'Show only last N messages', '20')
101
+ .option('--json', 'Output as JSON')
102
+ .action(async (roomId, opts) => {
103
+ const data = loadMnemonic();
104
+ if (!data) {
105
+ console.log(chalk.red('\nNo wallet found.\n'));
106
+ process.exit(1);
107
+ }
108
+ const store = new ChatStore();
109
+ await store.initialize(data.mnemonic);
110
+ const room = store.getRoom(roomId);
111
+ if (!room) {
112
+ console.log(chalk.red(`\nRoom not found: ${roomId}\n`));
113
+ process.exit(1);
114
+ }
115
+ const allMsgs = store.getMessages(room.id);
116
+ const tail = Number.isNaN(parseInt(opts.tail, 10)) ? 20 : parseInt(opts.tail, 10);
117
+ const msgs = tail === 0 ? [] : allMsgs.slice(-tail);
118
+ // Resolve display names for all unique message senders
119
+ const senderPubKeys = [...new Set(msgs.map(m => m.sender).filter(Boolean))];
120
+ await Promise.allSettled(senderPubKeys.map(pk => store.resolveDisplayName(pk)));
121
+ // Mark viewed messages as read (do this before JSON exit too)
122
+ store.readMessageIds[room.id] = store.readMessageIds[room.id] || {};
123
+ for (const msg of msgs) {
124
+ store.readMessageIds[room.id][msg.id] = true;
125
+ }
126
+ store.saveState();
127
+ if (opts.json) {
128
+ console.log(JSON.stringify({
129
+ room: {
130
+ id: room.id,
131
+ name: room.name,
132
+ type: room.type,
133
+ members: room.members,
134
+ },
135
+ messages: msgs.map(m => ({
136
+ id: m.id,
137
+ content: m.content,
138
+ sender: m.sender,
139
+ senderName: store.getContactName(m.sender),
140
+ created_at: m.created_at,
141
+ replyTo: m.replyTo,
142
+ editOf: m.editOf,
143
+ })),
144
+ }));
145
+ store.cleanup();
146
+ process.exit(0);
147
+ }
148
+ const otherPubKey = store.getOtherMember(room);
149
+ const roomDisplayName = otherPubKey
150
+ ? store.getContactName(otherPubKey)
151
+ : room.name;
152
+ console.log(chalk.bold(`\n ${roomDisplayName}`));
153
+ console.log(chalk.dim(` ${room.id} (${room.type})`));
154
+ if (room.subject) {
155
+ console.log(chalk.dim(` Subject: ${room.subject}`));
156
+ }
157
+ console.log();
158
+ for (const msg of msgs) {
159
+ const isMine = msg.sender === store.keys?.pubKeyHex;
160
+ const sender = isMine
161
+ ? chalk.cyan('me')
162
+ : chalk.yellow(store.getContactName(msg.sender));
163
+ const time = chalk.dim(formatTimestamp(msg.created_at));
164
+ console.log(` ${sender} ${time}`);
165
+ console.log(` ${msg.content}`);
166
+ if (msg.editOf) {
167
+ console.log(chalk.dim(' (edited)'));
168
+ }
169
+ console.log();
170
+ }
171
+ if (msgs.length < allMsgs.length) {
172
+ console.log(chalk.dim(` Showing last ${msgs.length} of ${allMsgs.length} messages.\n`));
173
+ }
174
+ store.cleanup();
175
+ process.exit(0);
176
+ });
177
+ chat
178
+ .command('send')
179
+ .description('Send a message to a conversation')
180
+ .argument('<room-id>', 'Room ID (full or prefix)')
181
+ .argument('<text>', 'Message text')
182
+ .action(async (roomId, text) => {
183
+ const data = loadMnemonic();
184
+ if (!data) {
185
+ console.log(chalk.red('\nNo wallet found.\n'));
186
+ process.exit(1);
187
+ }
188
+ const store = new ChatStore();
189
+ await store.initialize(data.mnemonic);
190
+ const room = store.getRoom(roomId);
191
+ if (!room) {
192
+ console.log(chalk.red(`\nRoom not found: ${roomId}\n`));
193
+ process.exit(1);
194
+ }
195
+ const { giftWraps, message } = await store.sendMessage(room.id, text);
196
+ const { accepted, errors } = await store.publishGiftWraps(giftWraps);
197
+ store.saveState();
198
+ store.cleanup();
199
+ if (accepted.length === 0 && errors.length > 0) {
200
+ console.log(chalk.red('\n Publish failed: no relay accepted the event.\n'));
201
+ for (const e of errors) {
202
+ console.log(chalk.dim(` ${e.relay}: ${e.reason || 'unknown error'}`));
203
+ }
204
+ console.log();
205
+ process.exit(1);
206
+ }
207
+ console.log(chalk.green(`\n Message sent! (accepted by ${accepted.length}/${accepted.length + errors.length} relays)\n`));
208
+ process.exit(0);
209
+ });
210
+ chat
211
+ .command('start')
212
+ .description('Start a new 1:1 conversation with a contact')
213
+ .argument('<npub>', "Contact's npub (e.g., npub1...)")
214
+ .action(async (npub) => {
215
+ const data = loadMnemonic();
216
+ if (!data) {
217
+ console.log(chalk.red('\nNo wallet found.\n'));
218
+ process.exit(1);
219
+ }
220
+ const store = new ChatStore();
221
+ await store.initialize(data.mnemonic);
222
+ try {
223
+ const room = store.startConversation(npub);
224
+ await store.resolveDisplayName(store.getOtherMember(room));
225
+ console.log(chalk.green(`\n Conversation started: ${room.name}\n`));
226
+ console.log(chalk.dim(` Room ID: ${room.id}\n`));
227
+ }
228
+ catch (err) {
229
+ console.log(chalk.red(`\n Error: ${err.message || err}\n`));
230
+ process.exit(1);
231
+ }
232
+ finally {
233
+ store.cleanup();
234
+ }
235
+ });
236
+ chat
237
+ .command('add-contact')
238
+ .description('Add a contact by npub')
239
+ .argument('<npub>', "Contact's npub (e.g., npub1...)")
240
+ .argument('[name]', 'Optional display name')
241
+ .action(async (npub, name) => {
242
+ const data = loadMnemonic();
243
+ if (!data) {
244
+ console.log(chalk.red('\nNo wallet found.\n'));
245
+ process.exit(1);
246
+ }
247
+ const store = new ChatStore();
248
+ await store.initialize(data.mnemonic);
249
+ try {
250
+ const contact = store.addContact(npub, name);
251
+ // Try to resolve display name and BCH address from relays
252
+ const [resolvedName, bchAddr] = await Promise.all([
253
+ store.resolveDisplayName(contact.pubKeyHex),
254
+ store.resolveBchAddress(contact.pubKeyHex),
255
+ ]);
256
+ if (resolvedName) {
257
+ contact.name = resolvedName;
258
+ store.saveState();
259
+ }
260
+ store.cleanup();
261
+ console.log(chalk.green(`\n Added contact: ${contact.name}\n`));
262
+ console.log(chalk.dim(` npub: ${contact.npub}`));
263
+ console.log(chalk.dim(` hex: ${contact.pubKeyHex}`));
264
+ if (bchAddr) {
265
+ console.log(chalk.dim(` bch: ${bchAddr}`));
266
+ }
267
+ console.log();
268
+ process.exit(0);
269
+ }
270
+ catch (err) {
271
+ store.cleanup();
272
+ console.log(chalk.red(`\n Error: ${err.message || err}\n`));
273
+ process.exit(1);
274
+ }
275
+ });
276
+ chat
277
+ .command('contacts')
278
+ .description('List contacts')
279
+ .option('--json', 'Output as JSON')
280
+ .action(async (opts) => {
281
+ const data = loadMnemonic();
282
+ if (!data) {
283
+ console.log(chalk.red('\nNo wallet found.\n'));
284
+ process.exit(1);
285
+ }
286
+ const store = new ChatStore();
287
+ await store.initialize(data.mnemonic);
288
+ if (store.contacts.length === 0) {
289
+ console.log(chalk.dim('\n No contacts. Use `paytaca chat add-contact <npub>` to add one.\n'));
290
+ store.cleanup();
291
+ process.exit(0);
292
+ }
293
+ // Resolve display names and BCH addresses for all contacts
294
+ await Promise.allSettled(store.contacts.map(async (c) => {
295
+ const name = await store.resolveDisplayName(c.pubKeyHex);
296
+ if (name)
297
+ c.name = name;
298
+ await store.resolveBchAddress(c.pubKeyHex);
299
+ }));
300
+ store.saveState();
301
+ if (opts.json) {
302
+ console.log(JSON.stringify(store.contacts.map(c => ({
303
+ ...c,
304
+ bchAddress: store.bchAddressCache[c.pubKeyHex] || null,
305
+ }))));
306
+ store.cleanup();
307
+ process.exit(0);
308
+ }
309
+ console.log();
310
+ for (const c of store.contacts) {
311
+ const bchAddr = store.bchAddressCache[c.pubKeyHex] || null;
312
+ console.log(` ${chalk.bold(c.name)}`);
313
+ console.log(chalk.dim(` npub: ${c.npub}`));
314
+ console.log(chalk.dim(` hex: ${c.pubKeyHex}`));
315
+ if (bchAddr) {
316
+ console.log(chalk.dim(` bch: ${bchAddr}`));
317
+ }
318
+ console.log();
319
+ }
320
+ store.cleanup();
321
+ process.exit(0);
322
+ });
323
+ chat
324
+ .command('identity')
325
+ .description("Show your Nostr identity (npub, pubkey)")
326
+ .action(async () => {
327
+ const data = loadMnemonic();
328
+ if (!data) {
329
+ console.log(chalk.red('\nNo wallet found.\n'));
330
+ process.exit(1);
331
+ }
332
+ const store = new ChatStore();
333
+ await store.initialize(data.mnemonic);
334
+ if (!store.keys) {
335
+ console.log(chalk.red('\nFailed to derive Nostr keys.\n'));
336
+ process.exit(1);
337
+ }
338
+ console.log();
339
+ console.log(` ${chalk.bold('npub:')} ${store.keys.npub}`);
340
+ console.log(` ${chalk.bold('hex:')} ${store.keys.pubKeyHex}`);
341
+ console.log();
342
+ store.cleanup();
343
+ process.exit(0);
344
+ });
345
+ chat
346
+ .command('set-display-name')
347
+ .description('Publish your display name to relays (NIP-78)')
348
+ .argument('<name>', 'Display name to publish')
349
+ .action(async (name) => {
350
+ const data = loadMnemonic();
351
+ if (!data) {
352
+ console.log(chalk.red('\nNo wallet found.\n'));
353
+ process.exit(1);
354
+ }
355
+ const store = new ChatStore();
356
+ await store.initialize(data.mnemonic);
357
+ if (!store.keys) {
358
+ console.log(chalk.red('\nFailed to derive Nostr keys.\n'));
359
+ process.exit(1);
360
+ }
361
+ const privKeyBytes = hexToBytes(store.keys.privKeyHex);
362
+ const event = finalizeEvent({
363
+ kind: 30078,
364
+ created_at: Math.floor(Date.now() / 1000),
365
+ tags: [
366
+ ['d', 'paytaca:display-name'],
367
+ ['p', store.keys.pubKeyHex],
368
+ ],
369
+ content: JSON.stringify({ name: 'Paytaca Display Name', data: { displayName: name.trim() } }),
370
+ }, privKeyBytes);
371
+ const { accepted, errors } = await relayService.publish(store.relays, event);
372
+ if (accepted.length === 0) {
373
+ const errorDetails = errors.map(e => `${e.relay}: ${e.reason}`).join('; ');
374
+ store.cleanup();
375
+ console.log(chalk.red(`\n Publish failed. ${errorDetails}\n`));
376
+ process.exit(1);
377
+ }
378
+ store.displayNameCache[store.keys.pubKeyHex] = name.trim();
379
+ store.saveState();
380
+ store.cleanup();
381
+ console.log(chalk.green(`\n Display name published: ${name.trim()}\n`));
382
+ process.exit(0);
383
+ });
384
+ chat
385
+ .command('remove-display-name')
386
+ .description('Remove your published display name from relays')
387
+ .action(async () => {
388
+ const data = loadMnemonic();
389
+ if (!data) {
390
+ console.log(chalk.red('\nNo wallet found.\n'));
391
+ process.exit(1);
392
+ }
393
+ const store = new ChatStore();
394
+ await store.initialize(data.mnemonic);
395
+ if (!store.keys) {
396
+ console.log(chalk.red('\nFailed to derive Nostr keys.\n'));
397
+ process.exit(1);
398
+ }
399
+ const privKeyBytes = hexToBytes(store.keys.privKeyHex);
400
+ const event = finalizeEvent({
401
+ kind: 30078,
402
+ created_at: Math.floor(Date.now() / 1000),
403
+ tags: [
404
+ ['d', 'paytaca:display-name'],
405
+ ['p', store.keys.pubKeyHex],
406
+ ],
407
+ content: JSON.stringify({ name: 'Paytaca Display Name', data: {} }),
408
+ }, privKeyBytes);
409
+ const { accepted, errors } = await relayService.publish(store.relays, event);
410
+ if (accepted.length === 0) {
411
+ const errorDetails = errors.map(e => `${e.relay}: ${e.reason}`).join('; ');
412
+ store.cleanup();
413
+ console.log(chalk.red(`\n Remove failed. ${errorDetails}\n`));
414
+ process.exit(1);
415
+ }
416
+ delete store.displayNameCache[store.keys.pubKeyHex];
417
+ store.saveState();
418
+ store.cleanup();
419
+ console.log(chalk.green('\n Display name removed.\n'));
420
+ process.exit(0);
421
+ });
422
+ chat
423
+ .command('set-bch-address')
424
+ .description('Publish your BCH address to relays (NIP-78)')
425
+ .argument('<address>', 'BCH address (cashaddr format)')
426
+ .action(async (address) => {
427
+ const trimmed = address.trim().toLowerCase();
428
+ if (!/^(bitcoincash|bchtest|bchreg):[qpzry9x8gf2tvdw0s3jn54khce6mua7l]+$/.test(trimmed)) {
429
+ console.log(chalk.red('\nInvalid BCH address. Must be cashaddr format (e.g. bitcoincash:...).\n'));
430
+ process.exit(1);
431
+ }
432
+ const data = loadMnemonic();
433
+ if (!data) {
434
+ console.log(chalk.red('\nNo wallet found.\n'));
435
+ process.exit(1);
436
+ }
437
+ const store = new ChatStore();
438
+ await store.initialize(data.mnemonic);
439
+ if (!store.keys) {
440
+ console.log(chalk.red('\nFailed to derive Nostr keys.\n'));
441
+ process.exit(1);
442
+ }
443
+ const privKeyBytes = hexToBytes(store.keys.privKeyHex);
444
+ const event = finalizeEvent({
445
+ kind: 30078,
446
+ created_at: Math.floor(Date.now() / 1000),
447
+ tags: [
448
+ ['d', 'paytaca:bch-address'],
449
+ ['p', store.keys.pubKeyHex],
450
+ ],
451
+ content: JSON.stringify({ name: 'Paytaca BCH Address', data: { address: trimmed } }),
452
+ }, privKeyBytes);
453
+ const { accepted, errors } = await relayService.publish(store.relays, event);
454
+ if (accepted.length === 0) {
455
+ const errorDetails = errors.map(e => `${e.relay}: ${e.reason}`).join('; ');
456
+ store.cleanup();
457
+ console.log(chalk.red(`\n Publish failed. ${errorDetails}\n`));
458
+ process.exit(1);
459
+ }
460
+ store.bchAddressCache[store.keys.pubKeyHex] = trimmed;
461
+ store.saveState();
462
+ store.cleanup();
463
+ console.log(chalk.green(`\n BCH address published: ${trimmed}\n`));
464
+ process.exit(0);
465
+ });
466
+ chat
467
+ .command('remove-bch-address')
468
+ .description('Remove your published BCH address from relays')
469
+ .action(async () => {
470
+ const data = loadMnemonic();
471
+ if (!data) {
472
+ console.log(chalk.red('\nNo wallet found.\n'));
473
+ process.exit(1);
474
+ }
475
+ const store = new ChatStore();
476
+ await store.initialize(data.mnemonic);
477
+ if (!store.keys) {
478
+ console.log(chalk.red('\nFailed to derive Nostr keys.\n'));
479
+ process.exit(1);
480
+ }
481
+ const privKeyBytes = hexToBytes(store.keys.privKeyHex);
482
+ const event = finalizeEvent({
483
+ kind: 30078,
484
+ created_at: Math.floor(Date.now() / 1000),
485
+ tags: [
486
+ ['d', 'paytaca:bch-address'],
487
+ ['p', store.keys.pubKeyHex],
488
+ ],
489
+ content: JSON.stringify({ name: 'Paytaca BCH Address', data: {} }),
490
+ }, privKeyBytes);
491
+ const { accepted, errors } = await relayService.publish(store.relays, event);
492
+ if (accepted.length === 0) {
493
+ const errorDetails = errors.map(e => `${e.relay}: ${e.reason}`).join('; ');
494
+ store.cleanup();
495
+ console.log(chalk.red(`\n Remove failed. ${errorDetails}\n`));
496
+ process.exit(1);
497
+ }
498
+ delete store.bchAddressCache[store.keys.pubKeyHex];
499
+ store.saveState();
500
+ store.cleanup();
501
+ console.log(chalk.green('\n BCH address removed.\n'));
502
+ process.exit(0);
503
+ });
504
+ chat
505
+ .command('listen')
506
+ .description('Subscribe to new messages (long-running)')
507
+ .option('--contact <npub|name>', 'Filter to conversations involving this contact')
508
+ .option('--json', 'Output new messages as JSON lines')
509
+ .action(async (opts) => {
510
+ const data = loadMnemonic();
511
+ if (!data) {
512
+ console.log(chalk.red('\nNo wallet found.\n'));
513
+ process.exit(1);
514
+ }
515
+ const store = new ChatStore();
516
+ await store.initialize(data.mnemonic);
517
+ let filterPubKey = store.keys?.pubKeyHex || null;
518
+ if (opts.contact) {
519
+ const contact = store.contacts.find(c => c.npub === opts.contact || c.name === opts.contact || c.pubKeyHex === opts.contact);
520
+ if (contact) {
521
+ filterPubKey = contact.pubKeyHex;
522
+ }
523
+ else if (opts.contact.startsWith('npub1')) {
524
+ try {
525
+ const decoded = nip19Decode(opts.contact);
526
+ filterPubKey = decoded.data;
527
+ }
528
+ catch {
529
+ console.log(chalk.red(`\n Invalid npub: ${opts.contact}\n`));
530
+ process.exit(1);
531
+ }
532
+ }
533
+ else {
534
+ console.log(chalk.yellow(`\n Contact not found: ${opts.contact}. Watching all conversations.\n`));
535
+ filterPubKey = null;
536
+ }
537
+ }
538
+ const isJson = Boolean(opts.json);
539
+ if (!isJson) {
540
+ const target = !filterPubKey
541
+ ? 'all conversations'
542
+ : filterPubKey === store.keys?.pubKeyHex
543
+ ? 'your conversations'
544
+ : `conversations with ${store.getContactName(filterPubKey)}`;
545
+ console.log(chalk.dim(`\n Listening for new messages in ${target}... (Ctrl+C to stop)\n`));
546
+ }
547
+ store.setOnNewMessage((room, message) => {
548
+ if (filterPubKey && !room.members.includes(filterPubKey))
549
+ return;
550
+ if (isJson) {
551
+ console.log(JSON.stringify({
552
+ type: 'message',
553
+ room: { id: room.id, name: room.name, members: room.members },
554
+ message: {
555
+ id: message.id,
556
+ content: message.content,
557
+ sender: message.sender,
558
+ created_at: message.created_at,
559
+ replyTo: message.replyTo || null,
560
+ editOf: message.editOf || null,
561
+ },
562
+ senderName: store.getContactName(message.sender),
563
+ }));
564
+ return;
565
+ }
566
+ const isMine = message.sender === store.keys?.pubKeyHex;
567
+ const sender = isMine
568
+ ? chalk.cyan('me')
569
+ : chalk.yellow(store.getContactName(message.sender));
570
+ const time = chalk.dim(formatTimestamp(message.created_at));
571
+ const roomLabel = chalk.blue(room.name);
572
+ console.log(` [${roomLabel}] ${sender} ${time}`);
573
+ console.log(` ${message.content}`);
574
+ if (message.editOf) {
575
+ console.log(chalk.dim(' (edited)'));
576
+ }
577
+ console.log();
578
+ });
579
+ store.subscribe();
580
+ const shutdown = () => {
581
+ store.unsubscribe();
582
+ if (!isJson) {
583
+ console.log(chalk.dim('\n Stopped.\n'));
584
+ }
585
+ process.exit(0);
586
+ };
587
+ process.on('SIGINT', shutdown);
588
+ process.on('SIGTERM', shutdown);
589
+ await new Promise(() => { });
590
+ });
591
+ }
592
+ //# sourceMappingURL=chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -15,6 +15,7 @@ import { registerHistoryCommand } from './commands/history.js';
15
15
  import { registerTokenCommands } from './commands/token.js';
16
16
  import { registerPayCommand } from './commands/pay.js';
17
17
  import { registerCheckCommand } from './commands/check.js';
18
+ import { registerChatCommands } from './commands/chat.js';
18
19
  const program = new Command();
19
20
  program
20
21
  .name('paytaca')
@@ -29,5 +30,6 @@ registerHistoryCommand(program);
29
30
  registerTokenCommands(program);
30
31
  registerPayCommand(program);
31
32
  registerCheckCommand(program);
33
+ registerChatCommands(program);
32
34
  program.parse();
33
35
  //# sourceMappingURL=index.js.map