@agentunion/fastaun-browser 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 (116) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/_packed_docs/CHANGELOG-validators.md +144 -0
  3. package/_packed_docs/CHANGELOG.md +56 -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/bundle.js +1560 -1159
  22. package/dist/client/delivery.d.ts +13 -2
  23. package/dist/client/delivery.d.ts.map +1 -1
  24. package/dist/client/delivery.js +251 -46
  25. package/dist/client/delivery.js.map +1 -1
  26. package/dist/client/group-state.d.ts.map +1 -1
  27. package/dist/client/group-state.js +36 -14
  28. package/dist/client/group-state.js.map +1 -1
  29. package/dist/client/lifecycle.js +2 -2
  30. package/dist/client/lifecycle.js.map +1 -1
  31. package/dist/client/rpc-pipeline.d.ts +1 -0
  32. package/dist/client/rpc-pipeline.d.ts.map +1 -1
  33. package/dist/client/rpc-pipeline.js +166 -50
  34. package/dist/client/rpc-pipeline.js.map +1 -1
  35. package/dist/client/v2-e2ee.d.ts +14 -1
  36. package/dist/client/v2-e2ee.d.ts.map +1 -1
  37. package/dist/client/v2-e2ee.js +300 -121
  38. package/dist/client/v2-e2ee.js.map +1 -1
  39. package/dist/client.d.ts +5 -4
  40. package/dist/client.d.ts.map +1 -1
  41. package/dist/client.js +187 -46
  42. package/dist/client.js.map +1 -1
  43. package/dist/collab/client.d.ts +8 -0
  44. package/dist/collab/client.d.ts.map +1 -1
  45. package/dist/collab/client.js +12 -0
  46. package/dist/collab/client.js.map +1 -1
  47. package/dist/errors.d.ts +0 -20
  48. package/dist/errors.d.ts.map +1 -1
  49. package/dist/errors.js +8 -51
  50. package/dist/errors.js.map +1 -1
  51. package/dist/facades.d.ts +9 -4
  52. package/dist/facades.d.ts.map +1 -1
  53. package/dist/facades.js +192 -31
  54. package/dist/facades.js.map +1 -1
  55. package/dist/group-fs.d.ts +17 -0
  56. package/dist/group-fs.d.ts.map +1 -1
  57. package/dist/group-fs.js +54 -11
  58. package/dist/group-fs.js.map +1 -1
  59. package/dist/group-id.d.ts +9 -12
  60. package/dist/group-id.d.ts.map +1 -1
  61. package/dist/group-id.js +41 -63
  62. package/dist/group-id.js.map +1 -1
  63. package/dist/index.d.ts +4 -2
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +4 -1
  66. package/dist/index.js.map +1 -1
  67. package/dist/keystore/index.d.ts +2 -54
  68. package/dist/keystore/index.d.ts.map +1 -1
  69. package/dist/keystore/indexeddb-identity-store.d.ts +3 -0
  70. package/dist/keystore/indexeddb-identity-store.d.ts.map +1 -1
  71. package/dist/keystore/indexeddb-identity-store.js +65 -0
  72. package/dist/keystore/indexeddb-identity-store.js.map +1 -1
  73. package/dist/keystore/indexeddb-shared.d.ts +3 -17
  74. package/dist/keystore/indexeddb-shared.d.ts.map +1 -1
  75. package/dist/keystore/indexeddb-shared.js +4 -47
  76. package/dist/keystore/indexeddb-shared.js.map +1 -1
  77. package/dist/keystore/indexeddb-token-store.d.ts +1 -64
  78. package/dist/keystore/indexeddb-token-store.d.ts.map +1 -1
  79. package/dist/keystore/indexeddb-token-store.js +45 -774
  80. package/dist/keystore/indexeddb-token-store.js.map +1 -1
  81. package/dist/logger.d.ts +2 -0
  82. package/dist/logger.d.ts.map +1 -1
  83. package/dist/logger.js +4 -0
  84. package/dist/logger.js.map +1 -1
  85. package/dist/storage/lowlevel.d.ts +9 -1
  86. package/dist/storage/lowlevel.d.ts.map +1 -1
  87. package/dist/storage/lowlevel.js +12 -1
  88. package/dist/storage/lowlevel.js.map +1 -1
  89. package/dist/storage/vfs.d.ts +22 -0
  90. package/dist/storage/vfs.d.ts.map +1 -1
  91. package/dist/storage/vfs.js +54 -0
  92. package/dist/storage/vfs.js.map +1 -1
  93. package/dist/tools/cross-sdk-agent.js +336 -49
  94. package/dist/tools/cross-sdk-agent.js.map +1 -1
  95. package/dist/transport.d.ts +2 -0
  96. package/dist/transport.d.ts.map +1 -1
  97. package/dist/transport.js +96 -3
  98. package/dist/transport.js.map +1 -1
  99. package/dist/types.d.ts +39 -56
  100. package/dist/types.d.ts.map +1 -1
  101. package/dist/v2/session/session.d.ts +2 -0
  102. package/dist/v2/session/session.d.ts.map +1 -1
  103. package/dist/v2/session/session.js +58 -22
  104. package/dist/v2/session/session.js.map +1 -1
  105. package/dist/v2/state/commitment.d.ts +1 -1
  106. package/dist/v2/state/commitment.d.ts.map +1 -1
  107. package/dist/v2/state/commitment.js +5 -3
  108. package/dist/v2/state/commitment.js.map +1 -1
  109. package/dist/validators.d.ts +35 -0
  110. package/dist/validators.d.ts.map +1 -0
  111. package/dist/validators.js +127 -0
  112. package/dist/validators.js.map +1 -0
  113. package/dist/version.d.ts +1 -1
  114. package/dist/version.js +1 -1
  115. package/package.json +1 -1
  116. package/_packed_docs/collab-gateway-boundary-test-report.md +0 -164
