@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.
- package/CHANGELOG.md +550 -464
- package/_packed_docs/CHANGELOG-validators.md +147 -0
- package/_packed_docs/CHANGELOG.md +550 -464
- package/_packed_docs/INDEX.md +201 -177
- package/_packed_docs/KITE_DOCS_GUIDE.md +38 -32
- 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
- package/_packed_docs/aun-perf-audit-critical-bugs.md +315 -0
- package/_packed_docs/cli/AUN-CLI/350/256/276/350/256/241/346/226/207/346/241/243.md +263 -260
- package/_packed_docs/cli/CLI/346/211/213/345/206/214.md +331 -0
- package/_packed_docs/protocol/00-/346/200/273/350/247/210/344/270/216/345/210/206/345/261/202.md +2 -2
- 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
- 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
- package/_packed_docs/protocol/03-Gateway-/350/277/236/346/216/245/346/250/241/345/274/217.md +8 -5
- package/_packed_docs/protocol/06-/346/234/215/345/212/241/345/215/217/350/256/256.md +18 -19
- 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
- package/_packed_docs/protocol/08-AUN-E2EE-Group.md +139 -746
- package/_packed_docs/protocol/08-AUN-E2EE.md +12 -10
- package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +117 -171
- package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +6 -0
- 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
- 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 +5 -4
- package/_packed_docs/protocol/aun-docs-guide.md +2 -2
- package/_packed_docs/protocol/index.md +12 -7
- 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
- package/_packed_docs/protocol//351/231/204/345/275/225A-/346/234/257/350/257/255/350/241/250.md +13 -13
- 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
- package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +15 -13
- package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +26 -18
- package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +35 -284
- package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +473 -442
- package/_packed_docs/sdk/07-/351/224/231/350/257/257/345/244/204/347/220/206.md +11 -7
- package/_packed_docs/sdk/09-collab-rpc-manual.md +581 -550
- package/_packed_docs/sdk/09-group-rpc-manual.md +367 -433
- package/_packed_docs/sdk/09-message-rpc-manual.md +50 -28
- package/_packed_docs/sdk/09-payload-reference.md +3 -3
- package/_packed_docs/sdk/09-storage-rpc-manual.md +57 -20
- package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +18 -17
- 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
- package/_packed_docs/sdk/INDEX.md +25 -24
- package/_packed_docs/sdk/Notify/351/200/232/347/237/245/346/226/271/346/241/210.md +6 -2
- package/dist/agent-md.d.ts.map +1 -1
- package/dist/agent-md.js +18 -9
- package/dist/agent-md.js.map +1 -1
- package/dist/bundle.js +1661 -1180
- 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 +376 -126
- 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
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
# AUN-E2EE
|
|
2
|
-
|
|
3
|
-
> 版本:2.0-draft
|
|
4
|
-
>
|
|
5
|
-
> 适用范围:AUN 客户端 SDK、客户端应用、跨语言实现
|
|
6
|
-
> 不适用范围:Gateway、Message 模块的加解密实现
|
|
7
|
-
>
|
|
1
|
+
# AUN-E2EE 历史扩展规范(Legacy)
|
|
2
|
+
|
|
3
|
+
> 版本:2.0-draft
|
|
4
|
+
> 状态:历史兼容文档
|
|
5
|
+
> 适用范围:AUN 客户端 SDK、客户端应用、跨语言实现
|
|
6
|
+
> 不适用范围:Gateway、Message 模块的加解密实现
|
|
7
|
+
> 定位:旧 P2P E2EE 信封说明;当前默认主路径已迁移到 E2EE V2 多设备 wrap
|
|
8
|
+
|
|
9
|
+
> **当前实现说明**:最近版本的 SDK 默认使用 V2 多设备 wrap。P2P 加密消息通过 `message.send` 承载 `e2ee.p2p_encrypted` envelope,Group 加密消息通过 `group.v2.send` 承载 `e2ee.group_encrypted` envelope;每条消息一把 `master_key`,按 recipient 设备生成 `3DH` / `1DH` wrap,接收端验证 `sender_signature`、AAD、recipient digest/proof 后解密。当前 V2 链路见 [E2EE_V2消息通信时序图](../sdk/E2EE_V2消息通信时序图.md);群组 V2 规范见 [08-AUN-E2EE-Group](08-AUN-E2EE-Group.md)。本文保留 `prekey_ecdh_v2` / `long_term_key` 旧格式,用于历史兼容和迁移排查,不应作为新实现的默认发送格式。
|
|
8
10
|
|
|
9
11
|
---
|
|
10
12
|
|
|
@@ -108,7 +110,7 @@ AUN-E2EE 是 Layer 3 扩展协议,建立在以下核心能力之上:
|
|
|
108
110
|
|
|
109
111
|
### 5.2 密文消息
|
|
110
112
|
|
|
111
|
-
|
|
113
|
+
旧 `e2ee.encrypted` 信封通过 `message.send` 传输时,`encrypted` 必须为 `true`,`payload.type` 必须为 `e2ee.encrypted`。当前新实现应使用 V2 `e2ee.p2p_encrypted` 信封。
|
|
112
114
|
|
|
113
115
|
---
|
|
114
116
|
|
|
@@ -186,7 +188,7 @@ AUN-E2EE 支持两种加密模式,SDK 自动按优先级选择。
|
|
|
186
188
|
|
|
187
189
|
### 7.3 模式选择策略
|
|
188
190
|
|
|
189
|
-
SDK
|
|
191
|
+
旧版 SDK 在 legacy 信封中按以下优先级自动选择:
|
|
190
192
|
|
|
191
193
|
1. **优先**:prekey_ecdh_v2(服务端有接收方 prekey)
|
|
192
194
|
2. **降级**:long_term_key(无 prekey 时,需客户端安全策略允许)
|
|
@@ -195,7 +197,7 @@ SDK **MUST** 按以下优先级自动选择:
|
|
|
195
197
|
|
|
196
198
|
### 7.4 兼容性
|
|
197
199
|
|
|
198
|
-
-
|
|
200
|
+
- 旧版发送端应优先使用 `prekey_ecdh_v2` 模式发送;当前新实现应使用 V2 多设备 wrap。
|
|
199
201
|
|
|
200
202
|
---
|
|
201
203
|
|
|
@@ -26,43 +26,50 @@ Group 服务是 AUN 协议的应用层扩展,提供多人群组通信能力。
|
|
|
26
26
|
|
|
27
27
|
### Group 对象
|
|
28
28
|
|
|
29
|
-
| 字段 | 类型 | 说明 |
|
|
30
|
-
|------|------|------|
|
|
31
|
-
| `
|
|
32
|
-
| `
|
|
33
|
-
| `
|
|
34
|
-
| `
|
|
35
|
-
| `
|
|
36
|
-
| `
|
|
29
|
+
| 字段 | 类型 | 说明 |
|
|
30
|
+
|------|------|------|
|
|
31
|
+
| `group_aid` | string | 群组主标识,目标态格式为 `{base}.{issuer-domain}` |
|
|
32
|
+
| `group_id` | string | 兼容字段;新群通常等于 `group_aid`,旧群可能保留历史值 |
|
|
33
|
+
| `name` | string | 群组名称 |
|
|
34
|
+
| `owner_aid` | string | 群主 AID |
|
|
35
|
+
| `creator_aid` | string | 创建者 AID |
|
|
36
|
+
| `visibility` | string | `"public"` / `"private"` |
|
|
37
|
+
| `status` | string | `"active"` / `"suspended"` / `"dissolved"` |
|
|
37
38
|
| `description` | string | 群组描述 |
|
|
38
39
|
| `metadata` | object | 自定义元数据 |
|
|
39
40
|
| `dispatch_mode` | string | 群分发模式:`"broadcast"`(默认)/ `"mention"`,详见 [10.2.x 群分发模式](#1023-群分发模式dispatch_mode) |
|
|
40
41
|
| `member_count` | integer | 成员数量 |
|
|
41
42
|
| `message_seq` | integer | 最新消息序号 |
|
|
42
43
|
| `event_seq` | integer | 最新事件序号 |
|
|
43
|
-
| `created_at` | integer | 创建时间(Unix
|
|
44
|
-
|
|
45
|
-
### Group ID
|
|
46
|
-
|
|
47
|
-
`
|
|
48
|
-
|
|
49
|
-
服务端必须接受以下三种输入形式,并在内部统一为 canonical group_id:
|
|
50
|
-
|
|
51
|
-
| 输入形式 | 用途 | canonical 结果 |
|
|
52
|
-
|----------|------|----------------|
|
|
53
|
-
| `g-{slug}` | 本地域内简写别名 | 若本域 issuer 为 `issuer-domain`,规范化为 `g-{slug}.issuer-domain` |
|
|
54
|
-
| `g-{slug}@issuer-domain` | 跨域传播兼容形式 | 规范化为 `g-{slug}.issuer-domain` |
|
|
55
|
-
| `g-{slug}.issuer-domain` | canonical 形式 | 保持为 `g-{slug}.issuer-domain` |
|
|
44
|
+
| `created_at` | integer | 创建时间(Unix 毫秒) |
|
|
45
|
+
|
|
46
|
+
### Group AID / Group ID 兼容规范
|
|
47
|
+
|
|
48
|
+
当前实现的群组主标识是 `group_aid`,格式为 `{base}.{issuer-domain}`,例如 `10042.agentid.pub`、`team01.agentid.pub`、`g-abc123.agentid.pub`。`group_id` 字段名和参数名继续保留,用于兼容旧 SDK / 旧数据库行;新建群以 `group_aid` 为准,新群的 `group_id` 通常也写入同一个 `group_aid` 值。前缀 `g-` 为 Group 保留前缀(legacy base 格式),普通 AID 的本地名称不得以 `g-` 开头,避免与群标识混淆。
|
|
56
49
|
|
|
57
|
-
|
|
50
|
+
**支持的 base 格式**(不含域名部分):
|
|
51
|
+
- **Legacy 格式**: `g-[a-z0-9]{4,32}` — 以 `g-` 开头,后接 4 到 32 位小写字母或数字
|
|
52
|
+
- **新格式**: `[a-z0-9]{5,}` — 5 位或更多小写字母或数字,无上限
|
|
53
|
+
- **Group name 格式**: `[a-z0-9][a-z0-9_-]{3,63}` — 4 到 64 个字符,可包含下划线和短横线
|
|
58
54
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
- `
|
|
64
|
-
-
|
|
65
|
-
|
|
55
|
+
服务端必须接受以下输入形式,并在 API 边界统一为目标态 `group_aid`:
|
|
56
|
+
|
|
57
|
+
| 输入形式 | 用途 | 规范化结果 |
|
|
58
|
+
|----------|------|----------------|
|
|
59
|
+
| `{base}` | 本地域内简写(base 为上述任一格式) | 若本域 issuer 为 `issuer-domain`,规范化为 `{base}.issuer-domain` |
|
|
60
|
+
| `{base}@issuer-domain` | 旧跨域兼容形式 | 规范化为 `{base}.issuer-domain` |
|
|
61
|
+
| `{base}.issuer-domain` | 目标态形式 | 保持为 `{base}.issuer-domain` |
|
|
62
|
+
| `group.issuer-domain/{base}` | 旧 URL 风格兼容形式 | 规范化为 `{base}.issuer-domain` |
|
|
63
|
+
|
|
64
|
+
规范化规则:
|
|
65
|
+
|
|
66
|
+
- `group_aid` 比较、成员归属、权限校验、E2EE AAD / 签名输入应使用目标态 `{base}.{issuer-domain}`。
|
|
67
|
+
- 输入必须先 trim 并转换为小写;`group.{issuer}/{base}`、`{base}@issuer` 等形式仅作为兼容输入,进入主流程前必须转换为目标态 `group_aid`。
|
|
68
|
+
- 本域内客户端可以提交 `{base}` 简写;服务端按本域 `AUN_ISSUER_DOMAIN` 解析为 `{base}.{issuer-domain}`。没有本域 issuer 配置时,简写保持为 `{base}`。
|
|
69
|
+
- 跨域消息、邀请传播、日志和协议响应应优先使用 `group_aid`,避免远端误把短 ID 当成本域群。
|
|
70
|
+
- `group.create` 可以指定 `group_aid`;`group_id` 仍作为兼容别名。指定时必须满足上述格式且未被占用,被占用时返回错误。未指定时由服务端自动分配数字 base。
|
|
71
|
+
- 自动生成的群标识使用单调群号 base(例如 `10042`)并按本域 issuer 生成 `{group_no}.{issuer-domain}`;服务端通过唯一约束或等效机制保证 `group_aid` 唯一,发现碰撞时重新生成。
|
|
72
|
+
- 在 `https://group.{issuer-domain}/...` 这类已携带 issuer 的公开 HTTP 主机下,当前生成的群链接 path 使用单段 `group_aid`,例如 `https://group.agentid.pub/10042.agentid.pub/invite/ic-xxx`。历史 `{base}` 简写链接可继续由服务端兼容解析。
|
|
66
73
|
|
|
67
74
|
### 10.2.3 群分发模式(dispatch_mode)
|
|
68
75
|
|
|
@@ -95,20 +102,20 @@ Group 服务是 AUN 协议的应用层扩展,提供多人群组通信能力。
|
|
|
95
102
|
|
|
96
103
|
### Member 对象
|
|
97
104
|
|
|
98
|
-
| 字段 | 类型 | 说明 |
|
|
99
|
-
|------|------|------|
|
|
100
|
-
| `aid` | string | 成员 AID |
|
|
101
|
-
| `group_id` | string |
|
|
102
|
-
| `role` | string | `"owner"` / `"admin"` / `"member"` |
|
|
103
|
-
| `joined_at` | integer | 加入时间(Unix
|
|
104
|
-
| `last_ack_seq` | integer | 最后已读消息序号 |
|
|
105
|
+
| 字段 | 类型 | 说明 |
|
|
106
|
+
|------|------|------|
|
|
107
|
+
| `aid` | string | 成员 AID |
|
|
108
|
+
| `group_id` | string | 群组标识兼容字段,值语义为 `group_aid` |
|
|
109
|
+
| `role` | string | `"owner"` / `"admin"` / `"member"` |
|
|
110
|
+
| `joined_at` | integer | 加入时间(Unix 毫秒) |
|
|
111
|
+
| `last_ack_seq` | integer | 最后已读消息序号 |
|
|
105
112
|
|
|
106
113
|
### Message 对象
|
|
107
114
|
|
|
108
|
-
| 字段 | 类型 | 说明 |
|
|
109
|
-
|------|------|------|
|
|
110
|
-
| `group_id` | string |
|
|
111
|
-
| `seq` | integer | 消息序号(群内单调递增) |
|
|
115
|
+
| 字段 | 类型 | 说明 |
|
|
116
|
+
|------|------|------|
|
|
117
|
+
| `group_id` | string | 群组标识兼容字段,值语义为 `group_aid` |
|
|
118
|
+
| `seq` | integer | 消息序号(群内单调递增) |
|
|
112
119
|
| `message_id` | string | 消息 UUID |
|
|
113
120
|
| `sender_aid` | string | 发送者 AID |
|
|
114
121
|
| `message_type` | string | 信封/封装类型,如 `e2ee.group_encrypted`;业务负载类型在 `payload.type` 中 |
|
|
@@ -144,10 +151,11 @@ Group 服务是 AUN 协议的应用层扩展,提供多人群组通信能力。
|
|
|
144
151
|
|
|
145
152
|
**参数**:
|
|
146
153
|
|
|
147
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
148
|
-
|------|------|:----:|------|
|
|
149
|
-
| `name` | string | ✅ | 群组名称 |
|
|
150
|
-
| `
|
|
154
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
155
|
+
|------|------|:----:|------|
|
|
156
|
+
| `name` | string | ✅ | 群组名称 |
|
|
157
|
+
| `group_aid` | string | ❌ | 自定义群主标识,目标态为 `{base}.{issuer-domain}`;不提供则服务端自动生成 |
|
|
158
|
+
| `group_id` | string | ❌ | 兼容别名,值语义同 `group_aid`;支持 legacy base `g-[a-z0-9]{4,32}`、新 base `[a-z0-9]{5,64}` 或 group name `[a-z0-9][a-z0-9_-]{3,63}` |
|
|
151
159
|
| `visibility` | string | ❌ | `"public"` / `"private"`,默认由服务配置决定 |
|
|
152
160
|
| `description` | string | ❌ | 群组描述 |
|
|
153
161
|
| `metadata` | object | ❌ | 自定义元数据 |
|
|
@@ -160,9 +168,10 @@ Group 服务是 AUN 协议的应用层扩展,提供多人群组通信能力。
|
|
|
160
168
|
|
|
161
169
|
```json
|
|
162
170
|
{
|
|
163
|
-
"group": {
|
|
164
|
-
"group_id": "g-abc123.agentid.pub",
|
|
165
|
-
"
|
|
171
|
+
"group": {
|
|
172
|
+
"group_id": "g-abc123.agentid.pub",
|
|
173
|
+
"group_aid": "g-abc123.agentid.pub",
|
|
174
|
+
"name": "测试群",
|
|
166
175
|
"owner_aid": "alice.agentid.pub",
|
|
167
176
|
"creator_aid": "alice.agentid.pub",
|
|
168
177
|
"visibility": "private",
|
|
@@ -170,19 +179,26 @@ Group 服务是 AUN 协议的应用层扩展,提供多人群组通信能力。
|
|
|
170
179
|
"member_count": 1,
|
|
171
180
|
"message_seq": 0,
|
|
172
181
|
"event_seq": 0,
|
|
173
|
-
"created_at":
|
|
182
|
+
"created_at": 1234567890000
|
|
174
183
|
},
|
|
175
184
|
"aid": "alice.agentid.pub"
|
|
176
185
|
}
|
|
177
186
|
```
|
|
178
187
|
|
|
179
|
-
### `group.
|
|
188
|
+
### `group.get_info`
|
|
180
189
|
|
|
181
|
-
|
|
190
|
+
查询群组信息。默认返回公开平铺字段;需要成员信息、状态或 E2EE 字段时,通过 `required` 声明所需字段并由服务端鉴权。
|
|
182
191
|
|
|
183
|
-
|
|
192
|
+
**参数**:
|
|
184
193
|
|
|
185
|
-
|
|
194
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
195
|
+
|------|------|:----:|------|
|
|
196
|
+
| `group_id` | string | ✅ | 群组标识兼容字段,值语义为 `group_aid` |
|
|
197
|
+
| `required` | string[] | ❌ | 可选值:`member` / `state` / `e2ee` / `avatar` |
|
|
198
|
+
|
|
199
|
+
**响应**:平铺对象。默认字段包含 `found`、`group_id`、`group_aid`、`name`、`visibility`、`status`、`description`、`member_count`、`created_at`。
|
|
200
|
+
|
|
201
|
+
> `group.get` 和 `group.info` 已合并到 `group.get_info`;`group.get_info` 默认行为等价于原公开信息查询。
|
|
186
202
|
|
|
187
203
|
### `group.update`
|
|
188
204
|
|
|
@@ -208,21 +224,6 @@ Group 服务是 AUN 协议的应用层扩展,提供多人群组通信能力。
|
|
|
208
224
|
|
|
209
225
|
**响应**:`{ "query": "...", "items": [ ... ], "total": 3 }`
|
|
210
226
|
|
|
211
|
-
### `group.get_public_info`
|
|
212
|
-
|
|
213
|
-
查询公开群组信息,无需是成员。仅限 `visibility=public` 的群组。
|
|
214
|
-
|
|
215
|
-
**参数**:`group_id` (string, 必填)
|
|
216
|
-
|
|
217
|
-
**响应**:`{ "group": { ... } }`
|
|
218
|
-
|
|
219
|
-
### `group.get_stats`
|
|
220
|
-
|
|
221
|
-
获取群组统计信息。需要 admin 及以上权限。
|
|
222
|
-
|
|
223
|
-
**参数**:`group_id` (string, 必填)
|
|
224
|
-
|
|
225
|
-
**响应**:`{ "group_id": "g-abc123.agentid.pub", "stats": { ... } }`
|
|
226
227
|
|
|
227
228
|
### `group.suspend`
|
|
228
229
|
|
|
@@ -260,7 +261,7 @@ Group 服务是 AUN 协议的应用层扩展,提供多人群组通信能力。
|
|
|
260
261
|
|
|
261
262
|
| 参数 | 类型 | 必填 | 说明 |
|
|
262
263
|
|------|------|:----:|------|
|
|
263
|
-
| `group_id` | string | ✅ |
|
|
264
|
+
| `group_id` | string | ✅ | 群组标识兼容字段,值语义为 `group_aid` |
|
|
264
265
|
| `aid` | string | ✅ | 要添加的 AID |
|
|
265
266
|
| `role` | string | ❌ | `"member"` / `"admin"`,默认 `"member"` |
|
|
266
267
|
| `member_type` | string | ❌ | `"human"` / `"ai"`,默认 `"human"` |
|
|
@@ -307,7 +308,7 @@ Group 服务是 AUN 协议的应用层扩展,提供多人群组通信能力。
|
|
|
307
308
|
|
|
308
309
|
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
309
310
|
|------|------|:----:|--------|------|
|
|
310
|
-
| `group_id` | string | ✅ | — |
|
|
311
|
+
| `group_id` | string | ✅ | — | 群组标识兼容字段,值语义为 `group_aid` |
|
|
311
312
|
| `page` | integer | ❌ | 1 | 页码 |
|
|
312
313
|
| `size` | integer | ❌ | 50 | 每页条数 |
|
|
313
314
|
| `role` | string | ❌ | — | 按角色过滤 |
|
|
@@ -350,14 +351,14 @@ Group 服务是 AUN 协议的应用层扩展,提供多人群组通信能力。
|
|
|
350
351
|
|
|
351
352
|
| 参数 | 类型 | 必填 | 说明 |
|
|
352
353
|
|------|------|:----:|------|
|
|
353
|
-
| `group_id` | string | ✅ |
|
|
354
|
+
| `group_id` | string | ✅ | 群组标识兼容字段,值语义为 `group_aid` |
|
|
354
355
|
| `type` | string | ❌ | 信封/封装类型,普通业务消息无需填写;SDK 加密群消息时自动使用 `e2ee.group_encrypted` |
|
|
355
356
|
| `payload` | object | ✅ | 消息内容 |
|
|
356
357
|
| `attachments` | array | ❌ | 存储引用列表 |
|
|
357
358
|
|
|
358
359
|
##### Payload 参考约定
|
|
359
360
|
|
|
360
|
-
`group.send.params.payload` 的统一业务负载格式见 [消息Payload参考约定](../sdk/消息Payload参考约定.md)。完整群消息请求仍在 `payload` 同级传入 `group_id
|
|
361
|
+
`group.send.params.payload` 的统一业务负载格式见 [消息Payload参考约定](../sdk/消息Payload参考约定.md)。完整群消息请求仍在 `payload` 同级传入 `group_id`(兼容参数名,值使用目标态 `group_aid`);业务类型放在 `payload.type`,不要与 `group.send.params.type` 信封/封装类型混用。
|
|
361
362
|
|
|
362
363
|
协议层只要求 `payload` 是 JSON 对象,并按服务端配置做大小、信封/封装类型和 E2EE epoch 相关检查;字段语义由应用层约定,接收端应对未知 `payload.type`、未知 `kind` 和缺失展示字段做降级处理。
|
|
363
364
|
|
|
@@ -398,9 +399,9 @@ Group 服务是 AUN 协议的应用层扩展,提供多人群组通信能力。
|
|
|
398
399
|
|
|
399
400
|
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
400
401
|
|------|------|:----:|--------|------|
|
|
401
|
-
| `group_id` | string | ✅ | — |
|
|
402
|
+
| `group_id` | string | ✅ | — | 群组标识兼容字段,值语义为 `group_aid` |
|
|
402
403
|
| `after_message_seq` | integer | ❌ | 0 | 拉取该 seq 之后的消息 |
|
|
403
|
-
| `limit` | integer | ❌ |
|
|
404
|
+
| `limit` | integer | ❌ | 50 | 最大条数(最大 50;`pull_max_limit` 配置只能进一步收紧) |
|
|
404
405
|
| `device_id` | string | ❌ | — | 设备 ID(多设备模式) |
|
|
405
406
|
|
|
406
407
|
**响应**:
|
|
@@ -411,7 +412,7 @@ Group 服务是 AUN 协议的应用层扩展,提供多人群组通信能力。
|
|
|
411
412
|
"messages": [ ... ],
|
|
412
413
|
"latest_message_seq": 42,
|
|
413
414
|
"has_more": false,
|
|
414
|
-
"limit":
|
|
415
|
+
"limit": 50
|
|
415
416
|
}
|
|
416
417
|
```
|
|
417
418
|
|
|
@@ -445,7 +446,7 @@ Group 服务是 AUN 协议的应用层扩展,提供多人群组通信能力。
|
|
|
445
446
|
|
|
446
447
|
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
447
448
|
|------|------|:----:|--------|------|
|
|
448
|
-
| `group_id` | string | ✅ | — |
|
|
449
|
+
| `group_id` | string | ✅ | — | 群组标识兼容字段,值语义为 `group_aid` |
|
|
449
450
|
| `status` | string | ❌ | `"pending"` | `"pending"` / `"approved"` / `"rejected"` |
|
|
450
451
|
| `page` | integer | ❌ | 1 | 页码 |
|
|
451
452
|
| `size` | integer | ❌ | 50 | 每页条数 |
|
|
@@ -460,7 +461,7 @@ Group 服务是 AUN 协议的应用层扩展,提供多人群组通信能力。
|
|
|
460
461
|
|
|
461
462
|
| 参数 | 类型 | 必填 | 说明 |
|
|
462
463
|
|------|------|:----:|------|
|
|
463
|
-
| `group_id` | string | ✅ |
|
|
464
|
+
| `group_id` | string | ✅ | 群组标识兼容字段,值语义为 `group_aid` |
|
|
464
465
|
| `aid` | string | ✅ | 申请人 AID |
|
|
465
466
|
| `approve` | boolean | ❌ | 批准(true)或拒绝(false),默认 true |
|
|
466
467
|
| `reason` | string | ❌ | 拒绝原因 |
|
|
@@ -475,22 +476,6 @@ Group 服务是 AUN 协议的应用层扩展,提供多人群组通信能力。
|
|
|
475
476
|
|
|
476
477
|
**响应**:`{ "group_id": "g-abc123.agentid.pub", "results": [ ... ] }`
|
|
477
478
|
|
|
478
|
-
### `group.get_join_requirements`
|
|
479
|
-
|
|
480
|
-
获取入群要求配置。
|
|
481
|
-
|
|
482
|
-
**参数**:`group_id` (string, 必填)
|
|
483
|
-
|
|
484
|
-
**响应**:`{ "group_id": "g-abc123.agentid.pub", "requirements": { "mode": "approval", "question": "...", ... } }`
|
|
485
|
-
|
|
486
|
-
### `group.update_join_requirements`
|
|
487
|
-
|
|
488
|
-
更新入群要求配置。需要 admin 及以上权限。
|
|
489
|
-
|
|
490
|
-
**参数**:`group_id` (必填), `mode` / `question` / `auto_approve_patterns` / `max_pending` (可选)
|
|
491
|
-
|
|
492
|
-
**响应**:`{ "group_id": "g-abc123.agentid.pub", "requirements": { ... } }`
|
|
493
|
-
|
|
494
479
|
### `group.create_invite_code`
|
|
495
480
|
|
|
496
481
|
创建邀请码。需要 owner/admin 权限,或群规则允许成员邀请。
|
|
@@ -499,7 +484,7 @@ Group 服务是 AUN 协议的应用层扩展,提供多人群组通信能力。
|
|
|
499
484
|
|
|
500
485
|
| 参数 | 类型 | 必填 | 说明 |
|
|
501
486
|
|------|------|:----:|------|
|
|
502
|
-
| `group_id` | string | ✅ |
|
|
487
|
+
| `group_id` | string | ✅ | 群组标识兼容字段,值语义为 `group_aid` |
|
|
503
488
|
| `code` | string | ❌ | 自定义邀请码,不提供则自动生成 |
|
|
504
489
|
| `max_uses` | integer | ❌ | 最大使用次数,默认 1,必须 > 0 |
|
|
505
490
|
| `expires_in_seconds` | integer | ❌ | 有效期(秒),默认由配置决定(7 天) |
|
|
@@ -532,69 +517,37 @@ Group 服务是 AUN 协议的应用层扩展,提供多人群组通信能力。
|
|
|
532
517
|
|
|
533
518
|
---
|
|
534
519
|
|
|
535
|
-
## 10.8
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
| `mode` | string | ❌ | `"open"` / `"approval"` / `"invite_only"` / `"closed"` |
|
|
567
|
-
| `question` | string | ❌ | 入群问题 |
|
|
568
|
-
| `auto_approve_patterns` | array | ❌ | 自动批准正则列表 |
|
|
569
|
-
| `max_pending` | integer | ❌ | 最大待审批数 |
|
|
570
|
-
|
|
571
|
-
---
|
|
572
|
-
|
|
573
|
-
## 10.9 群文件系统
|
|
574
|
-
|
|
575
|
-
群文件系统统一使用 `group.fs.*`。群路径采用 `group_aid:/path` 或 `https://{group_aid}/path`,也可在 RPC 参数中同时传 `group_id` 与裸路径。群自有区包括 `announce`、`public`、`archive`;成员数据区为 `memberdata/{member_ref}`,服务端映射到成员自己的 `groupdata/{group_id}` 存储根。
|
|
576
|
-
|
|
577
|
-
群自有区写入必须满足双身份规则:连接身份 `_auth.aid` 是群 owner,签名身份 `_auth.client_signature_aid` 是当前 `group_aid`。`group_aid` 私钥由群主持有,gateway 仅允许 `group.fs.*` 出现签名身份与连接身份不一致。成员数据区写入只允许对应成员本人。
|
|
578
|
-
|
|
579
|
-
| 方法 | 说明 |
|
|
580
|
-
|------|------|
|
|
581
|
-
| `group.fs.ls` | 列出目录 |
|
|
582
|
-
| `group.fs.find` | 查找节点 |
|
|
583
|
-
| `group.fs.stat` | 查看节点 |
|
|
584
|
-
| `group.fs.lstat` | 查看链接本身 |
|
|
585
|
-
| `group.fs.df` | 查看群文件系统用量 |
|
|
586
|
-
| `group.fs.create_download_ticket` | 创建下载票据,SDK 使用票据执行数据面下载 |
|
|
587
|
-
| `group.fs.mkdir` | 创建目录 |
|
|
588
|
-
| `group.fs.rm` | 删除节点 |
|
|
589
|
-
| `group.fs.cp` | group→group 远程复制;本地上传/下载由 SDK 数据面编排 |
|
|
590
|
-
| `group.fs.mv` | group→group 远程移动 |
|
|
591
|
-
| `group.fs.check_upload` | 上传前检查 |
|
|
592
|
-
| `group.fs.create_upload_session` | 创建上传会话 |
|
|
593
|
-
| `group.fs.complete_upload` | 完成上传 |
|
|
594
|
-
| `group.fs.mount` | 挂载成员数据区 |
|
|
595
|
-
| `group.fs.umount` | 卸载成员数据区 |
|
|
596
|
-
|
|
597
|
-
逐方法 SDK 参数以 `docs/sdk/09-group-rpc-manual.md` 为准,详细设计见 `docs/aun-fs/group-fs/`。
|
|
520
|
+
## 10.8 群文件系统
|
|
521
|
+
|
|
522
|
+
群文件系统统一使用 `group.fs.*`。群路径采用 `group_aid:/path` 或 `https://{group_aid}/path`,也可在 RPC 参数中同时传 `group_id` 与裸路径。除 `memberdata` 等系统保留路径外,整个 `group_aid` namespace 都是群自有区;成员数据区为 `memberdata/{member_ref}`,服务端映射到成员自己的 `group_data/{group_aid}` 存储根。
|
|
523
|
+
|
|
524
|
+
`memberdata` 是 Group FS 视图层的虚拟系统目录,根节点和成员槽位根不得被普通文件操作删除、覆盖或重命名;成员槽位下的子路径写入只允许对应成员本人通过 `group.fs.*` 完成。完整保护规则见 [16-系统目录保护方案.md](16-系统目录保护方案.md)。
|
|
525
|
+
|
|
526
|
+
群自有区写权限由角色 ACL 决定:当前 `group_aid` 证书签名可写;`role:owner` 默认可写;`role:admin` 只有在 group owner 通过 `group.fs.set_acl` 显式授权后才可写。授权、撤销和查询的是 `role:admin` 角色策略,不与某个 admin 成员绑定;成员升降级、退群、踢出不会联动 ACL。成员数据区写入只允许对应成员本人。角色 ACL 对外使用 POSIX 权限位,删除权限显示为 `x`。
|
|
527
|
+
|
|
528
|
+
| 方法 | 说明 |
|
|
529
|
+
|------|------|
|
|
530
|
+
| `group.fs.ls` | 列出目录 |
|
|
531
|
+
| `group.fs.find` | 查找节点 |
|
|
532
|
+
| `group.fs.stat` | 查看节点 |
|
|
533
|
+
| `group.fs.lstat` | 查看链接本身 |
|
|
534
|
+
| `group.fs.df` | 查看群文件系统用量 |
|
|
535
|
+
| `group.fs.create_download_ticket` | 创建下载票据,SDK 使用票据执行数据面下载 |
|
|
536
|
+
| `group.fs.set_acl` | owner 授予群自有区 `role:admin` 写 ACL |
|
|
537
|
+
| `group.fs.remove_acl` | owner 撤销群自有区 `role:admin` 写 ACL |
|
|
538
|
+
| `group.fs.get_acl` | owner 查询群自有区角色 ACL |
|
|
539
|
+
| `group.fs.list_acl` | owner 查询群自有区角色 ACL(别名) |
|
|
540
|
+
| `group.fs.mkdir` | 创建目录 |
|
|
541
|
+
| `group.fs.rm` | 删除节点 |
|
|
542
|
+
| `group.fs.cp` | group→group 远程复制;本地上传/下载由 SDK 数据面编排 |
|
|
543
|
+
| `group.fs.mv` | group→group 远程移动 |
|
|
544
|
+
| `group.fs.check_upload` | 上传前检查 |
|
|
545
|
+
| `group.fs.create_upload_session` | 创建上传会话 |
|
|
546
|
+
| `group.fs.complete_upload` | 完成上传 |
|
|
547
|
+
| `group.fs.mount` | 挂载成员数据区 |
|
|
548
|
+
| `group.fs.umount` | 卸载成员数据区 |
|
|
549
|
+
|
|
550
|
+
`group.fs.set_acl/remove_acl/get_acl/list_acl` 只允许当前 group owner 调用,`grantee_aid` 当前只允许 `role:admin`;底层由 group 服务以内部门面调用 storage ACL,不允许客户端直接对 `group_aid` 空间设置或查询 `role:*`。逐方法 SDK 参数以 `docs/sdk/09-group-rpc-manual.md` 为准,详细设计见 `docs/aun-fs/group-fs/`。
|
|
598
551
|
|
|
599
552
|
---
|
|
600
553
|
|
|
@@ -663,19 +616,12 @@ Group 服务通过 `event/group.*` 事件推送变更通知给相关 AID。
|
|
|
663
616
|
| `invite_code_used` | 邀请码使用 |
|
|
664
617
|
| `invite_code_revoked` | 邀请码撤销 |
|
|
665
618
|
| `member_banned` | 成员被封禁 |
|
|
666
|
-
| `member_unbanned` | 成员解除封禁 |
|
|
667
|
-
| `suspended` | 群组暂停 |
|
|
668
|
-
| `resumed` | 群组恢复 |
|
|
669
|
-
| `dissolved` | 群组解散 |
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
| `resource_deleted` | 资源删除 |
|
|
673
|
-
| `resource_request_created` | 资源申请创建 |
|
|
674
|
-
| `resource_direct_added` | 资源直接添加(owner) |
|
|
675
|
-
| `resource_request_approved` | 资源申请批准 |
|
|
676
|
-
| `resource_request_rejected` | 资源申请拒绝 |
|
|
677
|
-
|
|
678
|
-
### `event/group.message_created`
|
|
619
|
+
| `member_unbanned` | 成员解除封禁 |
|
|
620
|
+
| `suspended` | 群组暂停 |
|
|
621
|
+
| `resumed` | 群组恢复 |
|
|
622
|
+
| `dissolved` | 群组解散 |
|
|
623
|
+
|
|
624
|
+
### `event/group.message_created`
|
|
679
625
|
|
|
680
626
|
群内新消息时推送给所有在线成员。支持两种模式:
|
|
681
627
|
|
|
@@ -723,7 +669,7 @@ Group 服务通过 `event/group.*` 事件推送变更通知给相关 AID。
|
|
|
723
669
|
| -32602 | Invalid params(如缺少 group_id) | 检查参数 |
|
|
724
670
|
| -32004 | Permission denied(权限不足) | 提示用户,不重试 |
|
|
725
671
|
| -32001 | Authentication failed | 重新认证 |
|
|
726
|
-
| -33001 | Group not found |
|
|
672
|
+
| -33001 | Group not found | 检查规范化后的 `group_aid`(`group_id` 为兼容参数名) |
|
|
727
673
|
| -33002 | Group state invalid(群状态不允许该操作) | 检查群状态 |
|
|
728
674
|
| -33003 | Group suspended | 等待恢复或联系管理员 |
|
|
729
675
|
| -33004 | Group member limit reached | 不重试 |
|
|
@@ -741,7 +687,7 @@ Group 服务通过 `event/group.*` 事件推送变更通知给相关 AID。
|
|
|
741
687
|
- **消息 seq 单调递增**:per-group 粒度,确保顺序一致性,`ack_seq` 仅增不减。
|
|
742
688
|
- **事件 seq 独立计数**:`event_seq` 与 `message_seq` 独立;消息增量拉取使用 `group.pull`,事件增量拉取使用 `group.pull_events`。
|
|
743
689
|
- **duty 模式**:`duty_mode` 非 `"none"` 且 `duty_human_message_policy = "dispatch"` 时,消息先推送给当班成员处理,回复后再广播;`group.pull` 始终可拉取全量消息。
|
|
744
|
-
-
|
|
690
|
+
- **群文件系统写边界**:群自有区允许当前 `group_aid` 签名、默认 `role:owner`、以及 owner 显式授权后的 `role:admin` 写入;成员数据区仅对应成员可写。
|
|
745
691
|
- **在线状态**:通过 `group.get_online_members` 查询当前在线成员列表。
|
|
746
692
|
|
|
747
693
|
|
|
@@ -249,6 +249,8 @@ Storage 服务是 AUN 协议的应用层扩展,提供对象存储能力。负
|
|
|
249
249
|
|
|
250
250
|
统一权限求值顺序(硬顺序,不可调换):① 公开位(`set_visibility`/`is_public`,仅读)→ ② token(`issue_token` 签发,scope 到路径)→ ③ 路径前缀 ACL(`set_acl`,最近祖先匹配,权限位 `r`/`w`/`rw`/`rwx`)→ ④ 角色(群内)→ ⑤ owner → ⑥ 拒绝 `EACCES`。方法:`storage.set_acl` / `remove_acl` / `list_acl` / `set_visibility` / `check_access`(非抛错探测)/ `issue_token` / `revoke_token` / `list_tokens`。
|
|
251
251
|
|
|
252
|
+
AID storage 的 ACL 面向具体 AID,主要用于写/删除授权;撤销写授权使用 `storage.remove_acl`。读权限不通过 AID ACL 直接下发,应用应使用 `storage.create_share_link` / `storage.get_by_share` 间接读取,撤销读分享使用 `storage.revoke_share_link`。`role:*` 伪主体只允许可信 group 内部门面管理;普通客户端不得直接对 `group_aid` 空间设置或删除角色 ACL,群自有区 `role:admin` 写授权统一由 `group.fs.set_acl/remove_acl` 管理。
|
|
253
|
+
|
|
252
254
|
### 11.5.5 卷与配额
|
|
253
255
|
|
|
254
256
|
`storage.volume.create`(upsert 配额卷 + mount_point)/ `volume.renew`(续期)/ `volume.expire_due`(过期到期卷并标记其挂载 unavailable)。卷生命周期:active → grace(只读宽限,df 标 *)→ expired。
|
|
@@ -257,6 +259,10 @@ Storage 服务是 AUN 协议的应用层扩展,提供对象存储能力。负
|
|
|
257
259
|
|
|
258
260
|
Storage 通过 CA 的 `aid_type` 字段(`normal`/`group`)识别群命名空间。命中 `aid_type=group` 且挂载路径落在 `/memberdata/` 时,放宽 owner 校验,改为调 `group.check_membership` RPC 实时校验成员身份 + 路径约束(mount_path 第一级 == requester_aid)。详见 `10-Group-子协议.md` 与 `docs/aun-fs/topics/group-space.md`。
|
|
259
261
|
|
|
262
|
+
成员个人 Storage 内的 `group_data` 是系统级真实存储根,Storage 服务端必须对普通 `storage.*` / `storage.fs.*` 请求隐藏并拒绝直接写入、删除、重命名或挂载;`aun fs` / Storage VFS 只呈现服务端返回结果,不新增保护逻辑。`group_data` 只能由可信 `group.fs.*` 内部上下文间接访问,占用的空间仍必须计入真实 owner AID 的 Storage 配额。完整规则见 [16-系统目录保护方案.md](16-系统目录保护方案.md)。
|
|
263
|
+
|
|
264
|
+
POSIX VFS 写侧包含 `storage.fs.touch`:它可创建 0 字节文件或刷新已有文件、目录、软链的修改时间,支持 `parents`、`no_create`、`mtime` 和 `follow_symlinks`。这是普通 AID storage 的 VFS 能力;群自有区仍应通过 `group.fs.*` 面进入。
|
|
265
|
+
|
|
260
266
|
### 11.5.7 collab 协作编排
|
|
261
267
|
|
|
262
268
|
协作层 `collab.*`(版本化文档 + 目录快照)的编排已并入 Storage 服务进程,handler 与 `storage.*` 并列注册,以调用者身份直调 storage 原语,授权下沉 storage ACL,无特权通道。方法清单与语义见 SDK 手册 `docs/sdk/09-collab-rpc-manual.md`。
|