@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.
- package/CHANGELOG.md +59 -0
- package/_packed_docs/CHANGELOG-validators.md +144 -0
- package/_packed_docs/CHANGELOG.md +59 -0
- package/_packed_docs/INDEX.md +198 -181
- package/_packed_docs/KITE_DOCS_GUIDE.md +26 -23
- package/_packed_docs/cli/AUN-CLI/350/256/276/350/256/241/346/226/207/346/241/243.md +4 -3
- package/_packed_docs/cli/CLI/346/211/213/345/206/214.md +331 -0
- package/_packed_docs/protocol/08-AUN-E2EE-Group.md +296 -902
- package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +64 -114
- package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +7 -1
- 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
- package/_packed_docs/protocol/README.md +2 -1
- package/_packed_docs/protocol/index.md +8 -3
- package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +4 -252
- package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +483 -457
- package/_packed_docs/sdk/09-collab-rpc-manual.md +581 -550
- package/_packed_docs/sdk/09-group-rpc-manual.md +248 -335
- package/_packed_docs/sdk/09-storage-rpc-manual.md +56 -19
- package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +13 -13
- package/_packed_docs/sdk/INDEX.md +14 -14
- package/dist/client/delivery.d.ts +9 -0
- package/dist/client/delivery.js +157 -24
- package/dist/client/delivery.js.map +1 -1
- package/dist/client/group-state.js +33 -11
- package/dist/client/group-state.js.map +1 -1
- package/dist/client/rpc-pipeline.d.ts +1 -0
- package/dist/client/rpc-pipeline.js +127 -40
- package/dist/client/rpc-pipeline.js.map +1 -1
- package/dist/client/v2-e2ee.d.ts +6 -1
- package/dist/client/v2-e2ee.js +199 -130
- package/dist/client/v2-e2ee.js.map +1 -1
- package/dist/client.d.ts +8 -1
- package/dist/client.js +227 -31
- package/dist/client.js.map +1 -1
- package/dist/collab/client.d.ts +8 -0
- package/dist/collab/client.js +12 -0
- package/dist/collab/client.js.map +1 -1
- package/dist/errors.d.ts +0 -20
- package/dist/errors.js +8 -53
- package/dist/errors.js.map +1 -1
- package/dist/facades.d.ts +9 -4
- package/dist/facades.js +137 -15
- package/dist/facades.js.map +1 -1
- package/dist/group-fs.d.ts +26 -9
- package/dist/group-fs.js +84 -84
- package/dist/group-fs.js.map +1 -1
- package/dist/group-id.d.ts +9 -12
- package/dist/group-id.js +41 -63
- package/dist/group-id.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/keystore/aid-db.d.ts +1 -0
- package/dist/keystore/aid-db.js +43 -43
- package/dist/keystore/aid-db.js.map +1 -1
- package/dist/keystore/local-identity-store.d.ts +16 -0
- package/dist/keystore/local-identity-store.js +190 -18
- package/dist/keystore/local-identity-store.js.map +1 -1
- package/dist/keystore/local-token-store.d.ts +0 -13
- package/dist/keystore/local-token-store.js +0 -105
- package/dist/keystore/local-token-store.js.map +1 -1
- package/dist/logger.d.ts +2 -0
- package/dist/logger.js +4 -0
- package/dist/logger.js.map +1 -1
- package/dist/storage/lowlevel.d.ts +9 -1
- package/dist/storage/lowlevel.js +12 -1
- package/dist/storage/lowlevel.js.map +1 -1
- package/dist/storage/types.d.ts +0 -1
- package/dist/storage/types.js.map +1 -1
- package/dist/storage/vfs.d.ts +22 -3
- package/dist/storage/vfs.js +89 -54
- package/dist/storage/vfs.js.map +1 -1
- package/dist/tools/cross-sdk-agent.js +336 -49
- package/dist/tools/cross-sdk-agent.js.map +1 -1
- package/dist/transport.d.ts +2 -0
- package/dist/transport.js +52 -3
- package/dist/transport.js.map +1 -1
- package/dist/types.d.ts +38 -0
- package/dist/v2/session/session.d.ts +2 -0
- package/dist/v2/session/session.js +53 -23
- package/dist/v2/session/session.js.map +1 -1
- package/dist/v2/state/commitment.d.ts +1 -1
- package/dist/v2/state/commitment.js +4 -2
- package/dist/v2/state/commitment.js.map +1 -1
- package/dist/validators.d.ts +32 -0
- package/dist/validators.js +128 -0
- package/dist/validators.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- 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
|
|
284
|
-
|
|
285
|
-
|
|
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,
|
|
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
|
|
296
|
-
|
|
297
|
-
this.
|
|
298
|
-
|
|
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(
|
|
301
|
-
await this._publishGroupSPK(
|
|
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,
|
|
310
|
-
await this._publishGroupSPK(
|
|
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
|
|
321
|
-
|
|
322
|
-
|
|
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.
|
|
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:
|
|
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,
|
|
367
|
-
this._lastUploadedGroupSPKIds.set(
|
|
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":"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"}
|
|
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
|
-
*
|
|
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
|
|
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.
|
|
1
|
+
export declare const VERSION = "0.5.1";
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -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
|
-
|