@agentunion/fastaun-browser 0.5.19 → 0.5.20

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 (114) hide show
  1. package/CHANGELOG.md +129 -78
  2. package/_packed_docs/CHANGELOG.md +129 -78
  3. package/_packed_docs/INDEX.md +201 -195
  4. package/_packed_docs/KITE_DOCS_GUIDE.md +93 -90
  5. package/_packed_docs/agent.md/SCHEMA.md +7 -7
  6. package/_packed_docs/agent.md//350/277/234/347/250/213agent.md/347/274/223/345/255/230/344/270/216etag/351/200/217/344/274/240/346/226/271/346/241/210.md +11 -11
  7. package/_packed_docs/protocol/06-/346/234/215/345/212/241/345/215/217/350/256/256.md +1072 -1072
  8. package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +676 -676
  9. package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +8 -12
  10. package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/211.md +443 -0
  11. package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2112.0.md +161 -0
  12. package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2112.1.md +658 -0
  13. package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2113.0.md +233 -0
  14. package/_packed_docs/protocol/agent.md/SCHEMA.md +1 -1
  15. package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +1 -1
  16. package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +67 -63
  17. package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +1 -1
  18. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +35 -8
  19. package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +3 -3
  20. package/_packed_docs/sdk/09-group-rpc-manual.md +258 -254
  21. package/_packed_docs/sdk/09-message-rpc-manual.md +7 -4
  22. package/_packed_docs/sdk/09-storage-rpc-manual.md +18 -26
  23. package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +61 -52
  24. package/_packed_docs/sdk/INDEX.md +92 -80
  25. package/_packed_docs/sdk/Ownership-SDK/345/256/236/347/216/260/346/214/207/345/215/227.md +169 -0
  26. package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/227.md +349 -0
  27. package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/2272.1.md +922 -0
  28. package/_packed_docs/sdk/Ownership-SDK/351/233/206/346/210/220/346/214/207/345/215/227.md +270 -0
  29. package/_packed_docs/sdk/Ownership2.1-SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +300 -0
  30. package/_packed_docs/sdk/Ownership2.1-SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +382 -0
  31. package/_packed_docs/sdk/Ownership2.1-TDD/345/210/206/351/230/266/346/256/265/345/256/236/346/226/275/350/256/241/345/210/222.md +708 -0
  32. package/_packed_docs/sdk/Ownership2.1/350/257/246/347/273/206/350/256/276/350/256/241.md +476 -0
  33. package/_packed_docs/sdk/Ownership/347/256/241/347/220/206/344/270/223/351/242/230.md +559 -0
  34. package/_packed_docs/sdk/ProtectedHeaders/347/224/250/346/263/225/344/270/223/351/242/230.md +299 -0
  35. package/_packed_docs/sdk//345/207/255/350/257/201/344/270/216/347/273/204/347/273/207/346/234/215/345/212/241SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +173 -0
  36. package/_packed_docs/sdk//345/207/255/350/257/201/344/270/216/347/273/204/347/273/207/346/234/215/345/212/241SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +211 -0
  37. package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273SDK/345/256/236/347/216/260/347/247/273/346/244/215/346/214/207/345/215/227.md +331 -0
  38. package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273SDK/351/233/206/346/210/220/346/214/207/345/215/227.md +207 -0
  39. package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/344/273/243/347/240/201/345/256/241/346/237/245/346/212/245/345/221/212.md +252 -0
  40. package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/345/256/236/346/226/275/350/256/241/345/210/222.md +156 -0
  41. package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/346/226/271/346/241/210.md +273 -0
  42. package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/350/257/246/347/273/206/350/256/276/350/256/241.md +211 -0
  43. package/dist/agent-md-schema.d.ts +15 -4
  44. package/dist/agent-md-schema.d.ts.map +1 -1
  45. package/dist/agent-md-schema.js +64 -30
  46. package/dist/agent-md-schema.js.map +1 -1
  47. package/dist/agent-md.d.ts +10 -2
  48. package/dist/agent-md.d.ts.map +1 -1
  49. package/dist/agent-md.js +278 -121
  50. package/dist/agent-md.js.map +1 -1
  51. package/dist/aid-store.d.ts +46 -0
  52. package/dist/aid-store.d.ts.map +1 -1
  53. package/dist/aid-store.js +149 -10
  54. package/dist/aid-store.js.map +1 -1
  55. package/dist/aid.d.ts +4 -1
  56. package/dist/aid.d.ts.map +1 -1
  57. package/dist/aid.js +23 -42
  58. package/dist/aid.js.map +1 -1
  59. package/dist/auth.d.ts +1 -1
  60. package/dist/auth.d.ts.map +1 -1
  61. package/dist/auth.js +85 -18
  62. package/dist/auth.js.map +1 -1
  63. package/dist/bundle.js +1581 -781
  64. package/dist/cert-utils.d.ts +49 -1
  65. package/dist/cert-utils.d.ts.map +1 -1
  66. package/dist/cert-utils.js +102 -56
  67. package/dist/cert-utils.js.map +1 -1
  68. package/dist/client/delivery.d.ts +7 -0
  69. package/dist/client/delivery.d.ts.map +1 -1
  70. package/dist/client/delivery.js +243 -28
  71. package/dist/client/delivery.js.map +1 -1
  72. package/dist/client/rpc-pipeline.d.ts.map +1 -1
  73. package/dist/client/rpc-pipeline.js +89 -77
  74. package/dist/client/rpc-pipeline.js.map +1 -1
  75. package/dist/client/v2-e2ee.d.ts.map +1 -1
  76. package/dist/client/v2-e2ee.js +99 -80
  77. package/dist/client/v2-e2ee.js.map +1 -1
  78. package/dist/client.d.ts.map +1 -1
  79. package/dist/client.js +31 -17
  80. package/dist/client.js.map +1 -1
  81. package/dist/crypto.d.ts.map +1 -1
  82. package/dist/crypto.js +8 -6
  83. package/dist/crypto.js.map +1 -1
  84. package/dist/events.d.ts +5 -2
  85. package/dist/events.d.ts.map +1 -1
  86. package/dist/events.js +33 -14
  87. package/dist/events.js.map +1 -1
  88. package/dist/facades.js +5 -5
  89. package/dist/facades.js.map +1 -1
  90. package/dist/index.d.ts +1 -1
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js.map +1 -1
  93. package/dist/org-protocol.d.ts.map +1 -1
  94. package/dist/org-protocol.js +72 -12
  95. package/dist/org-protocol.js.map +1 -1
  96. package/dist/ownership-v21.d.ts +25 -8
  97. package/dist/ownership-v21.d.ts.map +1 -1
  98. package/dist/ownership-v21.js +142 -73
  99. package/dist/ownership-v21.js.map +1 -1
  100. package/dist/ownership-workflow.d.ts +6 -1
  101. package/dist/ownership-workflow.d.ts.map +1 -1
  102. package/dist/ownership-workflow.js +221 -58
  103. package/dist/ownership-workflow.js.map +1 -1
  104. package/dist/tools/cross-sdk-agent.d.ts +2 -1
  105. package/dist/tools/cross-sdk-agent.d.ts.map +1 -1
  106. package/dist/tools/cross-sdk-agent.js +91 -8
  107. package/dist/tools/cross-sdk-agent.js.map +1 -1
  108. package/dist/transport.d.ts +1 -0
  109. package/dist/transport.d.ts.map +1 -1
  110. package/dist/transport.js +2 -0
  111. package/dist/transport.js.map +1 -1
  112. package/dist/version.d.ts +1 -1
  113. package/dist/version.js +1 -1
  114. package/package.json +1 -1
@@ -129,7 +129,7 @@ SDK 登记成功查询的原过滤范围,空查询也登记;连接成功后
129
129
  > 连接级 `delivery_mode` 在 `auth.connect` 阶段声明,结构见 `02-WebSocket协议.md`。Python SDK 的 P2P 消息发送会沿用当前连接的 `delivery_mode`,应用层发送时无需重复指定。
