@agentunion/fastaun 0.5.0 → 0.5.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.
Files changed (91) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/_packed_docs/CHANGELOG-validators.md +144 -0
  3. package/_packed_docs/CHANGELOG.md +59 -0
  4. package/_packed_docs/INDEX.md +198 -181
  5. package/_packed_docs/KITE_DOCS_GUIDE.md +26 -23
  6. package/_packed_docs/cli/AUN-CLI/350/256/276/350/256/241/346/226/207/346/241/243.md +4 -3
  7. package/_packed_docs/cli/CLI/346/211/213/345/206/214.md +331 -0
  8. package/_packed_docs/protocol/08-AUN-E2EE-Group.md +296 -902
  9. package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +64 -114
  10. package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +7 -1
  11. package/_packed_docs/protocol/16-/347/263/273/347/273/237/347/233/256/345/275/225/344/277/235/346/212/244/346/226/271/346/241/210.md +177 -0
  12. package/_packed_docs/protocol/README.md +2 -1
  13. package/_packed_docs/protocol/index.md +8 -3
  14. package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +4 -252
  15. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +483 -457
  16. package/_packed_docs/sdk/09-collab-rpc-manual.md +581 -550
  17. package/_packed_docs/sdk/09-group-rpc-manual.md +248 -335
  18. package/_packed_docs/sdk/09-storage-rpc-manual.md +56 -19
  19. package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +13 -13
  20. package/_packed_docs/sdk/INDEX.md +14 -14
  21. package/dist/client/delivery.d.ts +9 -0
  22. package/dist/client/delivery.js +157 -24
  23. package/dist/client/delivery.js.map +1 -1
  24. package/dist/client/group-state.js +33 -11
  25. package/dist/client/group-state.js.map +1 -1
  26. package/dist/client/rpc-pipeline.d.ts +1 -0
  27. package/dist/client/rpc-pipeline.js +127 -40
  28. package/dist/client/rpc-pipeline.js.map +1 -1
  29. package/dist/client/v2-e2ee.d.ts +6 -1
  30. package/dist/client/v2-e2ee.js +199 -130
  31. package/dist/client/v2-e2ee.js.map +1 -1
  32. package/dist/client.d.ts +8 -1
  33. package/dist/client.js +227 -31
  34. package/dist/client.js.map +1 -1
  35. package/dist/collab/client.d.ts +8 -0
  36. package/dist/collab/client.js +12 -0
  37. package/dist/collab/client.js.map +1 -1
  38. package/dist/errors.d.ts +0 -20
  39. package/dist/errors.js +8 -53
  40. package/dist/errors.js.map +1 -1
  41. package/dist/facades.d.ts +9 -4
  42. package/dist/facades.js +137 -15
  43. package/dist/facades.js.map +1 -1
  44. package/dist/group-fs.d.ts +26 -9
  45. package/dist/group-fs.js +84 -84
  46. package/dist/group-fs.js.map +1 -1
  47. package/dist/group-id.d.ts +9 -12
  48. package/dist/group-id.js +41 -63
  49. package/dist/group-id.js.map +1 -1
  50. package/dist/index.d.ts +4 -2
  51. package/dist/index.js +4 -1
  52. package/dist/index.js.map +1 -1
  53. package/dist/keystore/aid-db.d.ts +1 -0
  54. package/dist/keystore/aid-db.js +43 -43
  55. package/dist/keystore/aid-db.js.map +1 -1
  56. package/dist/keystore/local-identity-store.d.ts +16 -0
  57. package/dist/keystore/local-identity-store.js +190 -18
  58. package/dist/keystore/local-identity-store.js.map +1 -1
  59. package/dist/keystore/local-token-store.d.ts +0 -13
  60. package/dist/keystore/local-token-store.js +0 -105
  61. package/dist/keystore/local-token-store.js.map +1 -1
  62. package/dist/logger.d.ts +2 -0
  63. package/dist/logger.js +4 -0
  64. package/dist/logger.js.map +1 -1
  65. package/dist/storage/lowlevel.d.ts +9 -1
  66. package/dist/storage/lowlevel.js +12 -1
  67. package/dist/storage/lowlevel.js.map +1 -1
  68. package/dist/storage/types.d.ts +0 -1
  69. package/dist/storage/types.js.map +1 -1
  70. package/dist/storage/vfs.d.ts +22 -3
  71. package/dist/storage/vfs.js +89 -54
  72. package/dist/storage/vfs.js.map +1 -1
  73. package/dist/tools/cross-sdk-agent.js +336 -49
  74. package/dist/tools/cross-sdk-agent.js.map +1 -1
  75. package/dist/transport.d.ts +2 -0
  76. package/dist/transport.js +52 -3
  77. package/dist/transport.js.map +1 -1
  78. package/dist/types.d.ts +38 -0
  79. package/dist/v2/session/session.d.ts +2 -0
  80. package/dist/v2/session/session.js +53 -23
  81. package/dist/v2/session/session.js.map +1 -1
  82. package/dist/v2/state/commitment.d.ts +1 -1
  83. package/dist/v2/state/commitment.js +4 -2
  84. package/dist/v2/state/commitment.js.map +1 -1
  85. package/dist/validators.d.ts +32 -0
  86. package/dist/validators.js +128 -0
  87. package/dist/validators.js.map +1 -0
  88. package/dist/version.d.ts +1 -1
  89. package/dist/version.js +1 -1
  90. package/package.json +1 -1
  91. package/_packed_docs/collab-gateway-boundary-test-report.md +0 -164
