@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.
- package/CHANGELOG.md +56 -0
- package/_packed_docs/CHANGELOG-validators.md +144 -0
- package/_packed_docs/CHANGELOG.md +56 -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/bundle.js +1560 -1159
- package/dist/client/delivery.d.ts +13 -2
- package/dist/client/delivery.d.ts.map +1 -1
- package/dist/client/delivery.js +251 -46
- package/dist/client/delivery.js.map +1 -1
- package/dist/client/group-state.d.ts.map +1 -1
- package/dist/client/group-state.js +36 -14
- package/dist/client/group-state.js.map +1 -1
- package/dist/client/lifecycle.js +2 -2
- package/dist/client/lifecycle.js.map +1 -1
- package/dist/client/rpc-pipeline.d.ts +1 -0
- package/dist/client/rpc-pipeline.d.ts.map +1 -1
- package/dist/client/rpc-pipeline.js +166 -50
- package/dist/client/rpc-pipeline.js.map +1 -1
- package/dist/client/v2-e2ee.d.ts +14 -1
- package/dist/client/v2-e2ee.d.ts.map +1 -1
- package/dist/client/v2-e2ee.js +300 -121
- package/dist/client/v2-e2ee.js.map +1 -1
- package/dist/client.d.ts +5 -4
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +187 -46
- package/dist/client.js.map +1 -1
- package/dist/collab/client.d.ts +8 -0
- package/dist/collab/client.d.ts.map +1 -1
- 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.d.ts.map +1 -1
- package/dist/errors.js +8 -51
- package/dist/errors.js.map +1 -1
- package/dist/facades.d.ts +9 -4
- package/dist/facades.d.ts.map +1 -1
- package/dist/facades.js +192 -31
- package/dist/facades.js.map +1 -1
- package/dist/group-fs.d.ts +17 -0
- package/dist/group-fs.d.ts.map +1 -1
- package/dist/group-fs.js +54 -11
- package/dist/group-fs.js.map +1 -1
- package/dist/group-id.d.ts +9 -12
- package/dist/group-id.d.ts.map +1 -1
- 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.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/keystore/index.d.ts +2 -54
- package/dist/keystore/index.d.ts.map +1 -1
- package/dist/keystore/indexeddb-identity-store.d.ts +3 -0
- package/dist/keystore/indexeddb-identity-store.d.ts.map +1 -1
- package/dist/keystore/indexeddb-identity-store.js +65 -0
- package/dist/keystore/indexeddb-identity-store.js.map +1 -1
- package/dist/keystore/indexeddb-shared.d.ts +3 -17
- package/dist/keystore/indexeddb-shared.d.ts.map +1 -1
- package/dist/keystore/indexeddb-shared.js +4 -47
- package/dist/keystore/indexeddb-shared.js.map +1 -1
- package/dist/keystore/indexeddb-token-store.d.ts +1 -64
- package/dist/keystore/indexeddb-token-store.d.ts.map +1 -1
- package/dist/keystore/indexeddb-token-store.js +45 -774
- package/dist/keystore/indexeddb-token-store.js.map +1 -1
- package/dist/logger.d.ts +2 -0
- package/dist/logger.d.ts.map +1 -1
- 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.d.ts.map +1 -1
- package/dist/storage/lowlevel.js +12 -1
- package/dist/storage/lowlevel.js.map +1 -1
- package/dist/storage/vfs.d.ts +22 -0
- package/dist/storage/vfs.d.ts.map +1 -1
- package/dist/storage/vfs.js +54 -0
- 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.d.ts.map +1 -1
- package/dist/transport.js +96 -3
- package/dist/transport.js.map +1 -1
- package/dist/types.d.ts +39 -56
- package/dist/types.d.ts.map +1 -1
- package/dist/v2/session/session.d.ts +2 -0
- package/dist/v2/session/session.d.ts.map +1 -1
- package/dist/v2/session/session.js +58 -22
- package/dist/v2/session/session.js.map +1 -1
- package/dist/v2/state/commitment.d.ts +1 -1
- package/dist/v2/state/commitment.d.ts.map +1 -1
- package/dist/v2/state/commitment.js +5 -3
- package/dist/v2/state/commitment.js.map +1 -1
- package/dist/validators.d.ts +35 -0
- package/dist/validators.d.ts.map +1 -0
- package/dist/validators.js +127 -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
|
@@ -17,15 +17,13 @@
|
|
|
17
17
|
|------|------|
|
|
18
18
|
| [group.create](#groupcreate) | 创建群组 |
|
|
19
19
|
| [group.bind_aid](#groupbind_aid) | 为普通群绑定命名 AID |
|
|
20
|
-
| [group.
|
|
20
|
+
| [group.get_info](#groupget_info) | 查询群组信息(平铺格式,唯一推荐入口) |
|
|
21
21
|
| [group.update](#groupupdate) | 更新群组资料 |
|
|
22
22
|
| [group.list_my](#grouplist_my) | 列出我的群组 |
|
|
23
23
|
| [group.search](#groupsearch) | 搜索公开群 |
|
|
24
|
-
| [group.get_public_info](#groupget_public_info) | 查询公开群信息 |
|
|
25
24
|
| [group.suspend](#groupsuspend) | 暂停群组 |
|
|
26
25
|
| [group.resume](#groupresume) | 恢复群组 |
|
|
27
26
|
| [group.dissolve](#groupdissolve) | 解散群组 |
|
|
28
|
-
| [group.get_stats](#groupget_stats) | 获取统计信息 |
|
|
29
27
|
|
|
30
28
|
### 成员管理
|
|
31
29
|
|
|
@@ -37,6 +35,8 @@
|
|
|
37
35
|
| [group.leave](#groupleave) | 主动退群 |
|
|
38
36
|
| [group.set_role](#groupset_role) | 设置角色 |
|
|
39
37
|
| [group.transfer_owner](#grouptransfer_owner) | 转让群主 |
|
|
38
|
+
| [group.bind_group_aid](#groupbind_group_aid) | 为匿名群绑定群身份 |
|
|
39
|
+
| [group.renew_group_aid](#grouprenew_group_aid) | 轮换群身份密钥 |
|
|
40
40
|
| [group.ban](#groupban) | 封禁成员 |
|
|
41
41
|
| [group.unban](#groupunban) | 解封成员 |
|
|
42
42
|
| [group.get_banlist](#groupget_banlist) | 获取封禁列表 |
|
|
@@ -60,7 +60,6 @@
|
|
|
60
60
|
|------|------|
|
|
61
61
|
| [group.set_settings](#groupset_settings) | 统一设置群参数,含 `dispatch_mode` |
|
|
62
62
|
| [group.get_settings](#groupget_settings) | 统一读取群参数 |
|
|
63
|
-
| [group.get_dispatch_log](#groupget_dispatch_log) | 查看值班分发日志 |
|
|
64
63
|
|
|
65
64
|
### 消息
|
|
66
65
|
|
|
@@ -96,49 +95,43 @@
|
|
|
96
95
|
| 方法 | 说明 |
|
|
97
96
|
|------|------|
|
|
98
97
|
| [group.get_summary](#groupget_summary) | 获取群组摘要 |
|
|
99
|
-
| [group.get_metrics](#groupget_metrics) | 获取性能指标 |
|
|
100
98
|
|
|
101
|
-
###
|
|
99
|
+
### 群设置
|
|
102
100
|
|
|
103
101
|
| 方法 | 说明 |
|
|
104
102
|
|------|------|
|
|
105
|
-
| [group.
|
|
106
|
-
| [group.
|
|
103
|
+
| [group.set_settings](#groupset_settings) | 统一设置群参数(含公告、规则、入群要求、dispatch_mode 等) |
|
|
104
|
+
| [group.get_settings](#groupget_settings) | 统一读取群参数 |
|
|
105
|
+
|
|
106
|
+
**便利方法**:SDK 提供向后兼容的便利方法(`getAnnouncement`/`updateAnnouncement`/`getRules`/`updateRules`/`getJoinRequirements`/`updateJoinRequirements`),内部调用 `set_settings`/`get_settings`,返回旧格式。新代码建议直接使用 `set_settings`/`get_settings`。
|
|
107
107
|
|
|
108
|
-
###
|
|
108
|
+
### 群文件系统
|
|
109
109
|
|
|
110
110
|
| 方法 | 说明 |
|
|
111
111
|
|------|------|
|
|
112
|
-
| [group.
|
|
113
|
-
| [group.
|
|
114
|
-
| [group.
|
|
115
|
-
| [group.
|
|
116
|
-
| [group.
|
|
117
|
-
| [group.
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
|
122
|
-
|
|
123
|
-
| [group.fs.
|
|
124
|
-
| [group.fs.
|
|
125
|
-
| [group.fs.
|
|
126
|
-
| [group.fs.
|
|
127
|
-
| [group.fs.
|
|
128
|
-
| [group.fs.
|
|
129
|
-
| [group.fs.
|
|
130
|
-
| [group.fs.
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
|
135
|
-
| [group.fs.complete_upload](#groupfscomplete_upload) | 完成上传 |
|
|
136
|
-
| [group.fs.mount](#groupfsmount) | 挂载成员数据区 |
|
|
137
|
-
| [group.fs.umount](#groupfsumount) | 卸载成员数据区 |
|
|
138
|
-
|
|
139
|
-
### 在线状态
|
|
140
|
-
|
|
141
|
-
| 方法 | 说明 |
|
|
112
|
+
| [group.fs.ls](#groupfsls) | 列出目录 |
|
|
113
|
+
| [group.fs.find](#groupfsfind) | 查找节点 |
|
|
114
|
+
| [group.fs.stat](#groupfsstat) | 查看节点 |
|
|
115
|
+
| [group.fs.lstat](#groupfslstat) | 查看链接本身 |
|
|
116
|
+
| [group.fs.df](#groupfsdf) | 查看用量 |
|
|
117
|
+
| [group.fs.create_download_ticket](#groupfscreate_download_ticket) | 创建下载票据 |
|
|
118
|
+
| [group.fs.set_acl](#groupfsset_acl) | 授予群自有区角色写 ACL |
|
|
119
|
+
| [group.fs.remove_acl](#groupfsremove_acl) | 撤销群自有区角色写 ACL |
|
|
120
|
+
| [group.fs.get_acl](#groupfsget_acl) | 查询群自有区角色 ACL |
|
|
121
|
+
| [group.fs.list_acl](#groupfslist_acl) | 查询群自有区角色 ACL(别名) |
|
|
122
|
+
| [group.fs.mkdir](#groupfsmkdir) | 创建目录 |
|
|
123
|
+
| [group.fs.rm](#groupfsrm) | 删除节点 |
|
|
124
|
+
| [group.fs.cp](#groupfscp) | 远程复制 |
|
|
125
|
+
| [group.fs.mv](#groupfsmv) | 远程移动 |
|
|
126
|
+
| [group.fs.check_upload](#groupfscheck_upload) | 上传前检查 |
|
|
127
|
+
| [group.fs.create_upload_session](#groupfscreate_upload_session) | 创建上传会话 |
|
|
128
|
+
| [group.fs.complete_upload](#groupfscomplete_upload) | 完成上传 |
|
|
129
|
+
| [group.fs.mount](#groupfsmount) | 挂载成员数据区 |
|
|
130
|
+
| [group.fs.umount](#groupfsumount) | 卸载成员数据区 |
|
|
131
|
+
|
|
132
|
+
### 在线状态
|
|
133
|
+
|
|
134
|
+
| 方法 | 说明 |
|
|
142
135
|
|------|------|
|
|
143
136
|
| [group.get_online_members](#groupget_online_members) | 在线成员 |
|
|
144
137
|
|
|
@@ -146,13 +139,13 @@
|
|
|
146
139
|
|
|
147
140
|
## Group ID 规范
|
|
148
141
|
|
|
149
|
-
`group_id` 的 canonical 形式为 `group.{issuer-domain}/{base}`,例如 `group.agentid.pub/10042`、`group.agentid.pub/team01`、`group.agentid.pub/g-abc123`。服务端接受输入后会规范化为 canonical group_id;响应和内部存储以 canonical 形式为准。SDK 发起 `group.*` 调用时也会对带域旧格式做同等规范化;裸客户端应使用同一规则生成签名和 E2EE AAD,避免同一群的不同别名产生不同材料。
|
|
150
|
-
|
|
151
|
-
兼容输入包括 canonical `group.{issuer-domain}/{base}`、本域简写 `{base}` / `g-{slug}`,以及旧跨域形式 `{base}@issuer-domain`、`{base}.issuer-domain`、`g-{slug}@issuer-domain`、`g-{slug}.issuer-domain`。`base` 支持 5 位及以上小写字母或数字,或 4 到 64 位 `[a-z0-9_-]` 风格名称;旧 `g-` 前缀形式继续兼容,`g-` 后为 4 到 32 位小写字母或数字。命名群使用 `group_name` 作为 base,规则见 `group.create` 参数说明。
|
|
152
|
-
|
|
153
|
-
`group.create` 可以指定自定义 `group_id`,但不能是纯数字(纯数字群号保留给服务端自动分配),且规范化后的 canonical group_id 未被占用;如果已被占用或与旧别名碰撞会返回错误。不指定 `group_id` 时服务端按群号自动分配,并通过唯一约束兜底,发现碰撞会重新生成。
|
|
154
|
-
|
|
155
|
-
在 `https://group.issuer-domain/...` 这类群链接中,host 已携带 issuer,path 中的 `group_id` 使用 base 简写形式,例如 `https://group.agentid.pub/10042/invite/ic-xxx`;旧 `g-` base 群也可以表示为 `https://group.agentid.pub/g-abc123/invite/ic-xxx`。
|
|
142
|
+
`group_id` 的 canonical 形式为 `group.{issuer-domain}/{base}`,例如 `group.agentid.pub/10042`、`group.agentid.pub/team01`、`group.agentid.pub/g-abc123`。服务端接受输入后会规范化为 canonical group_id;响应和内部存储以 canonical 形式为准。SDK 发起 `group.*` 调用时也会对带域旧格式做同等规范化;裸客户端应使用同一规则生成签名和 E2EE AAD,避免同一群的不同别名产生不同材料。
|
|
143
|
+
|
|
144
|
+
兼容输入包括 canonical `group.{issuer-domain}/{base}`、本域简写 `{base}` / `g-{slug}`,以及旧跨域形式 `{base}@issuer-domain`、`{base}.issuer-domain`、`g-{slug}@issuer-domain`、`g-{slug}.issuer-domain`。`base` 支持 5 位及以上小写字母或数字,或 4 到 64 位 `[a-z0-9_-]` 风格名称;旧 `g-` 前缀形式继续兼容,`g-` 后为 4 到 32 位小写字母或数字。命名群使用 `group_name` 作为 base,规则见 `group.create` 参数说明。
|
|
145
|
+
|
|
146
|
+
`group.create` 可以指定自定义 `group_id`,但不能是纯数字(纯数字群号保留给服务端自动分配),且规范化后的 canonical group_id 未被占用;如果已被占用或与旧别名碰撞会返回错误。不指定 `group_id` 时服务端按群号自动分配,并通过唯一约束兜底,发现碰撞会重新生成。
|
|
147
|
+
|
|
148
|
+
在 `https://group.issuer-domain/...` 这类群链接中,host 已携带 issuer,path 中的 `group_id` 使用 base 简写形式,例如 `https://group.agentid.pub/10042/invite/ic-xxx`;旧 `g-` base 群也可以表示为 `https://group.agentid.pub/g-abc123/invite/ic-xxx`。
|
|
156
149
|
|
|
157
150
|
---
|
|
158
151
|
|
|
@@ -237,27 +230,36 @@
|
|
|
237
230
|
}
|
|
238
231
|
```
|
|
239
232
|
|
|
240
|
-
### group.
|
|
233
|
+
### group.get_info
|
|
241
234
|
|
|
242
|
-
|
|
235
|
+
查询群组信息,返回平铺格式。默认返回公开字段;需要成员或管理员权限的字段必须通过 `required` 显式声明。
|
|
243
236
|
|
|
244
237
|
**参数**:
|
|
245
238
|
|
|
246
239
|
| 参数 | 类型 | 必填 | 说明 |
|
|
247
240
|
|------|------|------|------|
|
|
248
241
|
| `group_id` | string | 是 | 群组 ID |
|
|
242
|
+
| `required` | string[] | 否 | 受限字段声明:`member`、`state`、`e2ee`、`avatar` |
|
|
249
243
|
|
|
250
|
-
|
|
244
|
+
**默认响应**:
|
|
251
245
|
|
|
252
246
|
```json
|
|
253
247
|
{
|
|
254
248
|
"found": true,
|
|
255
249
|
"group_id": "g-abc123.agentid.pub",
|
|
256
|
-
"
|
|
250
|
+
"group_aid": "g-abc123.agentid.pub",
|
|
251
|
+
"name": "开发讨论组",
|
|
252
|
+
"visibility": "public",
|
|
253
|
+
"status": "active",
|
|
254
|
+
"description": "技术讨论群",
|
|
255
|
+
"member_count": 42,
|
|
256
|
+
"created_at": 1234567890
|
|
257
257
|
}
|
|
258
258
|
```
|
|
259
259
|
|
|
260
|
-
|
|
260
|
+
`required=["member"]` 会额外返回 `owner_aid`、`creator_aid`、`message_seq`、`event_seq`、`e2ee_epoch`、`updated_at`、`my_role` 等成员可见字段。
|
|
261
|
+
|
|
262
|
+
> `group.get` 和 `group.info` 已合并到 `group.get_info`;`group.get_info` 默认行为等价于原公开信息查询。
|
|
261
263
|
|
|
262
264
|
### group.update
|
|
263
265
|
|
|
@@ -334,21 +336,6 @@
|
|
|
334
336
|
|
|
335
337
|
> **注意**:当前 `page` 固定为 1,不支持翻页。仅返回公开群组。
|
|
336
338
|
|
|
337
|
-
### group.get_public_info
|
|
338
|
-
|
|
339
|
-
查询公开群组信息。仅限 `visibility=public` 的群组可查询。
|
|
340
|
-
|
|
341
|
-
**参数**:`group_id` (string, 必填)
|
|
342
|
-
|
|
343
|
-
**响应**:
|
|
344
|
-
|
|
345
|
-
```json
|
|
346
|
-
{
|
|
347
|
-
"group_id": "g-abc123.agentid.pub",
|
|
348
|
-
"group": { ... }
|
|
349
|
-
}
|
|
350
|
-
```
|
|
351
|
-
|
|
352
339
|
### group.suspend
|
|
353
340
|
|
|
354
341
|
暂停群组。暂停期间不能发送消息。需要 **admin 及以上**权限。
|
|
@@ -398,29 +385,6 @@
|
|
|
398
385
|
}
|
|
399
386
|
```
|
|
400
387
|
|
|
401
|
-
### group.get_stats
|
|
402
|
-
|
|
403
|
-
获取群组统计信息。需要 **admin 及以上**权限。
|
|
404
|
-
|
|
405
|
-
**参数**:`group_id` (string, 必填)
|
|
406
|
-
|
|
407
|
-
**响应**:
|
|
408
|
-
|
|
409
|
-
```json
|
|
410
|
-
{
|
|
411
|
-
"group_id": "g-abc123.agentid.pub",
|
|
412
|
-
"status": "active",
|
|
413
|
-
"member_count": 42,
|
|
414
|
-
"message_seq": 1000,
|
|
415
|
-
"event_seq": 500,
|
|
416
|
-
"pending_join_request_count": 3,
|
|
417
|
-
"active_invite_code_count": 2,
|
|
418
|
-
"ban_count": 1,
|
|
419
|
-
"online_count": 10,
|
|
420
|
-
"runtime_stats": { ... },
|
|
421
|
-
"cleanup": { ... }
|
|
422
|
-
}
|
|
423
|
-
```
|
|
424
388
|
|
|
425
389
|
---
|
|
426
390
|
|
|
@@ -526,7 +490,7 @@
|
|
|
526
490
|
|
|
527
491
|
### group.set_role
|
|
528
492
|
|
|
529
|
-
设置成员角色。需要 **owner** 权限。不能改变 owner
|
|
493
|
+
设置成员角色。需要 **owner** 权限。不能改变 owner 角色。该 RPC 只改变 membership 中的角色事实,不授予或撤销群自有区写 ACL;`role:admin` 是否可写群自有区由 `group.fs.set_acl` / `group.fs.remove_acl` 显式控制。
|
|
530
494
|
|
|
531
495
|
**参数**:
|
|
532
496
|
|
|
@@ -540,7 +504,7 @@
|
|
|
540
504
|
|
|
541
505
|
```json
|
|
542
506
|
{
|
|
543
|
-
"
|
|
507
|
+
"group": { ... },
|
|
544
508
|
"member": {
|
|
545
509
|
"group_id": "g-abc123.agentid.pub",
|
|
546
510
|
"aid": "bob.agentid.pub",
|
|
@@ -549,7 +513,11 @@
|
|
|
549
513
|
"joined_at": 1234567890,
|
|
550
514
|
"last_ack_seq": 0,
|
|
551
515
|
"last_pull_at": 0
|
|
552
|
-
}
|
|
516
|
+
},
|
|
517
|
+
"old_role": "member",
|
|
518
|
+
"new_role": "admin",
|
|
519
|
+
"acl_model": "role_based",
|
|
520
|
+
"acl_policy": "unchanged"
|
|
553
521
|
}
|
|
554
522
|
```
|
|
555
523
|
|
|
@@ -574,6 +542,113 @@
|
|
|
574
542
|
}
|
|
575
543
|
```
|
|
576
544
|
|
|
545
|
+
### group.bind_group_aid
|
|
546
|
+
|
|
547
|
+
为匿名群绑定群身份(group_aid)。需要 owner 权限。
|
|
548
|
+
|
|
549
|
+
**幂等保证**:
|
|
550
|
+
- 已绑定且公钥匹配:返回已绑定的 group_aid 和证书
|
|
551
|
+
- 已绑定但公钥不同:报错 `group_aid_already_bound_different_key`
|
|
552
|
+
- 未绑定:签发新 group_aid 并绑定
|
|
553
|
+
|
|
554
|
+
**参数**:
|
|
555
|
+
|
|
556
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
557
|
+
|------|------|------|------|
|
|
558
|
+
| `group_id` | string | 是 | 群组 ID |
|
|
559
|
+
| `public_key` | string | 是 | 公钥 DER base64(SPKI 格式) |
|
|
560
|
+
| `curve` | string | 否 | 曲线名称(默认 P-256) |
|
|
561
|
+
|
|
562
|
+
**响应**:
|
|
563
|
+
|
|
564
|
+
```json
|
|
565
|
+
{
|
|
566
|
+
"group": {
|
|
567
|
+
"group_id": "my-team",
|
|
568
|
+
"group_aid": "my-team.agentid.pub",
|
|
569
|
+
...
|
|
570
|
+
},
|
|
571
|
+
"aid_cert": {
|
|
572
|
+
"cert": "-----BEGIN CERTIFICATE-----...",
|
|
573
|
+
"agentid": "my-team.agentid.pub"
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
```
|
|
577
|
+
|
|
578
|
+
**SDK 封装**:
|
|
579
|
+
|
|
580
|
+
各语言 SDK 的 `bindGroupAid` 方法已实现幂等逻辑:
|
|
581
|
+
1. 优先从 pending 槽位加载暂存密钥(崩溃恢复)
|
|
582
|
+
2. 未命中则生成新密钥并暂存到 pending 槽位
|
|
583
|
+
3. 调用 RPC 成功后导入 group_aid 身份并清理 pending 槽位
|
|
584
|
+
|
|
585
|
+
### group.renew_group_aid
|
|
586
|
+
|
|
587
|
+
轮换群身份密钥。需要 owner 权限,且必须持有旧 group_aid 私钥。
|
|
588
|
+
|
|
589
|
+
**用途**:
|
|
590
|
+
- 群主密钥泄露后的安全轮换
|
|
591
|
+
- 定期密钥更新符合安全策略
|
|
592
|
+
|
|
593
|
+
**验证**:
|
|
594
|
+
- 服务端验证 `renew_proof` 签名(用旧私钥签名 canonical payload)
|
|
595
|
+
- 验证 `old_public_key` 与当前 group_aid 证书匹配
|
|
596
|
+
- 签发新证书并更新 group_aid
|
|
597
|
+
|
|
598
|
+
**参数**:
|
|
599
|
+
|
|
600
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
601
|
+
|------|------|------|------|
|
|
602
|
+
| `group_id` | string | 是 | 群组 ID |
|
|
603
|
+
| `group_aid` | string | 否 | 群身份 AID(可选,服务端可推导) |
|
|
604
|
+
| `old_public_key` | string | 是 | 旧公钥 DER base64 |
|
|
605
|
+
| `new_public_key` | string | 是 | 新公钥 DER base64 |
|
|
606
|
+
| `curve` | string | 否 | 新密钥曲线(默认 P-256) |
|
|
607
|
+
| `renew_proof` | object | 是 | 轮换授权签名 |
|
|
608
|
+
|
|
609
|
+
**renew_proof 结构**:
|
|
610
|
+
|
|
611
|
+
```json
|
|
612
|
+
{
|
|
613
|
+
"nonce": "随机 nonce(32 字符十六进制)",
|
|
614
|
+
"issued_ms": 1234567890000,
|
|
615
|
+
"signature": "用旧私钥签名的 base64"
|
|
616
|
+
}
|
|
617
|
+
```
|
|
618
|
+
|
|
619
|
+
**签名 canonical payload**:
|
|
620
|
+
|
|
621
|
+
```
|
|
622
|
+
aun-group-aid-renew-v1|{group_id}|{group_aid}|{sha256(old_public_key)}|{sha256(new_public_key)}|{nonce}|{issued_ms}
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
所有字段小写,用 `|` 分隔。
|
|
626
|
+
|
|
627
|
+
**响应**:
|
|
628
|
+
|
|
629
|
+
```json
|
|
630
|
+
{
|
|
631
|
+
"group": {
|
|
632
|
+
"group_id": "my-team",
|
|
633
|
+
"group_aid": "my-team.agentid.pub",
|
|
634
|
+
...
|
|
635
|
+
},
|
|
636
|
+
"aid_cert": {
|
|
637
|
+
"cert": "-----BEGIN CERTIFICATE-----...",
|
|
638
|
+
"agentid": "my-team.agentid.pub"
|
|
639
|
+
},
|
|
640
|
+
"old_cert_revoked": true
|
|
641
|
+
}
|
|
642
|
+
```
|
|
643
|
+
|
|
644
|
+
**SDK 封装**:
|
|
645
|
+
|
|
646
|
+
各语言 SDK 的 `renewGroupAid` 方法自动处理:
|
|
647
|
+
1. 加载旧 group_aid 私钥
|
|
648
|
+
2. 生成新密钥对
|
|
649
|
+
3. 用旧私钥签名 canonical payload
|
|
650
|
+
4. 调用 RPC 并用新密钥覆盖本地 group_aid 身份
|
|
651
|
+
|
|
577
652
|
### group.ban
|
|
578
653
|
|
|
579
654
|
封禁成员。被封禁者禁止发消息但保留成员身份,且不能重新加入(如先被移除再封禁)。需要 **admin 及以上**权限。
|
|
@@ -942,32 +1017,6 @@ await client.call("group.set_settings", {
|
|
|
942
1017
|
}
|
|
943
1018
|
```
|
|
944
1019
|
|
|
945
|
-
### group.get_dispatch_log
|
|
946
|
-
|
|
947
|
-
读取值班分发日志。成员可读,主要用于诊断 `dispatch.mode=duty`、超时回退、批量分发等运行时行为。
|
|
948
|
-
|
|
949
|
-
**参数**:
|
|
950
|
-
|
|
951
|
-
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
952
|
-
|------|------|------|--------|------|
|
|
953
|
-
| `group_id` | string | 是 | — | 群组 ID |
|
|
954
|
-
| `date` | string | 否 | 当天 | 日志日期,格式由服务端日志文件名解析 |
|
|
955
|
-
| `size` / `limit` | integer | 否 | 100 | 返回最后 N 条,最大 500 |
|
|
956
|
-
|
|
957
|
-
**响应**:
|
|
958
|
-
|
|
959
|
-
```json
|
|
960
|
-
{
|
|
961
|
-
"group_id": "g-abc123.agentid.pub",
|
|
962
|
-
"items": [],
|
|
963
|
-
"total": 0,
|
|
964
|
-
"page": 1,
|
|
965
|
-
"size": 100
|
|
966
|
-
}
|
|
967
|
-
```
|
|
968
|
-
|
|
969
|
-
---
|
|
970
|
-
|
|
971
1020
|
## 消息
|
|
972
1021
|
|
|
973
1022
|
### group.send
|
|
@@ -1234,187 +1283,112 @@ result = await client.call("group.thought.get", {
|
|
|
1234
1283
|
|
|
1235
1284
|
---
|
|
1236
1285
|
|
|
1237
|
-
##
|
|
1286
|
+
## 群文件系统
|
|
1238
1287
|
|
|
1239
|
-
|
|
1288
|
+
新代码统一使用 `group.fs.*`。路径为 POSIX 风格 group path:`group_aid:/docs/a.md`、`https://{group_aid}/docs/a.md` 或带 `group_id` 参数的裸路径。`group_aid:/memberdata/{member_ref}/...` 只由服务端映射到真实成员 storage,SDK 不拼接 `group_data/{group_aid}`。
|
|
1240
1289
|
|
|
1241
|
-
|
|
1290
|
+
推荐通过 SDK/CLI 使用:
|
|
1242
1291
|
|
|
1243
|
-
|
|
1292
|
+
| 语言 | 入口 |
|
|
1293
|
+
|------|------|
|
|
1294
|
+
| Python | `client.group.fs` |
|
|
1295
|
+
| TypeScript / JavaScript | `client.group.fs` |
|
|
1296
|
+
| Go | `client.Group().FS()` |
|
|
1297
|
+
| CLI | `aun group fs ...` |
|
|
1244
1298
|
|
|
1245
|
-
|
|
1299
|
+
权限与签名约束:
|
|
1246
1300
|
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
```
|
|
1301
|
+
- 群自有区是除 `memberdata` 等系统保留路径外的整个 `group_aid` namespace。`group_aid` 当前证书签名可写;`role:owner` 默认可写;`role:admin` 需要 owner 通过 `group.fs.set_acl` 显式授权后才可写。
|
|
1302
|
+
- `group.fs.set_acl` / `group.fs.remove_acl` / `group.fs.get_acl` / `group.fs.list_acl` 只能由当前 group owner 调用,且当前只允许管理或查询 `grantee_aid="role:admin"` 的群自有区角色 ACL;成员升降级、退群、踢出不会联动授权或撤销。
|
|
1303
|
+
- `memberdata/{member_ref}` 写入默认只允许该成员本人;SDK 只传 group path,不拼接真实 storage 路径。
|
|
1304
|
+
- 上传控制面会透传 `parents` 到 storage:默认 `parents=true` 时可递归创建父目录,显式 `parents=false` 时父目录必须已存在。
|
|
1305
|
+
- JavaScript 浏览器版 `cp(string, group)` 默认把 string 当文本内容上传;Node 本地路径需显式传 `sourceType: "path"`、`localPath: true` 或使用 `local:` 前缀。Python、TypeScript 和 Go 默认把 string 当本地路径。
|
|
1253
1306
|
|
|
1254
|
-
### group.
|
|
1307
|
+
### group.fs.ls
|
|
1255
1308
|
|
|
1256
|
-
|
|
1309
|
+
列出目录。参数:`path` 必填;可选 `page`、`size`、`marker`、`long`、`recursive`。响应返回 group view `items`,节点 `path` 仍为 group path。
|
|
1257
1310
|
|
|
1258
|
-
|
|
1311
|
+
### group.fs.find
|
|
1259
1312
|
|
|
1260
|
-
|
|
1261
|
-
|------|------|------|------|
|
|
1262
|
-
| `group_id` | string | 是 | 群组 ID |
|
|
1263
|
-
| `content` | string | 是 | 公告内容(上限由 announcement_max_length 配置,默认 4000) |
|
|
1264
|
-
| `attachments` | array | 否 | 存储引用数组 |
|
|
1313
|
+
查找节点。参数:`path` 必填;可选 `pattern`、`name`、`type`、`size`、`mtime`、`page`、`page_size`。
|
|
1265
1314
|
|
|
1266
|
-
|
|
1315
|
+
### group.fs.stat
|
|
1267
1316
|
|
|
1268
|
-
|
|
1269
|
-
{
|
|
1270
|
-
"group_id": "g-abc123.agentid.pub",
|
|
1271
|
-
"announcement": { ... }
|
|
1272
|
-
}
|
|
1273
|
-
```
|
|
1317
|
+
查看节点。参数:`path` 必填。响应为 NodeView。
|
|
1274
1318
|
|
|
1275
|
-
### group.
|
|
1319
|
+
### group.fs.lstat
|
|
1276
1320
|
|
|
1277
|
-
|
|
1321
|
+
查看链接节点本身。参数同 `group.fs.stat`。
|
|
1278
1322
|
|
|
1279
|
-
|
|
1323
|
+
### group.fs.df
|
|
1280
1324
|
|
|
1281
|
-
|
|
1325
|
+
查看群文件系统用量。参数可传 `path` 或 `group_id`。
|
|
1282
1326
|
|
|
1283
|
-
|
|
1284
|
-
{
|
|
1285
|
-
"group_id": "g-abc123.agentid.pub",
|
|
1286
|
-
"rules": { ... }
|
|
1287
|
-
}
|
|
1288
|
-
```
|
|
1327
|
+
### group.fs.create_download_ticket
|
|
1289
1328
|
|
|
1290
|
-
|
|
1329
|
+
创建下载票据。参数:`path` 必填。响应包含 `download_url`、可选 `sha256`、`content_type`、`file_name`。SDK 下载数据面使用该票据执行 HTTP GET 并校验 sha256。
|
|
1291
1330
|
|
|
1292
|
-
|
|
1331
|
+
### group.fs.set_acl
|
|
1293
1332
|
|
|
1294
|
-
|
|
1333
|
+
授予群自有区角色 ACL。需要当前 group owner 身份签名调用;底层由 group 服务以内部门面写入 `storage.set_acl`。
|
|
1295
1334
|
|
|
1296
|
-
|
|
1335
|
+
参数:`path` 必填,指向群自有区路径;`grantee_aid` 只能为 `role:admin`;`perms` 默认 `rwx`,必须包含写权限。`path` 可传 `group_aid:/archive` 等 group path。服务端写入 storage 内部权限位时会把 POSIX 删除位 `x` 映射为内部 `d`,对外响应仍显示 `rwx`。
|
|
1297
1336
|
|
|
1298
|
-
|
|
1337
|
+
### group.fs.remove_acl
|
|
1299
1338
|
|
|
1300
|
-
|
|
1339
|
+
撤销群自有区角色 ACL。需要当前 group owner 身份签名调用;底层由 group 服务以内部门面写入 `storage.remove_acl`。
|
|
1301
1340
|
|
|
1302
|
-
|
|
1341
|
+
参数:`path` 必填,指向群自有区路径;`grantee_aid` 只能为 `role:admin`。撤销后,当前 admin 角色成员不再因该路径的 `role:admin` ACL 获得写权限。
|
|
1303
1342
|
|
|
1304
|
-
|
|
1305
|
-
{
|
|
1306
|
-
"group_id": "g-abc123.agentid.pub",
|
|
1307
|
-
"join_requirements": {
|
|
1308
|
-
"group_id": "g-abc123.agentid.pub",
|
|
1309
|
-
"mode": "approval",
|
|
1310
|
-
"question": "请描述你的用途",
|
|
1311
|
-
"auto_approve_patterns": [],
|
|
1312
|
-
"max_pending": 100,
|
|
1313
|
-
"updated_by": "alice.agentid.pub",
|
|
1314
|
-
"updated_at": 1234567890
|
|
1315
|
-
}
|
|
1316
|
-
}
|
|
1317
|
-
```
|
|
1343
|
+
### group.fs.get_acl
|
|
1318
1344
|
|
|
1319
|
-
|
|
1345
|
+
查询群自有区角色 ACL。需要当前 group owner 身份签名调用;普通 admin/member 不能查询。参数:`path` 必填,指向群自有区路径;可传裸路径 + `group_id`,也可传完整 `group_aid:/...`。
|
|
1320
1346
|
|
|
1321
|
-
|
|
1347
|
+
响应包含 `group_id`、`group_aid`、`path`、`area`、`storage` 和 `acls`。`acls[].perms` 使用 POSIX 视图,删除权限显示为 `x`,因此 owner 授权 `role:admin:rwx` 后查询也返回 `rwx`。
|
|
1322
1348
|
|
|
1323
|
-
|
|
1349
|
+
### group.fs.list_acl
|
|
1324
1350
|
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
### group.fs.
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
### group.fs.
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
### group.fs.lstat
|
|
1368
|
-
|
|
1369
|
-
查看链接节点本身。参数同 `group.fs.stat`。
|
|
1370
|
-
|
|
1371
|
-
### group.fs.df
|
|
1372
|
-
|
|
1373
|
-
查看群文件系统用量。参数可传 `path` 或 `group_id`。
|
|
1374
|
-
|
|
1375
|
-
### group.fs.create_download_ticket
|
|
1376
|
-
|
|
1377
|
-
创建下载票据。参数:`path` 必填。响应包含 `download_url`、可选 `sha256`、`content_type`、`file_name`。SDK 下载数据面使用该票据执行 HTTP GET 并校验 sha256。
|
|
1378
|
-
|
|
1379
|
-
### group.fs.mkdir
|
|
1380
|
-
|
|
1381
|
-
创建目录。参数:`path` 必填;`parents` 可选,默认 `false`。
|
|
1382
|
-
|
|
1383
|
-
### group.fs.rm
|
|
1384
|
-
|
|
1385
|
-
删除节点。参数:`path` 必填;`recursive`、`force` 可选。
|
|
1386
|
-
|
|
1387
|
-
### group.fs.cp
|
|
1388
|
-
|
|
1389
|
-
只处理 group→group 远程复制。参数:`src`、`dst` 必填;`force`、`recursive`、`follow_symlinks` 可选。本地上传和下载由 SDK 的 `cp` 编排数据面,不直接调用此 RPC。
|
|
1390
|
-
|
|
1391
|
-
### group.fs.mv
|
|
1392
|
-
|
|
1393
|
-
只处理 group→group 远程移动。参数:`src`、`dst` 必填;`force` 可选。本地路径参与时 SDK/CLI 应拒绝。
|
|
1394
|
-
|
|
1395
|
-
### group.fs.check_upload
|
|
1396
|
-
|
|
1397
|
-
上传前检查。参数:`path`、`size_bytes`、`sha256`、`content_type`;可选 `force`、`parents`、`expected_version`、`metadata`。响应可包含 `target_exists`、`within_limit`、`instant`、`dedup_hit` 或 `skip_upload`。
|
|
1398
|
-
|
|
1399
|
-
### group.fs.create_upload_session
|
|
1400
|
-
|
|
1401
|
-
创建上传会话。参数同 `check_upload`。响应包含 `upload_url`、`session_id`、可选 `headers`。SDK 使用该 URL 执行 HTTP PUT。
|
|
1402
|
-
|
|
1403
|
-
### group.fs.complete_upload
|
|
1404
|
-
|
|
1405
|
-
完成上传。参数包含 `path`、`sha256`、`size_bytes`、可选 `session_id`、`skip_blob`、`metadata`、`expected_version`。响应为 group view NodeView。
|
|
1406
|
-
|
|
1407
|
-
### group.fs.mount
|
|
1408
|
-
|
|
1409
|
-
挂载成员数据区。参数:`path` 必填;可选 `readonly`、`require_approval`、`source_bucket`、`expires_at`、`volume_id`。
|
|
1410
|
-
|
|
1411
|
-
### group.fs.umount
|
|
1412
|
-
|
|
1413
|
-
卸载成员数据区。参数:`path` 必填。对成员数据区卸载不删除成员源数据。
|
|
1414
|
-
|
|
1415
|
-
## 在线状态
|
|
1416
|
-
|
|
1417
|
-
### group.get_online_members
|
|
1351
|
+
`group.fs.get_acl` 的别名,参数、权限和返回结构完全相同。
|
|
1352
|
+
|
|
1353
|
+
### group.fs.mkdir
|
|
1354
|
+
|
|
1355
|
+
创建目录。参数:`path` 必填;`parents` 可选,默认 `false`。
|
|
1356
|
+
|
|
1357
|
+
### group.fs.rm
|
|
1358
|
+
|
|
1359
|
+
删除节点。参数:`path` 必填;`recursive`、`force` 可选。
|
|
1360
|
+
|
|
1361
|
+
### group.fs.cp
|
|
1362
|
+
|
|
1363
|
+
只处理 group→group 远程复制。参数:`src`、`dst` 必填;`force`、`recursive`、`follow_symlinks` 可选。本地上传和下载由 SDK 的 `cp` 编排数据面,不直接调用此 RPC。
|
|
1364
|
+
|
|
1365
|
+
### group.fs.mv
|
|
1366
|
+
|
|
1367
|
+
只处理 group→group 远程移动。参数:`src`、`dst` 必填;`force` 可选。本地路径参与时 SDK/CLI 应拒绝。
|
|
1368
|
+
|
|
1369
|
+
### group.fs.check_upload
|
|
1370
|
+
|
|
1371
|
+
上传前检查。参数:`path`、`size_bytes`、`sha256`、`content_type`;可选 `force`、`parents`、`expected_version`、`metadata`。响应可包含 `target_exists`、`within_limit`、`instant`、`dedup_hit` 或 `skip_upload`。
|
|
1372
|
+
|
|
1373
|
+
### group.fs.create_upload_session
|
|
1374
|
+
|
|
1375
|
+
创建上传会话。参数同 `check_upload`。响应包含 `upload_url`、`session_id`、可选 `headers`。SDK 使用该 URL 执行 HTTP PUT。
|
|
1376
|
+
|
|
1377
|
+
### group.fs.complete_upload
|
|
1378
|
+
|
|
1379
|
+
完成上传。参数包含 `path`、`sha256`、`size_bytes`、可选 `session_id`、`skip_blob`、`metadata`、`expected_version`。响应为 group view NodeView。
|
|
1380
|
+
|
|
1381
|
+
### group.fs.mount
|
|
1382
|
+
|
|
1383
|
+
挂载成员数据区。参数:`path` 必填;可选 `readonly`、`require_approval`、`source_bucket`、`expires_at`、`volume_id`。
|
|
1384
|
+
|
|
1385
|
+
### group.fs.umount
|
|
1386
|
+
|
|
1387
|
+
卸载成员数据区。参数:`path` 必填。对成员数据区卸载不删除成员源数据。
|
|
1388
|
+
|
|
1389
|
+
## 在线状态
|
|
1390
|
+
|
|
1391
|
+
### group.get_online_members
|
|
1418
1392
|
|
|
1419
1393
|
获取当前在线成员列表。
|
|
1420
1394
|
|
|
@@ -1606,36 +1580,6 @@ result = await client.call("group.thought.get", {
|
|
|
1606
1580
|
}
|
|
1607
1581
|
```
|
|
1608
1582
|
|
|
1609
|
-
### group.get_metrics
|
|
1610
|
-
|
|
1611
|
-
获取群组性能指标,包含 E2EE epoch 范围记录。需要 **admin 及以上**权限。
|
|
1612
|
-
|
|
1613
|
-
**参数**:`group_id` (必填)
|
|
1614
|
-
|
|
1615
|
-
**响应**:
|
|
1616
|
-
|
|
1617
|
-
```json
|
|
1618
|
-
{
|
|
1619
|
-
"group_id": "g-abc123.agentid.pub",
|
|
1620
|
-
"message_seq": 1000,
|
|
1621
|
-
"event_seq": 2000,
|
|
1622
|
-
"member_count": 10,
|
|
1623
|
-
"online_count": 5,
|
|
1624
|
-
"e2ee_epoch": 3,
|
|
1625
|
-
"epoch_count": 4,
|
|
1626
|
-
"epoch_ranges": [
|
|
1627
|
-
{
|
|
1628
|
-
"epoch": 0,
|
|
1629
|
-
"start_msg_seq": 0,
|
|
1630
|
-
"start_event_seq": 0,
|
|
1631
|
-
"end_msg_seq": 100,
|
|
1632
|
-
"end_event_seq": 200,
|
|
1633
|
-
"rotated_by": "alice.agentid.pub",
|
|
1634
|
-
"rotated_at": 1234567890
|
|
1635
|
-
}
|
|
1636
|
-
]
|
|
1637
|
-
}
|
|
1638
|
-
```
|
|
1639
1583
|
|
|
1640
1584
|
### group.refresh_member_types
|
|
1641
1585
|
|
|
@@ -1659,37 +1603,6 @@ result = await client.call("group.thought.get", {
|
|
|
1659
1603
|
|
|
1660
1604
|
---
|
|
1661
1605
|
|
|
1662
|
-
## E2EE
|
|
1663
|
-
|
|
1664
|
-
### group.e2ee.rotate_epoch
|
|
1665
|
-
|
|
1666
|
-
CAS 轮换群组 E2EE Epoch。需要 **admin 及以上**权限。
|
|
1667
|
-
|
|
1668
|
-
**参数**:
|
|
1669
|
-
|
|
1670
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
1671
|
-
|------|------|------|------|
|
|
1672
|
-
| `group_id` | string | 是 | 群组 ID |
|
|
1673
|
-
| `current_epoch` | integer | 是 | 当前 epoch 值(CAS 校验) |
|
|
1674
|
-
| `rotation_signature` | string | 是 | 轮换签名(Base64,ECDSA SHA-256) |
|
|
1675
|
-
| `rotation_timestamp` | string | 是 | 轮换时间戳(秒) |
|
|
1676
|
-
|
|
1677
|
-
**响应**:`{ "group_id": "g-abc123.agentid.pub", "success": true, "epoch": 4 }`
|
|
1678
|
-
|
|
1679
|
-
> 签名格式:`{group_id}|{current_epoch}|{new_epoch}|{aid}|{rotation_timestamp}`。时间戳必须在 5 分钟窗口内。签名去重防止重放攻击(10 分钟窗口)。
|
|
1680
|
-
|
|
1681
|
-
### group.e2ee.get_epoch
|
|
1682
|
-
|
|
1683
|
-
获取当前 E2EE Epoch 值。
|
|
1684
|
-
|
|
1685
|
-
**参数**:`group_id` (必填)
|
|
1686
|
-
|
|
1687
|
-
**响应**:`{ "group_id": "g-abc123.agentid.pub", "epoch": 3 }`
|
|
1688
|
-
|
|
1689
|
-
---
|
|
1690
|
-
|
|
1691
|
-
---
|
|
1692
|
-
|
|
1693
1606
|
## 事件
|
|
1694
1607
|
|
|
1695
1608
|
### event/group.created
|
|
@@ -1737,8 +1650,7 @@ SDK 交付给应用层的群事件信封字段统一放在 `envelope`。0.4.x
|
|
|
1737
1650
|
| `action` | string | 变更类型(见下表) |
|
|
1738
1651
|
| `group_id` | string | 群组 ID |
|
|
1739
1652
|
| `event_seq` | integer | 可选,服务端分配的单调递增序号,用于 SDK 内部保序去重 |
|
|
1740
|
-
| `
|
|
1741
|
-
| `resource_path` | string | 可选,仅资源相关 action |
|
|
1653
|
+
| `path` | string | 可选,Group FS 相关 action 的节点路径 |
|
|
1742
1654
|
|
|
1743
1655
|
**保序去重(SDK 内部行为)**:
|
|
1744
1656
|
|
|
@@ -1920,9 +1832,10 @@ Group 服务定义了以下专用错误码(-33xxx 段):
|
|
|
1920
1832
|
| -33005 | Not a member | 需先加入群组 |
|
|
1921
1833
|
| -33006 | Invite code invalid or expired | 获取新邀请码 |
|
|
1922
1834
|
| -33007 | Join request pending | 等待审批,勿重复提交 |
|
|
1923
|
-
| -33008 |
|
|
1835
|
+
| -33008 | Group FS path not found | 检查 path |
|
|
1924
1836
|
| -33009 | Resource request not found | 检查 request_id |
|
|
1925
1837
|
|
|
1926
1838
|
> SDK 客户端将 -33001 映射为 `GroupNotFoundError`,-33002~-33003 映射为 `GroupStateError`,其余映射为 `GroupError`。未识别的错误码 fallback 到 `AUNError`。
|
|
1927
1839
|
|
|
1928
1840
|
|
|
1841
|
+
|