openclaw-weixin 3.0.2 → 3.1.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.
@@ -49,22 +49,155 @@ export function listIndexedWeixinAccountIds() {
49
49
  return [];
50
50
  }
51
51
  }
52
+ /**
53
+ * OpenClaw host sentinel passed to `auth.login` when the user omits `--account`.
54
+ * Must never become a durable runtime / credential alias.
55
+ */
56
+ export const HOST_DEFAULT_ACCOUNT_ID = "default";
57
+ /** Atomically replace a JSON file (temp + rename) so mid-write failures keep the previous file. */
58
+ function writeJsonFileAtomic(filePath, value) {
59
+ const dir = path.dirname(filePath);
60
+ fs.mkdirSync(dir, { recursive: true });
61
+ const tmpPath = `${filePath}.${process.pid}.${Date.now()}.tmp`;
62
+ fs.writeFileSync(tmpPath, JSON.stringify(value, null, 2), "utf-8");
63
+ fs.renameSync(tmpPath, filePath);
64
+ }
65
+ /** Replace the persistent account index in a single atomic write. */
66
+ function writeAccountIndex(accountIds) {
67
+ writeJsonFileAtomic(resolveAccountIndexPath(), accountIds);
68
+ }
69
+ // ---------------------------------------------------------------------------
70
+ // Alias → primary hash map (logical; not a second monitor / state namespace)
71
+ // ---------------------------------------------------------------------------
72
+ function resolveAccountAliasMapPath() {
73
+ return path.join(resolveWeixinStateDir(), "account-aliases.json");
74
+ }
75
+ function loadAccountAliasMap() {
76
+ const filePath = resolveAccountAliasMapPath();
77
+ try {
78
+ if (!fs.existsSync(filePath))
79
+ return {};
80
+ const parsed = JSON.parse(fs.readFileSync(filePath, "utf-8"));
81
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
82
+ return {};
83
+ const out = {};
84
+ for (const [alias, primary] of Object.entries(parsed)) {
85
+ if (typeof alias !== "string" || typeof primary !== "string")
86
+ continue;
87
+ const a = alias.trim();
88
+ const p = primary.trim();
89
+ if (!a || !p)
90
+ continue;
91
+ out[a] = p;
92
+ }
93
+ return out;
94
+ }
95
+ catch {
96
+ return {};
97
+ }
98
+ }
99
+ function writeAccountAliasMap(map) {
100
+ writeJsonFileAtomic(resolveAccountAliasMapPath(), map);
101
+ }
102
+ /** Resolve alias → primary hash, or return the id itself when it is already primary. */
103
+ export function resolvePrimaryAccountId(accountId) {
104
+ const id = normalizeAccountId(accountId.trim());
105
+ if (!id)
106
+ return id;
107
+ const mapped = loadAccountAliasMap()[id];
108
+ return mapped ? normalizeAccountId(mapped) || id : id;
109
+ }
110
+ /** Reverse lookup: primary hash → public alias (if any). */
111
+ export function resolveAliasForPrimaryAccountId(primaryId) {
112
+ const primary = normalizeAccountId(primaryId.trim());
113
+ if (!primary)
114
+ return null;
115
+ for (const [alias, target] of Object.entries(loadAccountAliasMap())) {
116
+ if (normalizeAccountId(target) === primary)
117
+ return alias;
118
+ }
119
+ return null;
120
+ }
121
+ /**
122
+ * Public account id for bindings / inbound routing: alias when mapped, else primary.
123
+ * Transport / poll cursor / context tokens / replay dedupe always stay on primary.
124
+ */
125
+ export function resolvePublicAccountId(accountId) {
126
+ const primary = resolvePrimaryAccountId(accountId);
127
+ return resolveAliasForPrimaryAccountId(primary) ?? primary;
128
+ }
129
+ /**
130
+ * Bind a stable alias to a primary bot-hash id (1:1).
131
+ * Rejects conflicts where the alias or primary is already paired differently.
132
+ */
133
+ export function bindWeixinAccountAlias(aliasId, primaryId) {
134
+ const alias = normalizeAccountId(aliasId.trim());
135
+ const primary = normalizeAccountId(primaryId.trim());
136
+ if (!alias || !primary) {
137
+ throw new Error("weixin: alias and primary account id are required");
138
+ }
139
+ if (alias === primary) {
140
+ throw new Error("weixin: alias must differ from the primary bot id");
141
+ }
142
+ if (alias.toLowerCase() === HOST_DEFAULT_ACCOUNT_ID) {
143
+ throw new Error("weixin: host default sentinel cannot be used as an alias");
144
+ }
145
+ const map = loadAccountAliasMap();
146
+ const existingPrimary = map[alias] ? normalizeAccountId(map[alias]) : null;
147
+ if (existingPrimary && existingPrimary !== primary) {
148
+ throw new Error("weixin: requested --account alias is already bound to a different bot. " +
149
+ "Choose another alias, or clear the existing alias mapping before rebinding.");
150
+ }
151
+ for (const [otherAlias, target] of Object.entries(map)) {
152
+ if (otherAlias === alias)
153
+ continue;
154
+ if (normalizeAccountId(target) === primary && otherAlias !== alias) {
155
+ throw new Error("weixin: this bot already has a different --account alias. " +
156
+ "Clear the existing alias mapping before assigning a new one.");
157
+ }
158
+ }
159
+ map[alias] = primary;
160
+ writeAccountAliasMap(map);
161
+ }
162
+ function unbindAliasesForPrimaryIds(primaryIds) {
163
+ const drop = new Set([...primaryIds].map((id) => normalizeAccountId(id.trim())).filter(Boolean));
164
+ if (drop.size === 0)
165
+ return;
166
+ const map = loadAccountAliasMap();
167
+ let changed = false;
168
+ for (const [alias, target] of Object.entries(map)) {
169
+ if (drop.has(normalizeAccountId(target))) {
170
+ delete map[alias];
171
+ changed = true;
172
+ }
173
+ }
174
+ if (changed)
175
+ writeAccountAliasMap(map);
176
+ }
177
+ /**
178
+ * Reject binding when a leftover alias credential file already holds a different
179
+ * bot token. Never move sync / context / allow-list state between identities.
180
+ */
181
+ function assertAliasCredentialCompatible(aliasId, primaryToken) {
182
+ const leftoverToken = loadWeixinAccount(aliasId)?.token?.trim();
183
+ if (leftoverToken && leftoverToken !== primaryToken.trim()) {
184
+ throw new Error("weixin: requested --account alias already has credentials for a different bot. " +
185
+ "Choose another alias, or clear the existing alias credentials before rebinding.");
186
+ }
187
+ }
52
188
  /** Add accountId to the persistent index (no-op if already present). */
