agentchannel 0.8.1 → 0.9.1
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 +116 -77
- package/dist/brain.d.ts +78 -0
- package/dist/brain.js +271 -0
- package/dist/brain.js.map +1 -0
- package/dist/cli.js +312 -8
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +25 -1
- package/dist/config.js +104 -6
- package/dist/config.js.map +1 -1
- package/dist/crypto.d.ts +34 -4
- package/dist/crypto.js +42 -6
- package/dist/crypto.js.map +1 -1
- package/dist/distill.d.ts +24 -0
- package/dist/distill.js +404 -0
- package/dist/distill.js.map +1 -0
- package/dist/forwarder.d.ts +11 -0
- package/dist/forwarder.js +105 -0
- package/dist/forwarder.js.map +1 -0
- package/dist/local-store.d.ts +7 -0
- package/dist/local-store.js +54 -0
- package/dist/local-store.js.map +1 -0
- package/dist/mqtt-client.d.ts +11 -0
- package/dist/mqtt-client.js +369 -27
- package/dist/mqtt-client.js.map +1 -1
- package/dist/persistence.d.ts +23 -0
- package/dist/persistence.js +61 -0
- package/dist/persistence.js.map +1 -1
- package/dist/server.js +77 -3
- package/dist/server.js.map +1 -1
- package/dist/store.d.ts +3 -0
- package/dist/store.js +16 -2
- package/dist/store.js.map +1 -1
- package/dist/tools/brain.d.ts +2 -0
- package/dist/tools/brain.js +96 -0
- package/dist/tools/brain.js.map +1 -0
- package/dist/tools/channel.js +6 -6
- package/dist/tools/channel.js.map +1 -1
- package/dist/tools/get-message.js +1 -1
- package/dist/tools/get-message.js.map +1 -1
- package/dist/tools/hooks.d.ts +2 -0
- package/dist/tools/hooks.js +99 -0
- package/dist/tools/hooks.js.map +1 -0
- package/dist/tools/index.js +12 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/info.js +3 -1
- package/dist/tools/info.js.map +1 -1
- package/dist/tools/kick.d.ts +3 -0
- package/dist/tools/kick.js +52 -0
- package/dist/tools/kick.js.map +1 -0
- package/dist/tools/members.js +3 -3
- package/dist/tools/members.js.map +1 -1
- package/dist/tools/read.js +9 -6
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/registry.d.ts +3 -0
- package/dist/tools/registry.js +82 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/retract.d.ts +3 -0
- package/dist/tools/retract.js +27 -0
- package/dist/tools/retract.js.map +1 -0
- package/dist/tools/update-channel.d.ts +3 -0
- package/dist/tools/update-channel.js +50 -0
- package/dist/tools/update-channel.js.map +1 -0
- package/dist/types.d.ts +43 -1
- package/dist/web.d.ts +1 -0
- package/dist/web.js +91 -1
- package/dist/web.js.map +1 -1
- package/package.json +3 -2
- package/ui/app.js +715 -86
- package/ui/index.html +21 -11
- package/ui/marked.min.js +69 -0
- package/ui/mqtt.min.js +19 -0
- package/ui/style.css +175 -66
package/dist/mqtt-client.js
CHANGED
|
@@ -1,14 +1,36 @@
|
|
|
1
1
|
import mqtt from "mqtt";
|
|
2
2
|
import { randomBytes } from "node:crypto";
|
|
3
3
|
import { userInfo } from "node:os";
|
|
4
|
+
import { execSync } from "node:child_process";
|
|
4
5
|
import { deriveKey, deriveSubKey, hashRoom, hashSub, deriveDmKey, hashDm, encrypt, decrypt } from "./crypto.js";
|
|
5
6
|
import { MessageStore } from "./store.js";
|
|
7
|
+
import { LocalStore } from "./local-store.js";
|
|
6
8
|
import { storeMessage, fetchHistory, registerMember } from "./persistence.js";
|
|
7
|
-
import { ensureIdentity, signMessage } from "./identity.js";
|
|
9
|
+
import { ensureIdentity, signMessage, verifySignature, getFingerprint } from "./identity.js";
|
|
8
10
|
import { checkTrust } from "./trust-store.js";
|
|
11
|
+
import { getSyncEnabled, updateChannelEpoch, getChannelEpoch, removeChannel } from "./config.js";
|
|
9
12
|
const DEFAULT_BROKER = "mqtt://broker.emqx.io:1883";
|
|
13
|
+
function getDefaultName() {
|
|
14
|
+
// 1. OS username
|
|
15
|
+
try {
|
|
16
|
+
const osName = userInfo().username;
|
|
17
|
+
if (osName)
|
|
18
|
+
return osName;
|
|
19
|
+
}
|
|
20
|
+
catch { }
|
|
21
|
+
// 2. git user.name
|
|
22
|
+
try {
|
|
23
|
+
const gitName = execSync("git config --global user.name", { encoding: "utf-8", timeout: 2000 }).trim();
|
|
24
|
+
if (gitName)
|
|
25
|
+
return gitName;
|
|
26
|
+
}
|
|
27
|
+
catch { }
|
|
28
|
+
// 3. fallback with fingerprint
|
|
29
|
+
const fp = ensureIdentity().fingerprint.slice(0, 4);
|
|
30
|
+
return `agent-${fp}`;
|
|
31
|
+
}
|
|
10
32
|
function displayName(state) {
|
|
11
|
-
return state.subchannel ?
|
|
33
|
+
return state.subchannel ? `#${state.channel}/${state.subchannel}` : `#${state.channel}`;
|
|
12
34
|
}
|
|
13
35
|
function fullId(state) {
|
|
14
36
|
return state.subchannel ? `${state.channel}/${state.subchannel}` : state.channel;
|
|
@@ -20,21 +42,25 @@ export class AgentChatClient {
|
|
|
20
42
|
name;
|
|
21
43
|
broker;
|
|
22
44
|
store;
|
|
45
|
+
localStore;
|
|
23
46
|
onMessage;
|
|
24
47
|
onMeta;
|
|
25
48
|
channelMeta = new Map();
|
|
26
49
|
identity;
|
|
27
50
|
silent;
|
|
28
51
|
constructor(config) {
|
|
29
|
-
this.name = config.name ||
|
|
52
|
+
this.name = config.name || getDefaultName();
|
|
30
53
|
this.broker = config.broker || DEFAULT_BROKER;
|
|
31
54
|
this.store = new MessageStore();
|
|
55
|
+
this.localStore = new LocalStore();
|
|
32
56
|
this.identity = ensureIdentity();
|
|
33
57
|
this.silent = config.silent || false;
|
|
34
58
|
for (const ch of config.channels) {
|
|
35
|
-
const
|
|
59
|
+
const epoch = ch.epoch ?? 0;
|
|
60
|
+
const key = ch.subchannel ? deriveSubKey(ch.key, ch.subchannel, epoch) : deriveKey(ch.key, epoch);
|
|
36
61
|
const hash = ch.subchannel ? hashSub(ch.key, ch.subchannel) : hashRoom(ch.key);
|
|
37
|
-
|
|
62
|
+
const channelHash = ch.channelHash || hash;
|
|
63
|
+
this.channels.set(hash, { channel: ch.channel, subchannel: ch.subchannel, key, hash, channelHash });
|
|
38
64
|
if (!ch.subchannel)
|
|
39
65
|
this.channelKeys.set(ch.channel, ch.key);
|
|
40
66
|
}
|
|
@@ -56,6 +82,12 @@ export class AgentChatClient {
|
|
|
56
82
|
getChannelKeyString(channel) {
|
|
57
83
|
return this.channelKeys.get(channel);
|
|
58
84
|
}
|
|
85
|
+
getName() {
|
|
86
|
+
return this.name;
|
|
87
|
+
}
|
|
88
|
+
getMemberCount(channel) {
|
|
89
|
+
return this.store.getMembers(channel).length;
|
|
90
|
+
}
|
|
59
91
|
msgTopic(hash) {
|
|
60
92
|
return `ac/1/${hash}`;
|
|
61
93
|
}
|
|
@@ -92,7 +124,7 @@ export class AgentChatClient {
|
|
|
92
124
|
this.client.subscribe(topics, { qos: 1 });
|
|
93
125
|
// Always register as member (even in silent mode)
|
|
94
126
|
for (const [_hash, state] of this.channels) {
|
|
95
|
-
registerMember(state.
|
|
127
|
+
registerMember(state.channelHash, this.identity.fingerprint, this.name);
|
|
96
128
|
}
|
|
97
129
|
// Only announce presence for long-lived connections (not silent)
|
|
98
130
|
if (!this.silent) {
|
|
@@ -134,13 +166,113 @@ export class AgentChatClient {
|
|
|
134
166
|
if (msg.signature && msg.senderKey) {
|
|
135
167
|
const { signature, trustLevel: _tl, ...msgWithoutSig } = msg;
|
|
136
168
|
const dataToVerify = JSON.stringify(msgWithoutSig);
|
|
137
|
-
|
|
138
|
-
|
|
169
|
+
const sigValid = verifySignature(dataToVerify, msg.signature, msg.senderKey);
|
|
170
|
+
if (!sigValid) {
|
|
171
|
+
// Signature invalid — reject message
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
const trust = checkTrust(getFingerprint(msg.senderKey), msg.senderKey, msg.sender);
|
|
139
175
|
msg.trustLevel = trust.level;
|
|
140
176
|
}
|
|
141
177
|
else {
|
|
142
178
|
msg.trustLevel = "unsigned";
|
|
143
179
|
}
|
|
180
|
+
// Handle retraction messages — self-only, verify signature
|
|
181
|
+
if (msg.type === "retraction") {
|
|
182
|
+
try {
|
|
183
|
+
const retraction = JSON.parse(msg.content);
|
|
184
|
+
// Verify: retraction sender must match original message sender
|
|
185
|
+
const target = this.store.getMessageById(retraction.target_id);
|
|
186
|
+
if (target && target.senderKey && msg.senderKey === target.senderKey) {
|
|
187
|
+
this.store.addRetraction(retraction.target_id);
|
|
188
|
+
// Surface retraction as a system message
|
|
189
|
+
const sysMsg = {
|
|
190
|
+
id: msg.id,
|
|
191
|
+
channel: state.channel,
|
|
192
|
+
subchannel: state.subchannel,
|
|
193
|
+
sender: "system",
|
|
194
|
+
content: `@${msg.sender} retracted message ${retraction.target_id}`,
|
|
195
|
+
timestamp: Date.now(),
|
|
196
|
+
type: "system",
|
|
197
|
+
};
|
|
198
|
+
this.store.addMessage(sysMsg);
|
|
199
|
+
if (this.onMessage)
|
|
200
|
+
this.onMessage(sysMsg);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
catch { }
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
// Handle epoch_bump DM — owner rotated channel key
|
|
207
|
+
if (msg.type === "epoch_bump") {
|
|
208
|
+
try {
|
|
209
|
+
const bump = JSON.parse(msg.content);
|
|
210
|
+
// Verify sender is a channel owner
|
|
211
|
+
const meta = this.channelMeta.get(bump.channel);
|
|
212
|
+
if (meta && msg.senderKey && meta.owners.includes(msg.senderKey)) {
|
|
213
|
+
// Apply epoch rotation: derive new key + hash, resubscribe
|
|
214
|
+
const newKey = deriveKey(bump.new_seed, bump.new_epoch);
|
|
215
|
+
const newHash = hashRoom(bump.new_seed);
|
|
216
|
+
// Unsubscribe from old topic, preserve channelHash
|
|
217
|
+
let preservedChannelHash = "";
|
|
218
|
+
for (const [hash, s] of this.channels) {
|
|
219
|
+
if (s.channel === bump.channel && !s.subchannel) {
|
|
220
|
+
preservedChannelHash = s.channelHash;
|
|
221
|
+
if (this.client) {
|
|
222
|
+
this.client.unsubscribe([this.msgTopic(hash), this.presTopic(hash)]);
|
|
223
|
+
}
|
|
224
|
+
this.channels.delete(hash);
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
// Subscribe to new topic (channelHash stays the same)
|
|
229
|
+
this.channels.set(newHash, { channel: bump.channel, key: newKey, hash: newHash, channelHash: preservedChannelHash });
|
|
230
|
+
this.channelKeys.set(bump.channel, bump.new_seed);
|
|
231
|
+
if (this.client) {
|
|
232
|
+
this.client.subscribe([this.msgTopic(newHash), this.presTopic(newHash)], { qos: 1 });
|
|
233
|
+
}
|
|
234
|
+
// Update config
|
|
235
|
+
updateChannelEpoch(bump.channel, bump.new_seed, bump.new_epoch);
|
|
236
|
+
// System message
|
|
237
|
+
const removalInfo = bump.removed_fps?.length
|
|
238
|
+
? `Members removed: ${bump.removed_fps.join(", ")}`
|
|
239
|
+
: "Manual key rotation";
|
|
240
|
+
const sysMsg = {
|
|
241
|
+
id: randomBytes(4).toString("hex"),
|
|
242
|
+
channel: bump.channel,
|
|
243
|
+
sender: "system",
|
|
244
|
+
content: `Channel key rotated to epoch ${bump.new_epoch}. ${removalInfo}`,
|
|
245
|
+
timestamp: Date.now(),
|
|
246
|
+
type: "system",
|
|
247
|
+
};
|
|
248
|
+
this.store.addMessage(sysMsg);
|
|
249
|
+
if (this.onMessage)
|
|
250
|
+
this.onMessage(sysMsg);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
catch { }
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
// Handle removal_notice DM — you were removed from a channel
|
|
257
|
+
if (msg.type === "removal_notice") {
|
|
258
|
+
try {
|
|
259
|
+
const notice = JSON.parse(msg.content);
|
|
260
|
+
const reason = notice.reason ? ` Reason: ${notice.reason}` : "";
|
|
261
|
+
const sysMsg = {
|
|
262
|
+
id: randomBytes(4).toString("hex"),
|
|
263
|
+
channel: notice.channel,
|
|
264
|
+
sender: "system",
|
|
265
|
+
content: `You were removed from #${notice.channel} by ${notice.removed_by}.${reason}`,
|
|
266
|
+
timestamp: Date.now(),
|
|
267
|
+
type: "system",
|
|
268
|
+
};
|
|
269
|
+
this.store.addMessage(sysMsg);
|
|
270
|
+
if (this.onMessage)
|
|
271
|
+
this.onMessage(sysMsg);
|
|
272
|
+
}
|
|
273
|
+
catch { }
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
144
276
|
// Handle channel_meta messages — only accept from owner
|
|
145
277
|
if (msg.type === "channel_meta") {
|
|
146
278
|
try {
|
|
@@ -149,18 +281,28 @@ export class AgentChatClient {
|
|
|
149
281
|
// First meta (no existing) or sender is one of the owners
|
|
150
282
|
if (!existing || (msg.senderKey && existing.owners.includes(msg.senderKey))) {
|
|
151
283
|
this.channelMeta.set(state.channel, meta);
|
|
152
|
-
//
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
if (
|
|
160
|
-
this.
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
284
|
+
// Sync subchannels: join new ones, leave removed ones
|
|
285
|
+
const rawKey = this.getChannelKeyString(state.channel);
|
|
286
|
+
if (rawKey) {
|
|
287
|
+
const metaSubs = new Set(meta.subchannels || []);
|
|
288
|
+
// Leave subchannels no longer in meta
|
|
289
|
+
for (const [hash, s] of this.channels) {
|
|
290
|
+
if (s.channel === state.channel && s.subchannel && !metaSubs.has(s.subchannel)) {
|
|
291
|
+
if (this.client) {
|
|
292
|
+
this.client.unsubscribe([this.msgTopic(hash), this.presTopic(hash)]);
|
|
293
|
+
}
|
|
294
|
+
this.channels.delete(hash);
|
|
295
|
+
removeChannel(state.channel, s.subchannel);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
// Join new subchannels
|
|
299
|
+
for (const sub of metaSubs) {
|
|
300
|
+
const subKey = deriveSubKey(rawKey, sub);
|
|
301
|
+
const subHash = hashSub(rawKey, sub);
|
|
302
|
+
if (!this.channels.has(subHash)) {
|
|
303
|
+
this.channels.set(subHash, { channel: state.channel, subchannel: sub, key: subKey, hash: subHash, channelHash: subHash });
|
|
304
|
+
if (this.client) {
|
|
305
|
+
this.client.subscribe([this.msgTopic(subHash), this.presTopic(subHash)], { qos: 1 });
|
|
164
306
|
}
|
|
165
307
|
}
|
|
166
308
|
}
|
|
@@ -176,7 +318,14 @@ export class AgentChatClient {
|
|
|
176
318
|
this.store.updateMember(msg.sender, state.channel, state.subchannel, msg.senderKey);
|
|
177
319
|
// Persist to cloud (best-effort)
|
|
178
320
|
if (msg.type === "chat") {
|
|
179
|
-
storeMessage(msg.id, state.
|
|
321
|
+
storeMessage(msg.id, state.channelHash, raw, msg.timestamp);
|
|
322
|
+
}
|
|
323
|
+
// Persist locally (if sync enabled)
|
|
324
|
+
if (msg.type === "chat" && getSyncEnabled(state.channel, state.subchannel)) {
|
|
325
|
+
try {
|
|
326
|
+
this.localStore.appendMessage(msg);
|
|
327
|
+
}
|
|
328
|
+
catch { }
|
|
180
329
|
}
|
|
181
330
|
if (this.onMessage) {
|
|
182
331
|
this.onMessage(msg);
|
|
@@ -199,7 +348,7 @@ export class AgentChatClient {
|
|
|
199
348
|
// Skip own presence
|
|
200
349
|
if (data.name === this.name)
|
|
201
350
|
return;
|
|
202
|
-
const label = subchannel ?
|
|
351
|
+
const label = subchannel ? `#${channel}/${subchannel}` : `#${channel}`;
|
|
203
352
|
if (data.status === "online") {
|
|
204
353
|
this.store.updateMember(data.name, channel, subchannel);
|
|
205
354
|
const sysMsg = {
|
|
@@ -246,6 +395,11 @@ export class AgentChatClient {
|
|
|
246
395
|
else {
|
|
247
396
|
target = this.channels.values().next().value;
|
|
248
397
|
}
|
|
398
|
+
// Announcement mode: only owners can send
|
|
399
|
+
const meta = this.channelMeta.get(target.channel);
|
|
400
|
+
if (meta?.mode === "announcement" && !meta.owners.includes(this.identity.fingerprint)) {
|
|
401
|
+
throw new Error(`#${target.channel} is an announcement channel — only owners can send messages`);
|
|
402
|
+
}
|
|
249
403
|
const msg = {
|
|
250
404
|
id: randomBytes(8).toString("hex"),
|
|
251
405
|
channel: target.channel,
|
|
@@ -276,9 +430,10 @@ export class AgentChatClient {
|
|
|
276
430
|
throw new Error("Not connected");
|
|
277
431
|
const key = config.subchannel ? deriveSubKey(config.key, config.subchannel) : deriveKey(config.key);
|
|
278
432
|
const hash = config.subchannel ? hashSub(config.key, config.subchannel) : hashRoom(config.key);
|
|
433
|
+
const channelHash = hash;
|
|
279
434
|
if (this.channels.has(hash))
|
|
280
435
|
return;
|
|
281
|
-
this.channels.set(hash, { channel: config.channel, subchannel: config.subchannel, key, hash });
|
|
436
|
+
this.channels.set(hash, { channel: config.channel, subchannel: config.subchannel, key, hash, channelHash });
|
|
282
437
|
if (!config.subchannel)
|
|
283
438
|
this.channelKeys.set(config.channel, config.key);
|
|
284
439
|
this.client.subscribe([this.msgTopic(hash), this.presTopic(hash)], { qos: 1 });
|
|
@@ -315,7 +470,18 @@ export class AgentChatClient {
|
|
|
315
470
|
msg.subchannel = state.subchannel;
|
|
316
471
|
if (!msg.type)
|
|
317
472
|
msg.type = "chat";
|
|
318
|
-
|
|
473
|
+
if (msg.signature && msg.senderKey) {
|
|
474
|
+
const { signature, trustLevel: _tl, ...msgWithoutSig } = msg;
|
|
475
|
+
const dataToVerify = JSON.stringify(msgWithoutSig);
|
|
476
|
+
const sigValid = verifySignature(dataToVerify, msg.signature, msg.senderKey);
|
|
477
|
+
if (!sigValid)
|
|
478
|
+
continue; // Skip messages with invalid signatures
|
|
479
|
+
const trust = checkTrust(getFingerprint(msg.senderKey), msg.senderKey, msg.sender);
|
|
480
|
+
msg.trustLevel = trust.level;
|
|
481
|
+
}
|
|
482
|
+
else {
|
|
483
|
+
msg.trustLevel = "unsigned";
|
|
484
|
+
}
|
|
319
485
|
if (msg.type === "channel_meta") {
|
|
320
486
|
try {
|
|
321
487
|
const meta = JSON.parse(msg.content);
|
|
@@ -325,6 +491,13 @@ export class AgentChatClient {
|
|
|
325
491
|
continue;
|
|
326
492
|
}
|
|
327
493
|
this.store.addMessage(msg);
|
|
494
|
+
// Backfill local store from history
|
|
495
|
+
if (msg.type === "chat" && getSyncEnabled(state.channel, state.subchannel)) {
|
|
496
|
+
try {
|
|
497
|
+
this.localStore.appendMessage(msg);
|
|
498
|
+
}
|
|
499
|
+
catch { }
|
|
500
|
+
}
|
|
328
501
|
}
|
|
329
502
|
catch {
|
|
330
503
|
// Can't decrypt — wrong key or corrupted
|
|
@@ -378,13 +551,171 @@ export class AgentChatClient {
|
|
|
378
551
|
if (err)
|
|
379
552
|
reject(err);
|
|
380
553
|
else {
|
|
381
|
-
storeMessage(msg.id, target.
|
|
554
|
+
storeMessage(msg.id, target.channelHash, raw, msg.timestamp);
|
|
382
555
|
this.channelMeta.set(channelName, meta);
|
|
383
556
|
resolve();
|
|
384
557
|
}
|
|
385
558
|
});
|
|
386
559
|
});
|
|
387
560
|
}
|
|
561
|
+
// ── Kick / Epoch Rotation ───────────────────────────
|
|
562
|
+
// Shared: broadcast epoch_bump DM to members + apply rotation locally
|
|
563
|
+
async broadcastEpochBump(channelName, recipients, bump) {
|
|
564
|
+
if (!this.client)
|
|
565
|
+
throw new Error("Not connected");
|
|
566
|
+
// DM epoch_bump to each recipient
|
|
567
|
+
for (const member of recipients) {
|
|
568
|
+
if (!member.fingerprint || member.fingerprint === this.identity.fingerprint)
|
|
569
|
+
continue;
|
|
570
|
+
const dmMsg = {
|
|
571
|
+
id: randomBytes(8).toString("hex"),
|
|
572
|
+
channel: `dm:${[this.identity.fingerprint, member.fingerprint].sort().join(":")}`,
|
|
573
|
+
sender: this.name,
|
|
574
|
+
content: JSON.stringify(bump),
|
|
575
|
+
timestamp: Date.now(),
|
|
576
|
+
type: "epoch_bump",
|
|
577
|
+
senderKey: this.identity.fingerprint,
|
|
578
|
+
};
|
|
579
|
+
const dataToSign = JSON.stringify(dmMsg);
|
|
580
|
+
dmMsg.signature = signMessage(dataToSign, this.identity.privateKeyPem);
|
|
581
|
+
const key = deriveDmKey(this.identity.fingerprint, member.fingerprint);
|
|
582
|
+
const hash = hashDm(this.identity.fingerprint, member.fingerprint);
|
|
583
|
+
const encrypted = encrypt(JSON.stringify(dmMsg), key);
|
|
584
|
+
this.client.publish(this.msgTopic(hash), JSON.stringify(encrypted), { qos: 1 });
|
|
585
|
+
}
|
|
586
|
+
// Apply rotation locally (channelHash preserved — D1 key never changes)
|
|
587
|
+
const newKey = deriveKey(bump.new_seed, bump.new_epoch);
|
|
588
|
+
const newHash = hashRoom(bump.new_seed);
|
|
589
|
+
let preservedChannelHash = "";
|
|
590
|
+
for (const [hash, s] of this.channels) {
|
|
591
|
+
if (s.channel === channelName && !s.subchannel) {
|
|
592
|
+
preservedChannelHash = s.channelHash;
|
|
593
|
+
this.client.unsubscribe([this.msgTopic(hash), this.presTopic(hash)]);
|
|
594
|
+
this.channels.delete(hash);
|
|
595
|
+
break;
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
this.channels.set(newHash, { channel: channelName, key: newKey, hash: newHash, channelHash: preservedChannelHash });
|
|
599
|
+
this.channelKeys.set(channelName, bump.new_seed);
|
|
600
|
+
this.client.subscribe([this.msgTopic(newHash), this.presTopic(newHash)], { qos: 1 });
|
|
601
|
+
updateChannelEpoch(channelName, bump.new_seed, bump.new_epoch);
|
|
602
|
+
}
|
|
603
|
+
async removeMember(channelName, targetFingerprint, opts) {
|
|
604
|
+
if (!this.client)
|
|
605
|
+
throw new Error("Not connected");
|
|
606
|
+
const meta = this.channelMeta.get(channelName);
|
|
607
|
+
if (!meta || !meta.owners.includes(this.identity.fingerprint)) {
|
|
608
|
+
throw new Error("Only channel owners can remove members");
|
|
609
|
+
}
|
|
610
|
+
const newSeed = randomBytes(32).toString("base64");
|
|
611
|
+
const newEpoch = getChannelEpoch(channelName) + 1;
|
|
612
|
+
const members = this.store.getMembers(channelName);
|
|
613
|
+
const remaining = members.filter((m) => m.fingerprint && m.fingerprint !== targetFingerprint);
|
|
614
|
+
await this.broadcastEpochBump(channelName, remaining, {
|
|
615
|
+
channel: channelName,
|
|
616
|
+
new_seed: newSeed,
|
|
617
|
+
new_epoch: newEpoch,
|
|
618
|
+
removed_fps: [targetFingerprint],
|
|
619
|
+
});
|
|
620
|
+
// Send removal_notice DM (unless --silent)
|
|
621
|
+
if (!opts?.silent) {
|
|
622
|
+
const noticePayload = {
|
|
623
|
+
channel: channelName,
|
|
624
|
+
removed_at: Date.now(),
|
|
625
|
+
removed_by: this.identity.fingerprint,
|
|
626
|
+
reason: opts?.reason,
|
|
627
|
+
};
|
|
628
|
+
const noticeMsg = {
|
|
629
|
+
id: randomBytes(8).toString("hex"),
|
|
630
|
+
channel: `dm:${[this.identity.fingerprint, targetFingerprint].sort().join(":")}`,
|
|
631
|
+
sender: this.name,
|
|
632
|
+
content: JSON.stringify(noticePayload),
|
|
633
|
+
timestamp: Date.now(),
|
|
634
|
+
type: "removal_notice",
|
|
635
|
+
senderKey: this.identity.fingerprint,
|
|
636
|
+
};
|
|
637
|
+
const dataToSign = JSON.stringify(noticeMsg);
|
|
638
|
+
noticeMsg.signature = signMessage(dataToSign, this.identity.privateKeyPem);
|
|
639
|
+
const key = deriveDmKey(this.identity.fingerprint, targetFingerprint);
|
|
640
|
+
const hash = hashDm(this.identity.fingerprint, targetFingerprint);
|
|
641
|
+
const encrypted = encrypt(JSON.stringify(noticeMsg), key);
|
|
642
|
+
this.client.publish(this.msgTopic(hash), JSON.stringify(encrypted), { qos: 1 });
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
async rotateChannel(channelName) {
|
|
646
|
+
if (!this.client)
|
|
647
|
+
throw new Error("Not connected");
|
|
648
|
+
const meta = this.channelMeta.get(channelName);
|
|
649
|
+
if (!meta || !meta.owners.includes(this.identity.fingerprint)) {
|
|
650
|
+
throw new Error("Only channel owners can rotate channel keys");
|
|
651
|
+
}
|
|
652
|
+
const newSeed = randomBytes(32).toString("base64");
|
|
653
|
+
const newEpoch = getChannelEpoch(channelName) + 1;
|
|
654
|
+
const members = this.store.getMembers(channelName);
|
|
655
|
+
await this.broadcastEpochBump(channelName, members, {
|
|
656
|
+
channel: channelName,
|
|
657
|
+
new_seed: newSeed,
|
|
658
|
+
new_epoch: newEpoch,
|
|
659
|
+
});
|
|
660
|
+
}
|
|
661
|
+
// ── Retraction ──────────────────────────────────────
|
|
662
|
+
async retractMessage(messageId, channelName, reason) {
|
|
663
|
+
if (!this.client)
|
|
664
|
+
throw new Error("Not connected");
|
|
665
|
+
// Find the target message
|
|
666
|
+
const target = this.store.getMessageById(messageId);
|
|
667
|
+
if (!target)
|
|
668
|
+
throw new Error(`Message "${messageId}" not found`);
|
|
669
|
+
// Verify ownership
|
|
670
|
+
if (target.senderKey !== this.identity.fingerprint) {
|
|
671
|
+
throw new Error("You can only retract your own messages");
|
|
672
|
+
}
|
|
673
|
+
// Verify 24h window
|
|
674
|
+
const age = Date.now() - target.timestamp;
|
|
675
|
+
if (age > 24 * 60 * 60 * 1000) {
|
|
676
|
+
throw new Error("Retraction window expired (24h limit)");
|
|
677
|
+
}
|
|
678
|
+
const retraction = {
|
|
679
|
+
target_id: messageId,
|
|
680
|
+
retracted_at: Date.now(),
|
|
681
|
+
reason,
|
|
682
|
+
};
|
|
683
|
+
const ch = channelName || target.channel;
|
|
684
|
+
const targetChannel = target.subchannel ? `${target.channel}/${target.subchannel}` : target.channel;
|
|
685
|
+
const msg = {
|
|
686
|
+
id: randomBytes(8).toString("hex"),
|
|
687
|
+
channel: target.channel,
|
|
688
|
+
subchannel: target.subchannel,
|
|
689
|
+
sender: this.name,
|
|
690
|
+
content: JSON.stringify(retraction),
|
|
691
|
+
timestamp: Date.now(),
|
|
692
|
+
type: "retraction",
|
|
693
|
+
senderKey: this.identity.fingerprint,
|
|
694
|
+
};
|
|
695
|
+
const dataToSign = JSON.stringify(msg);
|
|
696
|
+
msg.signature = signMessage(dataToSign, this.identity.privateKeyPem);
|
|
697
|
+
// Find the channel state for encryption
|
|
698
|
+
let targetState;
|
|
699
|
+
for (const state of this.channels.values()) {
|
|
700
|
+
if (fullId(state) === targetChannel || state.channel === target.channel) {
|
|
701
|
+
targetState = state;
|
|
702
|
+
break;
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
if (!targetState)
|
|
706
|
+
throw new Error(`Channel not found for retraction`);
|
|
707
|
+
const encrypted = encrypt(JSON.stringify(msg), targetState.key);
|
|
708
|
+
return new Promise((resolve, reject) => {
|
|
709
|
+
this.client.publish(this.msgTopic(targetState.hash), JSON.stringify(encrypted), { qos: 1 }, (err) => {
|
|
710
|
+
if (err)
|
|
711
|
+
reject(err);
|
|
712
|
+
else {
|
|
713
|
+
this.store.addRetraction(messageId);
|
|
714
|
+
resolve(msg);
|
|
715
|
+
}
|
|
716
|
+
});
|
|
717
|
+
});
|
|
718
|
+
}
|
|
388
719
|
// ── DM (Direct Message) support ──────────────────────
|
|
389
720
|
async joinDm(theirFingerprint) {
|
|
390
721
|
if (!this.client)
|
|
@@ -394,7 +725,7 @@ export class AgentChatClient {
|
|
|
394
725
|
const hash = hashDm(myFp, theirFingerprint);
|
|
395
726
|
const dmChannel = `dm:${[myFp, theirFingerprint].sort().join(":")}`;
|
|
396
727
|
if (!this.channels.has(hash)) {
|
|
397
|
-
this.channels.set(hash, { channel: dmChannel, key, hash });
|
|
728
|
+
this.channels.set(hash, { channel: dmChannel, key, hash, channelHash: hash });
|
|
398
729
|
this.client.subscribe([this.msgTopic(hash)], { qos: 1 });
|
|
399
730
|
// Load DM history
|
|
400
731
|
try {
|
|
@@ -409,7 +740,18 @@ export class AgentChatClient {
|
|
|
409
740
|
msg.channel = dmChannel;
|
|
410
741
|
if (!msg.type)
|
|
411
742
|
msg.type = "chat";
|
|
412
|
-
|
|
743
|
+
if (msg.signature && msg.senderKey) {
|
|
744
|
+
const { signature, trustLevel: _tl, ...msgWithoutSig } = msg;
|
|
745
|
+
const dataToVerify = JSON.stringify(msgWithoutSig);
|
|
746
|
+
const sigValid = verifySignature(dataToVerify, msg.signature, msg.senderKey);
|
|
747
|
+
if (!sigValid)
|
|
748
|
+
continue;
|
|
749
|
+
const trust = checkTrust(getFingerprint(msg.senderKey), msg.senderKey, msg.sender);
|
|
750
|
+
msg.trustLevel = trust.level;
|
|
751
|
+
}
|
|
752
|
+
else {
|
|
753
|
+
msg.trustLevel = "unsigned";
|
|
754
|
+
}
|
|
413
755
|
this.store.addMessage(msg);
|
|
414
756
|
}
|
|
415
757
|
catch { }
|
package/dist/mqtt-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mqtt-client.js","sourceRoot":"","sources":["../src/mqtt-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mqtt-client.js","sourceRoot":"","sources":["../src/mqtt-client.ts"],"names":[],"mappings":"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"}
|