@agentunion/fastaun-browser 0.4.12 → 0.5.0

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 (182) hide show
  1. package/CHANGELOG.md +480 -359
  2. package/_packed_docs/CHANGELOG.md +480 -359
  3. package/_packed_docs/INDEX.md +111 -53
  4. package/_packed_docs/KITE_DOCS_GUIDE.md +43 -29
  5. package/_packed_docs/agent.md/SCHEMA.md +2 -0
  6. package/_packed_docs/agent.md/examples/codeagent-claudecode.md +2 -0
  7. package/_packed_docs/agent.md/examples/human-developer.md +2 -0
  8. package/_packed_docs/agent.md/examples/openclaw-lobster.md +2 -0
  9. package/_packed_docs/agent.md/examples/signed-openclaw-lobster.md +2 -0
  10. 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 +2 -0
  11. package/_packed_docs/cli/AUN-CLI/350/256/276/350/256/241/346/226/207/346/241/243.md +265 -686
  12. package/_packed_docs/collab-gateway-boundary-test-report.md +164 -0
  13. package/_packed_docs/design/2026-05-22-aun-rpc-trace-enhancement.md +2 -0
  14. package/_packed_docs/design/AUNClient/346/213/206/345/210/206/351/207/215/346/236/204/346/211/247/350/241/214/346/226/271/346/241/210.md +2 -0
  15. package/_packed_docs/design/E2EE_V2/347/256/200/345/214/226/344/270/2721DH/345/212/240Per-AID_Wrap/346/226/271/346/241/210.md +2 -0
  16. package/_packed_docs/design//350/267/250/350/257/255/350/250/200/345/256/271/345/231/250E2E/346/265/213/350/257/225/346/226/271/346/241/210.md +2 -0
  17. package/_packed_docs/protocol/00-/346/200/273/350/247/210/344/270/216/345/210/206/345/261/202.md +2 -0
  18. 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 +2 -0
  19. 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 +2 -0
  20. package/_packed_docs/protocol/02-/350/257/201/344/271/246/344/270/216/344/277/241/344/273/273/344/275/223/347/263/273.md +2 -0
  21. package/_packed_docs/protocol/03-Gateway-/350/277/236/346/216/245/346/250/241/345/274/217.md +2 -0
  22. package/_packed_docs/protocol/04-Peer-/345/255/220/345/215/217/350/256/256.md +2 -0
  23. package/_packed_docs/protocol/05-Relay-/345/255/220/345/215/217/350/256/256.md +2 -0
  24. 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 +2 -0
  25. package/_packed_docs/protocol/08-AUN-E2EE-Group.md +2 -0
  26. package/_packed_docs/protocol/08-AUN-E2EE.md +2 -0
  27. package/_packed_docs/protocol/09-/345/256/211/345/205/250/350/200/203/350/231/221.md +2 -0
  28. package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +28 -85
  29. package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +49 -0
  30. package/_packed_docs/protocol/12-Stream-/345/255/220/345/215/217/350/256/256.md +2 -0
  31. package/_packed_docs/protocol/13-Agent/350/241/214/344/270/272/350/247/204/350/214/203.md +2 -0
  32. package/_packed_docs/protocol/14-/344/272/244/344/272/222/346/234/272/345/210/266-/345/223/215/345/272/224/346/250/241/345/274/217/344/270/216/350/207/252/344/270/273/346/250/241/345/274/217.md +2 -0
  33. 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 +2 -0
  34. package/_packed_docs/protocol/README.md +2 -0
  35. package/_packed_docs/protocol/agent.md/SCHEMA.md +2 -0
  36. package/_packed_docs/protocol/agent.md/examples/codeagent-claudecode.md +2 -0
  37. package/_packed_docs/protocol/agent.md/examples/human-developer.md +2 -0
  38. package/_packed_docs/protocol/agent.md/examples/openclaw-lobster.md +2 -0
  39. package/_packed_docs/protocol/aun-docs-guide.md +2 -0
  40. package/_packed_docs/protocol/index.md +3 -1
  41. package/_packed_docs/protocol//350/215/211/346/241/210-agent.md/347/255/276/345/220/215/345/215/217/350/256/256.md +2 -0
  42. 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 +2 -0
  43. package/_packed_docs/protocol//351/231/204/345/275/225A-/346/234/257/350/257/255/350/241/250.md +2 -0
  44. package/_packed_docs/protocol//351/231/204/345/275/225B-/346/211/251/345/261/225/346/200/247/346/214/207/345/215/227.md +2 -0
  45. package/_packed_docs/protocol//351/231/204/345/275/225C-/347/247/201/351/222/245/347/256/241/347/220/206/344/270/216/350/272/253/344/273/275/346/201/242/345/244/215.md +2 -0
  46. package/_packed_docs/protocol//351/231/204/345/275/225D-Root_CA_/346/262/273/347/220/206/346/234/272/345/210/266.md +2 -0
  47. package/_packed_docs/protocol//351/231/204/345/275/225E-Root_CA_/345/207/206/345/205/245/346/265/201/347/250/213.md +2 -0
  48. package/_packed_docs/protocol//351/231/204/345/275/225F-Issuer_CA_/347/224/263/350/257/267/346/265/201/347/250/213.md +2 -0
  49. package/_packed_docs/protocol//351/231/204/345/275/225G-AID_/345/255/244/345/204/277/351/242/204/351/230/262/344/270/216/346/225/221/346/217/264/346/234/272/345/210/266.md +2 -0
  50. package/_packed_docs/protocol//351/231/204/345/275/225H-Identity/346/234/215/345/212/241/345/256/236/347/216/260/346/214/207/345/215/227.md +2 -0
  51. package/_packed_docs/protocol//351/231/204/345/275/225I-/350/267/250/345/237/237/346/266/210/346/201/257/350/267/257/347/224/261/345/256/236/347/216/260/346/214/207/345/215/227.md +2 -0
  52. package/_packed_docs/protocol//351/231/204/345/275/225J-/345/256/242/346/210/267/347/253/257/346/216/245/345/205/245/347/244/272/344/276/213.md +2 -0
  53. package/_packed_docs/protocol//351/231/204/345/275/225K-Agent_Web/345/217/221/347/216/260/345/215/217/350/256/256.md +2 -0
  54. package/_packed_docs/protocol//351/231/204/345/275/225L-E2EE/345/256/236/347/216/260/346/214/207/345/215/227.md +2 -0
  55. package/_packed_docs/protocol//351/231/204/345/275/225M-JWT/350/256/244/350/257/201/345/256/236/347/216/260/346/214/207/345/215/227.md +2 -0
  56. package/_packed_docs/protocol//351/231/204/345/275/225N-/345/210/206/345/270/203/345/274/217Trace/345/215/217/350/256/256.md +2 -0
  57. package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +2 -0
  58. package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +2 -0
  59. package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +2 -0
  60. package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +2 -0
  61. package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +2 -0
  62. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +283 -267
  63. package/_packed_docs/sdk/07-/351/224/231/350/257/257/345/244/204/347/220/206.md +4 -1
  64. package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +2 -0
  65. package/_packed_docs/sdk/09-collab-rpc-manual.md +550 -0
  66. package/_packed_docs/sdk/09-custody-api-manual.md +2 -0
  67. package/_packed_docs/sdk/09-group-rpc-manual.md +197 -445
  68. package/_packed_docs/sdk/09-message-rpc-manual.md +8 -7
  69. package/_packed_docs/sdk/09-meta-rpc-manual.md +2 -0
  70. package/_packed_docs/sdk/09-payload-reference.md +2 -0
  71. package/_packed_docs/sdk/09-proxy-rpc-manual.md +2 -0
  72. package/_packed_docs/sdk/09-storage-rpc-manual.md +952 -279
  73. package/_packed_docs/sdk/09-stream-rpc-manual.md +2 -0
  74. package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +33 -20
  75. 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 +2 -0
  76. package/_packed_docs/sdk/INDEX.md +46 -29
  77. package/_packed_docs/sdk/Notify/351/200/232/347/237/245/346/226/271/346/241/210.md +2 -0
  78. package/_packed_docs/sdk/README.md +17 -15
  79. package/dist/aid-store.d.ts +25 -0
  80. package/dist/aid-store.d.ts.map +1 -1
  81. package/dist/aid-store.js +89 -8
  82. package/dist/aid-store.js.map +1 -1
  83. package/dist/auth.d.ts +2 -0
  84. package/dist/auth.d.ts.map +1 -1
  85. package/dist/auth.js +98 -9
  86. package/dist/auth.js.map +1 -1
  87. package/dist/bundle.js +19156 -16554
  88. package/dist/client/delivery.d.ts +5 -0
  89. package/dist/client/delivery.d.ts.map +1 -1
  90. package/dist/client/delivery.js +169 -15
  91. package/dist/client/delivery.js.map +1 -1
  92. package/dist/client/rpc-pipeline.d.ts +1 -0
  93. package/dist/client/rpc-pipeline.d.ts.map +1 -1
  94. package/dist/client/rpc-pipeline.js +76 -34
  95. package/dist/client/rpc-pipeline.js.map +1 -1
  96. package/dist/client/v2-e2ee.d.ts.map +1 -1
  97. package/dist/client/v2-e2ee.js +67 -8
  98. package/dist/client/v2-e2ee.js.map +1 -1
  99. package/dist/client.d.ts +31 -0
  100. package/dist/client.d.ts.map +1 -1
  101. package/dist/client.js +313 -23
  102. package/dist/client.js.map +1 -1
  103. package/dist/collab/client.d.ts +39 -0
  104. package/dist/collab/client.d.ts.map +1 -0
  105. package/dist/collab/client.js +124 -0
  106. package/dist/collab/client.js.map +1 -0
  107. package/dist/collab/errors.d.ts +16 -0
  108. package/dist/collab/errors.d.ts.map +1 -0
  109. package/dist/collab/errors.js +60 -0
  110. package/dist/collab/errors.js.map +1 -0
  111. package/dist/collab/index.d.ts +4 -0
  112. package/dist/collab/index.d.ts.map +1 -0
  113. package/dist/collab/index.js +4 -0
  114. package/dist/collab/index.js.map +1 -0
  115. package/dist/collab/types.d.ts +111 -0
  116. package/dist/collab/types.d.ts.map +1 -0
  117. package/dist/collab/types.js +2 -0
  118. package/dist/collab/types.js.map +1 -0
  119. package/dist/crypto.d.ts +6 -0
  120. package/dist/crypto.d.ts.map +1 -1
  121. package/dist/crypto.js +6 -0
  122. package/dist/crypto.js.map +1 -1
  123. package/dist/errors.d.ts.map +1 -1
  124. package/dist/errors.js +16 -1
  125. package/dist/errors.js.map +1 -1
  126. package/dist/facades.d.ts +89 -0
  127. package/dist/facades.d.ts.map +1 -0
  128. package/dist/facades.js +228 -0
  129. package/dist/facades.js.map +1 -0
  130. package/dist/group-fs.d.ts +103 -0
  131. package/dist/group-fs.d.ts.map +1 -0
  132. package/dist/group-fs.js +496 -0
  133. package/dist/group-fs.js.map +1 -0
  134. package/dist/group-resources.d.ts +98 -0
  135. package/dist/group-resources.d.ts.map +1 -0
  136. package/dist/group-resources.js +635 -0
  137. package/dist/group-resources.js.map +1 -0
  138. package/dist/index.d.ts +4 -1
  139. package/dist/index.d.ts.map +1 -1
  140. package/dist/index.js +6 -0
  141. package/dist/index.js.map +1 -1
  142. package/dist/register-flow.d.ts +1 -0
  143. package/dist/register-flow.d.ts.map +1 -1
  144. package/dist/register-flow.js +3 -0
  145. package/dist/register-flow.js.map +1 -1
  146. package/dist/service-proxy.d.ts +1 -0
  147. package/dist/service-proxy.d.ts.map +1 -1
  148. package/dist/service-proxy.js +15 -3
  149. package/dist/service-proxy.js.map +1 -1
  150. package/dist/storage/errors.d.ts +28 -0
  151. package/dist/storage/errors.d.ts.map +1 -0
  152. package/dist/storage/errors.js +65 -0
  153. package/dist/storage/errors.js.map +1 -0
  154. package/dist/storage/index.d.ts +2 -0
  155. package/dist/storage/index.d.ts.map +1 -0
  156. package/dist/storage/index.js +2 -0
  157. package/dist/storage/index.js.map +1 -0
  158. package/dist/storage/lowlevel.d.ts +314 -0
  159. package/dist/storage/lowlevel.d.ts.map +1 -0
  160. package/dist/storage/lowlevel.js +460 -0
  161. package/dist/storage/lowlevel.js.map +1 -0
  162. package/dist/storage/types.d.ts +59 -0
  163. package/dist/storage/types.d.ts.map +1 -0
  164. package/dist/storage/types.js +113 -0
  165. package/dist/storage/types.js.map +1 -0
  166. package/dist/storage/vfs.d.ts +144 -0
  167. package/dist/storage/vfs.d.ts.map +1 -0
  168. package/dist/storage/vfs.js +403 -0
  169. package/dist/storage/vfs.js.map +1 -0
  170. package/dist/tools/cross-sdk-agent.d.ts +3 -0
  171. package/dist/tools/cross-sdk-agent.d.ts.map +1 -0
  172. package/dist/tools/cross-sdk-agent.js +1089 -0
  173. package/dist/tools/cross-sdk-agent.js.map +1 -0
  174. package/dist/transport.d.ts +3 -0
  175. package/dist/transport.d.ts.map +1 -1
  176. package/dist/transport.js +33 -13
  177. package/dist/transport.js.map +1 -1
  178. package/dist/version.d.ts +1 -1
  179. package/dist/version.d.ts.map +1 -1
  180. package/dist/version.js +1 -1
  181. package/dist/version.js.map +1 -1
  182. package/package.json +44 -44