package/CHANGELOG.md CHANGED
@@ -6,6 +6,62 @@
6
6
 
7
7
  ---
8
8
 
9
+ ## 0.5.1 — 2026-07-01
10
+
11
+ ### ⚠️ 重大变更(Breaking Changes)
12
+
13
+ #### 群组标识符统一为 GROUP_AID
14
+ - **GROUP_ID 废弃**:历史 `group.{domain}/{base}` 格式已废弃,统一为 `{base}.{issuer}` 格式(group_aid)
15
+ - **兼容转换**:`normalizeGroupId()` 函数保留向后兼容,自动转换旧格式到新格式
16
+ - **新增函数**:`convertToGroupAid()` 显式转换任意历史格式到标准 group_aid
17
+ - **RPC 参数**:`group_id` 字段名保留但值为 group_aid;新增 `group_aid` 参数与 `group_id` 等价
18
+ - **影响范围**:所有群组相关 API(`group.send` / `group.pull` / `group.fs.*` 等)
19
+
20
+ #### 移除 V1 E2EE 实现
21
+ - **完全移除**:删除所有 V1 端到端加密代码(epoch key、群组加密管理器、V1 群组加密)
22
+ - **仅保留 V2**:E2EE 功能完全迁移到 V2 协议(消息级密钥 + 逐设备 wrap + 状态签名)
23
+ - **简化接口**:V2 E2EE 协调器大幅重构,移除 V1 兼容层
24
+ - **注意**:此版本不向后兼容 V1 加密消息
25
+
26
+ ### 新功能
27
+
28
+ #### Storage & Group FS 能力扩展
29
+ - **Storage VFS P4**:新增 `touch()` 方法,支持创建空文件或更新文件时间戳
30
+ - **Storage VFS P4**:新增 `du()` 方法,支持查询目录或文件的磁盘使用统计
31
+ - **Storage VFS P6**:扩展 `getAcl()` / `listAcl()` 方法,支持 ACL 权限查询
32
+ - **Group FS**:新增 `getAcl()` / `listAcl()` / `removeAcl()` 方法,完善群文件 ACL 管理
33
+ - **Storage LowLevel**:补齐底层 RPC 映射,覆盖 `storage.fs.*` / `storage.object.*` 完整能力
34
+
35
+ ### 修复
36
+
37
+ #### Storage & Group FS
38
+ - 修复 `group.send` / `group.pull` 缺失 `group_id` 必填校验问题
39
+ - 修复 `group.fs` 权限角色 (`role`) 在 ACL 展示中的格式错误
40
+ - 修复 `storage.fs.symlink` 符号链接操作的路径解析问题
41
+ - 修复 `storage.fs.memberdata` 路由逻辑错误
42
+ - 修复 `storage.fs.mount` 挂载点权限校验问题
43
+
44
+ #### 服务端性能优化(影响 SDK 行为)
45
+ - Gateway 连接池改为可配置,降低高并发下的连接瓶颈
46
+ - Group 推送改为异步化,提升大群消息分发性能
47
+ - Message seq 号段化分配,减少数据库争抢
48
+ - Message 短暂消息 (`persist=false`) 改用内存缓冲 + 异步推送
49
+
50
+ ### 改进
51
+
52
+ - 路径校验增强:`storage.fs` / `group.fs` 路径参数增加规范化校验,拒绝 `..` / 空路径 / 非法字符
53
+ - 系统目录保护:`memberdata` / `group_data` 写操作增加保护,防止误删系统目录
54
+ - Validators:新增跨语言 `validatePath()` / `validateAid()` 等校验函数,四语言行为对齐
55
+ - 浏览器环境保持 Blob/Uint8Array/ArrayBuffer 数据源支持,无本地文件路径依赖
56
+
57
+ ### 测试
58
+
59
+ - 新增 `storage.spec.ts` E2E 测试(浏览器环境 `touch` / `du`)
60
+ - 新增 `group-fs.spec.ts` E2E 测试(浏览器环境 ACL 操作)
61
+ - 扩展 `storage-vfs-p5.test.ts` 单元测试覆盖新增能力
62
+
63
+ ---
64
+
9
65
  ## 0.5.0 — 2026-06-17
