@agentunion/fastaun-browser 0.5.18 → 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.
- package/CHANGELOG.md +172 -79
- package/_packed_docs/CHANGELOG.md +172 -79
- package/_packed_docs/INDEX.md +244 -116
- package/_packed_docs/KITE_DOCS_GUIDE.md +98 -69
- package/_packed_docs/agent.md/SCHEMA.md +245 -205
- 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
- package/_packed_docs/aun/345/210/206/345/270/203/345/274/217/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md +42 -15
- package/_packed_docs/aun/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md +4 -4
- 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 +45 -134
- package/_packed_docs/protocol/06-/346/234/215/345/212/241/345/215/217/350/256/256.md +1072 -1072
- 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 +5 -20
- package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +687 -668
- package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +19 -28
- package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/211.md +443 -0
- package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2112.0.md +161 -0
- package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2112.1.md +658 -0
- package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2113.0.md +233 -0
- package/_packed_docs/protocol/agent.md/SCHEMA.md +4 -0
- package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +1 -1
- package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +68 -61
- package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +1 -1
- package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +279 -285
- package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +3 -3
- package/_packed_docs/sdk/09-group-rpc-manual.md +271 -235
- package/_packed_docs/sdk/09-message-rpc-manual.md +47 -6
- package/_packed_docs/sdk/09-storage-rpc-manual.md +70 -68
- package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +63 -34
- package/_packed_docs/sdk/INDEX.md +105 -34
- package/_packed_docs/sdk/Ownership-SDK/345/256/236/347/216/260/346/214/207/345/215/227.md +169 -0
- package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/227.md +349 -0
- package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/2272.1.md +922 -0
- package/_packed_docs/sdk/Ownership-SDK/351/233/206/346/210/220/346/214/207/345/215/227.md +270 -0
- 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
- 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
- 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
- package/_packed_docs/sdk/Ownership2.1/350/257/246/347/273/206/350/256/276/350/256/241.md +476 -0
- package/_packed_docs/sdk/Ownership/347/256/241/347/220/206/344/270/223/351/242/230.md +559 -0
- package/_packed_docs/sdk/ProtectedHeaders/347/224/250/346/263/225/344/270/223/351/242/230.md +299 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/dist/agent-md-schema.d.ts +17 -3
- package/dist/agent-md-schema.d.ts.map +1 -1
- package/dist/agent-md-schema.js +94 -26
- package/dist/agent-md-schema.js.map +1 -1
- package/dist/agent-md.d.ts +54 -3
- package/dist/agent-md.d.ts.map +1 -1
- package/dist/agent-md.js +711 -65
- package/dist/agent-md.js.map +1 -1
- package/dist/aid-store.d.ts +58 -46
- package/dist/aid-store.d.ts.map +1 -1
- package/dist/aid-store.js +254 -248
- package/dist/aid-store.js.map +1 -1
- package/dist/aid.d.ts +4 -1
- package/dist/aid.d.ts.map +1 -1
- package/dist/aid.js +27 -33
- package/dist/aid.js.map +1 -1
- package/dist/auth.d.ts +4 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +426 -39
- package/dist/auth.js.map +1 -1
- package/dist/bundle.js +38179 -32054
- package/dist/cert-utils.d.ts +50 -2
- package/dist/cert-utils.d.ts.map +1 -1
- package/dist/cert-utils.js +105 -47
- package/dist/cert-utils.js.map +1 -1
- package/dist/client/delivery.d.ts +22 -1
- package/dist/client/delivery.d.ts.map +1 -1
- package/dist/client/delivery.js +389 -78
- package/dist/client/delivery.js.map +1 -1
- package/dist/client/rpc-pipeline.d.ts.map +1 -1
- package/dist/client/rpc-pipeline.js +103 -77
- package/dist/client/rpc-pipeline.js.map +1 -1
- package/dist/client/v2-e2ee.d.ts +1 -0
- package/dist/client/v2-e2ee.d.ts.map +1 -1
- package/dist/client/v2-e2ee.js +182 -89
- package/dist/client/v2-e2ee.js.map +1 -1
- package/dist/client.d.ts +100 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +1220 -25
- package/dist/client.js.map +1 -1
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +8 -6
- package/dist/crypto.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +3 -2
- package/dist/errors.js.map +1 -1
- package/dist/events.d.ts +9 -2
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +72 -13
- package/dist/events.js.map +1 -1
- package/dist/facades.d.ts +82 -2
- package/dist/facades.d.ts.map +1 -1
- package/dist/facades.js +100 -6
- package/dist/facades.js.map +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/keystore/index.d.ts +17 -0
- package/dist/keystore/index.d.ts.map +1 -1
- package/dist/keystore/indexeddb-shared.d.ts +10 -1
- package/dist/keystore/indexeddb-shared.d.ts.map +1 -1
- package/dist/keystore/indexeddb-shared.js +111 -0
- package/dist/keystore/indexeddb-shared.js.map +1 -1
- package/dist/keystore/indexeddb-token-store.d.ts +7 -1
- package/dist/keystore/indexeddb-token-store.d.ts.map +1 -1
- package/dist/keystore/indexeddb-token-store.js +30 -1
- package/dist/keystore/indexeddb-token-store.js.map +1 -1
- package/dist/org-protocol.d.ts +98 -0
- package/dist/org-protocol.d.ts.map +1 -0
- package/dist/org-protocol.js +1802 -0
- package/dist/org-protocol.js.map +1 -0
- package/dist/ownership-proof.d.ts +93 -5
- package/dist/ownership-proof.d.ts.map +1 -1
- package/dist/ownership-proof.js +239 -53
- package/dist/ownership-proof.js.map +1 -1
- package/dist/ownership-v21.d.ts +194 -0
- package/dist/ownership-v21.d.ts.map +1 -0
- package/dist/ownership-v21.js +678 -0
- package/dist/ownership-v21.js.map +1 -0
- package/dist/ownership-workflow.d.ts +151 -0
- package/dist/ownership-workflow.d.ts.map +1 -0
- package/dist/ownership-workflow.js +1229 -0
- package/dist/ownership-workflow.js.map +1 -0
- package/dist/seq-tracker.d.ts +1 -0
- package/dist/seq-tracker.d.ts.map +1 -1
- package/dist/seq-tracker.js +10 -2
- package/dist/seq-tracker.js.map +1 -1
- package/dist/tools/cross-sdk-agent.d.ts +83 -0
- package/dist/tools/cross-sdk-agent.d.ts.map +1 -1
- package/dist/tools/cross-sdk-agent.js +415 -7
- package/dist/tools/cross-sdk-agent.js.map +1 -1
- package/dist/transport.d.ts +7 -0
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +90 -2
- package/dist/transport.js.map +1 -1
- package/dist/v2/e2ee/decrypt.d.ts +1 -0
- package/dist/v2/e2ee/decrypt.d.ts.map +1 -1
- package/dist/v2/e2ee/decrypt.js +9 -1
- package/dist/v2/e2ee/decrypt.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -8,24 +8,40 @@
|
|
|
8
8
|
|
|
9
9
|
| 文档 | 说明 |
|
|
10
10
|
|------|------|
|
|
11
|
-
| [CHANGELOG-0.5.6](CHANGELOG-0.5.6.md) | **0.5.6 版本更新日志**:首次签名者回源 · 下载提交前验签 · 消息窗口 · 显式 change-seed · 语言能力边界 |
|
|
11
|
+
| [CHANGELOG-0.5.6](CHANGELOG-0.5.6.md) | **0.5.6 版本更新日志**:首次签名者回源 · 下载提交前验签 · 消息窗口 · 显式 change-seed · 语言能力边界 |
|
|
12
12
|
| [01-快速开始](01-快速开始.md) | 安装 · 三主体模型 · 最小示例 · 多语言构造 |
|
|
13
|
-
| [02-WebSocket协议](02-WebSocket协议.md) | 握手流程 · Capabilities 能力声明 · JSON-RPC 消息格式 · 裸 WebSocket 示例 |
|
|
14
|
-
| [03-核心概念](03-核心概念.md) | AID · AIDStore · AUNClient · A/T/H 消息窗口 · 每个 AUNClient 一个 Pull Gate · 九态状态机 · E2EE |
|
|
15
|
-
| [04-连接与认证](04-连接与认证.md) | 注册加载 · 认证连接 · 当前 access token getter · Python Push 自动登记 · 网关发现 · 事件 · agent.md 自动观察 |
|
|
13
|
+
| [02-WebSocket协议](02-WebSocket协议.md) | 握手流程 · Capabilities 能力声明 · JSON-RPC 消息格式 · 裸 WebSocket 示例 |
|
|
14
|
+
| [03-核心概念](03-核心概念.md) | AID · AIDStore · AUNClient · A/T/H 消息窗口 · 每个 AUNClient 一个 Pull Gate · 九态状态机 · E2EE |
|
|
15
|
+
| [04-连接与认证](04-连接与认证.md) | 注册加载 · 认证连接 · 当前 access token getter · Python Push 自动登记 · 网关发现 · 事件 · 已读状态本地补偿完成事件 · agent.md 自动观察 |
|
|
16
|
+
| [Ownership管理专题(legacy)](Ownership管理专题.md) | 四端 `aun.ownership.v1` P2P owner API · 应用层 accept/reject · identity escrow · owner 代签 agent.md · release 解绑/rekey · 崩溃恢复 · 完整消息 payload · metadata 状态 |
|
|
17
|
+
| [Ownership SDK集成指南(legacy)](Ownership-SDK集成指南.md) | TypeScript 应用层快速接入 · 审批 API · 状态查询 · SDK 自动编排流程图 |
|
|
18
|
+
| [Ownership SDK实现指南(legacy)](Ownership-SDK实现指南.md) | 四端移植入口 · proof/escrow · 消息拦截 · metadata · rekey/上传恢复 · 验收 |
|
|
19
|
+
| [Ownership协议定义(legacy)](../protocol/Ownership协议定义.md) | P2P 消息 schema · proof/签名 · agent.md · escrow · owner 授权头 · 现有 RPC |
|
|
20
|
+
| [Ownership 协议定义 2.1](../protocol/Ownership协议定义2.1.md) | 关系仅由 agent.md/owner.md 确认 · release 保持 v、清理后 0/重绑默认 1 · Header 结果投影 · Group/Org 专属生命周期、实体主签与 owner token 上传 · owner完整原文/存在性再读 · 隔离的旧 SDK owner RPC/Auth JSONL · 无Storage路径历史 |
|
|
21
|
+
| [Ownership SDK 编排指南 2.1](Ownership-SDK编排指南2.1.md) | 当前七 Facade、审批、持久任务/恢复 · 无消息历史同意释放清理 · Group/Org not_applicable 门禁 |
|
|
22
|
+
| [Ownership 2.1 应用集成指南](Ownership2.1-SDK应用集成指南.md) | 普通 agent 可选 owner 注册、应用接入、审批与新鲜共识 · sign/verify 公共门面、显式文件输入、多签读取与实体原件恢复 |
|
|
23
|
+
| [Ownership 2.1 开发与移植指南](Ownership2.1-SDK开发与移植指南.md) | 四端统一签验核心、多签 HTTP 表示与实体指纹绑定 · 文件/证书/Storage当前原件 · owner.md 同会话上传与 expected_version 发布 CAS · 任务CAS · 按协议逐项裁决 |
|
|
24
|
+
| [凭证与组织服务 SDK 应用集成指南](凭证与组织服务SDK应用集成指南.md) | 0.5.19 应用接入:CAP 验证、登记回执、成员入组/续期、组织请求、实体主签与 owner 上传、转让恢复 |
|
|
25
|
+
| [凭证与组织服务 SDK 开发与移植指南](凭证与组织服务SDK开发与移植指南.md) | 0.5.19 四端协议实现:canonical JSON、签名/状态 proof、binding、facade/RPC、实体多签与原件恢复、测试向量 |
|
|
26
|
+
| [凭证服务 RPC 手册](09-凭证服务RPC手册.md) | Credential Service 实际注册的 health/status/register/revoke/revocationList RPC |
|
|
27
|
+
| [组织服务 RPC 手册](09-组织服务RPC手册.md) | Org Service 生命周期、成员、凭证查询、审计/授权及内部/未实现方法 |
|
|
28
|
+
| [Ownership 2.1 详细设计](Ownership2.1详细设计.md) | 当前双文件关系、agent.md 兼容非回归矩阵、旧 SDK owner RPC/JSONL 隔离、本地失败稿/显式重试、本地任务与原 CAS |
|
|
29
|
+
| [Ownership 2.1 TDD 实施计划](Ownership2.1-TDD分阶段实施计划.md) | 当前实施计划、历史冻结契约与网络账本、2026-10-13 复查修复边界 |
|
|
30
|
+
| [Ownership 2.1 审查报告](../audit/Ownership2.1代码审查报告.md) | 历史复审;2026-10-15 旧 SDK wire 隔离兼容、owner 可选、四端会话/CAS、Storage 持久化和当前验证限制 |
|
|
16
31
|
| [05-E2EE加密通信](05-E2EE加密通信.md) | E2EE V2 消息 · ProtectedHeaders · agent.md 版本提示 · recipient wrap |
|
|
32
|
+
| [ProtectedHeaders用法专题](ProtectedHeaders用法专题.md) | `protected_headers` 四端 API · 实例级/单次调用 · E2EE V2 HMAC 完整性 · 接收信任边界 |
|
|
17
33
|
| [E2EE_V2消息通信时序图](E2EE_V2消息通信时序图.md) | V2 P2P/GROUP 明文与加密主链路 |
|
|
18
|
-
| [06-API手册](06-API手册.md) | AIDStore · AID · AUNClient · 四 SDK access token getter · Python PushFacade · P2P TTL volatile 消息 · Message/Group History
|
|
19
|
-
| [07-错误处理](07-错误处理.md) | Result · Python `ErrorInfo.cause` · 错误类层级 · 错误码 · 重试 |
|
|
20
|
-
| [08-最佳实践](08-最佳实践.md) | 幂等连接 · 消息同步/History · AUNClient 级 Pull Gate
|
|
34
|
+
| [06-API手册](06-API手册.md) | AIDStore · AID · AUNClient · 四 SDK access token getter · Python PushFacade · P2P TTL volatile 消息 · Message/Group History 与已读门面 · 已读变更和本地补偿完成 · 消息来源与 Pull 同步生命周期 · 事件 · E2EE 高级 API · RPC 索引 |
|
|
35
|
+
| [07-错误处理](07-错误处理.md) | Result · Python `ErrorInfo.cause` · 错误类层级 · 错误码 · 重试 |
|
|
36
|
+
| [08-最佳实践](08-最佳实践.md) | 幂等连接 · 消息同步/History · AUNClient 级 Pull Gate(同 namespace 单飞、客户端最多 4 个并行)· group.index · 测试数据保护 |
|
|
21
37
|
| [09-payload-reference](09-payload-reference.md) | message / group / thought payload 格式 |
|
|
22
|
-
| [09-message-rpc-manual](09-message-rpc-manual.md) | P2P 消息 RPC
|
|
23
|
-
| [09-group-rpc-manual](09-group-rpc-manual.md) | 群组 RPC
|
|
24
|
-
| [09-storage-rpc-manual](09-storage-rpc-manual.md) | 存储 RPC(含实际字节 MIME 识别、session/PUT/complete Content-Type 一致性、OSS 403、POSIX VFS / ACL / token) |
|
|
38
|
+
| [09-message-rpc-manual](09-message-rpc-manual.md) | P2P 消息 RPC(含跨设备 `read/read_state/read_changed`、设备映射、精确整数、device 定向发送、TTL volatile 消息、双游标/ACK、Forward Pull、`message.history`、Piggy ACK、实时推送内联载荷) |
|
|
39
|
+
| [09-group-rpc-manual](09-group-rpc-manual.md) | 群组 RPC(自动 owner 绑定/解绑、owner 本人名片、强制 rekey 的两阶段转移、跨设备已读、成员 block/status、Group Forward/History/index、Group FS) |
|
|
40
|
+
| [09-storage-rpc-manual](09-storage-rpc-manual.md) | 存储 RPC(含实际字节 MIME 识别、session/PUT/complete Content-Type 一致性、OSS 403、POSIX VFS / ACL / token) |
|
|
25
41
|
| [09-collab-rpc-manual](09-collab-rpc-manual.md) | 协作 RPC(版本化文档 / 乐观锁 / 三方合并 / 标签 / GC / reflog / revert) |
|
|
26
42
|
| [group.fs POSIX 化详细设计](../aun-fs/group-fs/group.fs-POSIX化详细设计.md) | `client.group.fs.*` / `aun group fs` / `group.fs.*` 群文件系统设计,含群自有区角色 ACL、`parents` 和 JS string 语义 |
|
|
27
43
|
| [group.fs POSIX 化分阶段实施计划](../aun-fs/group-fs/group.fs-POSIX化分阶段实施计划.md) | group.fs 重构的 IPO、Step-by-step、用例集、Checklist、验收和回滚 |
|
|
28
|
-
| [AUN Storage架构设计](<../aun-fs/AUN Storage架构设计.md>) | Storage SDK VFS、控制面/数据面分离、服务端分层、类 Linux 权限、mount/symlink 与关键时序 |
|
|
44
|
+
| [AUN Storage架构设计](<../aun-fs/AUN Storage架构设计.md>) | Storage SDK VFS、控制面/数据面分离、服务端分层、类 Linux 权限、mount/symlink 与关键时序 |
|
|
29
45
|
| [09-meta-rpc-manual](09-meta-rpc-manual.md) | meta RPC 和信任根 |
|
|
30
46
|
| [09-stream-rpc-manual](09-stream-rpc-manual.md) | stream RPC |
|
|
31
47
|
| [09-proxy-rpc-manual](09-proxy-rpc-manual.md) | Service Proxy 控制面 RPC 和数据面隧道注册 |
|
|
@@ -38,27 +54,39 @@
|
|
|
38
54
|
|
|
39
55
|
### 身份与认证
|
|
40
56
|
|
|
57
|
+
- 当前普通 Ownership 2.1 双文件关系、release 保持 v/清理后 0/重绑默认 1、Header 结果投影、旧 SDK owner 隔离兼容、七 Facade 与任务恢复、Group/Org not_applicable → [编排指南 2.1](Ownership-SDK编排指南2.1.md)、[协议 2.1](../protocol/Ownership协议定义2.1.md)
|
|
58
|
+
- 通用 Store raw/document 多签、Group/Org 实体主签、owner token 上传及可选附签、代际与原 CAS pending → [协议 §2.5](../protocol/Ownership协议定义2.1.md#25-grouporg-名片的实体主签与-owner-上传)、[Group RPC](09-group-rpc-manual.md#群组生命周期)
|
|
59
|
+
- Credential/Org 应用接入、CAP 完整验证、登记回执、成员入组/续期、代表请求和转让恢复 → [凭证与组织服务 SDK 应用集成指南](凭证与组织服务SDK应用集成指南.md)
|
|
60
|
+
- Credential/Org 四端协议实现、canonical JSON、强状态 proof、请求绑定、facade/RPC 和共同向量 → [凭证与组织服务 SDK 开发与移植指南](凭证与组织服务SDK开发与移植指南.md)
|
|
61
|
+
- Credential Service 实际 RPC 与签名状态 proof/吊销列表 → [凭证服务 RPC 手册](09-凭证服务RPC手册.md)
|
|
62
|
+
- Org Service 生命周期、成员关系、受保护查询、内部接口和未实现占位 → [组织服务 RPC 手册](09-组织服务RPC手册.md)
|
|
63
|
+
|
|
41
64
|
- AID 格式、证书、不可变值对象 → [03-核心概念](03-核心概念.md)
|
|
42
|
-
- `AIDStore.register()` / `load()` / `exists()` / `resolve()` → [04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)
|
|
43
|
-
-
|
|
44
|
-
-
|
|
65
|
+
- `AIDStore.register()` / `load()` / `exists()` / `resolve()` → [04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)
|
|
66
|
+
- 旧 SDK owner 注册、绑定、转移、查询和解绑 RPC/Auth JSONL 隔离兼容 → [当前协议兼容边界](../protocol/Ownership协议定义2.1.md);legacy 四端 `bindAid`/`bindOwner`、proof/escrow、代签代上传及 rekey 记录 → [Ownership管理专题(legacy)](Ownership管理专题.md)
|
|
67
|
+
- legacy TypeScript 应用层 ownership 快速集成、审批、查询和 SDK 自动编排流程图 → [Ownership SDK集成指南(legacy)](Ownership-SDK集成指南.md)
|
|
68
|
+
- legacy ownership SDK 实现/移植、声明字节与验签、escrow、metadata 持久化和恢复 → [Ownership SDK实现指南(legacy)](Ownership-SDK实现指南.md)
|
|
69
|
+
- legacy ownership P2P/proof/agent.md/escrow schema 与现有 RPC、HTTP 授权边界 → [Ownership协议定义(legacy)](../protocol/Ownership协议定义.md)
|
|
70
|
+
- agent.md 上传/下载/检查、`remote_etag` / `last_modified` 自动观察、`requester` / `peer` / `group` 角色 → [04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)、[远程 agent.md 缓存与 ETag 透传方案](../agent.md/远程agent.md缓存与etag透传方案.md)
|
|
45
71
|
- AID 构造约束与多语言入口 → [01-快速开始](01-快速开始.md)、[06-API手册](06-API手册.md)
|
|
46
|
-
- 认证链路、后台刷新和当前 token getter(`get_access_token()` / `getAccessToken()` / `GetAccessToken()`)→ [03-核心概念](03-核心概念.md)、[04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)
|
|
72
|
+
- 认证链路、后台刷新和当前 token getter(`get_access_token()` / `getAccessToken()` / `GetAccessToken()`)→ [03-核心概念](03-核心概念.md)、[04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)
|
|
47
73
|
- AID 托管恢复 / 跨设备复制 → [09-custody-api-manual](09-custody-api-manual.md)
|
|
48
74
|
|
|
49
75
|
### 连接与状态
|
|
50
76
|
|
|
51
77
|
- 九态状态机、device_id / slot_id 隔离键 → [03-核心概念](03-核心概念.md)
|
|
52
78
|
- `connect()` 选项、长短连接、网关发现 → [04-连接与认证](04-连接与认证.md)
|
|
53
|
-
- capability getter、事件、生命周期 API → [06-API手册](06-API手册.md)
|
|
54
|
-
- 消息事件 `source`、`sync.started/progress/stopped`、`delivery.changed` → [06-API手册](06-API手册.md)
|
|
55
|
-
-
|
|
79
|
+
- capability getter、事件、生命周期 API → [06-API手册](06-API手册.md)
|
|
80
|
+
- 消息事件 `source`、`sync.started/progress/stopped`、`delivery.changed` → [06-API手册](06-API手册.md)
|
|
81
|
+
- 已读状态重连补偿、本地 `read_state_sync` 的 states/errors 和 `background_sync` 边界 → [04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)
|
|
82
|
+
- Capabilities 能力声明、`inline_realtime_payload_v1` 实时推送优化 → [02-WebSocket协议](02-WebSocket协议.md)、[CHANGELOG-0.5.6](CHANGELOG-0.5.6.md)
|
|
56
83
|
- 裸 WebSocket 握手 → [02-WebSocket协议](02-WebSocket协议.md)
|
|
57
84
|
|
|
58
85
|
### E2EE
|
|
59
86
|
|
|
60
87
|
- E2EE 原理和默认行为 → [03-核心概念](03-核心概念.md)
|
|
61
88
|
- ProtectedHeaders、agent.md 版本提示边界、V2 recipient wrap、sender_signature / AAD / recipient proof → [05-E2EE加密通信](05-E2EE加密通信.md)
|
|
89
|
+
- `protected_headers` 用法、四端 API、合并优先级、key/value 规范化、HMAC 和信任边界 → [ProtectedHeaders用法专题](ProtectedHeaders用法专题.md)
|
|
62
90
|
- V2 P2P/GROUP 时序 → [E2EE_V2消息通信时序图](E2EE_V2消息通信时序图.md)
|
|
63
91
|
- 高级 E2EE API → [06-API手册](06-API手册.md)
|
|
64
92
|
- 解密失败排查 → [07-错误处理](07-错误处理.md)
|
|
@@ -68,12 +96,13 @@
|
|
|
68
96
|
- `client.call()` / `client.on()` → [04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)
|
|
69
97
|
- Python `connect()` 携带 `push_notify_aid/push_token` 自动登记,以及 `client.push.register/unregister` 运行期变更 → [04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)、`docs/protocol/15-离线推送通知协议.md`
|
|
70
98
|
- `client.notify()` 在线轻量通知、跨域 federation、在线/离线边界 → [Notify通知方案](Notify通知方案.md)
|
|
71
|
-
- A/T/H 实时窗口、页内唯一有序发布、应用层跨页幂等排序、每个 AUNClient 一个 Pull Gate
|
|
72
|
-
- P2P device 定向发送、TTL volatile 消息、双游标/ACK、Forward/History/Piggy ACK → [09-message-rpc-manual](09-message-rpc-manual.md)
|
|
73
|
-
-
|
|
99
|
+
- A/T/H 实时窗口、页内唯一有序发布、应用层跨页幂等排序、每个 AUNClient 一个 Pull Gate(同 namespace 单飞、不同 namespace 最多 4 个并行、相同 key 折叠、可运行项前台 FIFO 优先)、缺 sender IK 有界同步 bootstrap、永久页内 Gap、坏密文推进 → [03-核心概念](03-核心概念.md)、[05-E2EE加密通信](05-E2EE加密通信.md)、[08-最佳实践](08-最佳实践.md)
|
|
100
|
+
- P2P device 定向发送、TTL volatile 消息、双游标/ACK、Forward/History/Piggy ACK → [09-message-rpc-manual](09-message-rpc-manual.md)
|
|
101
|
+
- 跨设备 `read/read_state/read_changed`、单条/显式空值、回执与汇总、scope/owner 绑定、晚到位置回填、Group canonical/权限版本及混合域部分提交 → [09-message-rpc-manual](09-message-rpc-manual.md)、[09-group-rpc-manual](09-group-rpc-manual.md)
|
|
102
|
+
- Group 成员 block/status、暂停群权限、两阶段群主转让、Forward/History、`group.index`、Group FS MIME/Content-Type 和角色 ACL → [09-group-rpc-manual](09-group-rpc-manual.md)
|
|
74
103
|
- 下一版群文件系统 `group.fs.*`、`client.group.fs.*`、`aun group fs`、`cp/mv` POSIX 化语义和 JS string 差异 → [group.fs POSIX 化详细设计](../aun-fs/group-fs/group.fs-POSIX化详细设计.md)、[分阶段实施计划](../aun-fs/group-fs/group.fs-POSIX化分阶段实施计划.md)
|
|
75
|
-
- Storage 架构、SDK VFS、控制面/数据面分离、下载 ticket / AID Bearer 边界、类 Linux 权限和 mount/symlink → [AUN Storage架构设计](<../aun-fs/AUN Storage架构设计.md>)
|
|
76
|
-
- Storage RPC、实际字节 MIME 识别、三阶段 Content-Type 一致性与 OSS 403、`storage.fs.*` / ACL / token、`relation_backup_*` → [09-storage-rpc-manual](09-storage-rpc-manual.md)、[../protocol/11-Storage-子协议.md](../protocol/11-Storage-子协议.md)
|
|
104
|
+
- Storage 架构、SDK VFS、控制面/数据面分离、下载 ticket / AID Bearer 边界、类 Linux 权限和 mount/symlink → [AUN Storage架构设计](<../aun-fs/AUN Storage架构设计.md>)
|
|
105
|
+
- Storage RPC、实际字节 MIME 识别、三阶段 Content-Type 一致性与 OSS 403、`storage.fs.*` / ACL / token、`relation_backup_*` → [09-storage-rpc-manual](09-storage-rpc-manual.md)、[../protocol/11-Storage-子协议.md](../protocol/11-Storage-子协议.md)
|
|
77
106
|
- Collab RPC(`collab.*` 版本化文档、乐观锁、标签、GC、reflog、revert)→ [09-collab-rpc-manual](09-collab-rpc-manual.md)
|
|
78
107
|
- Meta RPC → [09-meta-rpc-manual](09-meta-rpc-manual.md)
|
|
79
108
|
- Stream RPC → [09-stream-rpc-manual](09-stream-rpc-manual.md)
|
|
@@ -82,9 +111,9 @@
|
|
|
82
111
|
|
|
83
112
|
### 错误与测试
|
|
84
113
|
|
|
85
|
-
- Result、Python `ErrorInfo.cause` 与异常层级 → [07-错误处理](07-错误处理.md)
|
|
114
|
+
- Result、Python `ErrorInfo.cause` 与异常层级 → [07-错误处理](07-错误处理.md)
|
|
86
115
|
- 重试策略 → [07-错误处理](07-错误处理.md)
|
|
87
|
-
- 幂等连接、多 AID、资源清理 → [08-最佳实践](08-最佳实践.md)
|
|
116
|
+
- 幂等连接、多 AID、资源清理 → [08-最佳实践](08-最佳实践.md)
|
|
88
117
|
- 集成 / E2E 运行顺序 → [../aun测试运行指南.md](../aun测试运行指南.md);分布式 worktree 测试 → [../aun分布式测试运行指南.md](../aun分布式测试运行指南.md)
|
|
89
118
|
|
|
90
119
|
---
|
|
@@ -93,7 +122,7 @@
|
|
|
93
122
|
|
|
94
123
|
### CHANGELOG-0.5.6
|
|
95
124
|
|
|
96
|
-
以 0.5.5 发布提交为基线,汇总四个 SDK 的首次签名者证书回源、`group.index` / indexed settings / `agent.md` 下载提交前校验、可信缓存读取、消息窗口、inline realtime、mention mode、显式 change-seed,以及 Python、Go、TS 和浏览器 JS 的能力边界。
|
|
125
|
+
以 0.5.5 发布提交为基线,汇总四个 SDK 的首次签名者证书回源、`group.index` / indexed settings / `agent.md` 下载提交前校验、可信缓存读取、消息窗口、inline realtime、mention mode、显式 change-seed,以及 Python、Go、TS 和浏览器 JS 的能力边界。
|
|
97
126
|
|
|
98
127
|
### 01-快速开始
|
|
99
128
|
|
|
@@ -101,39 +130,81 @@
|
|
|
101
130
|
|
|
102
131
|
### 02-WebSocket协议
|
|
103
132
|
|
|
104
|
-
说明 Gateway WebSocket 握手、Capabilities 能力声明(含 `inline_realtime_payload_v1` 实时推送优化)、JSON-RPC 请求/响应/通知格式,以及裸 WebSocket 客户端如何借助 SDK 完成 token 获取。
|
|
133
|
+
说明 Gateway WebSocket 握手、Capabilities 能力声明(含 `inline_realtime_payload_v1` 实时推送优化)、JSON-RPC 请求/响应/通知格式,以及裸 WebSocket 客户端如何借助 SDK 完成 token 获取。
|
|
105
134
|
|
|
106
135
|
### 03-核心概念
|
|
107
136
|
|
|
108
|
-
解释 AID 身份、三主体职责、device_id / slot_id 隔离键、A/T/H 实时消息窗口、每个 AUNClient 一个 Pull Gate、九态状态机、默认 E2EE 行为和 RPC/事件模型。
|
|
137
|
+
解释 AID 身份、三主体职责、device_id / slot_id 隔离键、A/T/H 实时消息窗口、每个 AUNClient 一个 Pull Gate、九态状态机、默认 E2EE 行为和 RPC/事件模型。
|
|
109
138
|
|
|
110
139
|
### 04-连接与认证
|
|
111
140
|
|
|
112
|
-
描述 `AIDStore`
|
|
141
|
+
描述 `AIDStore` 注册加载、自有身份 resolve 本地草稿/缓存优先、`AUNClient` 身份加载、显式认证、当前 access token getter、连接选项、Python `connect()` 的 Push 自动登记、长短连接共存、网关发现、已读状态本地补偿完成事件、agent.md 上传/下载/检查,以及连接后从 Gateway `_meta.agent_md_etags` 和信封 `agent_md` 自动观察远端版本。
|
|
142
|
+
|
|
143
|
+
### Ownership 2.1 当前契约与复审
|
|
144
|
+
|
|
145
|
+
当前普通 Ownership 关系仅由 NS 当前 `agent.md` 与 owner Storage 当前 `owner.md` 确认,owner 锁与响应 Header 只投影本次校验结果;release 保持被释放的版本 v,sub 清理后版本投影为 0、再次绑定默认 1。普通 agent 注册 owner 可选。新服务端保留旧 SDK owner 注册、绑定、转移、查询和解绑 RPC 及隔离 Auth JSONL,仅激活旧 NS ownership_proof,不写 2.1 双文件,不授 2.1 lock/version/consensus,不覆盖已存现代声明。owner.md 通过 create_upload_session→HTTP PUT→complete_upload 的同一会话发布,既有 expected_version 作发布 CAS;object_id/version 不作为读取一致性或共识条件。六份协议/SDK 文档还定义七 Facade 与实体专属 owner 名片;实体 pending 保留完整多签原文、固定 owner/实体代际与原 CAS,由应用显式重试,不再要求额外 V2 上传授权。无控制消息的释放清理按精确本人历史同意恢复,保持 completed 历史;当前证书严格绑定 OCSP issuer,整体 30 秒包含首次 GET。各端差异按协议逐项裁决,TS 是接线参考;历轮修复与更正保留在审查报告第十二、十三节,2026-10-15 的旧 wire、可选注册、会话/版本、Storage 持久化、Auth 撤权和当前验证见 [审查报告第十五节](../audit/Ownership2.1代码审查报告.md#十五2026-10-15-追加审查兼容裁决与修复验收)。
|
|
146
|
+
|
|
147
|
+
### 凭证与组织服务 SDK 应用集成指南
|
|
148
|
+
|
|
149
|
+
面向应用开发者说明 0.5.19 的 Credential/Org service-plane 边界、CAP 完整 Verify、Credential 请求绑定、受保护读取、首次入组 admission、组织创建与两阶段转让恢复、解散证书失效清理;列出四端实际入口及状态未知和 `NOT_IMPLEMENTED` 的 fail-closed 边界。
|
|
150
|
+
|
|
151
|
+
### 凭证与组织服务 SDK 开发与移植指南
|
|
152
|
+
|
|
153
|
+
面向其它语言 SDK 开发者冻结两类 canonical JSON、P-256/DER 签名、CAP 深度和安全声明、父链强状态 proof、Org admission 与 Credential 请求绑定、四端 facade/RPC、创建/转让 checkpoint、解散清理、事件去重和共享测试向量。
|
|
154
|
+
|
|
155
|
+
### 凭证服务 RPC 手册
|
|
156
|
+
|
|
157
|
+
按 Credential Service dispatcher 记录 health/status、register、revoke、revocationList 的参数、响应和授权边界,并区分本地 SDK helper 与服务端 RPC。
|
|
158
|
+
|
|
159
|
+
### 组织服务 RPC 手册
|
|
160
|
+
|
|
161
|
+
按 Org Service dispatcher 记录生命周期、成员、凭证查询、审计和授权 RPC,并标明受限内部方法及返回 `NOT_IMPLEMENTED` 的保留方法。
|
|
162
|
+
|
|
163
|
+
### Ownership管理专题
|
|
164
|
+
|
|
165
|
+
以下旧 Ownership 专题、集成/实现指南与协议条目均为 legacy;当前 2.1 不使用旧 proof/escrow,Group/Org 的专属 owner 名片也不采用旧目标 identity 代签规则。
|
|
166
|
+
|
|
167
|
+
按当前四端 SDK、CA、Name Service 和 Storage 实现说明 `ownership.request` 应用层 accept/reject、双方签署后立即发布 proof、独立托管与代上传、identity 的文件/IndexedDB 持久化位置、完整 P2P payload、agent.md 与 metadata 恢复、服务端 active signing 校验、下载端验签和实现边界。
|
|
168
|
+
|
|
169
|
+
### Ownership SDK集成指南
|
|
170
|
+
|
|
171
|
+
先以 TypeScript 应用示例完成身份加载、事件审批、双向绑定、状态查询与解绑,再用时序图说明 SDK 的 proof、identity 托管、owner 代上传、名片同步和中断恢复。
|
|
172
|
+
|
|
173
|
+
### Ownership SDK实现指南
|
|
174
|
+
|
|
175
|
+
面向其它语言 SDK 的实现者与移植者,对照四端代码说明公开契约、控制消息拦截、密码学原语、self-owner、escrow、metadata、rekey 和 agent.md 待上传恢复,并索引现有验收用例。
|
|
176
|
+
|
|
177
|
+
### Ownership协议定义
|
|
178
|
+
|
|
179
|
+
定义 `aun.ownership.v1` 的公共字段和六类 action、v2 独立声明及签名封套、ownership release、agent.md frontmatter、identity escrow、owner 上传授权头,以及 Message、Storage、Name Service、Auth/CA 的现有接口边界。
|
|
113
180
|
|
|
114
181
|
### 05-E2EE加密通信
|
|
115
182
|
|
|
116
183
|
覆盖默认加密发送、接收自动解密、E2EE V2 多设备 wrap、ProtectedHeaders、agent.md 版本提示与 E2EE 安全边界、`sender_signature` / AAD / recipient proof、群 E2EE 和高级存储扩展边界。
|
|
117
184
|
|
|
185
|
+
### ProtectedHeaders用法专题
|
|
186
|
+
|
|
187
|
+
按当前 Python、TypeScript、JavaScript、Go 实现说明 `protected_headers` 的实例级/单次调用 API、`headers` 兼容别名、E2EE V2 元数据 HMAC、自动字段、解密失败边界和裸 RPC 限制。
|
|
188
|
+
|
|
118
189
|
### 06-API手册
|
|
119
190
|
|
|
120
|
-
列出 AIDStore
|
|
191
|
+
列出 AIDStore(含四端可选附签入口)、AID、AUNClient(含四 SDK 当前 access token getter)、Ownership 2.1 七 Facade、Credential/Org 专题入口、Python PushFacade、P2P TTL volatile 消息、Message/Group History 与已读门面、已读变更及本地补偿完成事件、agent.md、ServiceProxyClient、E2EE 高级 API、Group Index facade 和 RPC 手册索引。
|
|
121
192
|
|
|
122
193
|
### 07-错误处理
|
|
123
194
|
|
|
124
|
-
说明 Result 字典、Python 本地原始异常 `ErrorInfo.cause`、AUNError 异常层级、错误码映射、重试策略、`group.index etag conflict` CAS 冲突处理和常见错误场景。
|
|
195
|
+
说明 Result 字典、Python 本地原始异常 `ErrorInfo.cause`、AUNError 异常层级、错误码映射、重试策略、`group.index etag conflict` CAS 冲突处理和常见错误场景。
|
|
125
196
|
|
|
126
197
|
### 08-最佳实践
|
|
127
198
|
|
|
128
|
-
给出幂等加载身份、连接、关闭、多 AID 管理、Flow Control、A/T/H 实时同步、History 翻页、Piggy ACK、Group Index 更新和测试数据保护建议;每个 AUNClient 的 Pull Gate
|
|
199
|
+
给出幂等加载身份、连接、关闭、多 AID 管理、Flow Control、A/T/H 实时同步、History 翻页、Piggy ACK、Group Index 更新和测试数据保护建议;每个 AUNClient 的 Pull Gate 同 namespace 单飞、客户端最多 4 个不同 namespace 并行;末页独立 ACK,不为提交 ACK 额外 Pull。
|
|
129
200
|
|
|
130
201
|
### 09-*-rpc-manual
|
|
131
202
|
|
|
132
|
-
各业务服务的 RPC 参数、响应和错误语义。Message RPC 覆盖 device 定向发送、TTL volatile 双游标/ACK;Group RPC 覆盖成员 block/status、暂停群权限、两阶段群主转让、Group Event 独立游标和 Group FS MIME/Content-Type;Storage RPC 覆盖实际字节 MIME 识别、session/PUT/complete Content-Type 一致性和 OSS 403
|
|
203
|
+
各业务服务的 RPC 参数、响应和错误语义。Message RPC 覆盖 device 定向发送、TTL volatile 双游标/ACK;Group RPC 覆盖成员 block/status、暂停群权限、两阶段群主转让、Group Event 独立游标和 Group FS MIME/Content-Type;Storage RPC 覆盖实际字节 MIME 识别、session/PUT/complete Content-Type 一致性和 OSS 403;Credential/Org RPC 手册覆盖服务端实际注册方法、受保护请求、内部接口和未实现占位。Message/Group 另定义顶层单条与显式空值、共享已读汇总、设备映射、晚到位置回填、精确整数及 scope/owner 绑定;Group 包含 canonical ID、跨实例权限版本、混合域逐域提交/幂等重试和全量查询。
|
|
133
204
|
|
|
134
205
|
### AUN Storage架构设计
|
|
135
206
|
|
|
136
|
-
定义 AUN Storage 的 SDK VFS、low-level storage client、Storage Service、Storage Core、Metadata Engine 和 Blob Backend 分层。文档明确主数据流量直连 backend、控制面走 `storage.*` RPC,底层 session/ticket/complete RPC 继续保留,但普通应用通过 SDK VFS 获得类 POSIX 文件操作语义;同时定义下载 ticket 与 AID Bearer 的凭据边界、跨 issuer 下载和当前 token getter 用法、类 Linux mode/ACL、目录 `x` 位、mount/unmount、symlink/readlink/lstat、share link 与 direct backend ticket 的授权边界,并给出上传、下载、rename/move、delete/GC、路径解析和鉴权的 Mermaid 时序图。
|
|
207
|
+
定义 AUN Storage 的 SDK VFS、low-level storage client、Storage Service、Storage Core、Metadata Engine 和 Blob Backend 分层。文档明确主数据流量直连 backend、控制面走 `storage.*` RPC,底层 session/ticket/complete RPC 继续保留,但普通应用通过 SDK VFS 获得类 POSIX 文件操作语义;同时定义下载 ticket 与 AID Bearer 的凭据边界、跨 issuer 下载和当前 token getter 用法、类 Linux mode/ACL、目录 `x` 位、mount/unmount、symlink/readlink/lstat、share link 与 direct backend ticket 的授权边界,并给出上传、下载、rename/move、delete/GC、路径解析和鉴权的 Mermaid 时序图。
|
|
137
208
|
|
|
138
209
|
### 09-collab-rpc-manual
|
|
139
210
|
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# Ownership SDK实现指南
|
|
2
|
+
|
|
3
|
+
本文是 legacy 实现与移植记录,依据 2026-10-09 工作区中的四 SDK,不代表当前 Ownership 2.1。当前文件、持久任务、P2P 与恢复契约见 [Ownership 2.1 SDK 开发与移植指南](Ownership2.1-SDK开发与移植指南.md);下文旧 proof、自动 escrow、代签和代上传流程不能作为 2.1 实现依据。
|
|
4
|
+
|
|
5
|
+
## 1. 实现边界与参考代码
|
|
6
|
+
|
|
7
|
+
ownership在SDK中编排。复用已有AID签名、证书解析、加密P2P、Storage和agent.md能力,关系记录保存到本端metadata。Message/Gateway承载消息,Storage承载加密identity,Name Service验证并保存名片,Auth/CA承担既有身份认证和rekey。
|
|
8
|
+
|
|
9
|
+
| 责任 | TypeScript | Python | Go | JavaScript浏览器 |
|
|
10
|
+
| --- | --- | --- | --- | --- |
|
|
11
|
+
| 绑定、审批、释放、恢复及消息拦截 | [client.ts](../../ts/src/client.ts) | [client.py](../../python/src/aun_core/client.py) | [ownership_client.go](../../go/ownership_client.go) | [client.ts](../../js/src/client.ts) |
|
|
12
|
+
| 声明、proof与密码学验证 | [ownership-proof.ts](../../ts/src/ownership-proof.ts) | [ownership.py](../../python/src/aun_core/ownership.py) | [ownership_proof.go](../../go/ownership_proof.go) | [ownership-proof.ts](../../js/src/ownership-proof.ts) |
|
|
13
|
+
| P2P消息与escrow封套 | 同上 | [ownership_protocol.py](../../python/src/aun_core/ownership_protocol.py) | [ownership_protocol.go](../../go/ownership_protocol.go),加密在proof文件中 | 同上 |
|
|
14
|
+
| 名片更新、授权、下载验签及待上传恢复 | [agent-md.ts](../../ts/src/agent-md.ts) | [agent_md.py](../../python/src/aun_core/agent_md.py) | [agent_md_manager.go](../../go/agent_md_manager.go) | [agent-md.ts](../../js/src/agent-md.ts) |
|
|
15
|
+
| identity导入、rekey及本地存储 | [aid-store.ts](../../ts/src/aid-store.ts) | [aid_store.py](../../python/src/aun_core/aid_store.py) | [aid_store.go](../../go/aid_store.go) | [aid-store.ts](../../js/src/aid-store.ts) |
|
|
16
|
+
|
|
17
|
+
移植时对齐协议字节和可观察行为。各语言可使用自己的任务、锁与存储实现;服务模块之间仍通过协议协作。
|
|
18
|
+
|
|
19
|
+
## 2. 先对齐SDK公开契约
|
|
20
|
+
|
|
21
|
+
| 能力 | TypeScript / JavaScript | Python | Go |
|
|
22
|
+
| --- | --- | --- | --- |
|
|
23
|
+
| owner发起 | `bindAid(subjectAid, options?)` | `bind_aid(subject_aid, subject_type=..., extensions=..., request_id=...)` | `BindAID(ctx, subjectAID, options...)` |
|
|
24
|
+
| subject发起 | `bindOwner(ownerAid, options?)` | `bind_owner(owner_aid, ...)` | `BindOwner(ctx, ownerAID, options...)` |
|
|
25
|
+
| 接受申请 | `acceptOwnershipRequest(requestId, { extensions }?)` | `accept_ownership_request(request_id, extensions=...)` | `AcceptOwnershipRequest(ctx, requestID, extensions...)` |
|
|
26
|
+
| 拒绝申请 | `rejectOwnershipRequest(requestId)` | `reject_ownership_request(request_id)` | `RejectOwnershipRequest(ctx, requestID)` |
|
|
27
|
+
| 原owner释放 | `releaseOwnership(subjectAid)` | `release_ownership(subject_aid)` | `ReleaseOwnership(ctx, subjectAID)` |
|
|
28
|
+
| 本地查询 | `getType()` / `getOwner()` / `getOwnershipStatus()` | `get_type()` / `get_owner()` / `get_ownership_status()` | `GetType()` / `GetOwner()` / `GetOwnershipStatus()` |
|
|
29
|
+
|
|
30
|
+
TS/JS绑定选项为`subjectType`、`extensions`、`requestId`;Go使用`OwnershipBindOptions{SubjectType, Extensions, RequestID}`。Python已有对应camelCase别名,Go另有`BindAid`别名。语言原生异步形式与错误返回形式沿用各端既有契约;查询方法读取本地状态。
|
|
31
|
+
|
|
32
|
+
发起方签署自己的`extensions`,接受方通过接受API提供自己的扩展。只要求双方声明指向同一关系,不要求扩展相同。`subject_type`保存在关系记录中;名片更新保留已有业务字段,不能把该选项实现成强制重写名片类型。
|
|
33
|
+
|
|
34
|
+
`bindAid`、外部`bindOwner`及`releaseOwnership`返回发送结果。接受申请可能继续发送`escrow.ready`,返回结果不能统一解释为“关系、托管、名片已全部完成”。每次显式绑定调用生成新的UUIDv4 proof;断点恢复复用已经保存的proof。
|
|
35
|
+
|
|
36
|
+
## 3. 实现声明与验证原语
|
|
37
|
+
|
|
38
|
+
按以下顺序完成独立原语,再接入客户端编排:
|
|
39
|
+
|
|
40
|
+
1. 规范化AID、验证小写UUIDv4 `proof_id`,构造带角色和正整数`signed_at`的v2独立声明。
|
|
41
|
+
2. 实现canonical JSON及域分隔签名,输出证书DER指纹、严格Base64的DER ECDSA签名和原始statement。
|
|
42
|
+
3. 校验proof结构,逐份核对关系、角色、签署者、证书指纹及签署时间;只要已出现签名,就要验证。
|
|
43
|
+
4. 分别输出文件验签状态与ownership状态:`unbound`、`incomplete`、`complete`、`released`、`invalid`。
|
|
44
|
+
5. 实现release statement和escrow加解密,使用独立的release域前缀及固定的escrow AAD。
|
|
45
|
+
|
|
46
|
+
关系签名输入为:
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
UTF-8("AUN-AID-OWNER-RELATION-V1;") || canonical_json(statement)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
prefix末尾的可见分号属于签名输入;声明版本为2时仍使用此prefix。对键递归排序、UTF-8、数字和转义输出进行字节比对;直接使用语言默认JSON或YAML输出可能得到不同签名字节。空`extensions`由当前生成器省略,应保存实际签署的statement以便重试。
|
|
53
|
+
|
|
54
|
+
证书信任与密码学验签分别落实:按AID及精确指纹查证书,经既有链验证能力建立信任,再验证CN、指纹、签名及相应签署时间。下载历史名片按尾部`timestamp`及各声明`signed_at`解析历史证书;当前登录和服务端上传继续遵循active signing规则。纯签名helper不能替代完整的证书解析与信任验证流程。
|
|
55
|
+
|
|
56
|
+
当前代码保留v1三字段声明的构造与部分解析。现行关系验证要求v2声明及`signed_at`,不要把旧构造向量通过解释为旧关系能通过现行验签。
|
|
57
|
+
|
|
58
|
+
## 4. 将拦截器接到统一接收路径
|
|
59
|
+
|
|
60
|
+
拦截位置是消息完成E2EE解密、即将发布应用`message.received`之间。实时push、离线pull、重连补拉应经过同一个入口。TypeScript参考`_publishAppEvent()`调用`_handleOwnershipMessage()`;Go参考`HandleOwnershipMessage()`。
|
|
61
|
+
|
|
62
|
+
| 接收到的内容 | 处理要求 |
|
|
63
|
+
| --- | --- |
|
|
64
|
+
| 非`aun.ownership.v1` | 沿原消息路径投递应用 |
|
|
65
|
+
| ownership控制消息 | 由SDK消费;验证失败、未知action或处理失败也不转成普通消息 |
|
|
66
|
+
| 有效`bind.request` | 保存申请方签名及待审批标记,再发布本地`ownership.request` |
|
|
67
|
+
| 有效`bind.response` | 合并对端签名;签名齐全时进入active,subject推进名片发布与托管 |
|
|
68
|
+
| `bind.reject` | 核对sender、请求ID和proof后记录rejected |
|
|
69
|
+
| `escrow.ready` | owner核对active关系,下载、导入identity并代上传 |
|
|
70
|
+
| `agent_md.updated` | subject下载、分别验签并同步名片 |
|
|
71
|
+
| `release.request` | subject验证原owner及当前关系证据,持久化释放任务后启动恢复 |
|
|
72
|
+
|
|
73
|
+
普通后续消息必须关联本地同一`request_id`、`proof_id`与双方AID,待审批或rejected记录不能被后续消息推进。release使用独立请求ID,并匹配原关系proof;即使本地关系metadata缺失,也须从本地名片取得同一完整有效proof后才能处理。
|
|
74
|
+
|
|
75
|
+
SDK自产消息总有sender与独立签名封套。当前TS绑定接收实现对缺少sender字段的内部消息对象存在兼容分支;真实消息接收应传入已有消息层确认的`from_aid`/`from`,不能只由payload决定来源。所有控制发送走加密P2P,沿用持久消息默认值,不设置volatile TTL。
|
|
76
|
+
|
|
77
|
+
## 5. 编排双向绑定与self-owner
|
|
78
|
+
|
|
79
|
+
owner发起:保存owner单签pending记录,发送`bind.request`;subject持久化待审批申请;subject应用接受时签署自己的声明,保存完整proof并标记active,再发送`bind.response`。subject立即发布完整proof名片,不等待identity托管;发起方收到有效响应后合并并标记active。
|
|
80
|
+
|
|
81
|
+
subject发起:保存subject单签pending记录,先尝试发布不完整proof名片,再发送`bind.request`;owner应用接受后签署owner声明并回复;subject验证响应后发布完整proof名片并托管identity。
|
|
82
|
+
|
|
83
|
+
完整proof发布和托管分别尝试、分别持久化进度。名片发布失败时保留已签署的pending内容,仍启动托管;托管失败不回退active关系或撤销公开proof。
|
|
84
|
+
|
|
85
|
+
接受/拒绝API只操作待审批申请。拒绝只发送`bind.reject`并记录rejected;当前实现不自动回滚已发布的subject单方名片。名片中不完整声明保持`incomplete`,不授予owner代上传权限。
|
|
86
|
+
|
|
87
|
+
self-owner在本地生成`role: subject`的单签proof,省略`owner_signature`,标记active并自行上传名片。它没有绑定消息、外部审批或escrow。
|
|
88
|
+
|
|
89
|
+
## 6. identity托管与owner代上传
|
|
90
|
+
|
|
91
|
+
subject将当前identity打包为UTF-8 JSON,使用协议固定AES-256-GCM封套加密,写入自己的`default` bucket:`/.aun/ownership/<subject_aid>/<proof_id>.json`。然后向owner写入该路径的`r` ACL,申请含`viewer_aid: owner_aid`的下载票据,通过加密`escrow.ready`发送下载地址、密码和明文摘要。
|
|
92
|
+
|
|
93
|
+
下载地址沿用Storage约定,优先取票据的`logical_url`,其次`download_url`、`url`。`logical_url`使用服务配置的对外数据面入口,可避免公开AID地址重定向后丢失认证头;测试网络也必须能解析该服务域名。
|
|
94
|
+
|
|
95
|
+
owner处理顺序:下载封套 → 解密和校验明文摘要 → 校验包内AID、证书CN和公私钥匹配 → 导入既有身份存储 → 使用subject signer代签名片。当前代码复用名为`importGroupIdentity`/`import_group_identity`的通用导入能力,该名称不意味着托管对象必须是group。
|
|
96
|
+
|
|
97
|
+
| 运行环境 | 已有存储约定 | 恢复方式 |
|
|
98
|
+
| --- | --- | --- |
|
|
99
|
+
| TS / Python / Go文件型SDK | `{aunPath}/AIDs/{subjectAid}/private/key.json`及`public/cert.pem` | 私钥沿用本地seed加密;重启后用同一store加载subject |
|
|
100
|
+
| JS浏览器 | IndexedDB `aun-keystore`中的`key_pairs`、`certs` | 沿用`IndexedDBIdentityStore`及其seed配置 |
|
|
101
|
+
|
|
102
|
+
关系metadata保存proof和进度,运行时`subject_identity`仅作缓存。`subject_identity`、`escrow_password`、`escrow_download_url`排除在公开摘要和顶层持久化关系字段之外。密码/地址丢失后,通过重发绑定响应、重新生成escrow通知恢复;owner已经导入的私钥从身份存储恢复。
|
|
103
|
+
|
|
104
|
+
当前metadata保存完整`pending_message`用于发送重试;不要把整个内部记录视为通用的秘密过滤器。移植时沿用控制消息与托管通知的实际持久化边界,公开日志或状态不得透出identity与密码。
|
|
105
|
+
|
|
106
|
+
agent.md发布同时复用`AgentMdManager`的待上传机制:持久化已经签署的完整内容及ETag;重试前以远端HEAD核对ETag,已经写入则完成本地状态,否则重发保存的签名版本。重试时重新签文件会改变内容与ETag,破坏这项判断。
|
|
107
|
+
|
|
108
|
+
owner代上传保持两种身份:subject私钥签文件,owner私钥签`X-AUN-AgentMD-Owner-Authorization`。授权绑定目标、上传者、完整HTTP正文摘要、时间戳和nonce。跨issuer下载使用资源域票据;同issuer可使用当前token getter,避免将本域JWT发给外域Storage。
|
|
109
|
+
|
|
110
|
+
## 7. metadata与恢复顺序
|
|
111
|
+
|
|
112
|
+
各端使用`ownership_records`,关系键为`<lowercase_subject_aid>|<lowercase_owner_aid>`。状态是本地编排信息,协议不要求服务端建立同样的状态表。
|
|
113
|
+
|
|
114
|
+
| 字段 | 保存内容与用途 |
|
|
115
|
+
| --- | --- |
|
|
116
|
+
| `subject_aid`、`owner_aid`、`type`、`request_id`、`proof_id` | 关系定位与当前请求关联 |
|
|
117
|
+
| `subject_statement/signature`、`owner_statement/signature` | 原始签署内容与完整关系证据 |
|
|
118
|
+
| `status` | `pending`、`active`、`rejected`、`release_pending`、`released`;无记录查询为`legacy_unbound` |
|
|
119
|
+
| `ownership_request_pending` | 等待应用确认;重连后再次发布请求事件 |
|
|
120
|
+
| `pending_message` | 待发送的绑定申请、响应、拒绝或release控制消息 |
|
|
121
|
+
| `subject_proof_published`、`agent_md_uploaded` | subject完整proof发布与本端上传进度 |
|
|
122
|
+
| `agent_md_notified`、`agent_md_synced` | owner更新通知与subject同步进度 |
|
|
123
|
+
| `ownership_release`、`release_request_id`、`release_old_fingerprint` | 已签署释放声明、释放请求及旧身份定位 |
|
|
124
|
+
| `release_status` | owner侧`notified`;subject侧`pending_rekey`、`pending_agent_md`、`pending_upload`、`released` |
|
|
125
|
+
| `release_local_content`、`release_agent_md_payload`、`last_error` | 解绑名片基底、待构造/上传内容和最近恢复错误 |
|
|
126
|
+
|
|
127
|
+
具体文件布局和内部字段可按语言存储适配;对外的P2P字段必须保持协议名称。
|
|
128
|
+
|
|
129
|
+
```mermaid
|
|
130
|
+
flowchart TD
|
|
131
|
+
A[加载AID与ownership metadata] --> B{存在待释放阶段}
|
|
132
|
+
B -->|是| C[连接前恢复pending rekey并载入新身份]
|
|
133
|
+
C --> D[连接后优先推进解绑名片与上传]
|
|
134
|
+
B -->|否| E[连接及既有身份准入检查]
|
|
135
|
+
E --> F[恢复registration intent]
|
|
136
|
+
F --> G[重发pending_message]
|
|
137
|
+
G --> H[重发待审批事件,或推进active关系]
|
|
138
|
+
H --> I[subject重试名片与escrow]
|
|
139
|
+
H --> J[owner加载已导入identity,或重发绑定响应]
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
TypeScript参考`_recoverOwnershipRekeyBeforeConnect()`、`_resumeOwnershipAfterConnect()`、`_resumeOwnership()`及`_sendOwnershipControl()`。发送前保存pending消息,发送成功后清除;恢复时继续原请求,不重新调用绑定API生成新proof。异步恢复失败保留记录,供之后的连接恢复继续。
|
|
143
|
+
|
|
144
|
+
## 8. 解绑实现顺序
|
|
145
|
+
|
|
146
|
+
1. 原owner从active记录读取原`proof_id`,签署release,持久化并发送`release.request`。self-owner没有外部owner释放入口。
|
|
147
|
+
2. subject核对sender、release与原关系证据,先持久化`pending_rekey`、旧证书指纹和本地名片快照,再调度任务。
|
|
148
|
+
3. rekey前保存新密钥的pending identity。恢复时先查远端证书是否已经对应pending公钥,再决定继续轮转,复用`AIDStore.rekey()`的现有恢复能力。
|
|
149
|
+
4. rekey完成后载入新AID,必要时断开旧连接并重新认证,进入`pending_agent_md`。
|
|
150
|
+
5. 下载远端名片;已经存在同一有效release则收敛完成;否则要求远端仍是待释放的完整关系。
|
|
151
|
+
6. 比较本地与远端尾部签名时间,较新者作为基底,同时间优先远端。移除owner/proof,保留其它frontmatter及正文,加入release并保存`pending_upload`。
|
|
152
|
+
7. 用新subject证书签名并走既有pending上传机制。上传成功后subject的`status`及`release_status`均为`released`。
|
|
153
|
+
|
|
154
|
+
针对同一关系避免并发启动多个rekey任务。owner仅记录`notified`,现行协议没有release完成响应;不要推导owner一定会自动变为released。Name Service依据已保存名片匹配原关系,普通上传不能直接清空或替换owner。
|
|
155
|
+
|
|
156
|
+
## 9. 移植验证入口与验收点
|
|
157
|
+
|
|
158
|
+
| 验证层次 | 现有入口 | 需要核对的行为 |
|
|
159
|
+
| --- | --- | --- |
|
|
160
|
+
| 原语与Schema | [TS proof单元测试](../../ts/tests/unit/ownership-proof.test.ts)、[Python proof测试](../../python/tests/test_ownership_proof.py)、[Go proof测试](../../go/ownership_proof_test.go)、[JS proof测试](../../js/tests/unit/ownership-proof.test.ts) | canonical字节、独立扩展、signed_at、self-owner、非法/不完整proof和已移除摘要字段 |
|
|
161
|
+
| 编排与持久化 | [TS客户端测试](../../ts/tests/unit/client-agent-md-api.test.ts)、[Go客户端测试](../../go/ownership_client_test.go) | 申请审批、过期响应、消息拦截、identity导入、发送恢复、pending上传及release证据 |
|
|
162
|
+
| 跨SDK基础向量 | [Python conformance](../../python/tests/conformance/test_ownership_proof_cross_sdk.py) | 规范AID及旧三字段构造向量;现行v2与互验还需对照各端proof测试 |
|
|
163
|
+
| 单域端到端 | [Python ownership E2E](../../python/tests/e2e_test_ownership.py) | 双向绑定、托管故障后恢复、名片同步、解绑rekey、上传中断后重启恢复及旧owner上传被拒绝 |
|
|
164
|
+
| 跨语言端到端 | [cross-SDK用例集](../../tests/cross-sdk/cases.single-domain.json) | owner发起Python→TS、subject发起Go→JS |
|
|
165
|
+
| 跨域端到端 | [双域ownership测试](../../../docker-deploy/federation-test/tests/cross_domain_ownership.py) | 双域路由、资源域票据、owner授权与历史关系验签 |
|
|
166
|
+
|
|
167
|
+
移植时先验证原语,再验证单端编排,最后覆盖单域、跨SDK和双域链路。按仓库测试指南采用失败处停止和断点续跑;Kite/Docker环境按既有运行要求由使用者准备。以上为验收入口,本指南不将列举的用例等同于已通过的运行结果。
|
|
168
|
+
|
|
169
|
+
服务端校验对照:[Name Service上传处理](../../../extensions/services/nameservice/go/internal/httpserver/agentmd.go)、[Name Service Schema](../../../extensions/services/nameservice/go/internal/httpserver/agent_md_schema.go)。本实现的ownership字段见[Ownership协议定义](../protocol/Ownership协议定义.md);工作区的[agent.md Schema](../agent.md/SCHEMA.md)目前采用另一套Ownership 2.0声明契约,不能直接作为本协议的proof/escrow验收依据。
|