@@ -116,36 +116,29 @@
116
116
  | [group.get_join_requirements](#groupget_join_requirements) | 获取入群要求 |
117
117
  | [group.update_join_requirements](#groupupdate_join_requirements) | 更新入群要求 |
118
118
 
119
- ### 资源管理
120
-
121
- | 方法 | 说明 |
122
- |------|------|
123
- | [group.resources.put](#groupresourcesput) | 分享资源 |
124
- | [group.resources.create_folder](#groupresourcescreate_folder) | 创建资源目录 |
125
- | [group.resources.list_children](#groupresourceslist_children) | 列出目录子节点 |
126
- | [group.resources.rename](#groupresourcesrename) | 重命名资源节点 |
127
- | [group.resources.move](#groupresourcesmove) | 移动资源节点 |
128
- | [group.resources.mount_object](#groupresourcesmount_object) | 挂载 storage 对象为资源 |
129
- | [group.resources.request_mount_object](#groupresourcesrequest_mount_object) | 申请挂载 storage 对象 |
130
- | [group.resources.unmount](#groupresourcesunmount) | 取消挂载资源 |
131
- | [group.resources.resolve_path](#groupresourcesresolve_path) | 按路径解析资源 |
132
- | [group.resources.list_refs_by_storage](#groupresourceslist_refs_by_storage) | storage 引用反查资源 |
133
- | [group.resources.cleanup_by_storage_ref](#groupresourcescleanup_by_storage_ref) | 清理失效 storage 引用 |
134
- | [group.resources.get](#groupresourcesget) | 查看资源 |
135
- | [group.resources.list](#groupresourceslist) | 列出资源 |
136
- | [group.resources.update](#groupresourcesupdate) | 更新资源元数据 |
137
- | [group.resources.get_access](#groupresourcesget_access) | 获取下载票据 |
138
- | [group.resources.resolve_access_ticket](#groupresourcesresolve_access_ticket) | 解析访问票据 |
139
- | [group.resources.delete](#groupresourcesdelete) | 删除资源 |
140
- | [group.resources.request_add](#groupresourcesrequest_add) | 申请分享 |
141
- | [group.resources.direct_add](#groupresourcesdirect_add) | 直接添加 |
142
- | [group.resources.list_pending](#groupresourceslist_pending) | 待审批列表 |
143
- | [group.resources.approve_request](#groupresourcesapprove_request) | 批准申请 |
144
- | [group.resources.reject_request](#groupresourcesreject_request) | 拒绝申请 |
145
-
146
- ### 在线状态
147
-
148
- | 方法 | 说明 |
119
+ ### 群文件系统
120
+
121
+ | 方法 | 说明 |
122
+ |------|------|
123
+ | [group.fs.ls](#groupfsls) | 列出目录 |
124
+ | [group.fs.find](#groupfsfind) | 查找节点 |
125
+ | [group.fs.stat](#groupfsstat) | 查看节点 |
126
+ | [group.fs.lstat](#groupfslstat) | 查看链接本身 |
127
+ | [group.fs.df](#groupfsdf) | 查看用量 |
128
+ | [group.fs.create_download_ticket](#groupfscreate_download_ticket) | 创建下载票据 |
129
+ | [group.fs.mkdir](#groupfsmkdir) | 创建目录 |
130
+ | [group.fs.rm](#groupfsrm) | 删除节点 |
131
+ | [group.fs.cp](#groupfscp) | 远程复制 |
132
+ | [group.fs.mv](#groupfsmv) | 远程移动 |
133
+ | [group.fs.check_upload](#groupfscheck_upload) | 上传前检查 |
134
+ | [group.fs.create_upload_session](#groupfscreate_upload_session) | 创建上传会话 |
135
+ | [group.fs.complete_upload](#groupfscomplete_upload) | 完成上传 |
136
+ | [group.fs.mount](#groupfsmount) | 挂载成员数据区 |
137
+ | [group.fs.umount](#groupfsumount) | 卸载成员数据区 |
138
+
139
+ ### 在线状态
140
+
141
+ | 方法 | 说明 |
149
142
  |------|------|
150
143
  | [group.get_online_members](#groupget_online_members) | 在线成员 |
151
144
 
@@ -153,11 +146,13 @@
153
146
 
154
147
  ## Group ID 规范
155
148
 
156
- `group_id` 支持三种输入形式:`g-{slug}`、`g-{slug}@issuer-domain`、`g-{slug}.issuer-domain`。服务端接受输入后会统一规范化为 canonical group_id;本域内 `g-{slug}` 只是简写别名,响应、签名、E2EE AAD 和内部存储使用 canonical 形式。
157
-
158
- 短形式必须以 `g-` 开头,总长度 616 字符;`slug` 4 到 14 位,只能包含小写字母和数字。`group.create` 可以指定 `group_id`,但必须满足该规则且未被占用;如果已被占用会返回错误。不指定 `group_id` 时由服务端自动分配,服务端通过唯一约束兜底,发现碰撞会重新生成。
159
-
160
- `https://group.issuer-domain/...` 这类群链接中,host 已携带 issuer,path 中的 `group_id` 使用本域简写形式,例如 `https://group.agentid.pub/g-abc123/invite/ic-xxx`。
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`。
161
156
 
162
157
  ---
163
158
 
@@ -989,7 +984,7 @@ await client.call("group.set_settings", {
989
984
  | `payload` | object | 否 | 消息内容 |
990
985
  | `type` | string | 否 | 信封/封装类型,普通业务消息无需填写;SDK 加密群消息时自动使用 `e2ee.group_encrypted` |
991
986
  | `attachments` | array | 否 | 兼容旧接口的顶层附件元数据;推荐把业务附件放入 `payload.attachments` |
992
- | `protected_headers` / `headers` | object | 否 | SDK 加密前读取的 E2EE 信封元数据,类似 HTTP headers;推荐使用 `protected_headers`,`headers` 仅作为兼容别名;服务端不解释,接收端验 `_auth` 后在 `e2ee.protected_headers` 暴露 |
987
+ | `protected_headers` / `headers` | object | 否 | SDK 加密前读取的 E2EE 信封元数据,类似 HTTP headers;推荐使用 `protected_headers`,`headers` 仅作为兼容别名;服务端不解释,接收端验 `_auth` 后在 `e2ee.protected_headers` 暴露 |
993
988
 
994
989
  ### Payload 参考约定
995
990
 
@@ -1049,7 +1044,7 @@ SDK 调用时必须走群组 E2EE。应用层传入明文 `payload`,SDK 会加
1049
1044
  | `encrypt` | boolean | 否 | SDK 侧固定按 `true` 处理;`false` 会被拒绝 |
1050
1045
  | `thought_id` | string | 否 | thought item ID;不传时 SDK 生成 `gt-*` |
1051
1046
  | `timestamp` | integer | 否 | 客户端时间戳;不传时 SDK 生成 |
1052
- | `protected_headers` / `headers` | object | 否 | SDK 加密前读取的 E2EE 信封元数据;推荐使用 `protected_headers`,`headers` 仅作为兼容别名;`context` 会被 SDK 复制进信封并单独验 `_auth` |
1047
+ | `protected_headers` / `headers` | object | 否 | SDK 加密前读取的 E2EE 信封元数据;推荐使用 `protected_headers`,`headers` 仅作为兼容别名;`context` 会被 SDK 复制进信封并单独验 `_auth` |
1053
1048
 
1054
1049
  **SDK 调用示例**:
1055
1050
 
@@ -1335,330 +1330,91 @@ result = await client.call("group.thought.get", {
1335
1330
  | `auto_approve_patterns` | array | 否 | 自动批准正则列表 |
1336
1331
  | `max_pending` | integer | 否 | 最大待审批数 |
1337
1332
 
1338
- ---
1339
-
1340
- ## 资源管理
1341
-
1342
- ### group.resources.put
1343
-
1344
- 分享资源链接到群组。需要 **member 及以上**权限。
1345
-
1346
- **参数**:
1347
-
1348
- | 参数 | 类型 | 必填 | 说明 |
1349
- |------|------|------|------|
1350
- | `group_id` | string | 是 | 群组 ID |
1351
- | `resource_path` | string | | 资源路径 |
1352
- | `resource_type` | string | 否 | `"file"` / `"folder"` / `"link"`,默认 `"file"` |
1353
- | `title` | string | 是 | 资源标题 |
1354
- | `storage_ref` | object | 否 | 存储引用对象 |
1355
- | `metadata` | object | | 自定义元数据 |
1356
- | `visibility` | string | | `"members_only"` / `"public"`,默认 `"members_only"` |
1357
- | `tags` | array | | 标签数组 |
1358
-
1359
- **响应**:
1360
-
1361
- ```json
1362
- {
1363
- "group_id": "g-abc123.agentid.pub",
1364
- "resource": { ... },
1365
- "created": true
1366
- }
1367
- ```
1368
-
1369
- > `created` 为 `true` 表示新建,`false` 表示更新已有资源。
1370
-
1371
- ### group.resources.create_folder
1372
-
1373
- 创建群资源目录。需要 **member 及以上**权限。
1374
-
1375
- **参数**:
1376
-
1377
- | 参数 | 类型 | 必填 | 说明 |
1378
- |------|------|------|------|
1379
- | `group_id` | string | 是 | 群组 ID |
1380
- | `path` / `resource_path` | string | 否 | 完整目录路径 |
1381
- | `name` | string | 否 | 目录名;未提供完整路径时使用 |
1382
- | `parent_resource_id` / `parent_path` | string | | 父目录 |
1383
- | `title` | string | 否 | 显示标题,默认目录名 |
1384
- | `metadata` | object | 否 | 自定义元数据 |
1385
- | `visibility` | string | 否 | `"members_only"` / `"public"` |
1386
- | `tags` | array | 否 | 标签 |
1387
- | `mkdirs` | boolean | 否 | 是否递归创建父目录 |
1388
- | `sort_order` | integer | 否 | 排序值 |
1389
-
1390
- **响应**:`{ "group_id": "...", "resource": { ... }, "created": true }`。
1391
-
1392
- ### group.resources.list_children
1393
-
1394
- 列出某个资源目录下的直接子节点。
1395
-
1396
- **参数**:
1397
-
1398
- | 参数 | 类型 | 必填 | 说明 |
1399
- |------|------|------|------|
1400
- | `group_id` | string | 是 | 群组 ID |
1401
- | `resource_id` / `path` / `resource_path` | string | 否 | 父目录;不传表示根目录 |
1402
- | `type` / `resource_type` | string | 否 | `"folder"` / `"file"` / `"link"` |
1403
- | `include_status` | boolean | 否 | 是否附带 storage 状态 |
1404
- | `page` / `offset` | integer | 否 | 分页位置 |
1405
- | `size` / `limit` | integer | 否 | 每页数量 |
1406
- | `sort_by` | string | | 排序字段,默认 `sort_order` |
1407
- | `order` | string | 否 | `"asc"` / `"desc"` |
1408
-
1409
- **响应**:`group_id`、`resource_id`、`path`、`items`、`total`、`count`、`page`、`size`、`offset`。
1410
-
1411
- ### group.resources.rename
1412
-
1413
- 重命名资源节点。需要资源创建者、storage owner、owner 或 admin 权限。
1414
-
1415
- **参数**:`group_id`,资源选择器(`resource_id` / `resource_path` / `path`),`new_name`;可选 `title`、`expected_version`。
1416
-
1417
- **响应**:更新后的 `resource`。
1418
-
1419
- ### group.resources.move
1420
-
1421
- 移动资源节点。目录不能移动到自身或自身子目录。
1422
-
1423
- **参数**:`group_id`,资源选择器,目标父目录(`dst_parent_resource_id` / `dst_parent_path`),可选 `new_name` / `dst_name`、`expected_version`。
1424
-
1425
- **响应**:更新后的 `resource`。
1426
-
1427
- ### group.resources.mount_object
1428
-
1429
- 将 `storage.*` 对象挂载为群资源。需要 **owner/admin** 权限。
1430
-
1431
- **参数**:
1432
-
1433
- | 参数 | 类型 | 必填 | 说明 |
1434
- |------|------|------|------|
1435
- | `group_id` | string | 是 | 群组 ID |
1436
- | `storage_ref` | object | 是 | storage 引用,通常包含 `owner_aid`、`bucket`、`object_id` 或 `object_key` |
1437
- | `path` / `resource_path` | string | 否 | 资源路径;不传时用 storage 文件名 |
1438
- | `title` | string | 否 | 显示标题 |
1439
- | `metadata` | object | 否 | 自定义元数据 |
1440
- | `visibility` | string | 否 | `"members_only"` / `"public"` |
1441
- | `tags` | array | 否 | 标签 |
1442
- | `mkdirs` | boolean | 否 | 是否递归创建父目录,默认 `true` |
1443
- | `conflict_policy` | string | 否 | `"reject"` / `"replace"` / `"keep_both"` |
1444
-
1445
- **响应**:`{ "group_id": "...", "resource": { ... }, "created": true }`。
1446
-
1447
- ### group.resources.request_mount_object
1448
-
1449
- 成员申请挂载自己的 storage 对象,进入待审批队列。语义等同 `group.resources.request_add`,但输入按挂载对象组织。
1450
-
1451
- **参数**:同 `group.resources.mount_object`,但不需要 owner/admin 权限。
1452
-
1453
- **响应**:`{ "group_id": "...", "request": { ... } }`。
1454
-
1455
- ### group.resources.unmount
1456
-
1457
- 取消挂载资源,等价于非递归 `group.resources.delete`。
1458
-
1459
- **参数**:`group_id`,资源选择器(`resource_id` / `resource_path` / `path`)。
1460
-
1461
- **响应**:删除结果。
1462
-
1463
- ### group.resources.resolve_path
1464
-
1465
- 按路径解析资源节点。
1466
-
1467
- **参数**:`group_id`、`path` / `resource_path`;可选 `expected_type`。
1468
-
1469
- **响应**:`resource_id`、`resource_type`、`resource_path`、`path`、`status`、`resource`。
1470
-
1471
- ### group.resources.list_refs_by_storage
1472
-
1473
- 按 storage 引用反查群资源。传 `group_id` 时要求调用者是该群成员;不传 `group_id` 时要求调用者是 `owner_aid`。
1474
-
1475
- **参数**:`owner_aid` 必填,`object_id` 或 `object_key` 至少一个;可选 `bucket`、`group_id`、`include_missing`、`offset`、`limit` / `size`。
1476
-
1477
- **响应**:`items`、`total`、`count`、`limit`、`offset`,并回显 storage 选择器字段。
1478
-
1479
- ### group.resources.cleanup_by_storage_ref
1480
-
1481
- 清理指向已删除或失效 storage 对象的资源引用。传 `group_id` 时要求 owner/admin 或 storage owner;不传 `group_id` 时要求 storage owner。
1482
-
1483
- **参数**:`owner_aid` 必填,`object_id` 或 `object_key` 至少一个;可选 `bucket`、`group_id`、`mode`。
1484
-
1485
- **响应**:`affected_count` 和被影响的资源 `items`。
1486
-
1487
- ### group.resources.get
1488
-
1489
- 查看资源详情。
1490
-
1491
- **参数**:`group_id` (string), `resource_path` (string)
1492
-
1493
- ### group.resources.list
1494
-
1495
- 列出群资源。
1496
-
1497
- **参数**:
1498
-
1499
- | 参数 | 类型 | 必填 | 默认值 | 说明 |
1500
- |------|------|------|--------|------|
1501
- | `group_id` | string | 是 | — | 群组 ID |
1502
- | `prefix` | string | 否 | — | 资源路径前缀 |
1503
- | `owner_aid` | string | 否 | — | 筛选创建者 |
1504
- | `visibility` | string | 否 | — | 筛选可见性 |
1505
- | `tags` | array | 否 | — | 筛选标签 |
1506
- | `sort_by` | string | 否 | `"resource_path"` | 排序字段 |
1507
- | `order` | string | 否 | `"asc"` | `"asc"` / `"desc"` |
1508
- | `size` | integer | 否 | 50 | 每页数量(也接受 `limit`) |
1509
- | `page` | integer | 否 | 1 | 页码(也接受 `offset`) |
1510
-
1511
- **响应**:
1512
-
1513
- ```json
1514
- {
1515
- "group_id": "g-abc123.agentid.pub",
1516
- "prefix": "",
1517
- "owner_aid": null,
1518
- "visibility": null,
1519
- "tags": [],
1520
- "limit": 50,
1521
- "size": 50,
1522
- "offset": 0,
1523
- "page": 1,
1524
- "items": [ ... ],
1525
- "count": 3,
1526
- "total": 3
1527
- }
1528
- ```
1529
-
1530
- ### group.resources.get_access
1531
-
1532
- 获取资源下载票据。
1533
-
1534
- **参数**:`group_id` (string), `resource_path` (string)
1535
-
1536
- **响应**:
1537
-
1538
- ```json
1539
- {
1540
- "group_id": "g-abc123.agentid.pub",
1541
- "resource_path": "/docs/guide.pdf",
1542
- "resource_link": "storage://...",
1543
- "resource": { ... },
1544
- "access_ticket": {
1545
- "ticket": "tk_...",
1546
- "ticket_type": "group-resource-access",
1547
- "issued_to": "alice.agentid.pub",
1548
- "resource_link": "storage://...",
1549
- "issued_at": 1234567890,
1550
- "expire_at": 1234571490
1551
- },
1552
- "access_token": "tk_...",
1553
- "token_type": "Bearer",
1554
- "download": { ... }
1555
- }
1556
- ```
1557
-
1558
- ### group.resources.delete
1559
-
1560
- 删除群资源链接。需要 admin 权限。
1561
-
1562
- **参数**:`group_id` (string), `resource_path` (string)
1563
-
1564
- **响应**:`{ "group_id": "g-abc123.agentid.pub", "resource_path": "/path/to/file" }`
1565
-
1566
- ### group.resources.update
1567
-
1568
- 更新资源元数据。需要 admin 及以上权限。
1569
-
1570
- **参数**:`group_id` (必填), `resource_path` (必填), `title` / `metadata` / `tags` / `visibility` (可选)
1571
-
1572
- **响应**:`{ "group_id": "g-abc123.agentid.pub", "resource": { ... } }`
1573
-
1574
- ### group.resources.resolve_access_ticket
1575
-
1576
- 使用访问票据换取下载令牌。
1577
-
1578
- **参数**:`ticket` (string, 必填)
1579
-
1580
- **响应**:`{ "resource": { ... }, "download": { ... } }`
1581
-
1582
- ### group.resources.request_add
1583
-
1584
- 成员申请分享资源(需审批)。
1585
-
1586
- **参数**:同 `group.resources.put`(不需要 `storage_ref`)。
1587
-
1588
- **响应**:
1589
-
1590
- ```json
1591
- {
1592
- "group_id": "g-abc123.agentid.pub",
1593
- "request": {
1594
- "request_id": "req_...",
1595
- "group_id": "g-abc123.agentid.pub",
1596
- "requester_aid": "bob.agentid.pub",
1597
- "resource_path": "/docs/my-file.pdf",
1598
- "resource_type": "file",
1599
- "title": "我的文件",
1600
- "status": "pending",
1601
- "created_at": 1234567890,
1602
- "updated_at": 1234567890,
1603
- "visibility": "members_only",
1604
- "tags": [],
1605
- "reviewed_by": null,
1606
- "review_note": null,
1607
- "resource_created": false
1608
- }
1609
- }
1610
- ```
1611
-
1612
- ### group.resources.direct_add
1613
-
1614
- Owner/Admin 直接添加资源(无需审批)。需要 **owner/admin** 权限。
1615
-
1616
- **参数**:同 `group.resources.put`(`resource_type` 不能是 `"folder"`)。
1617
-
1618
- **响应**:同 `group.resources.put`。
1619
-
1620
- ### group.resources.list_pending
1621
-
1622
- 列出待审批的资源申请。需要 **owner** 权限。
1623
-
1624
- **参数**:`group_id` (string)
1625
-
1626
- ### group.resources.approve_request
1627
-
1628
- 批准资源申请。需要 **owner** 权限。
1629
-
1630
- **参数**:`request_id` (string, 必填), `note` (string, 可选)
1631
-
1632
- **响应**:
1633
-
1634
- ```json
1635
- {
1636
- "group_id": "g-abc123.agentid.pub",
1637
- "request": { ... },
1638
- "resource": { ... }
1639
- }
1640
- ```
1641
-
1642
- ### group.resources.reject_request
1643
-
1644
- 拒绝资源申请。需要 **owner** 权限。
1645
-
1646
- **参数**:`request_id` (string, 必填), `note` (string, 可选)
1647
-
1648
- **响应**:
1649
-
1650
- ```json
1651
- {
1652
- "group_id": "g-abc123.agentid.pub",
1653
- "request": { ... }
1654
- }
1655
- ```
1656
-
1657
- ---
1658
-
1659
- ## 在线状态
1660
-
1661
- ### group.get_online_members
1333
+ ---
1334
+
1335
+ ## 群文件系统
1336
+
1337
+ 新代码统一使用 `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 不拼接 `groupdata/{group_id}`。
1338
+
1339
+ 推荐通过 SDK/CLI 使用:
1340
+
1341
+ | 语言 | 入口 |
1342
+ |------|------|
1343
+ | Python | `client.group.fs` |
1344
+ | TypeScript / JavaScript | `client.group.fs` |
1345
+ | Go | `client.Group().FS()` |
1346
+ | CLI | `aun group fs ...` |
1347
+
1348
+ 权限与签名约束:
1349
+
1350
+ - 群自有区(如 `group_aid:/announce`、`/public`、`/archive`)只有 owner 可写,但实际调用身份必须是 `group_aid`,并且 `client_signature_aid` 必须是当前 group_identity。`group_aid` 私钥由群主持有;admin/member 不能用个人 AID 直接写群自有区。
1351
+ - `memberdata/{member_ref}` 写入默认只允许该成员本人;SDK 只传 group path,不拼接真实 storage 路径。
1352
+ - 上传控制面会透传 `parents` storage:默认 `parents=true` 时可递归创建父目录,显式 `parents=false` 时父目录必须已存在。
1353
+ - JavaScript 浏览器版 `cp(string, group)` 默认把 string 当文本内容上传;Node 本地路径需显式传 `sourceType: "path"`、`localPath: true` 或使用 `local:` 前缀。Python、TypeScript 和 Go 默认把 string 当本地路径。
1354
+
1355
+ ### group.fs.ls
1356
+
1357
+ 列出目录。参数:`path` 必填;可选 `page`、`size`、`marker`、`long`、`recursive`。响应返回 group view `items`,节点 `path` 仍为 group path。
1358
+
1359
+ ### group.fs.find
1360
+
1361
+ 查找节点。参数:`path` 必填;可选 `pattern`、`name`、`type`、`size`、`mtime`、`page`、`page_size`。
1362
+
1363
+ ### group.fs.stat
1364
+
1365
+ 查看节点。参数:`path` 必填。响应为 NodeView。
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
1662
1418
 
1663
1419
  获取当前在线成员列表。
1664
1420
 
@@ -1957,29 +1713,29 @@ CAS 轮换群组 E2EE Epoch。需要 **admin 及以上**权限。
1957
1713
 
1958
1714
  **Payload**:
1959
1715
 
1960
- ```json
1961
- {
1962
- "envelope": {
1963
- "module_id": "group",
1964
- "action": "member_added",
1965
- "group_id": "g-abc123.agentid.pub",
1966
- "event_seq": 42
1967
- },
1968
- "module_id": "group",
1969
- "action": "member_added",
1970
- "group_id": "g-abc123.agentid.pub",
1716
+ ```json
1717
+ {
1718
+ "envelope": {
1719
+ "module_id": "group",
1720
+ "action": "member_added",
1721
+ "group_id": "g-abc123.agentid.pub",
1722
+ "event_seq": 42
1723
+ },
1724
+ "module_id": "group",
1725
+ "action": "member_added",
1726
+ "group_id": "g-abc123.agentid.pub",
1971
1727
  "event_seq": 42
1972
- }
1973
- ```
1974
-
1975
- SDK 交付给应用层的群事件信封字段统一放在 `envelope`。0.4.x 兼容期仍保留顶层 `module_id` / `action` / `group_id` / `event_seq` 等别名,下一个大版本 0.5.* 将移除这些顶层别名,请通过 `ev["envelope"]["action"]` 等路径访问。
1976
-
1977
- | 字段 | 类型 | 说明 |
1978
- |------|------|------|
1979
- | `envelope` | object | 群事件信封,包含 `module_id`、`action`、`group_id`、`event_seq`、`event_type`、`actor_aid`、`created_at`、`device_id`、`slot_id` 等存在的字段 |
1980
- | `module_id` | string | 固定 `"group"` |
1981
- | `action` | string | 变更类型(见下表) |
1982
- | `group_id` | string | 群组 ID |
1728
+ }
1729
+ ```
1730
+
1731
+ SDK 交付给应用层的群事件信封字段统一放在 `envelope`。0.4.x 兼容期仍保留顶层 `module_id` / `action` / `group_id` / `event_seq` 等别名,下一个大版本 0.5.* 将移除这些顶层别名,请通过 `ev["envelope"]["action"]` 等路径访问。
1732
+
1733
+ | 字段 | 类型 | 说明 |
1734
+ |------|------|------|
1735
+ | `envelope` | object | 群事件信封,包含 `module_id`、`action`、`group_id`、`event_seq`、`event_type`、`actor_aid`、`created_at`、`device_id`、`slot_id` 等存在的字段 |
1736
+ | `module_id` | string | 固定 `"group"` |
1737
+ | `action` | string | 变更类型(见下表) |
1738
+ | `group_id` | string | 群组 ID |
1983
1739
  | `event_seq` | integer | 可选,服务端分配的单调递增序号,用于 SDK 内部保序去重 |
1984
1740
  | `request_id` | string | 可选,仅资源审批相关 action |
1985
1741
  | `resource_path` | string | 可选,仅资源相关 action |
@@ -2021,10 +1777,6 @@ SDK 交付给应用层的群事件信封字段统一放在 `envelope`。0.4.x
2021
1777
  | `resource_put` | 资源上传 |
2022
1778
  | `resource_updated` | 资源更新 |
2023
1779
  | `resource_deleted` | 资源删除 |
2024
- | `resource_request_created` | 资源申请创建 |
2025
- | `resource_direct_added` | 资源直接添加 |
2026
- | `resource_request_approved` | 资源申请批准 |
2027
- | `resource_request_rejected` | 资源申请拒绝 |
2028
1780
  | `suspended` | 群组暂停 |
2029
1781
  | `resumed` | 群组恢复 |
2030
1782
  | `dissolved` | 群组解散 |
@@ -2074,73 +1826,71 @@ SDK 收到后自动解密 `payload`,解密后的明文消息直接交付用户
2074
1826
  }
2075
1827
  ```
2076
1828
 
2077
- SDK 收到后自动调用 `group.pull` 拉取最新消息并逐条解密后交付用户回调。
2078
-
2079
- **SDK 应用层回调形态**:
2080
-
2081
- ```json
2082
- {
2083
- "envelope": {
2084
- "group_id": "g-abc123.agentid.pub",
2085
- "seq": 42,
2086
- "message_id": "uuid",
2087
- "sender_aid": "alice.agentid.pub",
2088
- "message_type": "group.message",
2089
- "dispatch_mode": "broadcast"
2090
- },
2091
- "group_id": "g-abc123.agentid.pub",
2092
- "seq": 42,
2093
- "message_id": "uuid",
2094
- "sender_aid": "alice.agentid.pub",
2095
- "message_type": "group.message",
2096
- "dispatch_mode": "broadcast",
2097
- "payload": {"type": "text", "text": "Hello"}
2098
- }
2099
- ```
2100
-
2101
- SDK 交付给应用层的 `payload` 是明文业务 JSON 对象;群消息信封字段统一放在 `envelope`。0.4.x 兼容期仍保留顶层 `group_id` / `seq` / `message_id` / `sender_aid` 等别名,下一个大版本 0.5.* 将移除这些顶层别名,请通过 `msg["envelope"]["message_id"]` 等路径访问。
2102
-
2103
- ### event/group.message_recalled
1829
+ SDK 收到后自动调用 `group.pull` 拉取最新消息并逐条解密后交付用户回调。
1830
+
1831
+ **SDK 应用层回调形态**:
1832
+
1833
+ ```json
1834
+ {
1835
+ "envelope": {
1836
+ "group_id": "g-abc123.agentid.pub",
1837
+ "from": "alice.agentid.pub",
1838
+ "type": "text",
1839
+ "timestamp": 1234567890000
1840
+ },
1841
+ "group_id": "g-abc123.agentid.pub",
1842
+ "seq": 42,
1843
+ "message_id": "uuid",
1844
+ "sender_aid": "alice.agentid.pub",
1845
+ "message_type": "group.message",
1846
+ "dispatch_mode": "broadcast",
1847
+ "payload": {"type": "text", "text": "Hello"}
1848
+ }
1849
+ ```
1850
+
1851
+ SDK 交付给应用层的 `payload` 是明文业务 JSON 对象;群消息信封字段统一放在 `envelope`。`envelope` 只保留可转发的归一化元数据,`from` 由 `sender_aid` 归一化而来,`timestamp` 由 `created_at` / `t_server` 归一化而来。0.4.x 兼容期仍保留顶层 `group_id` / `seq` / `message_id` / `sender_aid` / `dispatch_mode` 等别名,下一个大版本 0.5.* 将移除这些顶层别名;请通过 `msg["envelope"]["from"]`、`msg["envelope"]["timestamp"]` 等路径访问。
1852
+
1853
+ ### event/group.message_recalled
2104
1854
 
2105
1855
  群消息撤回后推送给所有在线成员(与 pull 双 tombstone 兜底互补)。在线 push 是实时通道,双 tombstone 是离线 / 未读 / push 丢失时的可靠性兜底;两者最终一致,SDK 去重保证应用层只感知一次。
2106
1856
 
2107
1857
  **Payload**:
2108
1858
 
2109
- ```json
2110
- {
2111
- "envelope": {
2112
- "module_id": "group",
2113
- "group_id": "g-abc123.agentid.pub",
2114
- "seq": 43,
2115
- "message_id": "grm-uuid",
2116
- "sender_aid": "alice.agentid.pub"
2117
- },
2118
- "module_id": "group",
2119
- "group_id": "g-abc123.agentid.pub",
2120
- "seq": 43,
2121
- "message_id": "grm-uuid",
2122
- "tombstone_message_id": "grm-uuid",
2123
- "message_ids": ["gm-aaa"],
2124
- "target_message_seqs": [42],
2125
- "sender_aid": "alice.agentid.pub",
1859
+ ```json
1860
+ {
1861
+ "envelope": {
1862
+ "group_id": "g-abc123.agentid.pub",
1863
+ "from": "alice.agentid.pub",
1864
+ "type": "group.message_recalled",
1865
+ "kind": "group.message_recalled",
1866
+ "timestamp": 1234567890000
1867
+ },
1868
+ "module_id": "group",
1869
+ "group_id": "g-abc123.agentid.pub",
1870
+ "seq": 43,
1871
+ "message_id": "grm-uuid",
1872
+ "tombstone_message_id": "grm-uuid",
1873
+ "message_ids": ["gm-aaa"],
1874
+ "target_message_seqs": [42],
1875
+ "sender_aid": "alice.agentid.pub",
2126
1876
  "recalled_by": "alice.agentid.pub",
2127
1877
  "recalled_at": 1234567890000,
2128
1878
  "reason": "",
2129
1879
  "member_aids": ["bob.agentid.pub"]
2130
- }
2131
- ```
2132
-
2133
- SDK 交付给应用层的撤回事件同样带 `envelope`。`envelope` 表示当前交付的撤回 tombstone / 通知自身信封,不是被撤回原消息的信封;业务侧被撤回的原消息列表继续使用 `message_ids` / `target_message_seqs`。0.4.x 兼容期仍保留顶层 `group_id` / `seq` / `message_id` / `sender_aid` 等别名,下一个大版本 0.5.* 将移除这些顶层别名。
2134
-
2135
- | 字段 | 类型 | 说明 |
2136
- |------|------|------|
2137
- | `envelope` | object | 撤回 tombstone / 通知自身信封,包含 `module_id`、`group_id`、`seq`、`message_id`、`sender_aid`、`device_id`、`slot_id` 等存在的字段 |
2138
- | `module_id` | string | 固定 `"group"` |
2139
- | `group_id` | string | 群组 ID |
2140
- | `seq` | integer | 当前交付的撤回 tombstone / 通知 seq;在线 push 为 notice_seq,原 seq 占位 tombstone 为原消息 seq |
2141
- | `message_id` | string | 当前交付的撤回 tombstone / 通知自己的 message_id |
2142
- | `tombstone_message_id` | string | 兼容别名,等同于撤回 tombstone / 通知自身的 `message_id` |
2143
- | `message_ids` | string[] | 被撤回的**原消息 ID 列表** |
1880
+ }
1881
+ ```
1882
+
1883
+ SDK 交付给应用层的撤回事件同样带 `envelope`。`envelope` 表示当前交付的撤回 tombstone / 通知自身信封,不是被撤回原消息的信封;业务侧被撤回的原消息列表继续使用 `message_ids` / `target_message_seqs`。`message_id` / `seq` 继续只保留在顶层兼容字段中,不进入 `envelope`。0.4.x 兼容期仍保留顶层 `group_id` / `seq` / `message_id` / `sender_aid` 等别名,下一个大版本 0.5.* 将移除这些顶层别名。
1884
+
1885
+ | 字段 | 类型 | 说明 |
1886
+ |------|------|------|
1887
+ | `envelope` | object | 撤回 tombstone / 通知自身信封,包含 `group_id`、`from`、`type`、`kind`、`timestamp`、`encrypted`、`context`、`protected_headers` 等存在的字段 |
1888
+ | `module_id` | string | 固定 `"group"` |
1889
+ | `group_id` | string | 群组 ID |
1890
+ | `seq` | integer | 当前交付的撤回 tombstone / 通知 seq;在线 push 为 notice_seq,原 seq 占位 tombstone 为原消息 seq |
1891
+ | `message_id` | string | 当前交付的撤回 tombstone / 通知自己的 message_id |
1892
+ | `tombstone_message_id` | string | 兼容别名,等同于撤回 tombstone / 通知自身的 `message_id` |
1893
+ | `message_ids` | string[] | 被撤回的**原消息 ID 列表** |
2144
1894
  | `target_message_seqs` | integer[] | 被撤回的原消息 seq 列表 |
2145
1895
  | `sender_aid` | string | 原消息发送方 |
2146
1896
  | `recalled_by` | string | 撤回操作者 |
@@ -2174,3 +1924,5 @@ Group 服务定义了以下专用错误码(-33xxx 段):
2174
1924
  | -33009 | Resource request not found | 检查 request_id |
2175
1925
 
2176
1926
  > SDK 客户端将 -33001 映射为 `GroupNotFoundError`,-33002~-33003 映射为 `GroupStateError`,其余映射为 `GroupError`。未识别的错误码 fallback 到 `AUNError`。
1927
+
1928
+