53
189
  export function registerWeixinAccountId(accountId) {
54
- const dir = resolveWeixinStateDir();
55
- fs.mkdirSync(dir, { recursive: true });
56
190
  const existing = listIndexedWeixinAccountIds();
57
191
  if (existing.includes(accountId))
58
192
  return;
59
- const updated = [...existing, accountId];
60
- fs.writeFileSync(resolveAccountIndexPath(), JSON.stringify(updated, null, 2), "utf-8");
193
+ writeAccountIndex([...existing, accountId]);
61
194
  }
62
195
  /** Remove accountId from the persistent index. */
63
196
  export function unregisterWeixinAccountId(accountId) {
64
197
  const existing = listIndexedWeixinAccountIds();
65
198
  const updated = existing.filter((id) => id !== accountId);
66
199
  if (updated.length !== existing.length) {
67
- fs.writeFileSync(resolveAccountIndexPath(), JSON.stringify(updated, null, 2), "utf-8");
200
+ writeAccountIndex(updated);
68
201
  }
69
202
  }
70
203
  /**
@@ -72,23 +205,168 @@ export function unregisterWeixinAccountId(accountId) {
72
205
  * Called after a successful QR login to ensure only the latest account remains
73
206
  * for a given WeChat user, preventing ambiguous contextToken matches.
74
207
  *
208
+ * @param keepAccountIds primary bot-hash ids that must not be deleted
209
+ * @param userId WeChat user id whose other indexed accounts should be removed
75
210
  * @param onClearContextTokens callback to clear context tokens for the removed account
76
211
  */
