@agentunion/fastaun-browser 0.5.0 → 0.5.2

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 (140) hide show
  1. package/CHANGELOG.md +550 -464
  2. package/_packed_docs/CHANGELOG-validators.md +147 -0
  3. package/_packed_docs/CHANGELOG.md +550 -464
  4. package/_packed_docs/INDEX.md +201 -177
  5. package/_packed_docs/KITE_DOCS_GUIDE.md +38 -32
  6. package/_packed_docs/agent.md//350/277/234/347/250/213agent.md/347/274/223/345/255/230/344/270/216etag/351/200/217/344/274/240/346/226/271/346/241/210.md +169 -116
  7. package/_packed_docs/aun-perf-audit-critical-bugs.md +315 -0
  8. package/_packed_docs/cli/AUN-CLI/350/256/276/350/256/241/346/226/207/346/241/243.md +263 -260
  9. package/_packed_docs/cli/CLI/346/211/213/345/206/214.md +331 -0
  10. package/_packed_docs/protocol/00-/346/200/273/350/247/210/344/270/216/345/210/206/345/261/202.md +2 -2
  11. package/_packed_docs/protocol/00A-/350/256/276/350/256/241/345/216/237/345/210/231-/344/270/272Agent/350/200/214/347/224/237.md +1 -1
  12. package/_packed_docs/protocol/01-/350/272/253/344/273/275/344/270/216/345/207/255/350/257/201/345/215/217/350/256/256-auth.md +39 -16
  13. package/_packed_docs/protocol/03-Gateway-/350/277/236/346/216/245/346/250/241/345/274/217.md +8 -5
  14. package/_packed_docs/protocol/06-/346/234/215/345/212/241/345/215/217/350/256/256.md +18 -19
  15. package/_packed_docs/protocol/07-/351/224/231/350/257/257/347/240/201/344/270/216/347/212/266/346/200/201/346/234/272.md +1 -1
  16. package/_packed_docs/protocol/08-AUN-E2EE-Group.md +139 -746
  17. package/_packed_docs/protocol/08-AUN-E2EE.md +12 -10
  18. package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +117 -171
  19. package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +6 -0
  20. package/_packed_docs/protocol/15-/347/246/273/347/272/277/346/216/250/351/200/201/351/200/232/347/237/245/345/215/217/350/256/256.md +1 -1
  21. 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
  22. package/_packed_docs/protocol/README.md +5 -4
  23. package/_packed_docs/protocol/aun-docs-guide.md +2 -2
  24. package/_packed_docs/protocol/index.md +12 -7
  25. package/_packed_docs/protocol//350/215/211/346/241/210-/346/213/222/347/273/235/344/277/241/345/217/267/345/215/217/350/256/256.md +1 -1
  26. package/_packed_docs/protocol//351/231/204/345/275/225A-/346/234/257/350/257/255/350/241/250.md +13 -13
  27. package/_packed_docs/protocol//351/231/204/345/275/225L-E2EE/345/256/236/347/216/260/346/214/207/345/215/227.md +9 -9
  28. package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +15 -13
  29. package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +26 -18
  30. package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +35 -284
  31. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +473 -442
  32. package/_packed_docs/sdk/07-/351/224/231/350/257/257/345/244/204/347/220/206.md +11 -7
  33. package/_packed_docs/sdk/09-collab-rpc-manual.md +581 -550
  34. package/_packed_docs/sdk/09-group-rpc-manual.md +367 -433
  35. package/_packed_docs/sdk/09-message-rpc-manual.md +50 -28
  36. package/_packed_docs/sdk/09-payload-reference.md +3 -3
  37. package/_packed_docs/sdk/09-storage-rpc-manual.md +57 -20
  38. package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +18 -17
  39. package/_packed_docs/sdk/E2EE_V2/346/266/210/346/201/257/351/200/232/344/277/241/346/227/266/345/272/217/345/233/276.md +3 -2
  40. package/_packed_docs/sdk/INDEX.md +25 -24
  41. package/_packed_docs/sdk/Notify/351/200/232/347/237/245/346/226/271/346/241/210.md +6 -2
  42. package/dist/agent-md.d.ts.map +1 -1
  43. package/dist/agent-md.js +18 -9
  44. package/dist/agent-md.js.map +1 -1
  45. package/dist/bundle.js +1661 -1180
  46. package/dist/client/delivery.d.ts +13 -2
  47. package/dist/client/delivery.d.ts.map +1 -1
  48. package/dist/client/delivery.js +251 -46
  49. package/dist/client/delivery.js.map +1 -1
  50. package/dist/client/group-state.d.ts.map +1 -1
  51. package/dist/client/group-state.js +36 -14
  52. package/dist/client/group-state.js.map +1 -1
  53. package/dist/client/lifecycle.js +2 -2
  54. package/dist/client/lifecycle.js.map +1 -1
  55. package/dist/client/rpc-pipeline.d.ts +1 -0
  56. package/dist/client/rpc-pipeline.d.ts.map +1 -1
  57. package/dist/client/rpc-pipeline.js +166 -50
  58. package/dist/client/rpc-pipeline.js.map +1 -1
  59. package/dist/client/v2-e2ee.d.ts +14 -1
  60. package/dist/client/v2-e2ee.d.ts.map +1 -1
  61. package/dist/client/v2-e2ee.js +376 -126
  62. package/dist/client/v2-e2ee.js.map +1 -1
  63. package/dist/client.d.ts +5 -4
  64. package/dist/client.d.ts.map +1 -1
  65. package/dist/client.js +187 -46
  66. package/dist/client.js.map +1 -1
  67. package/dist/collab/client.d.ts +8 -0
  68. package/dist/collab/client.d.ts.map +1 -1
  69. package/dist/collab/client.js +12 -0
  70. package/dist/collab/client.js.map +1 -1
  71. package/dist/errors.d.ts +0 -20
  72. package/dist/errors.d.ts.map +1 -1
  73. package/dist/errors.js +8 -51
  74. package/dist/errors.js.map +1 -1
  75. package/dist/facades.d.ts +9 -4
  76. package/dist/facades.d.ts.map +1 -1
  77. package/dist/facades.js +192 -31
  78. package/dist/facades.js.map +1 -1
  79. package/dist/group-fs.d.ts +17 -0
  80. package/dist/group-fs.d.ts.map +1 -1
  81. package/dist/group-fs.js +54 -11
  82. package/dist/group-fs.js.map +1 -1
  83. package/dist/group-id.d.ts +9 -12
  84. package/dist/group-id.d.ts.map +1 -1
  85. package/dist/group-id.js +41 -63
  86. package/dist/group-id.js.map +1 -1
  87. package/dist/index.d.ts +4 -2
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +4 -1
  90. package/dist/index.js.map +1 -1
  91. package/dist/keystore/index.d.ts +2 -54
  92. package/dist/keystore/index.d.ts.map +1 -1
  93. package/dist/keystore/indexeddb-identity-store.d.ts +3 -0
  94. package/dist/keystore/indexeddb-identity-store.d.ts.map +1 -1
  95. package/dist/keystore/indexeddb-identity-store.js +65 -0
  96. package/dist/keystore/indexeddb-identity-store.js.map +1 -1
  97. package/dist/keystore/indexeddb-shared.d.ts +3 -17
  98. package/dist/keystore/indexeddb-shared.d.ts.map +1 -1
  99. package/dist/keystore/indexeddb-shared.js +4 -47
  100. package/dist/keystore/indexeddb-shared.js.map +1 -1
  101. package/dist/keystore/indexeddb-token-store.d.ts +1 -64
  102. package/dist/keystore/indexeddb-token-store.d.ts.map +1 -1
  103. package/dist/keystore/indexeddb-token-store.js +45 -774
  104. package/dist/keystore/indexeddb-token-store.js.map +1 -1
  105. package/dist/logger.d.ts +2 -0
  106. package/dist/logger.d.ts.map +1 -1
  107. package/dist/logger.js +4 -0
  108. package/dist/logger.js.map +1 -1
  109. package/dist/storage/lowlevel.d.ts +9 -1
  110. package/dist/storage/lowlevel.d.ts.map +1 -1
  111. package/dist/storage/lowlevel.js +12 -1
  112. package/dist/storage/lowlevel.js.map +1 -1
  113. package/dist/storage/vfs.d.ts +22 -0
  114. package/dist/storage/vfs.d.ts.map +1 -1
  115. package/dist/storage/vfs.js +54 -0
  116. package/dist/storage/vfs.js.map +1 -1
  117. package/dist/tools/cross-sdk-agent.js +336 -49
  118. package/dist/tools/cross-sdk-agent.js.map +1 -1
  119. package/dist/transport.d.ts +2 -0
  120. package/dist/transport.d.ts.map +1 -1
  121. package/dist/transport.js +96 -3
  122. package/dist/transport.js.map +1 -1
  123. package/dist/types.d.ts +39 -56
  124. package/dist/types.d.ts.map +1 -1
  125. package/dist/v2/session/session.d.ts +2 -0
  126. package/dist/v2/session/session.d.ts.map +1 -1
  127. package/dist/v2/session/session.js +58 -22
  128. package/dist/v2/session/session.js.map +1 -1
  129. package/dist/v2/state/commitment.d.ts +1 -1
  130. package/dist/v2/state/commitment.d.ts.map +1 -1
  131. package/dist/v2/state/commitment.js +5 -3
  132. package/dist/v2/state/commitment.js.map +1 -1
  133. package/dist/validators.d.ts +35 -0
  134. package/dist/validators.d.ts.map +1 -0
  135. package/dist/validators.js +127 -0
  136. package/dist/validators.js.map +1 -0
  137. package/dist/version.d.ts +1 -1
  138. package/dist/version.js +1 -1
  139. package/package.json +1 -1
  140. package/_packed_docs/collab-gateway-boundary-test-report.md +0 -164