10
66
 
11
67
  ### 新功能
@@ -0,0 +1,144 @@
1
+ # AID 和 Group ID 格式校验实现 (2026-06-18)
2
+
3
+ ## 背景
4
+
5
+ 发现测试环境中 SDK 发送的目标对象(AID 和 Group ID)存在完全不合法的格式(如 `__system__`),这些非法格式应该在客户端早期拦截,避免发送到服务端。
6
+
7
+ ## 问题
8
+
9
+ 1. SDK 没有在关键发送接口进行格式校验
10
+ 2. 文档中的 Group ID 格式描述与实际代码不一致
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 ID 格式规范
84
+
85
+ ### Base 格式(不含域名部分)
86
+
87
+ 支持三种格式:
88
+
89
+ 1. **Legacy 格式**: `g-[a-z0-9]{4,32}`
90
+ - 以 `g-` 开头
91
+ - 后接 4 到 32 位小写字母或数字
92
+ - 示例: `g-abc123`, `g-test`
93
+
94
+ 2. **新格式**: `[a-z0-9]{5,}`
95
+ - 5 位或更多小写字母或数字
96
+ - 无上限
97
+ - 示例: `12345`, `abcdef`
98
+
99
+ 3. **Group name 格式**: `[a-z0-9][a-z0-9_-]{3,63}`
100
+ - 4 到 64 个字符
101
+ - 首字符为 `[a-z0-9]`
102
+ - 可包含下划线和短横线
103
+ - 示例: `team_alpha`, `my-group`
104
+
105
+ ### 完整格式
106
+
107
+ - `group.{issuer}/{base}` — canonical 格式
108
+ - `{base}.{issuer}` — 旧格式(会被规范化)
109
+ - `{base}@{issuer}` — 兼容格式(会被规范化)
110
+ - `{base}` — 本域简写(需要服务端补全)
111
+
112
+ **示例**:
113
+ - ✅ `g-abc123.aid.pub`
114
+ - ✅ `group.aid.pub/g-test1`
115
+ - ✅ `team_alpha`
116
+ - ✅ `12345678`
117
+ - ❌ `g-1` (只有 3 个字符)
118
+ - ❌ `abc` (只有 3 个字符,不满足任何格式)
119
+
120
+ ## 服务端已有校验
121
+
122
+ 服务端在 `group.create` 中已经有以下校验:
123
+
124
+ ```python
125
+ # extensions/services/group/service.py:1036-1037
126
+ if requested_group_id and self._is_numeric_group_id(requested_group_id):
127
+ raise ValueError("custom group_id cannot be numeric; numeric group_id is reserved for generated group_no")
128
+ ```
129
+
130
+ **规则**: 创建命名群时,群 ID 不能为纯数字。纯数字的 ID 只能由系统自动分配,以免冲突。
131
+
132
+ ## 验证效果
133
+
134
+ 客户端校验成功拦截以下非法格式:
135
+ - `__system__` → `ValidationError: Invalid aid '__system__': must be in format '{name}.{issuer}'`
136
+ - `bob.aid.pub` → `ValidationError: Invalid aid 'bob.aid.pub': name 'bob' must be 4-64 characters`
137
+ - `g-1` → `ValidationError: Invalid group_id 'g-1': base 'g-1' must be one of: ...`
138
+
139
+ ## 参考
140
+
141
+ - Python SDK 实现: `python/src/aun_core/validators.py`
142
+ - 服务端格式定义: `extensions/services/group/service.py:53-58`
143
+ - 协议文档: `docs/protocol/10-Group-子协议.md`
144
+ - SDK 文档: `docs/sdk/03-核心概念.md`
@@ -6,6 +6,62 @@
6
6
 