130
130
  > `protected_headers` 只在 SDK 加密路径生效;裸 RPC 发送明文或已加密信封时,调用方需自行遵守 [05-E2EE加密通信](05-E2EE加密通信.md#protectedheaders-与可验证上下文) 的格式和校验规则。
131
131
 
132
- `message.send.device_id` 表示接收目标,不是发送方设备,也不同于 `message.pull` / `message.ack` 中表示当前消费实例的 `device_id`。指定目标设备时,SDK 的 V2 加密信封只选择该设备对应的 peer wrap(AID scope 使用对应 AID wrap),同时保留发送方 self-sync 和监管 audit wrap。目标设备不存在或不可用时发送失败,不会降级为 AID 全设备广播。
132
+ `message.send.device_id` 表示接收目标,不是发送方设备,也不同于 `message.pull` / `message.ack` 中表示当前消费实例的 `device_id`。指定目标设备时,SDK 的 V2 加密信封只选择该设备对应的 peer wrap(AID scope 使用对应 AID wrap),同时保留发送方 self-sync 和监管 audit wrap。缓存 bootstrap 中缺少目标设备时,四个 SDK 会清除该缓存,获取新鲜 bootstrap 并仅重试一次;目标设备仍不存在或不可用时发送失败,不会降级为 AID 全设备广播。
133
133
 
134
134
  `ttl` 与连接级 `delivery_mode` 相互独立。正 TTL 消息不写数据库或 WAL、不分配持久 `seq`;跨域只转发剩余 TTL,目标域不会重新执行 1 秒下限钳制。
135
135
 
@@ -358,11 +358,13 @@ result = await client.call("message.thought.get", {
358
358
  |------|------|------|--------|------|
359
359
  | `after_seq` | integer | 否 | 0 | 拉取 seq > after_seq 的消息 |
360
360
  | `after_volatile_cursor` | string | 否 | SDK 当前游标 | 拉取该 opaque volatile 游标之后的消息;应用通常无需传入 |
361
- | `limit` | integer | 否 | 50 | 单次返回上限(最大 50;`pull_max_limit` 配置只能在 1-50 内进一步收紧) |
361
+ | `limit` | integer | 否 | 50 | SDK 单页上限,最大 50 |
362
362
  | `device_id` | string | 否 | 当前连接实例 | 多实例消费上下文中的设备标识 |
363
363
 
364
364
  > 四个 SDK 自动管理 `after_volatile_cursor`,并在传输层注入当前消费实例的内部 slot。slot 不属于应用参数,也不会出现在消息、响应或事件中。
365
365
 
366
+ 当前四个 SDK 的 V2 路由仍将单页限制为 50。直接调用底层 `message.v2.pull` 时,服务端默认 50、最大 200;旧 `message.pull` 的持久消息及 `message.history` 仍为最大 50。
367
+
366
368
  ### 响应
367
369
 
368
370
  ```json
@@ -395,6 +397,7 @@ result = await client.call("message.thought.get", {
395
397
  | `messages` | array | 持久与 volatile 消息按服务端时间合并;持久消息子序列仍按 `seq` 升序。消息对象含 `encrypted` 字段(仅 `encrypted=true` 时出现) |
396
398
  | `count` | integer | 本次返回的消息数 |
397
399
  | `latest_seq` | integer | 返回的最大 seq |
400
+ | `has_more` | boolean | 服务端 Forward 响应中仍有可见持久消息未返回;通过 `limit + 1` 探测及响应截页确定,不由 `unread_count` 或恰好满页推断 |
398
401
  | `latest_volatile_cursor` | string\|null | 本页最后一个 volatile 游标;不影响 `latest_seq` |
399
402
  | `volatile_has_more` | boolean | 是否仍有未返回的 volatile 消息;SDK 在 volatile cursor 前进时据此继续分页 |
400
403
  | `volatile_earliest_cursor` | string\|null | 当前 boot epoch 内仍可读取的最早 volatile 游标 |
@@ -405,11 +408,11 @@ result = await client.call("message.thought.get", {
405
408
  | `ephemeral_earliest_available_seq` | integer\|null | 临时缓冲中可用的最小 seq |
406
409
  | `ephemeral_dropped_count` | integer | 已被淘汰的临时消息数 |
407
410
 
408
- `message.pull` 是公开的 Forward Pull。实时 A/T/H 最新页同步由 SDK 内部自动完成,不提供需要应用传入的模式参数。Forward 页通过结构校验后,本地 A 按原始页最大 seq 推进。页内缺号视为服务端永久空号;单条解密失败通过 `message.undecryptable` 报告,不阻塞后续水位。Forward 仍支持 Piggy ACK:存在待提交 ACK 时,即使当前页非满页也会再拉一页并携带 ACK,空页后停止。
411
+ `message.pull` 是公开的 Forward Pull。实时 A/T/H 最新页同步由 SDK 内部自动完成,不提供需要应用传入的模式参数。Forward 页通过结构校验后,本地 A 按原始页最大 seq 推进。页内缺号视为服务端永久空号;单条解密失败通过 `message.undecryptable` 报告,不阻塞后续水位。Forward 仍支持 Piggy ACK:有后续页时携带待提交 ACK;没有续页证明时以独立 ACK 收尾,不为 ACK 额外拉取空页。
409
412
 
410
413
  四个 SDK 只让含正 `seq` 的持久消息进入 seq tracker。volatile push 与 pull 在进程内按发送方和 `message_id` 去重,成功交付后自动 ACK;epoch 不匹配时清空本地 volatile 游标并重试一次。`message.history` 永远不返回 volatile 消息。
411
414
 
412
- `message.pull` 与 `message.history` 进入当前 `AUNClient` 的客户端级 Pull Gate。该 Gate 与 Group Message、Group Event Pull 共享,始终 single-inflight;相同请求 key 折叠并共享结果,不同 key 按前台 FIFO(Tail/History)优先于后台 FIFO(Forward/Gap Fill/Group Event)排队。不同 `AUNClient` 实例之间不共享 Gate,应用层无需自行实现并发控制。
415
+ `message.pull` 与 `message.history` 进入当前 `AUNClient` 的客户端级 Pull Gate。该 Gate 与 Group Message、Group Event Pull 共享,同一 namespace 内的 Tail、History、Forward 始终单飞,不同 namespace 最多 4 个并行。namespace 分别为 `p2p:{当前 AID}`、`group:{群标识}`、`group_event:{群标识}`,同群消息与群事件使用不同 namespace。相同完整请求 key 折叠并共享结果;可运行的不同 key 按前台 FIFO(Tail/History)优先于后台 FIFO(Forward/Gap Fill/Group Event)调度,跳过已被占用的 namespace。不同 `AUNClient` 实例之间不共享 Gate,应用层无需自行实现并发控制。
413
416
 
414
417
  解密当前消息时若缺少 sender IK,SDK 会把同发送端请求 single-flight 合并,最多同步等待 3 秒执行 bootstrap;获取成功立即重试当前消息,失败或超时才进入 pending。该补救不改变 Forward 按原始页推进 A 的规则。
415
418
 
@@ -93,7 +93,7 @@
93
93
 
94
94
  > 统一权限求值顺序(硬顺序):公开位 → token → ACL(最近祖先前缀)→ 角色 → owner → 拒绝。
95
95
  >
96
- > AID storage 的 `storage.set_acl/remove_acl` 面向具体 AID,当前主要用于写/删除授权;直接读授权不通过 ACL 下发,读访问应使用 `storage.create_share_link` / `storage.get_by_share`,撤销分享使用 `storage.revoke_share_link`。`role:*` 伪主体只允许可信 group 内部门面管理,客户端不得直接对 `group_aid` 空间设置角色 ACL;群自有区 admin 写授权使用 `group.fs.set_acl/remove_acl`。
96
+ > `storage.set_acl` 授予路径前缀权限:`w` 写、`x` 删、`r` 读。`r` 用于 authoritative 读取和受信挂载读取;普通个人私有对象下载请使用 `storage.create_share_link`,以 `allowed_aids` 指定接收 AID。群角色 ACL 使用 `group.fs.set_acl/remove_acl`。
97
97
 
98
98
  | 方法 | 说明 |
99
99
  |------|------|
@@ -126,13 +126,11 @@ Python / Go / TypeScript / JavaScript SDK 均提供 storage low-level 与 VFS
126
126
 
127
127
  直接调用底层 RPC 的高级客户端必须自行完成相同编排:先确定内容类型,再把同一个值传给 session 和 complete,并在 PUT 请求中发送一致的 `Content-Type`。绕过 VFS 后未遵守该约束属于调用方式错误。
128
128
 
129
- ## 权威读取与条件发布
129
+ ## 权威读取与完整发布
130
130
 
131
- `storage.head_object/get_object` 和 `storage.fs.stat` 的 `consistency: authoritative` 绕过正向、负向缓存。权威结果包含 `consistency`、布尔 `exists`、不透明 `revision`、请求 `owner_aid/bucket/path` 和 Unix 秒 `observed_at`;存在时附 `sha256/object_id/version`,get 另有严格 Base64 的完整 `content`。权威 stat 返回此对象结果,不使用普通 NodeView 推断不存在。恢复未完成、权限错误、网络或数据库故障均失败,不返回 `exists=false`。
131
+ `storage.head_object/get_object` 和 `storage.fs.stat` 的 `consistency: authoritative` 绕过正负缓存,核对当前存在性、规范路径及完整正文摘要。权威结果包含 `consistency`、布尔 `exists`、请求 `owner_aid/bucket/path` 和 Unix 秒 `observed_at`;存在时返回完整对象元数据,仅 `get_object` 另含严格 Base64 的完整 `content`,head/stat 不返回正文。恢复未完成、权限错误、网络或数据库故障不能返回 `exists=false`。私有路径仍检查既有 ACL,匹配的 `r` grant 不授权普通下载票据。
132
132
 
133
- 路径 `revision` 在成功写入、删除后变化,删除后保留;从未创建为字符串 `0`,同内容重建也不复用旧值。`put_object/create_upload_session/complete_upload/delete_object/fs.remove` 的 `expected_revision` 使用先前权威读到的原值;不能用摘要、对象 version 或刷新后的修订替代。冲突沿用 `-32009`,停止旧写入或删除。普通调用的既有条件语义保持不变。
134
133
 
135
- 条件上传 session 固化目标与原修订,返回 `session_id/expected_revision`;complete 在最终原子发布时再作 CAS,失败保留旧完整对象。Ownership owner.md 的首次创建也匹配 `0` 或删除后的当前修订,更新不得先删后建,清理不得无条件删除。
136
134
 
137
135
  `default/sub_aids/{sub_aid}/owner.md` 为公开可读的 Ownership 规范路径,仅命名空间 owner 可写删;ACL、token、父目录、移动、重命名、软链、挂载或自动清理均不能给第三方绕过能力。该路径约束先于通用权限放行,关系授权以 [Ownership 2.1](../protocol/Ownership协议定义2.1.md) 的 NS 新鲜事实为准。
138
136
 
@@ -152,7 +150,6 @@ Python / Go / TypeScript / JavaScript SDK 均提供 storage low-level 与 VFS
152
150
  | `is_private` | boolean | 否 | 是否私有,默认 `true` |
153
151
  | `overwrite` | boolean | 否 | 是否覆盖已有对象,默认 `true` |
154
152
  | `expected_version` | integer | 否 | 乐观并发控制版本号 |
155
- | `expected_revision` | string | 否 | 原权威路径修订;Ownership 发布须携带 |
156
153
  | `expire_in_seconds` | integer | 否 | 过期时间(秒),0 表示不过期 |
157
154
  | `metadata` | object | 否 | 自定义元数据 |
158
155
 
@@ -191,7 +188,7 @@ result = await client.call("storage.put_object", {
191
188
 
192
189
  读取小对象,返回 base64 编码内容。
193
190
 
194
- 可传 `consistency: authoritative`,结果及故障分类见 [权威读取与条件发布](#权威读取与条件发布);权威读取只接受完整对象。
191
+ 可传 `consistency: authoritative`,结果及故障分类见 [权威读取与完整发布](#权威读取与完整发布);权威读取只接受完整对象。
195
192
 
196
193
  ### 参数
197
194
 
@@ -201,7 +198,6 @@ result = await client.call("storage.put_object", {
201
198
  | `bucket` | string | 否 | 存储桶,默认 `"default"` |
202
199
  | `owner_aid` | string | 否 | 所有者 AID,默认当前用户 |
203
200
  | `consistency` | string | 否 | 传 `authoritative` 时绕过缓存并返回完整权威对象 |
204
- | `expected_revision` | string | 否 | 权威路径修订;条件读取时必须与先前权威读取一致 |
205
201
 
206
202
  ### 响应
207
203
 
@@ -234,7 +230,7 @@ content = base64.b64decode(result["content"])
234
230
 
235
231
  查询对象元数据,不返回内容。
236
232
 
237
- 可传 `consistency: authoritative`,返回 `exists/revision/observed_at` 等权威字段,明确不存在仍保留路径修订;完整契约见 [权威读取与条件发布](#权威读取与条件发布)。
233
+ 可传 `consistency: authoritative`,返回当前存在性与完整对象元数据;完整契约见 [权威读取与完整发布](#权威读取与完整发布)。
238
234
 
239
235
  ### 参数
240
236
 
@@ -244,7 +240,6 @@ content = base64.b64decode(result["content"])
244
240
  | `bucket` | string | 否 | 存储桶,默认 `"default"` |
245
241
  | `owner_aid` | string | 否 | 所有者 AID,默认当前用户 |
246
242
  | `consistency` | string | 否 | 传 `authoritative` 时绕过缓存并返回权威对象元数据 |
247
- | `expected_revision` | string | 否 | 权威条件读取使用的原路径修订 |
248
243
 
249
244
  ### 响应
250
245
 
@@ -269,7 +264,6 @@ content = base64.b64decode(result["content"])
269
264
 
270
265
  删除对象。
271
266
 
272
- 可传原 `expected_revision` 作条件删除,结果附新路径 `revision`;修订冲突不得改用刚读到的新版继续删除。
273
267
 
274
268
  ### 参数
275
269
 
@@ -278,7 +272,6 @@ content = base64.b64decode(result["content"])
278
272
  | `object_key` | string | 是 | 对象路径 |
279
273
  | `bucket` | string | 否 | 存储桶,默认 `"default"` |
280
274
  | `owner_aid` | string | 否 | 所有者 AID,默认当前用户 |
281
- | `expected_revision` | string | 否 | 条件删除使用的原权威路径修订 |
282
275
 
283
276
  ### 响应
284
277
 
@@ -583,14 +576,14 @@ for obj in result["items"]:
583
576
  | `bucket` | string | 否 | 存储桶,默认 `"default"` |
584
577
  | `owner_aid` | string | 否 | 所有者 AID,默认当前用户 |
585
578
  | `expected_version` | integer | 否 | 乐观并发控制版本号 |
586
- | `expected_revision` | string | 否 | 固定条件上传 session 的原权威路径修订 |
587
579
  | `expire_in_seconds` | integer | 否 | URL 有效期(秒),默认 3600 |
588
580
 
589
581
  ### 响应
590
582
 
591
583
  | 字段 | 类型 | 说明 |
592
584
  |------|------|------|
593
- | `upload_url` | string | 上传用 presigned URL |
585
+ | `upload_url` | string | 上传用 presigned URL |
586
+ | `session_id` | string | 规范 agent.md/owner.md 的完整原子发布会话;普通对象不保证返回 |
594
587
  | `expire_at` | integer | URL 过期时间戳 |
595
588
  | `owner_aid` | string | 所有者 AID |
596
589
  | `bucket` | string | 存储桶 |
@@ -604,7 +597,9 @@ for obj in result["items"]:
604
597
  | `size_bytes` | integer | 声明的文件大小 |
605
598
  | `overwrite` | boolean | 是否覆盖已有对象 |
606
599
 
607
- 客户端获得 `upload_url` 后,通过 HTTP PUT 上传文件数据。普通 session 不返回 `blob_key`、`session_id` 或 `headers`;传入 `expected_revision` 的条件 session 另返回 `session_id` 和固定 `expected_revision`,complete 必须沿用该 session 和原条件。
600
+ 客户端获得 `upload_url` 后,通过 HTTP PUT 上传文件数据。普通对象不保证返回 `session_id`;规范 agent.md/owner.md 会话另返回 `session_id`,complete 必须沿用同一会话。
601
+
602
+ 规范 `default/agent.md` 与 `default/sub_aids/{sub_aid}/owner.md` 的上传会话使用独立临时对象,`create_upload_session` 返回 `session_id`;新客户端完成这些规范文件时必须携带同一 `session_id`。服务端核对会话的认证申请者、目标及有效期,验证完整内容后原子发布,失败保留旧完整文件。普通对象保持既有上传流程,不保证返回 `session_id`;该临时会话不记录 Ownership 关系事实或路径历史。
608
603
 
609
604
  > 当前实现会对 BlobStore 返回的 loopback URL 做对外地址规范化:优先使用 `KITE_STORAGE_EXTERNAL_URL`,否则按 `storage.{issuer}` 形式改写。对外地址不可使用 `127.0.0.1` 或 `localhost`。
610
605
 
@@ -620,7 +615,8 @@ for obj in result["items"]:
620
615
 
621
616
  | 参数 | 类型 | 必填 | 说明 |
622
617
  |------|------|------|------|
623
- | `object_key` | string | 是 | 对象路径 |
618
+ | `object_key` | string | 条件 | 对象路径;提供 `session_id` 时可省略,若提供则必须与原会话目标一致 |
619
+ | `session_id` | string | 否 | 规范 agent.md/owner.md 新上传必须沿用 create_upload_session 返回的同一会话 |
624
620
  | `sha256` | string | 否 | 文件 SHA-256 哈希;提供则校验完整性,`skip_blob=true` 时必填 |
625
621
  | `bucket` | string | 否 | 存储桶,默认 `"default"` |
626
622
  | `owner_aid` | string | 否 | 所有者 AID,默认当前用户 |
@@ -628,9 +624,7 @@ for obj in result["items"]:
628
624
  | `is_private` | boolean | 否 | 是否私有,默认 `true` |
629
625
  | `size_bytes` | integer | 否 | 预期文件大小(用于校验) |
630
626
  | `skip_blob` | boolean | 否 | 秒传模式,默认 `false`;为 `true` 时跳过 blob 上传,必须提供 `sha256`,且当前 owner 已拥有相同内容 |
631
- | `expected_version` | integer | 否 | 乐观并发控制版本号 |
632
- | `expected_revision` | string | 否 | 原权威路径修订;使用条件 session 时须与 session 一致 |
633
- | `session_id` | string | 否 | create_upload_session 返回的条件上传 session |
627
+ | `expected_version` | integer | 否 | 普通模式的乐观并发控制版本号;会话模式沿用 `create_upload_session` 保存的原值(包括未设置),本次传入值不生效 |
634
628
  | `expire_in_seconds` | integer | 否 | 过期时间(秒) |
635
629
  | `metadata` | object | 否 | 自定义元数据 |
636
630
 
@@ -654,7 +648,7 @@ for obj in result["items"]:
654
648
 
655
649
  ## storage.create_download_ticket
656
650
 
657
- 获取下载 URL。
651
+ 获取对象下载 URL。私有对象要分享给指定 AID 时,使用 `storage.create_share_link` 并设置 `allowed_aids`。
658
652
 
659
653
  ### 参数
660
654
 
@@ -1014,7 +1008,7 @@ share_url = result["url"] # https://alice.agentid.pub/s/Ab3xK9mZ2q
1014
1008
 
1015
1009
  查节点元数据(POSIX `stat`)。`follow_final=true`,解析末级软链 target。
1016
1010
 
1017
- 可传 `consistency: authoritative`;此模式使用 [权威对象结果](#权威读取与条件发布),不是普通 fs 节点视图。
1011
+ 可传 `consistency: authoritative`;此模式使用 [权威对象结果](#权威读取与完整发布),不是普通 fs 节点视图。
1018
1012
 
1019
1013
  ### 参数
1020
1014
 
@@ -1099,7 +1093,6 @@ fs 目录节点视图。
1099
1093
 
1100
1094
  删除文件/目录/软链(POSIX `rm`,目录用 `recursive`)。**拒绝删除挂载点**(须先 unmount)。
1101
1095
 
1102
- 可传原 `expected_revision` 作条件删除,Ownership 旧文件清理须携带该值;冲突时停止,不刷新修订继续删除。
1103
1096
 
1104
1097
  ### 参数
1105
1098
 
@@ -1109,7 +1102,6 @@ fs 目录节点视图。
1109
1102
  | `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
1110
1103
  | `bucket` | string | 否 | `"default"` | 存储桶 |
1111
1104
  | `recursive` | boolean | 否 | `false` | 递归删除目录 |
1112
- | `expected_revision` | string | 否 | — | 条件删除使用的原权威路径修订 |
1113
1105
 
1114
1106
  ### 响应
1115
1107
 
@@ -1366,7 +1358,7 @@ fs 目录节点视图。
1366
1358
 
1367
1359
  ## storage.set_acl
1368
1360
 
1369
- 授予路径前缀 ACL grant。普通 AID storage 的 `grantee_aid` 必须是具体 AID,主要用于授予写/删除权限;子路径默认继承(最近祖先覆盖)。读取不通过 AID ACL 直接授权,应用应改用 `storage.create_share_link` 并在需要时用 `storage.revoke_share_link` 撤销。
1361
+ 授予路径前缀权限,作用于该路径及子路径(最近祖先 ACL 生效)。`w` 写、`x` 删、`r` 读;`r` 可用于 authoritative 读取和受信挂载读取,不能授权普通个人私有对象直接下载。分享私有对象给指定 AID,请使用 `storage.create_share_link` 并设置 `allowed_aids`。
1370
1362
 
1371
1363
  `role:*` 伪主体只允许可信 group 内部门面写入。客户端不能直接对 `group_aid` 空间调用 `storage.set_acl` 设置 `role:admin`;群自有区角色写授权统一使用 `group.fs.set_acl`。
1372
1364
 
@@ -1376,7 +1368,7 @@ fs 目录节点视图。
1376
1368
  |------|------|------|------|------|
1377
1369
  | `path` | string | 是 | — | 授权路径前缀 |
1378
1370
  | `grantee_aid` | string | 是 | — | 被授权 AID;`role:*` 仅限 group 内部调用 |
1379
- | `perms` | string | 是 | — | 权限位:`r`/`w`/`rw`/`rwx`(`rwx` 含删除) |
1371
+ | `perms` | string | 是 | — | 权限位:`r` 读取、`w` 写入、`x` 删除,可组合 |
1380
1372
  | `owner_aid` | string | 否 | 当前用户 | 所有者 AID |
1381
1373
  | `bucket` | string | 否 | `"default"` | 存储桶 |
1382
1374
  | `expires_at` | integer | 否 | — | 授权过期时间 |
@@ -1390,7 +1382,7 @@ ACL 视图。
1390
1382
 
1391
1383
  ## storage.remove_acl
1392
1384
 
1393
- 移除路径 ACL 授权。对 AID storage,这是撤销写/删除授权的入口;读分享的撤销入口是 `storage.revoke_share_link`。群自有区角色写授权撤销使用 `group.fs.remove_acl`,不要由客户端直接调用 `storage.remove_acl` 操作 `role:*`。
1385
+ 移除指定路径和 AID 的 ACL。撤销分享链接使用 `storage.revoke_share_link`;群角色 ACL 使用 `group.fs.remove_acl`。
1394
1386
 
1395
1387
  ### 参数
1396
1388
 
@@ -6,17 +6,17 @@ AUN SDK 文档位于 `docs/sdk/`,索引文件 `docs/sdk/INDEX.md` 分三层:
6
6
 
7
7
  当前 SDK 聚焦三主体模型:
8
8
 
9
- - `AIDStore`:注册、加载、列举、解析和证书运维。
9
+ - `AIDStore`:注册、加载、列举、解析、证书运维与通用 raw/document 多签。
10
10
  - `AID`:不可变身份值对象,负责签名、验签和 agent.md 签验。
11
11
  - `AUNClient`:认证、连接、状态机、事件和 RPC。
12
12
  - `PushFacade`:Python SDK 的当前安装推送登记、注销和 Push Server 批次 ACK。
13
13
  - `ServiceProxyClient`:Python SDK 的 Service Proxy provider 侧客户端,负责 Gateway 控制面注册和 proxy-server 数据面隧道注册。
14
14
 
15
- 业务 RPC 的底层参数见 `09-*-rpc-manual.md`。P2P device 定向发送、TTL volatile 消息、独立游标和 ACK 见 `09-message-rpc-manual.md`。Agent.md Schema、签名和上传前校验见 `../agent.md/SCHEMA.md` 与 `04-连接与认证.md`。当前 Ownership 2.1 应用接入见 `Ownership2.1-SDK应用集成指南.md`,SDK 移植见 `Ownership2.1-SDK开发与移植指南.md`,wire schema 见 `../protocol/Ownership协议定义2.1.md`;旧集成/实现指南与管理专题为 legacy。Group/Org owner 不走通用流程,名片 owner 本人尾签、signer_aid、完整 V2 授权、实体证书代际和授权过期停传/保留待办/明确上传见协议 §1.3/§2.5。A/T/H、SDK 内部自动最新页同步、Forward 调度和每个 AUNClient 一个 Pull Gate(始终 single-inflight、相同 key 折叠、不同 key 排队、前台 FIFO 优先)见 `03-核心概念.md`;`message.history` / `group.history` 与 Piggy ACK 见 Message/Group RPC Manual。
15
+ 业务 RPC 的底层参数见 `09-*-rpc-manual.md`。P2P device 定向发送、TTL volatile 消息、独立游标和 ACK 见 `09-message-rpc-manual.md`。当前 Agent.md Schema、签名和上传前校验见 `../protocol/Ownership协议定义2.1.md` 与 `04-连接与认证.md`;`../agent.md/SCHEMA.md` 为 legacy 2.0。当前 Ownership 2.1 应用接入见 `Ownership2.1-SDK应用集成指南.md`,SDK 移植见 `Ownership2.1-SDK开发与移植指南.md`,wire schema 见 `../protocol/Ownership协议定义2.1.md`;旧集成/实现指南与管理专题为 legacy。新服务端为旧 SDK 保留隔离的 owner RPC/Auth JSONL,不参与 2.1 双文件关系判断。Group/Org owner 不走通用流程,名片实体主签、owner token 上传、可选 owner 附签、实体证书代际和原 CAS pending见协议 §1.3/§2.5。A/T/H、SDK 内部自动最新页同步、Forward 调度和每个 AUNClient 一个 Pull Gate(同 namespace 单飞、不同 namespace 最多 4 个并行、相同 key 折叠、可运行项前台 FIFO 优先)见 `03-核心概念.md`;`message.history` / `group.history` 与 Piggy ACK 见 Message/Group RPC Manual。
16
16
 
17
- Storage 的 SDK VFS、实际字节 MIME 识别、session/PUT/complete Content-Type 一致性、OSS 403、direct backend 上传下载和 ticket / AID Bearer 边界见 `09-storage-rpc-manual.md` 与 `AUN Storage架构设计.md`。
18
- 跨设备业务已读的 `read/read_state/read_changed`、单条/显式空值、回执与共享汇总、scope/owner 绑定、设备映射、晚到位置回填、TS/JS 精确整数和 Group canonical/权限版本及混合域提交见 Message/Group RPC Manual;四端门面与本地 `read_state_sync` 完成事件见 `06-API手册.md`、`04-连接与认证.md`。
19
- Group 的成员 block/status、暂停群权限和两阶段群主转让,以及 Group FS 的 `group.fs.*` RPC、角色 ACL、`parents` 语义和 memberdata 映射见 `09-group-rpc-manual.md`。Collab 的 `gc`、`reflog`、`revert`、`clone` 及版本化文档/标签语义见 `09-collab-rpc-manual.md`。
17
+ Storage 的 SDK VFS、实际字节 MIME 识别、session/PUT/complete Content-Type 一致性、OSS 403、direct backend 上传下载和 ticket / AID Bearer 边界见 `09-storage-rpc-manual.md` 与 `AUN Storage架构设计.md`。
18
+ 跨设备业务已读的 `read/read_state/read_changed`、单条/显式空值、回执与共享汇总、scope/owner 绑定、设备映射、晚到位置回填、TS/JS 精确整数和 Group canonical/权限版本及混合域提交见 Message/Group RPC Manual;四端门面与本地 `read_state_sync` 完成事件见 `06-API手册.md`、`04-连接与认证.md`。
19
+ Group 的成员 block/status、暂停群权限和两阶段群主转让,以及 Group FS 的 `group.fs.*` RPC、角色 ACL、`parents` 语义和 memberdata 映射见 `09-group-rpc-manual.md`。Collab 的 `gc`、`reflog`、`revert`、`clone` 及版本化文档/标签语义见 `09-collab-rpc-manual.md`。
20
20
 
21
21
  ## 渐进式查阅流程
22
22
 
@@ -28,22 +28,23 @@ Group 的成员 block/status、暂停群权限和两阶段群主转让,以及
28
28
 
29
29
  常见主题:
30
30
 
31
- - 身份与认证:AIDStore / AID / 注册 / 加载 / 证书
32
- - Ownership 2.1:当前应用/移植指南、七 Facade、双文件/锁/版本;Group/Org 专属生命周期、owner 本人名片、原 V2 授权复用、过期明确上传、无消息释放清理与 not_applicable 门禁;v1/proof/escrow 文档为 legacy
33
- - 连接与状态:AUNClient / 九态状态机 / Gateway / 重连 / 当前 access token getter / connect-disconnect-close 并发与取消
31
+ - 身份与认证:AIDStore / AID / 注册 / 加载 / 证书
32
+ - Ownership 2.1:关系仅由当前 agent.md/owner.md 确认;release 保持 v,清理后版本投影为 0/重绑默认 1,Header 只投影校验结果;普通 agent 注册 owner 可选;owner 当前完整原文/摘要/存在性再读,object_id/version 不为读取一致性条件;owner.md 通过 create_upload_session→HTTP PUT→complete_upload 的同一会话发布,expected_version 作发布 CAS,不提供全局/ABA保证;新服务端兼容旧 SDK 的注册、绑定、转移、查询和解绑 RPC 及隔离 Auth JSONL,只激活旧 NS ownership_proof,不写 2.1 双文件,不授 2.1 lock/version/consensus,不覆盖已存现代声明;新 SDK 关系操作不兼容旧服务端;当前应用/移植指南、七 Facade 与 Group/Org 专属生命周期、实体主签及原始多签恢复;v1/proof/escrow 文档为 legacy
33
+ - 连接与状态:AUNClient / 九态状态机 / Gateway / 重连 / 当前 access token getter / connect-disconnect-close 并发与取消
34
34
  - E2EE:默认加密、ProtectedHeaders、P2P / Group V2
35
35
  - RPC 与事件:`client.call()`、`client.on()`、`client.notify()`、RPC 手册
36
36
  - 离线推送:Python `connect()` 的 `push_notify_aid/push_token`、`client.push.register/unregister`、Push Server ACK
37
- - 消息同步:A/T/H、Tail、Forward、History、页内唯一有序发布、应用层跨页幂等排序、每个 AUNClient 一个 Pull Gate(P2P Message/Group Message/Group Event Pull 共享,始终单飞、相同 key 折叠、不同 key 排队、前台 FIFO 优先)、`source` 来源、`sync.started/progress/stopped` 生命周期、缺 sender IK 有界同步 bootstrap、永久页内 Gap、坏密文推进
38
- - P2P TTL 消息:`message.send.ttl` 秒级钳制、按 device 内存收件箱、volatile 双游标、自动 ACK/去重、服务 epoch 与重启语义
39
- - 跨设备已读:P2P/Group 按话题上报、共享汇总、设备映射、单调事件、本地 `read_state_sync`、精确整数、混合域部分提交及幂等重试
40
- - Storage:SDK VFS、实际字节 MIME 识别、session/PUT/complete Content-Type 一致性、OSS 403、下载 ticket / AID Bearer 边界、`storage.*` low-level RPC
41
- - Group RPC:成员 block/status、暂停群权限、两阶段群主转让、`group_aid` / `group_id` 兼容、`group.index` 签名索引与 CAS(见 `09-group-rpc-manual.md`、`06-API手册.md`)
37
+ - 消息同步:A/T/H、Tail、Forward、History、页内唯一有序发布、应用层跨页幂等排序、每个 AUNClient 一个 Pull Gate(P2P Message/Group Message/Group Event Pull 共享,同 namespace 单飞、不同 namespace 最多 4 个并行、相同 key 折叠、可运行项前台 FIFO 优先)、`source` 来源、`sync.started/progress/stopped` 生命周期、缺 sender IK 有界同步 bootstrap、永久页内 Gap、坏密文推进
38
+ - P2P TTL 消息:`message.send.ttl` 秒级钳制、按 device 内存收件箱、volatile 双游标、自动 ACK/去重、服务 epoch 与重启语义
39
+ - 跨设备已读:P2P/Group 按话题上报、共享汇总、设备映射、单调事件、本地 `read_state_sync`、精确整数、混合域部分提交及幂等重试
40
+ - Storage:SDK VFS、实际字节 MIME 识别、session/PUT/complete Content-Type 一致性、OSS 403、下载 ticket / AID Bearer 边界、`storage.*` low-level RPC
41
+ - Group RPC:成员 block/status、暂停群权限、两阶段群主转让、`group_aid` / `group_id` 兼容、`group.index` 签名索引与 CAS(见 `09-group-rpc-manual.md`、`06-API手册.md`)
42
42
  - 群文件系统:`group.fs.*`、`client.group.fs.*`、`aun group fs`、`cp/mv` 上传下载、群自有区角色 ACL 与 `group_aid` 签名、`parents`、JS string 差异和 memberdata 服务端映射(见 `09-group-rpc-manual.md`)
43
43
  - 协作(collab):`collab.*` 版本化文档、乐观锁 CAS commit、三方合并、标签、GC、reflog、revert(见 `09-collab-rpc-manual.md`)
44
+ - Credential/Org:服务端实际注册的凭证与组织 RPC、受保护请求、内部接口及未实现占位(见 `09-凭证服务RPC手册.md`、`09-组织服务RPC手册.md`)
44
45
  - Service Proxy:`ServiceProxyClient`、`proxy.register_services`、proxy-server `register_services`
45
- - agent.md:Schema/frontmatter、尾部签名、4 KiB/2048 字节限制、`AIDStore.register()` 默认自动上传、上传前完整校验、`agent_md_validation_v1`、`uploader_aid` / `uploaderAid`、`AIDStore.upload_agent_md()` / `download_agent_md()` / `check_agent_md()`、Gateway `_meta.agent_md_etags` 被动观察、`requester` / `peer` / `group` 角色
46
- - 错误处理:Result、Python `ErrorInfo.cause`、异常、错误码、重试
46
+ - agent.md:Schema/frontmatter、Store.sign/verify 通用多签、显式 file/inPlace、multi-v1 表示协商、4 KiB/总尾区2048 字节限制、`AIDStore.register()` 默认自动上传、上传前完整校验、`agent_md_validation_v1`、`uploader_aid` / `uploaderAid`、`AIDStore.upload_agent_md()` / `download_agent_md()` / `check_agent_md()`、Gateway `_meta.agent_md_etags` 被动观察、`requester` / `peer` / `group` 角色
47
+ - 错误处理:Result、Python `ErrorInfo.cause`、异常、错误码、重试
47
48
 
48
49
  ### Step 3:读 Layer 3 摘要
49
50
 
@@ -53,24 +54,30 @@ Group 的成员 block/status、暂停群权限和两阶段群主转让,以及
53
54
 
54
55
  | 编号 | 文档 | 定位 |
55
56
  |------|------|------|
56
- | - | [CHANGELOG-0.5.6](CHANGELOG-0.5.6.md) | **0.5.6 版本更新日志**:首次签名者回源、下载提交前验签、消息窗口、显式 change-seed 与语言能力边界 |
57
+ | - | [CHANGELOG-0.5.6](CHANGELOG-0.5.6.md) | **0.5.6 版本更新日志**:首次签名者回源、下载提交前验签、消息窗口、显式 change-seed 与语言能力边界 |
57
58
  | 01 | [快速开始](01-快速开始.md) | 安装、三主体模型、最小示例 |
58
- | 02 | [WebSocket协议](02-WebSocket协议.md) | 握手流程、Capabilities 能力声明、各层大小限制、消息格式、裸 WebSocket |
59
+ | 02 | [WebSocket协议](02-WebSocket协议.md) | 握手流程、Capabilities 能力声明、各层大小限制、消息格式、裸 WebSocket |
59
60
  | 03 | [核心概念](03-核心概念.md) | AID、A/T/H、Pull Gate、状态机、E2EE |
60
- | 04 | [连接与认证](04-连接与认证.md) | AIDStore、默认 agent.md 自动上传、连接生命周期并发/取消、当前 access token getter、网关发现、事件、已读状态本地补偿完成事件、agent.md 校验和自动观察 |
61
- | - | [Ownership管理专题](Ownership管理专题.md) | 四端 P2P owner API、应用层 accept/reject、完整消息 payload、identity escrow、owner 代签 agent.md、metadata 状态和验签边界 |
62
- | - | [Ownership SDK集成指南](Ownership-SDK集成指南.md) | TypeScript 快速接入、应用审批、状态查询及 SDK 编排流程图 |
63
- | - | [Ownership SDK实现指南](Ownership-SDK实现指南.md) | SDK 移植入口、消息拦截、proof/escrow、metadata 和恢复验收 |
64
- | - | [Ownership协议定义](../protocol/Ownership协议定义.md) | P2P/proof/agent.md schema、escrow、owner 授权头与现有 RPC |
61
+ | 04 | [连接与认证](04-连接与认证.md) | AIDStore、默认 agent.md 自动上传、连接生命周期并发/取消、当前 access token getter、网关发现、事件、已读状态本地补偿完成事件、agent.md 校验和自动观察 |
62
+ | - | [Ownership 协议定义 2.1](../protocol/Ownership协议定义2.1.md) | 当前双文件关系、版本、签名与授权边界、旧 SDK owner RPC/JSONL 隔离 |
63
+ | - | [Ownership SDK 编排指南 2.1](Ownership-SDK编排指南2.1.md) | 七 Facade、审批、持久任务和恢复 |
64
+ | - | [Ownership 2.1 SDK 应用集成指南](Ownership2.1-SDK应用集成指南.md) | 普通 agent 可选 owner 注册、应用审批、新鲜共识、文件多签与实体上传 |
65
+ | - | [Ownership 2.1 SDK 开发与移植指南](Ownership2.1-SDK开发与移植指南.md) | 统一签验核心、原件复核、owner.md 同会话上传与发布 CAS、NS 原条件与恢复 |
66
+ | - | [Ownership管理专题(legacy)](Ownership管理专题.md) | 四端 P2P owner API、应用层 accept/reject、完整消息 payload、identity escrow、owner 代签 agent.md、metadata 状态和验签边界 |
67
+ | - | [Ownership SDK集成指南(legacy)](Ownership-SDK集成指南.md) | TypeScript 快速接入、应用审批、状态查询及 SDK 编排流程图 |
68
+ | - | [Ownership SDK实现指南(legacy)](Ownership-SDK实现指南.md) | SDK 移植入口、消息拦截、proof/escrow、metadata 和恢复验收 |
69
+ | - | [Ownership协议定义(legacy)](../protocol/Ownership协议定义.md) | P2P/proof/agent.md schema、escrow、owner 授权头与现有 RPC |
65
70
  | - | [凭证与组织服务 SDK 应用集成指南](凭证与组织服务SDK应用集成指南.md) | 0.5.19 应用接入、CAP 完整验证、登记回执、成员闭环、代表请求和转让恢复 |
66
71
  | - | [凭证与组织服务 SDK 开发与移植指南](凭证与组织服务SDK开发与移植指南.md) | 0.5.19 四端协议实现、canonical JSON、强状态 proof、请求绑定、facade/RPC 和共同向量 |
67
- | 05 | [E2EE加密通信](05-E2EE加密通信.md) | E2EE V2、ProtectedHeaders、agent.md 版本提示、recipient wrap |
68
- | - | [ProtectedHeaders用法专题](ProtectedHeaders用法专题.md) | `protected_headers` 四端 API、实例级/单次调用、E2EE V2 HMAC 完整性和接收信任边界 |
69
- | 06 | [API手册](06-API手册.md) | AIDStore / Agent.md 校验签名 / AID / AUNClient 生命周期并发 / 四 SDK access token getter / 群组高层身份编排 / History 与已读门面 / 已读变更及本地补偿完成 / 消息来源与 Pull 同步生命周期 / 事件 / RPC |
70
- | 07 | [错误处理](07-错误处理.md) | Result、Python `ErrorInfo.cause`、异常、错误码、重试 |
71
- | 08 | [最佳实践](08-最佳实践.md) | 幂等、消息同步/History、AUNClient 级 Pull Gate(始终单飞)、测试数据 |
72
- | - | [Storage RPC 手册](09-storage-rpc-manual.md) | Storage RPC、实际字节 MIME、三阶段 Content-Type、OSS 403、HTTP 下载与凭据边界 |
73
- | - | [AUN Storage架构设计](<../aun-fs/AUN Storage架构设计.md>) | Storage SDK VFS、控制面/数据面分离、类 Linux 权限、mount/symlink、服务端分层 |
72
+ | - | [凭证服务 RPC 手册](09-凭证服务RPC手册.md) | Credential Service 实际 RPC、参数和签名状态响应 |
73
+ | - | [组织服务 RPC 手册](09-组织服务RPC手册.md) | Org Service 生命周期/成员 RPC、内部接口和未实现方法 |
74
+ | 05 | [E2EE加密通信](05-E2EE加密通信.md) | E2EE V2、ProtectedHeaders、agent.md 版本提示、recipient wrap |
75
+ | - | [ProtectedHeaders用法专题](ProtectedHeaders用法专题.md) | `protected_headers` 四端 API、实例级/单次调用、E2EE V2 HMAC 完整性和接收信任边界 |
76
+ | 06 | [API手册](06-API手册.md) | AIDStore / Agent.md 校验签名 / AID / AUNClient 生命周期并发 / 四 SDK access token getter / 群组高层身份编排 / History 与已读门面 / 已读变更及本地补偿完成 / 消息来源与 Pull 同步生命周期 / 事件 / RPC |
77
+ | 07 | [错误处理](07-错误处理.md) | Result、Python `ErrorInfo.cause`、异常、错误码、重试 |
78
+ | 08 | [最佳实践](08-最佳实践.md) | 幂等、消息同步/History、AUNClient 级 Pull Gate(同 namespace 单飞、客户端最多 4 个并行)、测试数据 |
79
+ | - | [Storage RPC 手册](09-storage-rpc-manual.md) | Storage RPC、实际字节 MIME、三阶段 Content-Type、OSS 403、HTTP 下载与凭据边界 |
80
+ | - | [AUN Storage架构设计](<../aun-fs/AUN Storage架构设计.md>) | Storage SDK VFS、控制面/数据面分离、类 Linux 权限、mount/symlink、服务端分层 |
74
81
  | 09 | `09-*-rpc-manual.md` | 各服务 RPC 参数和响应 |
75
82
  | 09 | [Service Proxy RPC手册](09-proxy-rpc-manual.md) | `proxy.*` 控制面和 proxy-server 数据面注册 |
76
83
  | 09 | [AID托管API手册](09-custody-api-manual.md) | 可选 custody HTTP 服务 |
@@ -82,40 +89,42 @@ Group 的成员 block/status、暂停群权限和两阶段群主转让,以及
82
89
  | 了解最新版本特性和改进 | [CHANGELOG-0.5.6](CHANGELOG-0.5.6.md) |
83
90
  | 首次使用 SDK | [01-快速开始](01-快速开始.md) |
84
91
  | 理解新构造入口 | [01-快速开始](01-快速开始.md)、[06-API手册](06-API手册.md) |
85
- | 注册或加载 AID | [04-连接与认证](04-连接与认证.md) |
86
- | 查 owner 关系、ownership proof、`bindAid`/`bindOwner`、identity escrow 或 owner 代签 agent.md | [Ownership管理专题](Ownership管理专题.md)、[06-API手册](06-API手册.md) |
87
- | 首次在应用中集成 Ownership 2.1 | [当前应用集成指南](Ownership2.1-SDK应用集成指南.md)、[编排指南 2.1](Ownership-SDK编排指南2.1.md) |
88
- | 实现或移植 Ownership 2.1 SDK | [当前开发与移植指南](Ownership2.1-SDK开发与移植指南.md)、[详细设计](Ownership2.1详细设计.md) |
89
- | Ownership 2.1 本轮 13 项复审、四端参考与验证边界 | [审查报告第十二节](../audit/Ownership2.1代码审查报告.md#十二2026-10-11-本轮复审与修复)、[TDD 复审验收](Ownership2.1-TDD分阶段实施计划.md#137-2026-10-11-本轮复审修复验收) |
90
- | 当前 Ownership 2.1 与 Group/Org 名片 wire | [协议 2.1](../protocol/Ownership协议定义2.1.md) §1.3/§2.5;旧 escrow/授权头仅查 legacy 协议 |
92
+ | 注册或加载 AID | [04-连接与认证](04-连接与认证.md) |
93
+ | 查旧 SDK owner 注册、绑定、转移、查询及解绑的隔离兼容,或 legacy proof/escrow/代签 | [当前协议兼容边界](../protocol/Ownership协议定义2.1.md) 开篇/§3.2、[详细设计](Ownership2.1详细设计.md) §1 兼容矩阵;历史 wire 见 [Ownership管理专题(legacy)](Ownership管理专题.md)、[legacy 集成指南](Ownership-SDK集成指南.md) |
94
+ | 首次在应用中集成 Ownership 2.1,使用 sign/verify、文件多签与实体上传 | [当前应用集成指南](Ownership2.1-SDK应用集成指南.md)、[API 手册](06-API手册.md#通用-sign--verify)、[编排指南 2.1](Ownership-SDK编排指南2.1.md) |
95
+ | 实现、移植或审查 Ownership 2.1 SDK、统一签验核心与多签 HTTP 兼容 | [当前开发与移植指南](Ownership2.1-SDK开发与移植指南.md) §7 的 owner.md 同会话上传与 expected_version 发布 CAS,object_id/version 非读取条件;[详细设计](Ownership2.1详细设计.md) §1 兼容非回归原则与矩阵;关系有效性只影响依赖 owner 的功能 |
96
+ | Ownership 2.1 当前审查、旧 SDK 兼容、四端修复与验证边界 | [当前审查第十五节](../audit/Ownership2.1代码审查报告.md#十五2026-10-15-追加审查兼容裁决与修复验收);历史 [第十二节](../audit/Ownership2.1代码审查报告.md#十二2026-10-11-本轮复审与修复)、[第十三节](../audit/Ownership2.1代码审查报告.md#十三2026-10-13-审查更正与最小修复验收)、[第 13.8 节复查更正与修复边界](Ownership2.1-TDD分阶段实施计划.md#138-2026-10-13-复查更正与修复边界) |
97
+ | 当前双文件关系、release/清理/重绑版本、Header 投影及 Group/Org 名片 wire | [协议 2.1](../protocol/Ownership协议定义2.1.md) §3/§4.2/§6、§1.3/§2.5;旧 SDK RPC 隔离兼容见开篇/§3.2,旧 escrow/授权头 wire 查 legacy 协议 |
91
98
  | 应用接入 Credential/Org 服务 | [凭证与组织服务 SDK 应用集成指南](凭证与组织服务SDK应用集成指南.md) |
92
99
  | 实现或移植 Credential/Org SDK | [凭证与组织服务 SDK 开发与移植指南](凭证与组织服务SDK开发与移植指南.md) |
93
- | 自行发起 HTTP 数据面请求并获取当前 access token | [04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)、[Storage RPC 手册:数据面 HTTP 下载流程](09-storage-rpc-manual.md#数据面-http-下载流程) |
94
- | 发布、下载、检查或排查 agent.md(含 Schema/签名/大小限制)及远端 ETag | [../agent.md/SCHEMA.md](../agent.md/SCHEMA.md)、[04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)、[../agent.md/远程agent.md缓存与etag透传方案.md](../agent.md/远程agent.md缓存与etag透传方案.md) |
100
+ | 查 Credential Service RPC | [凭证服务 RPC 手册](09-凭证服务RPC手册.md) |
101
+ | 查 Org Service RPC | [组织服务 RPC 手册](09-组织服务RPC手册.md) |
102
+ | 自行发起 HTTP 数据面请求并获取当前 access token | [04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)、[Storage RPC 手册:数据面 HTTP 下载流程](09-storage-rpc-manual.md#数据面-http-下载流程) |
103
+ | 发布、下载、检查或排查 agent.md(含 Schema/签名/大小限制)及远端 ETag | [当前协议 2.1](../protocol/Ownership协议定义2.1.md)、[04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)、[../agent.md/远程agent.md缓存与etag透传方案.md](../agent.md/远程agent.md缓存与etag透传方案.md) |
95
104
  | 状态机和重连 | [03-核心概念](03-核心概念.md)、[04-连接与认证](04-连接与认证.md) |
96
105
  | 查 Capabilities 能力声明、实时推送优化 | [02-WebSocket协议](02-WebSocket协议.md)、[CHANGELOG-0.5.6](CHANGELOG-0.5.6.md) |
97
106
  | 登记、更新或注销 `push_notify_aid` | [04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)、`docs/protocol/15-离线推送通知协议.md` |
98
- | 查方法签名、群组高层 facade 和 `aid_store` / `aidStore` | [06-API手册](06-API手册.md) |
99
- | 查消息或群组 RPC、群提及过滤 `mention_mode` | 对应 `09-*-rpc-manual.md`;`mention_mode` 详见 [09-group-rpc-manual.md](09-group-rpc-manual.md) |
100
- | 查 `protected_headers` / ProtectedHeaders 用法及四端 E2EE 细节 | [ProtectedHeaders用法专题](ProtectedHeaders用法专题.md) |
101
- | 查 P2P device 定向发送或 TTL volatile 消息 | [06-API手册](06-API手册.md)、[09-message-rpc-manual.md](09-message-rpc-manual.md) |
102
- | 查跨设备业务已读、单条/显式空值、scope/owner、seq 映射、TS/JS 精确整数或 Group canonical/权限版本及混合域提交 | [09-message-rpc-manual.md](09-message-rpc-manual.md)、[09-group-rpc-manual.md](09-group-rpc-manual.md) |
103
- | 查已读状态补偿完成事件 `read_state_sync`、states/errors 和 `background_sync` 边界 | [04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md) |
104
- | 查 A/T/H、SDK 自动最新页同步与 AUNClient 级 Pull Gate | [03-核心概念.md](03-核心概念.md)、[08-最佳实践.md](08-最佳实践.md)、[09-message-rpc-manual.md](09-message-rpc-manual.md)、[09-group-rpc-manual.md](09-group-rpc-manual.md) |
105
- | 查消息事件 `source`、`sync.started/progress/stopped` 和 `delivery.changed` | [06-API手册](06-API手册.md) |
106
- | 查 History、Forward、Pull Gate、Group 成员可见性 floor 与 Piggy ACK | [09-message-rpc-manual.md](09-message-rpc-manual.md)、[09-group-rpc-manual.md](09-group-rpc-manual.md) |
107
- | 查群组标识 `group_aid` / `group_id` 兼容规范 | [09-group-rpc-manual.md](09-group-rpc-manual.md) |
108
- | 查成员 block/status、暂停群发言权限或两阶段群主转让 | [09-group-rpc-manual.md](09-group-rpc-manual.md)、[06-API手册](06-API手册.md) |
107
+ | 查方法签名、群组高层 facade 和 `aid_store` / `aidStore` | [06-API手册](06-API手册.md) |
108
+ | 查消息或群组 RPC、群提及过滤 `mention_mode` | 对应 `09-*-rpc-manual.md`;`mention_mode` 详见 [09-group-rpc-manual.md](09-group-rpc-manual.md) |
109
+ | 查 `protected_headers` / ProtectedHeaders 用法及四端 E2EE 细节 | [ProtectedHeaders用法专题](ProtectedHeaders用法专题.md) |
110
+ | 查 P2P device 定向发送或 TTL volatile 消息 | [06-API手册](06-API手册.md)、[09-message-rpc-manual.md](09-message-rpc-manual.md) |
111
+ | 查跨设备业务已读、单条/显式空值、scope/owner、seq 映射、TS/JS 精确整数或 Group canonical/权限版本及混合域提交 | [09-message-rpc-manual.md](09-message-rpc-manual.md)、[09-group-rpc-manual.md](09-group-rpc-manual.md) |
112
+ | 查已读状态补偿完成事件 `read_state_sync`、states/errors 和 `background_sync` 边界 | [04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md) |
113
+ | 查 A/T/H、SDK 自动最新页同步与 AUNClient 级 Pull Gate | [03-核心概念.md](03-核心概念.md)、[08-最佳实践.md](08-最佳实践.md)、[09-message-rpc-manual.md](09-message-rpc-manual.md)、[09-group-rpc-manual.md](09-group-rpc-manual.md) |
114
+ | 查消息事件 `source`、`sync.started/progress/stopped` 和 `delivery.changed` | [06-API手册](06-API手册.md) |
115
+ | 查 History、Forward、Pull Gate、Group 成员可见性 floor 与 Piggy ACK | [09-message-rpc-manual.md](09-message-rpc-manual.md)、[09-group-rpc-manual.md](09-group-rpc-manual.md) |
116
+ | 查群组标识 `group_aid` / `group_id` 兼容规范 | [09-group-rpc-manual.md](09-group-rpc-manual.md) |
117
+ | 查成员 block/status、暂停群发言权限或两阶段群主转让 | [09-group-rpc-manual.md](09-group-rpc-manual.md)、[06-API手册](06-API手册.md) |
109
118
  | 查 group.index 签名索引、版本观察、不同步判断、CAS 更新和 facade | [03-核心概念.md](03-核心概念.md)、[06-API手册.md](06-API手册.md)、[09-group-rpc-manual.md](09-group-rpc-manual.md)、[08-最佳实践.md](08-最佳实践.md) |
110
119
  | 查群文件系统 RPC / SDK / CLI 入口、群自有区角色 ACL 授权/撤销/查询、`parents` 和 JS string 差异 | [09-group-rpc-manual.md](09-group-rpc-manual.md)、[06-API手册](06-API手册.md) |
111
- | 查 Storage 架构、SDK VFS、权限模型和 mount/symlink | [AUN Storage架构设计.md](<../aun-fs/AUN Storage架构设计.md>) |
112
- | 查 Storage MIME 识别、session/PUT/complete Content-Type、OSS 403 或底层 RPC 调用责任 | [09-storage-rpc-manual.md](09-storage-rpc-manual.md)、[06-API手册](06-API手册.md) |
113
- | 查 Storage 数据面 HTTP 下载流程和 ticket / AID Bearer 边界 | [09-storage-rpc-manual.md](09-storage-rpc-manual.md) |
120
+ | 查 Storage 架构、SDK VFS、权限模型和 mount/symlink | [AUN Storage架构设计.md](<../aun-fs/AUN Storage架构设计.md>) |
121
+ | 查 Storage MIME 识别、session/PUT/complete Content-Type、OSS 403 或底层 RPC 调用责任 | [09-storage-rpc-manual.md](09-storage-rpc-manual.md)、[06-API手册](06-API手册.md) |
122
+ | 查 Storage 数据面 HTTP 下载流程和 ticket / AID Bearer 边界 | [09-storage-rpc-manual.md](09-storage-rpc-manual.md) |
114
123
  | 查协作(版本化文档/乐观锁/标签/GC/reflog/revert)RPC | [09-collab-rpc-manual.md](09-collab-rpc-manual.md) |
115
124
  | 查 notify 在线轻量通知 / 跨域 federation | [Notify通知方案.md](Notify通知方案.md) |
116
125
  | 查 Service Proxy 服务注册和路由 | [06-API手册](06-API手册.md)、[09-proxy-rpc-manual.md](09-proxy-rpc-manual.md) |
117
126
  | 查 payload 格式 | [09-payload-reference.md](09-payload-reference.md) |
118
- | 排查错误或读取 Python 本地原始异常 `cause` | [07-错误处理](07-错误处理.md) |
127
+ | 排查错误或读取 Python 本地原始异常 `cause` | [07-错误处理](07-错误处理.md) |
119
128
  | 写测试或 demo | [08-最佳实践](08-最佳实践.md) |
120
129
 
121
130