@@ -14,6 +14,7 @@
14
14
  * - SPK 注册:调 callFn("message.v2.put_peer_pk", ...)
15
15
  */
16
16
  import { createHash } from 'node:crypto';
17
+ import { normalizeGroupId } from '../../group-id.js';
17
18
  import { generateP256Keypair } from '../crypto/ecdh.js';
18
19
  import { ecdsaSignRaw } from '../crypto/ecdsa.js';
19
20
  /** 对端 IK 公钥缓存 TTL(毫秒)。 */
@@ -98,11 +99,24 @@ export class V2Session {
98
99
  const hashHex = createHash('sha256').update(this._ikPubDer).digest('hex');
99
100
  return `sha256:${hashHex.substring(0, 16)}`;
100
101
  }
102
+ _groupKey(groupId) {
103
+ return normalizeGroupId(groupId) || String(groupId ?? '').trim();
104
+ }
105
+ _groupLookupCandidates(groupId) {
106
+ const raw = String(groupId ?? '').trim();
107
+ const normalized = this._groupKey(raw);
108
+ const out = [];
109
+ for (const item of [normalized, raw]) {
110
+ if (item && !out.includes(item))
111
+ out.push(item);
112
+ }
113
+ return out;
114
+ }
101
115
  _normalizeGroupSPKLookup(groupId, spkId) {
102
116
  const nul = spkId.indexOf('\0');
103
117
  if (nul < 0)
104
- return { groupId, spkId };
105
- return { groupId: spkId.slice(0, nul), spkId: spkId.slice(nul + 1) };
118
+ return { groupId: this._groupKey(groupId), spkId };
119
+ return { groupId: this._groupKey(spkId.slice(0, nul)), spkId: spkId.slice(nul + 1) };
106
120
  }
107
121
  /** 注册本设备 SPK 到服务端。IK = AID 长期密钥,无需注册。 */