@@ -0,0 +1,147 @@
1
+ # AID 和 Group AID / Group ID 格式校验实现 (2026-06-18)
2
+
3
+ ## 背景
4
+
5
+ 发现测试环境中 SDK 发送的目标对象(AID 和 Group ID)存在完全不合法的格式(如 `__system__`),这些非法格式应该在客户端早期拦截,避免发送到服务端。
6
+
7
+ ## 问题
8
+
9
+ 1. SDK 没有在关键发送接口进行格式校验
10
+ 2. 文档中的群组标识格式描述与实际代码不一致
11
+
12
+ ## 解决方案
13
+
14
+ ### 1. 修正文档
15
+
16
+ **原文档错误**(`docs/protocol/10-Group-子协议.md`):
17
+ - 声称 Group ID slug 为 4-14 位小写字母数字
18
+ - 声称总长度 6-16 字符
19
+
20
+ **实际格式**(基于服务端代码 `extensions/services/group/service.py`):
21
+ - **Legacy 格式**: `g-[a-z0-9]{4,32}` — 4 到 32 位
22
+ - **新格式**: `[a-z0-9]{5,}` — 5 位或更多,无上限
23
+ - **Group name 格式**: `[a-z0-9][a-z0-9_-]{3,63}` — 4 到 64 个字符
24
+
25
+ 已更新文档以反映实际实现。
26
+
27
+ ### 2. Python SDK 实现
28
+
29
+ #### 新增模块
30
+ - `python/src/aun_core/validators.py`
31
+ - `validate_aid_format(aid, *, param_name="aid") -> str`
32
+ - `validate_group_id_format(group_id, *, param_name="group_id") -> str`
33
+
34
+ #### 集成位置
35
+ - `python/src/aun_core/_client/rpc_pipeline.py` (`validate_outbound_call` 方法)
36
+ - `message.send` → 校验 `to` (AID)
37
+ - `group.send` → 校验 `group_id`
38
+ - `message.thought.put` → 校验 `to` (AID)
39
+ - `message.thought.get` → 校验 `sender_aid` (AID)
40
+ - `group.thought.put` → 校验 `group_id`
41
+ - `group.thought.get` → 校验 `sender_aid` (AID) 和 `group_id`
42
+
43
+ - `python/src/aun_core/client.py` (`notify` 方法)
44
+ - 校验 `to` (AID)
45
+ - 校验 `group_id`
46
+
47
+ #### 测试
48
+ - `python/tests/unit/test_validators.py` — 26 个测试用例
49
+ - 所有单元测试通过(1058 个)
50
+
51
+ ### 3. Go/TypeScript/JavaScript SDK 实现
52
+
53
+ 四个 SDK 全部在 **pipeline 层**(`validateOutboundCall` / `validate_outbound_call`)集成校验,确保 `client.call(...)` 直接调用也无法绕过:
54
+
55
+ | SDK | 校验器文件 | 集成点 | 测试结果 |
56
+ |-----|-----------|--------|---------|
57
+ | Python | `python/src/aun_core/validators.py` | `_client/rpc_pipeline.py` + `client.py` notify | 1058 单测通过 |
58
+ | Go | `go/validators.go` | `client_rpc_pipeline.go` + `client.go` Notify | 全部通过 |
59
+ | TypeScript | `ts/src/validators.ts` | `client/rpc-pipeline.ts` + `client.ts` notify | 582 单测通过 |
60
+ | JavaScript | `js/src/validators.ts` | `client/rpc-pipeline.ts` + `client.ts` notify | 599 单测通过 |
61
+
62
+ **注意**:TS SDK 最初由 workflow 放在 facade 层(`facades.ts`),存在被 `client.call()` 绕过的风险,已修正为 pipeline 层(与其他三个 SDK 对齐)。facade 层保留了冗余的早期校验。
63
+
64
+ **测试夹具修正**:四个 SDK 的测试中存在不合法的占位标识符(如 `bob.*` name 仅 3 字符、`g1`/`g-1` group base 过短),已统一改为合法形式(`bob1.*`、`grp01`、`g-test1`),并同步更新对应的 seq-tracker namespace(`group:g1` → `group:grp01`)。
65
+
66
+ ## AID 格式规范
67
+
68
+ ```
69
+ {name}.{issuer}
70
+ ```
71
+
72
+ - **name**: 4-64 字节,仅 `[a-z0-9_-]`,首字符不能是 `-`,不能以 `guest` 开头
73
+ - **issuer**: 合法的可注册域名
74
+
75
+ **示例**:
76
+ - ✅ `alice.aid.pub`
77
+ - ✅ `test_user.example.com`
78
+ - ✅ `user-123.aid.pub`
79
+ - ❌ `bob.aid.pub` (name 只有 3 个字符)
80
+ - ❌ `__system__` (无 issuer,包含非法字符)
81
+ - ❌ `guest.aid.pub` (以 guest 开头)
82
+
83
+ ## Group AID / Group ID 格式规范
84
+
85
+ 当前实现中,群组主标识是 `group_aid`,目标态格式为 `{base}.{issuer}`。`group_id` 字段名和 `validate_group_id_format()` 函数名继续保留用于兼容,但规范化结果也返回目标态 `group_aid`,不再返回 `group.{issuer}/{base}`。
86
+
87
+ ### Base 格式(不含域名部分)
88
+
89
+ 支持三种格式:
90
+
91
+ 1. **Legacy 格式**: `g-[a-z0-9]{4,32}`
92
+ - 以 `g-` 开头
93
+ - 后接 4 到 32 位小写字母或数字
94
+ - 示例: `g-abc123`, `g-test`
95
+
96
+ 2. **新格式**: `[a-z0-9]{5,}`
97
+ - 5 位或更多小写字母或数字
98
+ - 无上限
99
+ - 示例: `12345`, `abcdef`
100
+
101
+ 3. **Group name 格式**: `[a-z0-9][a-z0-9_-]{3,63}`
102
+ - 4 到 64 个字符
103
+ - 首字符为 `[a-z0-9]`
104
+ - 可包含下划线和短横线
105
+ - 示例: `team_alpha`, `my-group`
106
+
107
+ ### 完整格式
108
+
109
+ - `{base}.{issuer}` — 目标态 `group_aid`
110
+ - `group.{issuer}/{base}` — 旧 URL 风格兼容格式(会被规范化)
111
+ - `{base}@{issuer}` — 兼容格式(会被规范化)
112
+ - `{base}` — 本域简写(需要服务端补全)
113
+
114
+ **示例**:
115
+ - ✅ `g-abc123.aid.pub`
116
+ - ✅ `g-test1.aid.pub`
117
+ - ✅ `group.aid.pub/g-test1`(兼容输入,规范化为 `g-test1.aid.pub`)
118
+ - ✅ `team_alpha`
119
+ - ✅ `12345678`
120
+ - ❌ `g-1` (只有 3 个字符)
121
+ - ❌ `abc` (只有 3 个字符,不满足任何格式)
122
+
123
+ ## 服务端已有校验
124
+
125
+ 服务端在 `group.create` 中已经有以下校验:
126
+
127
+ ```python
128
+ # extensions/services/group/service.py
129
+ if requested_group_id and self._is_numeric_group_id(requested_group_id):
130
+ raise ValueError("custom group_id cannot be numeric; numeric group_id is reserved for generated group_no")
131
+ ```
132
+
133
+ **规则**: 创建命名群或自定义群标识时,base 不能为纯数字。纯数字 base 保留给系统自动分配的群号,以免冲突。
134
+
135
+ ## 验证效果
136
+
137
+ 客户端校验成功拦截以下非法格式:
138
+ - `__system__` → `ValidationError: Invalid aid '__system__': must be in format '{name}.{issuer}'`
139
+ - `bob.aid.pub` → `ValidationError: Invalid aid 'bob.aid.pub': name 'bob' must be 4-64 characters`
140
+ - `g-1` → `ValidationError: Invalid group_id 'g-1': base 'g-1' must be one of: ...`
141
+
142
+ ## 参考
143
+
144
+ - Python SDK 实现: `python/src/aun_core/validators.py`
145
+ - 服务端格式定义: `extensions/services/group/service.py:53-58`
146
+ - 协议文档: `docs/protocol/10-Group-子协议.md`
147
+ - SDK 文档: `docs/sdk/03-核心概念.md`