7
7
  ---
8
8
 
9
+ ## 0.5.1 — 2026-07-01
10
+
11
+ ### ⚠️ 重大变更(Breaking Changes)
12
+
13
+ #### 群组标识符统一为 GROUP_AID
14
+ - **GROUP_ID 废弃**:历史 `group.{domain}/{base}` 格式已废弃,统一为 `{base}.{issuer}` 格式(group_aid)
15
+ - **兼容转换**:`normalizeGroupId()` 函数保留向后兼容,自动转换旧格式到新格式
16
+ - **新增函数**:`convertToGroupAid()` 显式转换任意历史格式到标准 group_aid
17
+ - **RPC 参数**:`group_id` 字段名保留但值为 group_aid;新增 `group_aid` 参数与 `group_id` 等价
18
+ - **影响范围**:所有群组相关 API(`group.send` / `group.pull` / `group.fs.*` 等)
19
+
20
+ #### 移除 V1 E2EE 实现
21
+ - **完全移除**:删除所有 V1 端到端加密代码(epoch key、群组加密管理器、V1 群组加密)
22
+ - **仅保留 V2**:E2EE 功能完全迁移到 V2 协议(消息级密钥 + 逐设备 wrap + 状态签名)
23
+ - **简化接口**:V2 E2EE 协调器大幅重构,移除 V1 兼容层
24
+ - **注意**:此版本不向后兼容 V1 加密消息
25
+
26
+ ### 新功能
27
+
28
+ #### Storage & Group FS 能力扩展
29
+ - **Storage VFS P4**:新增 `touch()` 方法,支持创建空文件或更新文件时间戳
30
+ - **Storage VFS P4**:新增 `du()` 方法,支持查询目录或文件的磁盘使用统计
31
+ - **Storage VFS P6**:扩展 `getAcl()` / `listAcl()` 方法,支持 ACL 权限查询
32
+ - **Group FS**:新增 `getAcl()` / `listAcl()` / `removeAcl()` 方法,完善群文件 ACL 管理
33
+ - **Storage LowLevel**:补齐底层 RPC 映射,覆盖 `storage.fs.*` / `storage.object.*` 完整能力
34
+
35
+ ### 修复
36
+
37
+ #### Storage & Group FS
38
+ - 修复 `group.send` / `group.pull` 缺失 `group_id` 必填校验问题
39
+ - 修复 `group.fs` 权限角色 (`role`) 在 ACL 展示中的格式错误
40
+ - 修复 `storage.fs.symlink` 符号链接操作的路径解析问题
41
+ - 修复 `storage.fs.memberdata` 路由逻辑错误
42
+ - 修复 `storage.fs.mount` 挂载点权限校验问题
43
+
44
+ #### 服务端性能优化(影响 SDK 行为)
45
+ - Gateway 连接池改为可配置,降低高并发下的连接瓶颈
46
+ - Group 推送改为异步化,提升大群消息分发性能
47
+ - Message seq 号段化分配,减少数据库争抢
48
+ - Message 短暂消息 (`persist=false`) 改用内存缓冲 + 异步推送
49
+
50
+ ### 改进
51
+
52
+ - 路径校验增强:`storage.fs` / `group.fs` 路径参数增加规范化校验,拒绝 `..` / 空路径 / 非法字符
53
+ - 系统目录保护:`memberdata` / `group_data` 写操作增加保护,防止误删系统目录
54
+ - Validators:新增跨语言 `validatePath()` / `validateAid()` 等校验函数,四语言行为对齐
55
+ - 浏览器环境保持 Blob/Uint8Array/ArrayBuffer 数据源支持,无本地文件路径依赖
56
+
57
+ ### 测试
58
+
59
+ - 新增 `storage.spec.ts` E2E 测试(浏览器环境 `touch` / `du`)
60
+ - 新增 `group-fs.spec.ts` E2E 测试(浏览器环境 ACL 操作)
61
+ - 扩展 `storage-vfs-p5.test.ts` 单元测试覆盖新增能力
62
+
63
+ ---
64
+
9
65
  ## 0.5.0 — 2026-06-17
10
66
 
11
67
  ### 新功能