108
122
  async ensureRegistered(callFn) {
@@ -280,34 +294,42 @@ export class V2Session {
280
294
  /** 确保指定群有独立 group SPK,返回 { spkId, priv, pubDER }。 */
281
295
  ensureGroupSPK(groupId) {
282
296
  this.ensureKeys();
283
- const cur = this._store.loadCurrentGroupSPK(this._deviceId, groupId);
284
- if (cur)
285
- return cur;
297
+ const gk = this._groupKey(groupId);
298
+ for (const candidate of this._groupLookupCandidates(groupId)) {
299
+ const cur = this._store.loadCurrentGroupSPK(this._deviceId, candidate);
300
+ if (cur)
301
+ return cur;
302
+ }
286
303
  // 生成新 group SPK
287
304
  const [priv, pubDer] = generateP256Keypair();
288
305
  const hashHex = createHash('sha256').update(pubDer).digest('hex');
289
306
  const spkId = `sha256:${hashHex.substring(0, 16)}`;
290
- this._store.saveGroupSPK(this._deviceId, groupId, spkId, priv, pubDer);
307
+ this._store.saveGroupSPK(this._deviceId, gk, spkId, priv, pubDer);
291
308
  return { spkId, priv, pubDer };
292
309
  }
293
310
  /** 注册指定群的 group SPK 到服务端。group 服务负责成员鉴权。 */
294
311
  async ensureGroupRegistered(groupId, callFn) {
295
- const uploadedSPKId = this._store.loadLatestUploadedGroupSPKId(this._deviceId, groupId);
296
- if (uploadedSPKId) {
297
- this._lastUploadedGroupSPKIds.set(groupId, uploadedSPKId);
298
- return;
312
+ const gk = this._groupKey(groupId);
313
+ for (const candidate of this._groupLookupCandidates(groupId)) {
314
+ const uploadedSPKId = this._store.loadLatestUploadedGroupSPKId(this._deviceId, candidate);
315
+ if (uploadedSPKId) {
316
+ this._lastUploadedGroupSPKIds.set(gk, uploadedSPKId);
317
+ this._lastUploadedGroupSPKIds.set(candidate, uploadedSPKId);
318
+ return;
319
+ }
299
320
  }
300
- const { spkId, pubDer } = this.ensureGroupSPK(groupId);
301
- await this._publishGroupSPK(groupId, spkId, pubDer, callFn);
321
+ const { spkId, pubDer } = this.ensureGroupSPK(gk);
322
+ await this._publishGroupSPK(gk, spkId, pubDer, callFn);
302
323
  }
303
324
  /** 轮换指定群的 group SPK,保留旧私钥用于缓存窗口内的历史 wrap 解密。 */
304
325
  async rotateGroupSPK(groupId, callFn) {
305
326
  this.ensureKeys();
327
+ const gk = this._groupKey(groupId);
306
328
  const [priv, pubDer] = generateP256Keypair();
307
329
  const hashHex = createHash('sha256').update(pubDer).digest('hex');
308
330
  const spkId = `sha256:${hashHex.substring(0, 16)}`;
309
- this._store.saveGroupSPK(this._deviceId, groupId, spkId, priv, pubDer);
310
- await this._publishGroupSPK(groupId, spkId, pubDer, callFn);
331
+ this._store.saveGroupSPK(this._deviceId, gk, spkId, priv, pubDer);
332
+ await this._publishGroupSPK(gk, spkId, pubDer, callFn);
311
333
  return { spkId, priv, pubDer };
312
334
  }
313
335
  /** 群消息解密按 group SPK -> device SPK -> IK fallback;仍找不到则显式报错。 */
@@ -315,11 +337,13 @@ export class V2Session {
315
337
  this.ensureKeys();
316
338
  if (!spkId)
317
339
  return { ikPriv: this._ikPriv, spkPriv: null };
318
- const lookup = this._normalizeGroupSPKLookup(groupId, spkId);
340
+ const lookup = this._normalizeGroupSPKLookup(this._groupKey(groupId), spkId);
319
341
  // 优先查 group SPK
320
- const groupSPK = this._store.loadGroupSPK(this._deviceId, lookup.groupId, lookup.spkId);
321
- if (groupSPK)
322
- return { ikPriv: this._ikPriv, spkPriv: groupSPK };
342
+ for (const candidate of this._groupLookupCandidates(lookup.groupId)) {
343
+ const groupSPK = this._store.loadGroupSPK(this._deviceId, candidate, lookup.spkId);
344
+ if (groupSPK)
345
+ return { ikPriv: this._ikPriv, spkPriv: groupSPK };
346
+ }
323
347
  // fallback 到 device SPK,再 fallback 到 IK 特殊 fallback(兼容历史消息)
324
348
  if (lookup.spkId === this._spkId)
325
349
  return { ikPriv: this._ikPriv, spkPriv: this._spkPriv ?? null };
@@ -343,11 +367,13 @@ export class V2Session {
343
367
  isLastUploadedGroupSPK(groupId, spkId) {
344
368
  if (!spkId)
345
369
  return false;
346
- const lookup = this._normalizeGroupSPKLookup(groupId, spkId);
347
- return this._lastUploadedGroupSPKIds.get(lookup.groupId) === lookup.spkId;
370
+ const lookup = this._normalizeGroupSPKLookup(this._groupKey(groupId), spkId);
371
+ return this._groupLookupCandidates(lookup.groupId)
372
+ .some((candidate) => this._lastUploadedGroupSPKIds.get(candidate) === lookup.spkId);
348
373
  }
349
374
  /** 签名并上传 group SPK 到 group.v2.put_group_pk。 */
350
375
  async _publishGroupSPK(groupId, spkId, pubDer, callFn) {
376
+ const gk = this._groupKey(groupId);
351
377
  const spkTimestamp = Math.floor(this._nowFn() / 1000);
352
378
  const signData = Buffer.concat([
353
379
  Buffer.from(pubDer),
@@ -356,15 +382,19 @@ export class V2Session {
356
382
  ]);
357
383
  const signature = ecdsaSignRaw(this._ikPriv, signData);
358
384
  await callFn('group.v2.put_group_pk', {
359
- group_id: groupId,
385
+ group_id: gk,
386
+ group_aid: gk,
360
387
  key_source: 'group_device_prekey',
361
388
  spk_id: spkId,
362
389
  spk_pk: Buffer.from(pubDer).toString('base64'),
363
390
  spk_signature: Buffer.from(signature).toString('base64'),
364
391
  spk_timestamp: spkTimestamp,
365
392
  });
366
- this._store.markGroupSPKUploaded(this._deviceId, groupId, spkId);
367
- this._lastUploadedGroupSPKIds.set(groupId, spkId);
393
+ this._store.markGroupSPKUploaded(this._deviceId, gk, spkId);
394
+ this._lastUploadedGroupSPKIds.set(gk, spkId);
395
+ if (String(groupId ?? '').trim() && String(groupId ?? '').trim() !== gk) {
396
+ this._lastUploadedGroupSPKIds.set(String(groupId ?? '').trim(), spkId);
397
+ }
368
398
  }
369
399
  }
370
400
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/v2/session/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,0BAA0B;AAC1B,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK;AAC1D,sBAAsB;AACtB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,MAAM;AAC/D,sBAAsB;AACtB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,QAAQ;AAgBhE,MAAM,OAAO,SAAS;IACH,MAAM,CAAa;IACnB,SAAS,CAAS;IAClB,IAAI,CAAS;IACb,OAAO,CAAa;IACpB,SAAS,CAAa;IAE/B,MAAM,GAAG,EAAE,CAAC;IACZ,QAAQ,CAAc;IACtB,UAAU,CAAc;IACxB,WAAW,GAAG,KAAK,CAAC;IAE5B,WAAW;IACH,kBAAkB,GAAG,EAAE,CAAC;IACxB,wBAAwB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAErD,YAAY,GAAG,IAAI,GAAG,EAAoD,CAAC;IAC3E,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,aAAa,GAAG,IAAI,GAAG,EAA+C,CAAC;IACvE,SAAS,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC1C,MAAM,GAAiB,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IAEhD,YACE,KAAiB,EACjB,QAAgB,EAChB,GAAW,EACX,MAAkB,EAClB,QAAoB;QAEpB,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnE,CAAC;IAED,kBAAkB;IAClB,SAAS,CAAC,EAAgB;QACxB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,sCAAsC;IACtC,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,mCAAmC;IACnC,UAAU;QACR,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;YACzB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEO,eAAe;QACrB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,mBAAmB,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,UAAU,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;IAC3B,CAAC;IAEO,QAAQ;QACd,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1E,OAAO,UAAU,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IAC9C,CAAC;IAEO,wBAAwB,CAAC,OAAe,EAAE,KAAa;QAC7D,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACvC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;IACvE,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,gBAAgB,CAAC,MAAc;QACnC,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1E,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC;YACxC,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC;IACxC,CAAC;IAED,wDAAwD;IAChD,KAAK,CAAC,YAAY,CAAC,MAAc;QACvC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;SAC3C,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACvD,MAAM,MAAM,CAAC,wBAAwB,EAAE;YACrC,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,UAAU,EAAE,oBAAoB;YAChC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACxD,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACxD,aAAa,EAAE,YAAY;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,yBAAyB;IACzB,iBAAiB;QACf,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,QAAQ,EAAE,IAAI,CAAC,SAAS;SACzB,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CAAC,KAAgC;QAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5C,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,MAAM;YAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC1D,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAClC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACnD,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7D,IAAI,OAAO;YAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QACpE,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACjE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QACzD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,6BAA6B;IAC7B,YAAY,CAAC,KAAgC;QAC3C,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC;IACjD,CAAC;IAED,mCAAmC;IACnC,iBAAiB,CAAC,KAAa,EAAE,GAAW;QAC1C,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM;YAAE,OAAO;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,SAAiB;QACnC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,UAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACzF,CAAC;QAAC,MAAM,CAAC;YACP,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QACzB,CAAC;QACD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YACrE,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM;gBAAE,SAAS;YACpC,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnC,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,gBAAgB;gBAAE,SAAS;YACvD,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YACpC,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,yCAAyC;YAC3C,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAC7E,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM;oBAAE,SAAS;gBACpC,IAAI,CAAC;oBAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBAC5E,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACjC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAExB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,6CAA6C;IAC7C,KAAK,CAAC,SAAS,CAAC,MAAc;QAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC;IACxC,CAAC;IAED,WAAW,CAAC,OAAe,EAAE,QAAgB,EAAE,QAAoB;QACjE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,SAAS,CAAC,OAAe,EAAE,QAAgB;QACzC,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,QAAQ,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,IAAI,qBAAqB,EAAE,CAAC;YAC5D,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,iBAAiB,CAAC,OAAe,EAAE,QAAgB,EAAE,KAAa;QAChE,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,mBAAmB,CAAC,OAAe,EAAE,QAAgB,EAAE,KAAa;QAClE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,+DAA+D;IAE/D,qDAAqD;IACrD,cAAc,CAAC,OAAe;QAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACrE,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QACpB,gBAAgB;QAChB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,mBAAmB,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,UAAU,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACvE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACjC,CAAC;IAED,4CAA4C;IAC5C,KAAK,CAAC,qBAAqB,CAAC,OAAe,EAAE,MAAc;QACzD,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACxF,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,gDAAgD;IAChD,KAAK,CAAC,cAAc,CAClB,OAAe,EACf,MAAc;QAEd,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,mBAAmB,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,UAAU,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACvE,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACjC,CAAC;IAED,+DAA+D;IAC/D,mBAAmB,CAAC,OAAe,EAAE,KAAa;QAChD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7D,gBAAgB;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACxF,IAAI,QAAQ;YAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QACjE,4DAA4D;QAC5D,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;QAClG,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,MAAM;YAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,OAAO;YAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QACpE,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACjE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QACzD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,yCAAyC;IACzC,iBAAiB,CAAC,KAAa;QAC7B,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,kBAAkB,CAAC;IAC7D,CAAC;IAED,8CAA8C;IAC9C,sBAAsB,CAAC,OAAe,EAAE,KAAa;QACnD,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC;IAC5E,CAAC;IAED,+CAA+C;IACvC,KAAK,CAAC,gBAAgB,CAC5B,OAAe,EACf,KAAa,EACb,MAAkB,EAClB,MAAc;QAEd,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;SAC3C,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACvD,MAAM,MAAM,CAAC,uBAAuB,EAAE;YACpC,QAAQ,EAAE,OAAO;YACjB,UAAU,EAAE,qBAAqB;YACjC,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC9C,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACxD,aAAa,EAAE,YAAY;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;CACF"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/v2/session/session.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * state_commitment = SHA256(
7
7
  * "AUN-V2-SC-v1" ||
8
- * group_id ||
8
+ * group_aid ||
9
9
  * uint32(epoch, big-endian) ||
10
10
  * canonical_json({
11
11
  * "members": [...sorted by aid, devices sorted by device_id...],
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * state_commitment = SHA256(
7
7
  * "AUN-V2-SC-v1" ||
8
- * group_id ||
8
+ * group_aid ||
9
9
  * uint32(epoch, big-endian) ||
10
10
  * canonical_json({
11
11
  * "members": [...sorted by aid, devices sorted by device_id...],
@@ -21,6 +21,7 @@
21
21
  * 排序在内部完成,调用方无需预排序。
22
22
  */
23
23
  import { createHash } from 'node:crypto';
24
+ import { normalizeGroupId } from '../../group-id.js';
24
25
  import { canonicalJson } from '../crypto/canonical.js';
25
26
  export const STATE_PREFIX = new TextEncoder().encode('AUN-V2-SC-v1');
26
27
  /** in-place 规范化排序。 */
@@ -72,7 +73,8 @@ export function computeStateCommitment(groupId, epoch, statePayload) {
72
73
  // 深拷贝避免修改调用方数据
73
74
  const payload = JSON.parse(JSON.stringify(statePayload));
74
75
  sortPayload(payload);
75
- const groupBytes = new TextEncoder().encode(groupId);
76
+ const groupKey = normalizeGroupId(groupId) || String(groupId ?? '').trim();
77
+ const groupBytes = new TextEncoder().encode(groupKey);
76
78
  const epochBytes = uint32BE(epoch);
77
79
  const payloadBytes = canonicalJson(payload);
78
80
  const h = createHash('sha256');
@@ -1 +1 @@
1
- {"version":3,"file":"commitment.js","sourceRoot":"","sources":["../../../src/v2/state/commitment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commitment.js","sourceRoot":"","sources":["../../../src/v2/state/commitment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * AID 和 Group ID 格式校验工具。
3
+ *
4
+ * 确保发送到服务端的目标标识符符合 AUN 协议规范,拒绝不合法的格式。
5
+ */
6
+ /**
7
+ * 校验 AID 格式是否合法。
8
+ *
9
+ * 格式规范:{name}.{issuer}
10
+ * - name: 4-64 字节,仅 [a-z0-9_-],首字符不能是 -,不能以 guest 开头
11
+ * - issuer: 合法的可注册域名
12
+ *
13
+ * @param aid 待校验的 AID
14
+ * @param paramName 参数名称(用于错误消息)
15
+ * @returns 规范化后的 AID(转小写、去空格)
16
+ * @throws ValidationError AID 格式不合法
17
+ */
18
+ export declare function validateAIDFormat(aid: unknown, paramName?: string): string;
19
+ export interface GroupAIDValidationOptions {
20
+ localIssuer?: string;
21
+ paramName?: string;
22
+ }
23
+ /**
24
+ * 校验群组标识并返回目标态 group_aid。
25
+ */
26
+ export declare function validateGroupAIDFormat(groupId: unknown, paramNameOrOptions?: string | GroupAIDValidationOptions, maybeOptions?: GroupAIDValidationOptions): string;
27
+ /**
28
+ * 校验 Group ID 格式是否合法。
29
+ *
30
+ * 旧函数名保留兼容,但返回目标态 group_aid。
31
+ */
32
+ export declare function validateGroupIDFormat(groupId: unknown, paramNameOrOptions?: string | GroupAIDValidationOptions, maybeOptions?: GroupAIDValidationOptions): string;
@@ -0,0 +1,128 @@
1
+ /**
2
+ * AID 和 Group ID 格式校验工具。
3
+ *
4
+ * 确保发送到服务端的目标标识符符合 AUN 协议规范,拒绝不合法的格式。
5
+ */
6
+ import { ValidationError } from './errors.js';
7
+ import { convertToGroupAid } from './group-id.js';
8
+ // AID name 规范:4-64 字符,仅 [a-z0-9_-],首字符不为 -,不以 guest 开头
9
+ // 注意:{3,63} 表示后续3-63个字符,加上首字符共4-64个
10
+ const AID_NAME_RE = /^[a-z0-9_][a-z0-9_-]{3,63}$/;
11
+ // Group ID 格式(基于服务端实际实现)
12
+ // Legacy 格式:g- 后接 4-32 位小写字母数字
13
+ const GROUP_ID_LEGACY_PATTERN = /^g-[a-z0-9]{4,32}$/;
14
+ // 新格式 base:5 到 64 位小写字母数字
15
+ const GROUP_ID_NEW_BASE_PATTERN = /^[a-z0-9]{5,64}$/;
16
+ // Group name 格式:4-64 字符,首字符 [a-z0-9],可包含 _-
17
+ const GROUP_NAME_PATTERN = /^[a-z0-9][a-z0-9_-]{3,63}$/;
18
+ // 域名基本格式(简化版,不做完整 DNS 校验)
19
+ // 不能以点号或连字符开头/结尾
20
+ const DOMAIN_RE = /^[a-z0-9]+([a-z0-9._-]*[a-z0-9]+)?$/;
21
+ /**
22
+ * 校验 AID 格式是否合法。
23
+ *
24
+ * 格式规范:{name}.{issuer}
25
+ * - name: 4-64 字节,仅 [a-z0-9_-],首字符不能是 -,不能以 guest 开头
26
+ * - issuer: 合法的可注册域名
27
+ *
28
+ * @param aid 待校验的 AID
29
+ * @param paramName 参数名称(用于错误消息)
30
+ * @returns 规范化后的 AID(转小写、去空格)
31
+ * @throws ValidationError AID 格式不合法
32
+ */
33
+ export function validateAIDFormat(aid, paramName = 'aid') {
34
+ if (aid === null || aid === undefined || (typeof aid === 'string' && !aid.trim())) {
35
+ throw new ValidationError(`${paramName} cannot be empty`);
36
+ }
37
+ const aidStr = String(aid).trim().toLowerCase();
38
+ // 检查是否包含点号(必须有 issuer)
39
+ if (!aidStr.includes('.')) {
40
+ throw new ValidationError(`Invalid ${paramName} '${aid}': must be in format '{name}.{issuer}'`);
41
+ }
42
+ // 分离 name 和 issuer
43
+ const dotIndex = aidStr.indexOf('.');
44
+ if (dotIndex === -1 || dotIndex === 0 || dotIndex === aidStr.length - 1) {
45
+ throw new ValidationError(`Invalid ${paramName} '${aid}': must be in format '{name}.{issuer}'`);
46
+ }
47
+ const name = aidStr.substring(0, dotIndex);
48
+ const issuer = aidStr.substring(dotIndex + 1);
49
+ // 校验 name 部分
50
+ if (!name) {
51
+ throw new ValidationError(`Invalid ${paramName} '${aid}': name part cannot be empty`);
52
+ }
53
+ if (!AID_NAME_RE.test(name)) {
54
+ throw new ValidationError(`Invalid ${paramName} '${aid}': name '${name}' must be 4-64 characters, ` +
55
+ `only [a-z0-9_-], cannot start with '-'`);
56
+ }
57
+ if (name.startsWith('guest')) {
58
+ throw new ValidationError(`Invalid ${paramName} '${aid}': name cannot start with 'guest'`);
59
+ }
60
+ // 校验 issuer 部分
61
+ if (!issuer) {
62
+ throw new ValidationError(`Invalid ${paramName} '${aid}': issuer part cannot be empty`);
63
+ }
64
+ if (!DOMAIN_RE.test(issuer)) {
65
+ throw new ValidationError(`Invalid ${paramName} '${aid}': issuer '${issuer}' is not a valid domain`);
66
+ }
67
+ return aidStr;
68
+ }
69
+ function resolveGroupValidationArgs(defaultParamName, paramNameOrOptions, maybeOptions) {
70
+ if (typeof paramNameOrOptions === 'string') {
71
+ return {
72
+ paramName: paramNameOrOptions || defaultParamName,
73
+ localIssuer: maybeOptions?.localIssuer ?? '',
74
+ };
75
+ }
76
+ return {
77
+ paramName: paramNameOrOptions?.paramName ?? defaultParamName,
78
+ localIssuer: paramNameOrOptions?.localIssuer ?? '',
79
+ };
80
+ }
81
+ function validateGroupAidParts(raw, groupAid, paramName) {
82
+ const dotIndex = groupAid.indexOf('.');
83
+ const base = dotIndex >= 0 ? groupAid.substring(0, dotIndex).replace(/^\.+|\.+$/g, '') : groupAid;
84
+ const domain = dotIndex >= 0 ? groupAid.substring(dotIndex + 1).replace(/^\.+|\.+$/g, '') : '';
85
+ if (!base) {
86
+ throw new ValidationError(`Invalid ${paramName} '${groupAid}': base part cannot be empty`);
87
+ }
88
+ const isValidBase = GROUP_ID_LEGACY_PATTERN.test(base) ||
89
+ GROUP_ID_NEW_BASE_PATTERN.test(base) ||
90
+ GROUP_NAME_PATTERN.test(base);
91
+ if (!isValidBase) {
92
+ throw new ValidationError(`Invalid ${paramName} '${raw}': base '${base}' must be one of: ` +
93
+ `legacy format 'g-[a-z0-9]{4,32}', new format '[a-z0-9]{5,64}', ` +
94
+ `or group name format '[a-z0-9][a-z0-9_-]{3,63}'`);
95
+ }
96
+ if (domain && !DOMAIN_RE.test(domain)) {
97
+ throw new ValidationError(`Invalid ${paramName} '${raw}': domain '${domain}' is not a valid domain`);
98
+ }
99
+ }
100
+ /**
101
+ * 校验群组标识并返回目标态 group_aid。
102
+ */
103
+ export function validateGroupAIDFormat(groupId, paramNameOrOptions = 'group_aid', maybeOptions) {
104
+ const { paramName, localIssuer } = resolveGroupValidationArgs('group_aid', paramNameOrOptions, maybeOptions);
105
+ if (groupId === null || groupId === undefined || (typeof groupId === 'string' && !groupId.trim())) {
106
+ throw new ValidationError(`${paramName} cannot be empty`);
107
+ }
108
+ const rawText = String(groupId).trim();
109
+ if (rawText.includes('//')) {
110
+ throw new ValidationError(`Invalid ${paramName} '${String(groupId)}': empty path segment is not allowed`);
111
+ }
112
+ const groupAid = convertToGroupAid(rawText, { localIssuer });
113
+ if (!groupAid) {
114
+ throw new ValidationError(`${paramName} cannot be empty`);
115
+ }
116
+ validateGroupAidParts(groupId, groupAid, paramName);
117
+ return groupAid;
118
+ }
119
+ /**
120
+ * 校验 Group ID 格式是否合法。
121
+ *
122
+ * 旧函数名保留兼容,但返回目标态 group_aid。
123
+ */
124
+ export function validateGroupIDFormat(groupId, paramNameOrOptions = 'group_id', maybeOptions) {
125
+ const { paramName, localIssuer } = resolveGroupValidationArgs('group_id', paramNameOrOptions, maybeOptions);
126
+ return validateGroupAIDFormat(groupId, paramName, { localIssuer });
127
+ }
128
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "0.5.0";
1
+ export declare const VERSION = "0.5.1";
package/dist/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // AUN SDK 版本号(单一事实来源)。
2
2
  // 所有引用点(index.ts / auth.ts / v2/e2ee/encrypt-p2p.ts)统一从此导入,
3
3
  // 避免多处独立定义导致版本号不一致。
4
- export const VERSION = '0.5.0';
4
+ export const VERSION = '0.5.1';
5
5
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentunion/fastaun",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "AUN Protocol Core SDK for Node.js",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,164 +0,0 @@
1
- # Collab 网关边界与群空间隔离测试报告
2
-
3
- ## 测试目标
4
-
5
- 针对你指出的三层问题:
6
- 1. **Collab 文档语义**:授权 = storage ACL(无发起人特权)
7
- 2. **Gateway 角色白名单**:viewer 不能调用 collab.*,agent 可以
8
- 3. **Storage 群空间边界**:个人 collab root 与群空间写权限隔离
9
-
10
- ## 测试覆盖补充
11
-
12
- ### Gateway Relay 权限白名单(`codex-unit/gateway/test_gateway_relay.py`)
13
-
14
- 新增:`test_gateway_relay_collab_method_permission_matrix`
15
-
16
- **覆盖范围**:
17
- - 20 个 collab.* 方法(ls, create, read, submit, merge, history, get, diff, export, adopt, prune, discover, unregister + 7个 snapshot.*)
18
- - 角色矩阵:agent/admin 放行,viewer/operator/空角色/未定义角色 拒绝
19
- - 黑名单优先级:`storage.collab.*` 对所有角色(包括 admin)一律拒绝
20
- - viewer 保留的只读方法:`*.status`, `launcher.list_modules`, `event.subscribe`
21
-
22
- **测试结果**:✅ 全部通过(27/27)
23
-
24
- ---
25
-
26
- ### Storage Collab 群空间边界(`storage/test_collab_orchestrator.py`)
27
-
28
- 新增 6 个边界测试:
29
-
30
- #### 1. `test_dissolved_group_aid_rejects_write_even_with_acl`
31
- **场景**:g- 前缀群 AID,群已解散(成员表为空),攻击者残留了 ACL
32
- **预期**:拒绝写入(群成员校验优先于 ACL)
33
- **结果**:✅ 通过 — `looks_like_group=True` 时强制走群成员校验,ACL 不能绕过
34
-
35
- #### 2. `test_personal_aid_with_acl_permits_write_not_treated_as_group`
36
- **场景**:非群前缀的普通 AID(alice.aid.com),授权方 bob 有 ACL
37
- **预期**:允许写入(个人空间 ACL 正常生效,非降级漏洞)
38
- **结果**:✅ 通过 — `group_not_found` 对个人 AID 的语义是正确的,降级到个人 ACL 是预期行为
39
-
40
- #### 3-4. `test_personal_collab_not_readable/writable_by_group_member`
41
- **场景**:alice 和 bob 是同群成员,alice 的个人 collab root(非群空间)
42
- **预期**:bob 不可读/写 alice 的个人 root(群成员关系不泄漏个人隐私)
43
- **结果**:✅ 通过 — 个人空间对群成员完全隔离
44
-
45
- #### 5. `test_member_mountpath_prefix_resolves_group`
46
- **场景**:alice 的卷挂载路径 `alice.aid.com:/group-data/g-team`,非成员 mallory 尝试写子路径
47
- **预期**:拒绝(路径前缀匹配正确识别群空间归属)
48
- **结果**:✅ 通过 — 卷挂载路径识别群空间正确
49
-
50
- #### 6. `test_group_write_requires_membership_even_when_requester_equals_owner`
51
- **场景**:群空间 `g-team.aid.com`,非成员但有 ACL,测试 `requester==owner` 短路是否绕过群成员检查
52
- **预期**:拒绝(群成员检查优先于 ACL 短路)
53
- **结果**:✅ 通过 — `_require_group_write` 在 `_assert_write` 前执行,短路不能绕过群边界
54
-
55
- **测试结果**:✅ 全部通过(40/40,新增 6 个)
56
-
57
- ---
58
-
59
- ## 关键发现
60
-
61
- ### 发现 1:Gateway 角色白名单已正确实现
62
-
63
- `relay.py:580-607` 的 `ROLE_PERMISSIONS`:
64
- - **agent** 有 `collab.*`, `storage.*`, `group.*`, `message.*` 等业务方法
65
- - **viewer** 只有 `launcher.list_modules`, `*.health`, `*.status`, `event.*` 等只读方法
66
-
67
- `ws_server.py:9647` 的默认降级:
68
- ```python
69
- role = auth_result.get("role", "viewer")
70
- ```
71
-
72
- **如果 `auth.verify` 返回的 `auth_result` 中缺失 `role` 字段,会降级到 `viewer`,导致 `collab.*` 被拒绝。**
73
-
74
- 但测试证明,`auth/entry.py:1390` 在 AID 认证成功时明确返回:
75
- ```python
76
- return {"success": True, "role": result["role"], "trust_level": "high", "aid": aid, "token": kite_token}
77
- ```
78
-
79
- 且 `auth/verifiers/aid.py:433`:
80
- ```python
81
- "role": self._aid_role_map.get(aid, self._default_role) # _default_role="agent"
82
- ```
83
-
84
- **结论**:正常 AID 登录会拿到 `"agent"` 角色,collab.* 可以正常调用。
85
-
86
- ### 发现 2:群空间边界的安全机制正确实现
87
-
88
- **群空间识别**:
89
- - 前缀判定:`g-`, `g_`, `g.`, `group.` → `looks_like_group=True`
90
- - resolver 判定:调用 `group.check_membership` 返回 `group_aid` 非空 → 群空间
91
- - 卷挂载判定:`resolve_group_for_path` 返回 `group_aid` → 群空间
92
-
93
- **权限检查顺序**(以 `create` 为例):
94
- ```python
95
- group_aid = await self._resolve_group(requester_aid, collab_root) # 1. 识别群空间
96
- await self._require_group_write(requester_aid, group_aid) # 2. 群成员校验
97
- await self._assert_write(requester_aid, owner, path, group_aid=group_aid) # 3. ACL 校验
98
- ```
99
-
100
- **关键安全保证**:
101
- 1. 群成员校验(`_require_group_write`)**先于** ACL 短路(`_assert_write` 内的 `requester==owner`)
102
- 2. `g-` 前缀的 AID 通过 `looks_like_group` 强制走群路径,不会降级为个人空间
103
- 3. 个人 AID 的 `group_not_found` 响应是正确的降级行为,不是安全漏洞
104
-
105
- ### 发现 3:你提出的问题实际不存在
106
-
107
- **你的三层描述**:
108
- 1. collab 文档语义 — ✅ 代码和测试一致,授权 = ACL,无特权
109
- 2. Gateway 角色拦截 — ✅ `viewer` 拒绝、`agent` 放行,白名单正确
110
- 3. 群空间边界 — ✅ 群成员校验优先,ACL 短路不能绕过
111
-
112
- **推测的真实场景**:
113
- - 如果某个 AID 登录后调用 `collab.create` 被拒绝,可能是:
114
- 1. `auth.verify` 返回的 `role` 字段缺失或为 `viewer`
115
- 2. 该 AID 在 `_aid_role_map` 中被显式配置为 `viewer`
116
- 3. Gateway 认证流程中 `auth_result` 未正确传递
117
-
118
- **需要你提供**:
119
- - 具体失败的测试用例或日志
120
- - 被拒绝的 AID 是什么
121
- - Gateway 日志中该 AID 的 `role` 值
122
-
123
- ---
124
-
125
- ## 测试统计
126
-
127
- | 测试套件 | 新增测试 | 总测试数 | 通过率 |
128
- |---------|---------|---------|--------|
129
- | `gateway/test_gateway_relay.py` | 1 | 27 | 100% |
130
- | `storage/test_collab_orchestrator.py` | 6 | 40 | 100% |
131
- | **合计** | **7** | **67** | **100%** |
132
-
133
- ---
134
-
135
- ## 建议
136
-
137
- 1. **如果你确实遇到了 collab.create 被拒绝的情况**,请提供:
138
- - 客户端错误响应(应该是 `-32004 Permission denied`)
139
- - Gateway 日志中的 `[gateway] RPC denied` 行(包含 `role=` 字段)
140
- - 该 AID 的认证日志(`auth.success` 事件中的 `role` 字段)
141
-
142
- 2. **添加端到端诊断测试**:
143
- - 模拟完整的认证 + collab.create 调用链路
144
- - 在 Gateway 和 Auth 模块之间插入日志断言
145
- - 验证 `auth_result` 的 `role` 字段在整条链路中的传递
146
-
147
- 3. **Review `_aid_role_map` 配置**:
148
- - 检查 `auth/entry.py:2804-2807` 的服务 AID 角色映射
149
- - 确认测试环境的 AID 不在 `_aid_role_map` 中被误配为 `viewer`
150
-
151
- ---
152
-
153
- ## 结论
154
-
155
- 测试证明:**Gateway 角色白名单和 Storage 群空间边界的安全机制已正确实现,无真实漏洞。**
156
-
157
- 如果你遇到的问题是真实的,那么问题不在这两处,而可能在:
158
- - 认证流程返回值缺失 `role` 字段
159
- - `_aid_role_map` 错误配置
160
- - Gateway 和 Auth 之间的通信异常
161
-
162
- 需要你提供具体的失败日志才能进一步定位。
163
-
164
-