77
- export function clearStaleAccountsForUserId(currentAccountId, userId, onClearContextTokens) {
212
+ export function clearStaleAccountsForUserId(keepAccountIds, userId, onClearContextTokens) {
78
213
  if (!userId)
79
214
  return;
215
+ const keep = new Set((Array.isArray(keepAccountIds) ? keepAccountIds : [keepAccountIds])
216
+ .map((id) => resolvePrimaryAccountId(id.trim()))
217
+ .filter(Boolean));
218
+ if (keep.size === 0)
219
+ return;
80
220
  const allIds = listIndexedWeixinAccountIds();
221
+ const removedPrimaries = [];
81
222
  for (const id of allIds) {
82
- if (id === currentAccountId)
223
+ const primary = resolvePrimaryAccountId(id);
224
+ if (keep.has(primary))
83
225
  continue;
84
- const data = loadWeixinAccount(id);
226
+ const data = loadWeixinAccount(primary) ?? loadWeixinAccount(id);
85
227
  if (data?.userId?.trim() === userId) {
86
- logger.info(`clearStaleAccountsForUserId: removing stale account=${id} (same userId=${userId})`);
87
- onClearContextTokens?.(id);
88
- clearWeixinAccount(id);
228
+ logger.info("clearStaleAccountsForUserId: removing stale account for same userId");
229
+ onClearContextTokens?.(primary);
230
+ if (id !== primary) {
231
+ onClearContextTokens?.(id);
232
+ clearWeixinAccount(id);
233
+ }
234
+ clearWeixinAccount(primary);
89
235
  unregisterWeixinAccountId(id);
236
+ if (id !== primary)
237
+ unregisterWeixinAccountId(primary);
238
+ removedPrimaries.push(primary);
90
239
  }
91
240
  }
241
+ unbindAliasesForPrimaryIds(removedPrimaries);
242
+ }
243
+ /**
244
+ * Resolve a stable human alias to persist alongside the primary bot id.
245
+ * Returns null for missing input, the primary bot id itself, the OpenClaw
246
+ * `default` host sentinel, or an ephemeral UUID session key.
247
+ */
248
+ export function resolveLoginAccountAlias(requestedAccountId, primaryNormalizedId) {
249
+ const raw = requestedAccountId?.trim();
250
+ if (!raw)
251
+ return null;
252
+ const alias = normalizeAccountId(raw);
253
+ if (!alias || alias === primaryNormalizedId)
254
+ return null;
255
+ if (alias.toLowerCase() === HOST_DEFAULT_ACCOUNT_ID)
256
+ return null;
257
+ // Ephemeral login session keys must never become durable account files.
258
+ if (/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(alias)) {
259
+ return null;
260
+ }
261
+ return alias;
262
+ }
263
+ /**
264
+ * Publish the primary bot-hash into the runtime index and drop any leftover
265
+ * alias ids (or other drop candidates) so one bot token never starts two monitors.
266
+ */
267
+ function publishPrimaryAccountIndex(primaryId, dropFromIndex = []) {
268
+ const aliasKeys = new Set(Object.keys(loadAccountAliasMap()));
269
+ const drop = new Set([...dropFromIndex, ...aliasKeys].map((id) => id.trim()).filter((id) => id && id !== primaryId));
270
+ const next = listIndexedWeixinAccountIds()
271
+ .map((id) => resolvePrimaryAccountId(id))
272
+ .filter((id) => id && id !== primaryId && !drop.has(id));
273
+ const deduped = [];
274
+ const seen = new Set();
275
+ for (const id of next) {
276
+ if (seen.has(id))
277
+ continue;
278
+ seen.add(id);
279
+ deduped.push(id);
280
+ }
281
+ deduped.push(primaryId);
282
+ writeAccountIndex(deduped);
283
+ }
284
+ /**
285
+ * Persist QR-login credentials under the server bot-hash id. When the caller
286
+ * passed a stable `--account` alias, record a 1:1 alias→hash mapping for
287
+ * bindings / outbound resolution — without indexing the alias or starting a
288
+ * second monitor, and without relocating state namespaces onto the alias.
289
+ */
290
+ export function persistWeixinLoginAccounts(params) {
291
+ const primaryId = normalizeAccountId(params.botAccountId);
292
+ if (!primaryId) {
293
+ throw new Error("weixin: bot accountId is required after login");
294
+ }
295
+ const creds = {
296
+ token: params.token,
297
+ baseUrl: params.baseUrl,
298
+ userId: params.userId,
299
+ };
300
+ saveWeixinAccount(primaryId, creds);
301
+ const aliasId = resolveLoginAccountAlias(params.requestedAccountId, primaryId);
302
+ if (aliasId) {
303
+ assertAliasCredentialCompatible(aliasId, params.token);
304
+ bindWeixinAccountAlias(aliasId, primaryId);
305
+ logger.info("persistWeixinLoginAccounts: bound alias mapping to primary bot id");
306
+ }
307
+ // Publish the primary index entry before destructive stale cleanup so a
308
+ // later failure cannot leave credentials undiscoverable after restart.
309
+ publishPrimaryAccountIndex(primaryId, aliasId ? [aliasId] : []);
310
+ if (params.userId?.trim()) {
311
+ clearStaleAccountsForUserId([primaryId], params.userId.trim(), params.onClearContextTokens);
312
+ }
313
+ return { primaryId, aliasId, canonicalId: primaryId };
314
+ }
315
+ /**
316
+ * When QR login returns `alreadyConnected` / `binded_redirect`, bind a requested
317
+ * stable `--account` alias onto an unambiguous local primary (hash) account.
318
+ *
319
+ * Does not rename the runtime account id: the primary hash stays indexed and
320
+ * owns all state. Returns null when no alias was requested (including the host
321
+ * `default` sentinel). Throws when the source binding is ambiguous / missing.
322
+ */
323
+ export function migrateBoundAccountToAlias(params) {
324
+ // primary id unknown until we resolve the source credential; pass "" so only
325
+ // sentinel / UUID / empty checks apply before we know the hash id.
326
+ const aliasId = resolveLoginAccountAlias(params.requestedAccountId, "");
327
+ if (!aliasId)
328
+ return null;
329
+ const existingPrimary = resolvePrimaryAccountId(aliasId);
330
+ if (existingPrimary !== aliasId) {
331
+ // Alias already mapped — ensure the primary remains the sole indexed id.
332
+ publishPrimaryAccountIndex(existingPrimary, [aliasId]);
333
+ return { primaryId: existingPrimary, aliasId, canonicalId: existingPrimary };
334
+ }
335
+ const indexedWithToken = listIndexedWeixinAccountIds()
336
+ .map((id) => {
337
+ const primary = resolvePrimaryAccountId(id);
338
+ return { primary, data: loadWeixinAccount(primary) ?? loadWeixinAccount(id) };
339
+ })
340
+ .filter((entry) => Boolean(entry.data?.token?.trim()));
341
+ const uniquePrimaries = new Map();
342
+ for (const entry of indexedWithToken) {
343
+ uniquePrimaries.set(entry.primary, entry);
344
+ }
345
+ if (uniquePrimaries.size === 0) {
346
+ throw new Error("weixin: already connected, but no local credentials are available to bind the requested --account alias. " +
347
+ "Clear stale state or re-login with a fresh QR (force) so a token is issued.");
348
+ }
349
+ if (uniquePrimaries.size > 1) {
350
+ throw new Error(`weixin: already connected, but multiple bound accounts are ambiguous (${uniquePrimaries.size}). ` +
351
+ "Re-login with force for a single account, or remove the extra credentials before binding --account.");
352
+ }
353
+ const source = [...uniquePrimaries.values()][0];
354
+ const token = source.data.token?.trim();
355
+ if (!token) {
356
+ throw new Error("weixin: already connected, but the matched account has no token to bind to the requested --account alias.");
357
+ }
358
+ // Rerun with --account <existing-hash>: treat as no-op (not an alias bind).
359
+ if (aliasId === source.primary) {
360
+ return null;
361
+ }
362
+ assertAliasCredentialCompatible(aliasId, token);
363
+ bindWeixinAccountAlias(aliasId, source.primary);
364
+ publishPrimaryAccountIndex(source.primary, [aliasId]);
365
+ if (source.data.userId?.trim()) {
366
+ clearStaleAccountsForUserId([source.primary], source.data.userId.trim(), params.onClearContextTokens);
367
+ }
368
+ logger.info("migrateBoundAccountToAlias: bound alias mapping onto primary bot id");
369
+ return { primaryId: source.primary, aliasId, canonicalId: source.primary };
92
370
  }
93
371
  function resolveAccountsDir() {
94
372
  return path.join(resolveWeixinStateDir(), "accounts");
@@ -289,24 +567,41 @@ export async function triggerWeixinChannelReload() {
289
567
  logger.warn(`triggerWeixinChannelReload: failed to update config: ${String(err)}`);
290
568
  }
291
569
  }
292
- /** List accountIds from the index file (written at QR login). */
570
+ /**
571
+ * List primary bot-hash account ids for gateway monitors.
572
+ * Alias keys are never returned — they resolve via {@link resolveWeixinAccount}.
573
+ */
293
574
  export function listWeixinAccountIds(_cfg) {
294
- return listIndexedWeixinAccountIds();
575
+ const seen = new Set();
576
+ const out = [];
577
+ for (const id of listIndexedWeixinAccountIds()) {
578
+ const primary = resolvePrimaryAccountId(id);
579
+ if (!primary || seen.has(primary))
580
+ continue;
581
+ seen.add(primary);
582
+ out.push(primary);
583
+ }
584
+ return out;
295
585
  }
296
- /** Resolve a weixin account by ID, merging config and stored credentials. */
586
+ /** Resolve a weixin account by ID (alias or primary), merging config and stored credentials. */
297
587
  export function resolveWeixinAccount(cfg, accountId) {
298
588
  const raw = accountId?.trim();
299
589
  if (!raw) {
300
590
  throw new Error("weixin: accountId is required (no default account)");
301
591
  }
302
- const id = normalizeAccountId(raw);
592
+ const requestedId = normalizeAccountId(raw);
593
+ const primaryId = resolvePrimaryAccountId(requestedId);
594
+ const aliasId = resolveAliasForPrimaryAccountId(primaryId);
303
595
  const section = cfg.channels?.["openclaw-weixin"];
304
- const accountCfg = section?.accounts?.[id] ?? section ?? {};
305
- const accountData = loadWeixinAccount(id);
596
+ const accounts = section?.accounts;
597
+ const accountCfg = accounts?.[requestedId] ?? (aliasId ? accounts?.[aliasId] : undefined) ?? accounts?.[primaryId] ?? section ?? {};
598
+ const accountData = loadWeixinAccount(primaryId) ?? loadWeixinAccount(requestedId);
306
599
  const token = accountData?.token?.trim() || undefined;
307
600
  const stateBaseUrl = accountData?.baseUrl?.trim() || "";
308
601
  return {
309
- accountId: id,
602
+ accountId: requestedId,
603
+ primaryId,
604
+ aliasId,
310
605
  baseUrl: stateBaseUrl || DEFAULT_BASE_URL,
311
606
  cdnBaseUrl: accountCfg.cdnBaseUrl?.trim() || CDN_BASE_URL,
312
607
  token,
@@ -1 +1 @@
1
- {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../../src/auth/accounts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../../src/auth/accounts.ts"],"names":[],"mappings":"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"}