@agentunion/fastaun 0.5.34 → 0.5.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +56 -1
- package/_packed_docs/CHANGELOG.md +56 -1
- package/_packed_docs/INDEX.md +18 -11
- package/_packed_docs/KITE_DOCS_GUIDE.md +9 -9
- package/_packed_docs/agent.md/SCHEMA.md +1 -1
- package/_packed_docs/aun/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md +2 -2
- package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2112.1.md +17 -17
- package/_packed_docs/protocol/echo-probe-gateway.md +99 -0
- package/_packed_docs/protocol/echo-probe-sdk.md +91 -0
- package/_packed_docs/sdk/0.5.35-SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +189 -0
- package/_packed_docs/sdk/0.5.35-SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +204 -0
- package/_packed_docs/sdk/0.5.36-SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +130 -0
- package/_packed_docs/sdk/0.5.36-SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +176 -0
- package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +2 -2
- package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +32 -6
- package/_packed_docs/sdk/09-group-rpc-manual.md +7 -7
- package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +13 -13
- package/_packed_docs/sdk/AUN/344/272/213/344/273/266/345/217/221/345/270/203/350/256/242/351/230/205/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +73 -3
- package/_packed_docs/sdk/AUN/344/272/213/344/273/266/345/217/221/345/270/203/350/256/242/351/230/205/345/274/200/345/217/221/347/247/273/346/244/215/346/214/207/345/215/227.md +50 -8
- package/_packed_docs/sdk/INDEX.md +23 -18
- package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/2272.1.md +1 -1
- 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 +5 -5
- 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 +5 -5
- package/_packed_docs/sdk/Ownership2.1/350/257/246/347/273/206/350/256/276/350/256/241.md +9 -9
- package/_packed_docs//346/266/210/346/201/257/345/274/271/346/200/247/350/241/245/346/213/211/351/200/232/351/201/223/345/256/236/346/226/275/350/256/241/345/210/222.md +400 -0
- package/_packed_docs//346/266/210/346/201/257/345/274/271/346/200/247/350/241/245/346/213/211/351/200/232/351/201/223/346/226/271/346/241/210.md +485 -0
- package/dist/agent-md.d.ts +2 -1
- package/dist/agent-md.js +33 -6
- package/dist/agent-md.js.map +1 -1
- package/dist/aid-store.js +5 -1
- package/dist/aid-store.js.map +1 -1
- package/dist/auth.js +36 -45
- package/dist/auth.js.map +1 -1
- package/dist/client/delivery.d.ts +8 -1
- package/dist/client/delivery.js +203 -50
- package/dist/client/delivery.js.map +1 -1
- package/dist/client/lifecycle.js +10 -1
- package/dist/client/lifecycle.js.map +1 -1
- package/dist/client/rpc-pipeline.d.ts +4 -0
- package/dist/client/rpc-pipeline.js +93 -10
- package/dist/client/rpc-pipeline.js.map +1 -1
- package/dist/client/sync-channels.d.ts +2 -1
- package/dist/client/sync-channels.js +33 -14
- package/dist/client/sync-channels.js.map +1 -1
- package/dist/client/v2-e2ee.d.ts +1 -0
- package/dist/client/v2-e2ee.js +24 -6
- package/dist/client/v2-e2ee.js.map +1 -1
- package/dist/client.d.ts +15 -0
- package/dist/client.js +329 -56
- package/dist/client.js.map +1 -1
- package/dist/events.d.ts +1 -0
- package/dist/events.js +5 -0
- package/dist/events.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mail-client.d.ts +101 -0
- package/dist/mail-client.js +369 -0
- package/dist/mail-client.js.map +1 -0
- package/dist/ownership-v21.d.ts +2 -1
- package/dist/ownership-v21.js +19 -9
- package/dist/ownership-v21.js.map +1 -1
- package/dist/pubsub/binding.js +9 -2
- package/dist/pubsub/binding.js.map +1 -1
- package/dist/pubsub/channel.d.ts +11 -3
- package/dist/pubsub/channel.js +91 -10
- package/dist/pubsub/channel.js.map +1 -1
- package/dist/pubsub/client.d.ts +8 -2
- package/dist/pubsub/client.js +62 -21
- package/dist/pubsub/client.js.map +1 -1
- package/dist/pubsub/index.d.ts +2 -2
- package/dist/pubsub/index.js +1 -1
- package/dist/pubsub/index.js.map +1 -1
- package/dist/pubsub/service.d.ts +6 -0
- package/dist/pubsub/service.js +101 -10
- package/dist/pubsub/service.js.map +1 -1
- package/dist/pubsub/types.d.ts +11 -1
- package/dist/tools/cross-sdk-agent.d.ts +1 -1
- package/dist/transport.d.ts +4 -0
- package/dist/transport.js +39 -2
- package/dist/transport.js.map +1 -1
- package/dist/udp-standby.d.ts +88 -0
- package/dist/udp-standby.js +483 -0
- package/dist/udp-standby.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +5 -1
- package/scripts/patch-imapflow-external.mjs +69 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# AUN SDK 文档查阅指南
|
|
2
2
|
|
|
3
|
-
AUN SDK 文档位于 `aun-sdk-core/docs/sdk/`,当前对照四 SDK **0.5.
|
|
3
|
+
AUN SDK 文档位于 `aun-sdk-core/docs/sdk/`,当前对照四 SDK **0.5.35** 源码。索引文件 `INDEX.md` 分三层:Layer 1 地图、Layer 2 主题索引、Layer 3 单篇摘要。`0.5.xx-*` 为版本增量专题,CHANGELOG 保留历史记录;现行接口以基础手册、RPC 手册和最新版本专题为准。
|
|
4
4
|
|
|
5
5
|
## SDK 文档定位
|
|
6
6
|
|
|
@@ -12,7 +12,7 @@ AUN SDK 文档位于 `aun-sdk-core/docs/sdk/`,当前对照四 SDK **0.5.34**
|
|
|
12
12
|
- `PushFacade`:Python SDK 的当前安装推送登记、注销和 Push Server 批次 ACK。
|
|
13
13
|
- `ServiceProxyClient`:四 SDK 均有 Service Proxy 客户端入口,负责 Gateway 控制面注册和 proxy-server 数据面隧道注册;Browser provider 隧道需具备设置请求头能力的 `webSocketFactory`,见 [Proxy 手册](09-proxy-rpc-manual.md)。
|
|
14
14
|
|
|
15
|
-
业务 RPC 的底层参数见 `09-*-rpc-manual.md`。P2P 共享 seq/peer 游标、pending peers/统计快照、need_render、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
|
|
15
|
+
业务 RPC 的底层参数见 `09-*-rpc-manual.md`。P2P 共享 seq/peer 游标、pending peers/统计快照、need_render、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 使用通用双文件声明与共识;绑定、释放、转移仍走专属生命周期,普通管理 Facade 的 not_applicable 不适用于共识。实体主签不带 signer_aid,不输出旧 entity_cert_fingerprint;历史格式、代际与访问补齐见协议 §1.3/§2.5。peer A/T/H、human Tail 策略、稀疏覆盖、后台续拉和每个 AUNClient 一个网络 Pull Gate(同 namespace 单飞、不同 namespace 最多 4 个并行、相同 key 折叠、可运行项前台 FIFO 优先)见 `03-核心概念.md`;`message.history` / `group.history` 与 Piggy ACK 见 Message/Group RPC Manual;SDK 50k 内存去重、应用持久幂等及三类 batch 的当前契约见 Message RPC Manual。
|
|
16
16
|
|
|
17
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`;Storage / Group FS 默认读缓存、60 秒总新鲜度、`read_cache`、SHA 条件读取、无正文 not_modified 不计次、持久层/容量与 `noCache` 规则见 [缓存策略](09-storage-rpc-manual.md#sdk-默认读缓存) 和 [API 选项](06-API手册.md#默认读缓存与单次刷新)。
|
|
18
18
|
跨设备业务已读的 `read/read_state/read_changed`、单条/显式空值、回执与共享汇总、scope/owner 绑定、设备映射、晚到位置回填、TS/JS 精确整数和 Group canonical/权限版本及混合域提交见 Message/Group RPC Manual;四端门面与本地 `read_state_sync` 完成事件见 `06-API手册.md`、`04-连接与认证.md`。
|
|
@@ -29,11 +29,11 @@ Group 的成员 block/status、暂停群权限和两阶段群主转让,以及
|
|
|
29
29
|
常见主题:
|
|
30
30
|
|
|
31
31
|
- 身份与认证:AIDStore / AID / 注册 / 加载 / 证书
|
|
32
|
-
- Ownership 2.1:NS 按当前 agent.md/owner.md 和转移授权验收;未锁候选以 sub 最后成功上传为准,锁定后须释放或合法转移,拒绝只通知;SDK 无 Ownership 任务、WAL、decisions 或重连恢复。文件 ETag/expected_version CAS、关系版本和 NS 原子锁定保留;release 保持 v,清理后为 0/重绑默认 1。注册带 owner 在注册当次通知;本地 bind/transfer 使用两/三身份专属短连接,不发 P2P,human 仍走人工确认。完整语义需配套 NS 与四 SDK,旧版本兼容范围见当前应用/移植指南;旧 owner RPC/Auth JSONL 仍隔离于 2.1
|
|
32
|
+
- Ownership 2.1:NS 按当前 agent.md/owner.md 和转移授权验收;未锁候选以 sub 最后成功上传为准,锁定后须释放或合法转移,拒绝只通知;SDK 无 Ownership 任务、WAL、decisions 或重连恢复。文件 ETag/expected_version CAS、关系版本和 NS 原子锁定保留;release 保持 v,清理后为 0/重绑默认 1。注册带 owner 在注册当次通知;本地 bind/transfer 使用两/三身份专属短连接,不发 P2P,human 仍走人工确认。完整语义需配套 NS 与四 SDK,旧版本兼容范围见当前应用/移植指南;旧 owner RPC/Auth JSONL 仍隔离于 2.1 双文件。现代 Group/Org 统一双文件声明/共识并保留专属生命周期,访问补齐及 create/transfer 检查点不等同于普通 Ownership 任务恢复;v1/proof/escrow 文档为 legacy
|
|
33
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
|
-
- AUN EventService:0.5.34 版本增量(多角色、持久目录、durable outbox、实时目录)见[0.5.34 应用集成指南](0.5.34-SDK应用集成指南.md)和[0.5.34 开发与移植指南](0.5.34-SDK开发与移植指南.md);完整事件协议、租约、凭证和 fanout 流程见[AUN事件发布订阅应用集成指南](AUN事件发布订阅应用集成指南.md)与[AUN事件发布订阅开发移植指南](AUN事件发布订阅开发移植指南.md)
|
|
36
|
+
- AUN EventService:0.5.35 通配/过滤与本地收发见 [0.5.35 应用集成指南](0.5.35-SDK应用集成指南.md)、[开发与移植指南](0.5.35-SDK开发与移植指南.md)及 [当前 parity](../../python/CHANGES_FOR_PARITY.md#v0535);0.5.34 版本增量(多角色、持久目录、durable outbox、实时目录)见[0.5.34 应用集成指南](0.5.34-SDK应用集成指南.md)和[0.5.34 开发与移植指南](0.5.34-SDK开发与移植指南.md);完整事件协议、租约、凭证和 fanout 流程见[AUN事件发布订阅应用集成指南](AUN事件发布订阅应用集成指南.md)与[AUN事件发布订阅开发移植指南](AUN事件发布订阅开发移植指南.md)
|
|
37
37
|
- 离线推送:Python `connect()` 的 `push_notify_aid/push_token`、`client.push.register/unregister`、Push Server ACK
|
|
38
38
|
- 消息同步:共享 seq 下的 peer A/T/H、稀疏覆盖/前驱、human Tail→Forward、50k 内存去重/应用持久幂等、N=4 网络 Gate、后台工作片续调度、`message.peers_snapshot` 的轻量对端水位/可选整体积压估计、目录/Pull逐页next_pending_seq、可靠commit后持续更新与每N次FIFO(无额外SQL、原列表顺序不改)、need_render/页内计数、`source` 和同步生命周期;Group 保持原终态规则
|
|
39
39
|
- P2P TTL 消息:`message.send.ttl` 秒级钳制、按 device 内存收件箱、volatile 双游标、自动 ACK/去重、服务 epoch 与重启语义
|
|
@@ -64,7 +64,7 @@ Group 的成员 block/status、暂停群权限和两阶段群主转让,以及
|
|
|
64
64
|
| - | [0.5.22 SDK 开发与移植指南](0.5.22-SDK开发与移植指南.md) | 同步、Stage/CAS、撤销续期、缓存、服务依赖及 Rust 清单 |
|
|
65
65
|
| - | [0.5.24 SDK 应用集成指南](0.5.24-SDK应用集成指南.md) | 当前消息接线、无任务 Ownership、两个 local 编排、缓存和凭证组织 |
|
|
66
66
|
| - | [0.5.24 SDK 开发与移植指南](0.5.24-SDK开发与移植指南.md) | 消息提交、NS 事实和远端 CAS、local 身份隔离、缓存新鲜度与语言差异 |
|
|
67
|
-
| - | [0.5.
|
|
67
|
+
| - | [0.5.35 应用集成指南](0.5.35-SDK应用集成指南.md)、[开发与移植指南](0.5.35-SDK开发与移植指南.md);[0.5.35 变更与跨端对齐](../../python/CHANGES_FOR_PARITY.md#v0535);[0.5.34 历史应用集成指南](0.5.34-SDK应用集成指南.md)、[开发与移植指南](0.5.34-SDK开发与移植指南.md)、[变更与跨端对齐](../../python/CHANGES_FOR_PARITY.md#v0534);[Python](../../python/CHANGELOG.md)、[Go](../../go/CHANGELOG.md)、[TS](../../ts/CHANGELOG.md)、[JS](../../js/CHANGELOG.md) CHANGELOG | 对照已发布 0.5.34:通配订阅/过滤、本地收发、后台 ACK、Echo v3.2、三端 UDP/原生 Mail、语言专属修复、单实例及验证边界 |
|
|
68
68
|
| - | [0.5.32 应用指南](0.5.32-SDK应用集成指南.md)、[开发与移植指南](0.5.32-SDK开发与移植指南.md)、[变更与跨端对齐](../../python/CHANGES_FOR_PARITY.md#v0532);[Python](../../python/CHANGELOG.md)、[Go](../../go/CHANGELOG.md)、[TS](../../ts/CHANGELOG.md)、[JS](../../js/CHANGELOG.md) CHANGELOG | 历史基线:EventService 初始 API、设备租约、公平背压、消息调度、限流缓存及 Ownership |
|
|
69
69
|
| - | [0.5.30 应用指南](0.5.30-SDK应用集成指南.md)、[开发与移植指南](0.5.30-SDK开发与移植指南.md)、[变更与跨端对齐](../../python/CHANGES_FOR_PARITY.md#v0530--控制流按需恢复与-sdk-行为对齐未发布) | 按需控制流恢复、observer.forward 本地字段剥离、本地 human owner、Storage 版本预检及四端差异 |
|
|
70
70
|
| - | [0.5.29 应用指南](0.5.29-SDK应用集成指南.md)、[开发与移植指南](0.5.29-SDK开发与移植指南.md)、[变更与跨端对齐](../../python/CHANGES_FOR_PARITY.md#v0529--共识查询缓存与普通上传未发布) | 0.5.29 基线:共识输入输出、无 TTL 的 ETag 缓存、resolve、普通上传锁与恢复、NS 配套及四端移植 |
|
|
@@ -75,7 +75,7 @@ Group 的成员 block/status、暂停群权限和两阶段群主转让,以及
|
|
|
75
75
|
| 02 | [WebSocket协议](02-WebSocket协议.md) | 握手流程、严格布尔 peer 能力、各层大小限制、消息格式、裸 WebSocket |
|
|
76
76
|
| 03 | [核心概念](03-核心概念.md) | AID、peer A/T/H、稀疏覆盖、N=4 Gate、50k 内存去重、状态机、E2EE |
|
|
77
77
|
| 04 | [连接与认证](04-连接与认证.md) | AIDStore、默认 agent.md 自动上传、连接生命周期并发/取消、当前 access token getter、网关发现、事件、已读状态本地补偿完成事件、agent.md 校验和自动观察、resolve frontmatter 与按需 ownership |
|
|
78
|
-
| - | [Ownership 协议定义 2.1](../protocol/Ownership协议定义2.1.md) |
|
|
78
|
+
| - | [Ownership 协议定义 2.1](../protocol/Ownership协议定义2.1.md) | 当前双文件关系、现代 Group/Org 共识与生命周期、签名授权、旧 SDK owner RPC/JSONL 隔离 |
|
|
79
79
|
| - | [Ownership SDK 编排指南 2.1](Ownership-SDK编排指南2.1.md) | 历史任务/恢复/一次性决定方案;当前无状态流程见下面两份指南 |
|
|
80
80
|
| - | [Ownership 2.1 SDK 应用集成指南](Ownership2.1-SDK应用集成指南.md) | TS 接线与审批;双向绑定、释放、转移、两个 local 编排及显式重试的图与示例 |
|
|
81
81
|
| - | [Ownership 2.1 SDK 开发与移植指南](Ownership2.1-SDK开发与移植指南.md) | 严格签验、NS 验收、Storage 条件发布、通用消息交付、本地编排和文件 CAS |
|
|
@@ -91,7 +91,7 @@ Group 的成员 block/status、暂停群权限和两阶段群主转让,以及
|
|
|
91
91
|
| - | [组织服务 RPC 手册](09-组织服务RPC手册.md) | Org Service 生命周期/成员 RPC、内部接口和未实现方法 |
|
|
92
92
|
| 05 | [E2EE加密通信](05-E2EE加密通信.md) | E2EE V2、ProtectedHeaders、need_render、agent.md 版本提示、旧 SPK 保留 |
|
|
93
93
|
| - | [ProtectedHeaders用法专题](ProtectedHeaders用法专题.md) | `protected_headers` 四端 API、实例级/单次调用、E2EE V2 HMAC 完整性和接收信任边界 |
|
|
94
|
-
| 06 | [API手册](06-API手册.md) | AIDStore / resolve opts 与输入输出 / frontmatter 类型 / Agent.md 校验签名 / AID / AUNClient 生命周期并发 / 四 SDK access token getter / 群组高层身份编排 / History 与已读门面 / 已读变更及本地补偿完成 / 消息来源与 Pull 同步生命周期 / 事件 / RPC;当前增量见 [0.5.
|
|
94
|
+
| 06 | [API手册](06-API手册.md) | AIDStore / resolve opts 与输入输出 / frontmatter 类型 / Agent.md 校验签名 / AID / AUNClient 生命周期并发 / 四 SDK access token getter / 群组高层身份编排 / History 与已读门面 / 已读变更及本地补偿完成 / 消息来源与 Pull 同步生命周期 / 事件 / RPC;UDP 待机固定 20 字节心跳与动态周期见尾节 L1141-1165;当前增量见 [0.5.35 parity](../../python/CHANGES_FOR_PARITY.md#v0535) |
|
|
95
95
|
| 07 | [错误处理](07-错误处理.md) | Result、Python `ErrorInfo.cause`、异常、错误码、重试 |
|
|
96
96
|
| 08 | [最佳实践](08-最佳实践.md) | 幂等、消息同步/History、AUNClient 级 Pull Gate(同 namespace 单飞、客户端最多 4 个并行)、测试数据 |
|
|
97
97
|
| - | [Storage RPC 手册](09-storage-rpc-manual.md) | Storage RPC、实际字节 MIME、三阶段 Content-Type、OSS 403、HTTP 下载与凭据边界、默认读缓存持久层、条件读取与 noCache |
|
|
@@ -106,23 +106,23 @@ Group 的成员 block/status、暂停群权限和两阶段群主转让,以及
|
|
|
106
106
|
|------|----------|
|
|
107
107
|
| 接入 AUN 发布订阅或处理未收到事件 | [应用集成指南](AUN事件发布订阅应用集成指南.md):架构 L5-76、多角色门面 L77-103、Bus目录合并 L106-174、Sub订阅 L175-230、Pub先持久再发布 L231-290、凭证 L291-398、多设备 L399-414、原ID/TTL恢复 L415-430、存储/成功删除/诊断 L431-477、本次依据 L478-484 |
|
|
108
108
|
| 实现或移植 AUN 发布订阅 | [开发移植指南](AUN事件发布订阅开发移植指南.md):多角色分层 L5-64、实例与加载 L65-132、协议/幂等 L133-184、独立授权 L185-323、目录合并 L324-341、耐久入队/删除/TTL/预算 L342-430、订阅与发布恢复 L431-529、四端存储隔离 L530-554、统计错误及验收 L555-588 |
|
|
109
|
-
|
|
|
109
|
+
| 核对 0.5.35 增量与 0.5.34 接入专题 | [0.5.35 应用指南](0.5.35-SDK应用集成指南.md):范围 L7-20、EventService L21-61、ACK/恢复 L62-77、Echo L78-94、UDP L95-124、Mail L125-163、语言专属 L164-177、验收 L178-189;[开发与移植指南](0.5.35-SDK开发与移植指南.md):职责 L7-17、事件契约 L18-63、ACK/同步 L64-83、Echo L84-99、UDP L100-136、Mail L137-172、语言落点 L173-184、回归 L185-204。 [当前 parity](../../python/CHANGES_FOR_PARITY.md#v0535) L15-90:基线/矩阵 L17-29、EventService L30-43、ACK/同步 L44-51、Echo L52-58、UDP L59-65、Mail L66-73、语言专属 L74-80、核验范围 L81-90;以下为 0.5.34 历史专题: [应用集成指南](0.5.34-SDK应用集成指南.md):本版变化与架构、EventService 多角色和持久化、Storage 条件 ACL、Group FS/Service Proxy、弹性补拉与验收;[开发与移植指南](0.5.34-SDK开发与移植指南.md):四端分层、EventService 共同契约、控制消息、ACL、Group FS/Storage/Proxy、弹性补拉和验收;[parity](../../python/CHANGES_FOR_PARITY.md#v0534) |
|
|
110
110
|
| 接入或升级 0.5.21,查看 TypeScript 应用示例 | [0.5.21 SDK 应用集成指南](0.5.21-SDK应用集成指南.md) |
|
|
111
111
|
| 实现、移植或审查 0.5.21 SDK | [0.5.21 SDK 开发与移植指南](0.5.21-SDK开发与移植指南.md) |
|
|
112
112
|
| 接入或升级 0.5.22,查看 TypeScript 示例、关系审批、默认读缓存及完整成员包 | [0.5.22 SDK 应用集成指南](0.5.22-SDK应用集成指南.md) |
|
|
113
113
|
| 实现、移植或审查 0.5.22 SDK,查看 Stage/CAS、配套服务修复、读缓存及 Rust 验收清单 | [0.5.22 SDK 开发与移植指南](0.5.22-SDK开发与移植指南.md) |
|
|
114
114
|
| 接入或升级 0.5.24,查看当前消息、无任务 Ownership、两个 local 场景、缓存及凭证组织 | [0.5.24 SDK 应用集成指南](0.5.24-SDK应用集成指南.md) |
|
|
115
115
|
| 实现、移植或审查 0.5.24,核对提交/ACK、NS 事实、远端 CAS、local 身份隔离和缓存新鲜度 | [0.5.24 SDK 开发与移植指南](0.5.24-SDK开发与移植指南.md) |
|
|
116
|
-
| 对照已发布 0.5.31,接入或移植 0.5.32 | [应用指南](0.5.32-SDK应用集成指南.md):本版变化/整体架构 L5-52、身份与入口 L53-87、白名单多事件流程 L88-171、凭证审批签发 L172-246、设备/租约/容量/存储 L247-282、VFS Cache L283-330、其它主要改动与验收 L331-350;[开发与移植指南](0.5.32-SDK开发与移植指南.md):基线/架构/四端入口 L5-53、单实例注册与状态 L54-107、鉴权和目录原子提交 L108-156、消息/公平背压/RPC预算 L157-227、恢复/限流/任务 L228-242、VFS并发失效 L243-288、四端落点/独有变化 L289-303、验收入口及已有证据 L304-319;[parity](../../python/CHANGES_FOR_PARITY.md#v0532)
|
|
117
|
-
| 接入或移植 0.5.30,核查后台恢复、本地 Ownership 与 Storage 版本处理 | [应用指南](0.5.30-SDK应用集成指南.md):行为 L5-14、消息恢复 L16-29、Ownership L31-43、Storage L45-47、转发与风控 L49-53、升级 L55-61;[开发与移植指南](0.5.30-SDK开发与移植指南.md):契约 L5-14、控制恢复 L16-29、转发 L31-43、Ownership/YAML L45-49、Storage L51-55、差异 L57-68;[parity](../../python/CHANGES_FOR_PARITY.md#v0530--控制流按需恢复与-sdk-行为对齐未发布)
|
|
118
|
-
| 接入或移植 0.5.29 基线,核查共识、resolve、上传锁与恢复 | [应用指南](0.5.29-SDK应用集成指南.md):接入 L5-54、共识 L55-80、resolve L81-104、上传管理 L105-145、缓存/业务 L146-167、升级 L168-180;[开发与移植指南](0.5.29-SDK开发与移植指南.md):契约 L5-63、缓存/resolve L64-94、上传恢复 L95-123、四端/继承 L124-151、核查 L152-164;[parity](../../python/CHANGES_FOR_PARITY.md#v0529--共识查询缓存与普通上传未发布)
|
|
119
|
-
| 回看 0.5.28 的 schema、共识、控制消息、Owner 通知与风控,以及 0.5.27 的历史增量 | [0.5.28 应用指南](0.5.28-SDK应用集成指南.md):接入与消息 §1—§3 L5-95、凭证/组织 §4—§5 L96-137、Storage/Ownership §6—§7 L138-186、通知 §8 L187-201、风控/升级 §9—§10 L202-228;[开发与移植指南](0.5.28-SDK开发与移植指南.md):校验 §1 L7-36、共识 §2 L37-62、wire §3 L63-108、outbox §4 L109-121、风控 §5 L122-134、移植 §6 L135-146。 [历史 parity](../../python/CHANGES_FOR_PARITY.md#v0528--校验控制消息与风控未发布)
|
|
116
|
+
| 对照已发布 0.5.31,接入或移植 0.5.32 | [应用指南](0.5.32-SDK应用集成指南.md):本版变化/整体架构 L5-52、身份与入口 L53-87、白名单多事件流程 L88-171、凭证审批签发 L172-246、设备/租约/容量/存储 L247-282、VFS Cache L283-330、其它主要改动与验收 L331-350;[开发与移植指南](0.5.32-SDK开发与移植指南.md):基线/架构/四端入口 L5-53、单实例注册与状态 L54-107、鉴权和目录原子提交 L108-156、消息/公平背压/RPC预算 L157-227、恢复/限流/任务 L228-242、VFS并发失效 L243-288、四端落点/独有变化 L289-303、验收入口及已有证据 L304-319;[parity](../../python/CHANGES_FOR_PARITY.md#v0532) L242-339 |
|
|
117
|
+
| 接入或移植 0.5.30,核查后台恢复、本地 Ownership 与 Storage 版本处理 | [应用指南](0.5.30-SDK应用集成指南.md):行为 L5-14、消息恢复 L16-29、Ownership L31-43、Storage L45-47、转发与风控 L49-53、升级 L55-61;[开发与移植指南](0.5.30-SDK开发与移植指南.md):契约 L5-14、控制恢复 L16-29、转发 L31-43、Ownership/YAML L45-49、Storage L51-55、差异 L57-68;[parity](../../python/CHANGES_FOR_PARITY.md#v0530--控制流按需恢复与-sdk-行为对齐未发布) L411-452 |
|
|
118
|
+
| 接入或移植 0.5.29 基线,核查共识、resolve、上传锁与恢复 | [应用指南](0.5.29-SDK应用集成指南.md):接入 L5-54、共识 L55-80、resolve L81-104、上传管理 L105-145、缓存/业务 L146-167、升级 L168-180;[开发与移植指南](0.5.29-SDK开发与移植指南.md):契约 L5-63、缓存/resolve L64-94、上传恢复 L95-123、四端/继承 L124-151、核查 L152-164;[parity](../../python/CHANGES_FOR_PARITY.md#v0529--共识查询缓存与普通上传未发布) L456-525 |
|
|
119
|
+
| 回看 0.5.28 的 schema、共识、控制消息、Owner 通知与风控,以及 0.5.27 的历史增量 | [0.5.28 应用指南](0.5.28-SDK应用集成指南.md):接入与消息 §1—§3 L5-95、凭证/组织 §4—§5 L96-137、Storage/Ownership §6—§7 L138-186、通知 §8 L187-201、风控/升级 §9—§10 L202-228;[开发与移植指南](0.5.28-SDK开发与移植指南.md):校验 §1 L7-36、共识 §2 L37-62、wire §3 L63-108、outbox §4 L109-121、风控 §5 L122-134、移植 §6 L135-146。 [历史 parity](../../python/CHANGES_FOR_PARITY.md#v0528--校验控制消息与风控未发布) L529-610;公共共识流程以 0.5.29 为准 |
|
|
120
120
|
| 0.5.24 应用按主题读:身份、消息、resolve、Ownership、文件缓存、凭证组织和升级 | `0.5.24-SDK应用集成指南.md` §2 L21-75、§3 L76-132、§4 L133-168、§5 L169-298、§6 L299-321、§7 L322-366、§9 L386-401;local bind L227-245、local transfer L246-267 |
|
|
121
121
|
| 0.5.24 移植按主题读:消息提交、名片、观察、Ownership、缓存、PKI、凭证组织及语言差异 | `0.5.24-SDK开发与移植指南.md` §3 L32-84、§4 L85-92、§5 L93-122、§6 L123-217、§7 L218-245、§8 L246-261、§9 L262-297、§10 L298-325;Rust §11 L326-339、验收 §12 L340-354 |
|
|
122
122
|
| 首次使用 SDK | [01-快速开始](01-快速开始.md) |
|
|
123
123
|
| 理解新构造入口 | [01-快速开始](01-快速开始.md)、[06-API手册](06-API手册.md) |
|
|
124
124
|
| 注册或加载 AID | [04-连接与认证](04-连接与认证.md) |
|
|
125
|
-
| 查询 resolve opts、frontmatter 字段及类型、按需 ownership 共识 | [0.5.29 resolve](0.5.29-SDK应用集成指南.md#4-resolve-与-frontmatter) L81-104;完整基础接口见 [API 手册](06-API手册.md#resolve-输入与输出),实现增量见 [parity](../../python/CHANGES_FOR_PARITY.md#v0529--共识查询缓存与普通上传未发布)
|
|
125
|
+
| 查询 resolve opts、frontmatter 字段及类型、按需 ownership 共识 | [0.5.29 resolve](0.5.29-SDK应用集成指南.md#4-resolve-与-frontmatter) L81-104;完整基础接口见 [API 手册](06-API手册.md#resolve-输入与输出),实现增量见 [parity](../../python/CHANGES_FOR_PARITY.md#v0529--共识查询缓存与普通上传未发布) L456-525 |
|
|
126
126
|
| 查旧 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) |
|
|
127
127
|
| Ownership 2.1 应用:绑定/释放/转移、两个 local 编排、审批及显式重试的 TS 示例与图 | [应用集成指南](Ownership2.1-SDK应用集成指南.md) |
|
|
128
128
|
| Ownership 2.1 移植:NS 验收、条件发布、通用消息交付、本地编排和文件 CAS | [开发与移植指南](Ownership2.1-SDK开发与移植指南.md) |
|
|
@@ -222,12 +222,80 @@ await sub.subscribe(busAid, eventNames);
|
|
|
222
222
|
|
|
223
223
|
`authorize` 建立权限租约,同时取得并缓存本次获准事件的目录;白名单和凭证模式都无需再单独调用 `catalog`。大目录由 SDK 自动分页取齐后才返回。`subscribe` 成功回复后订阅生效,可以一次传全部获准事件,也可只传其中一部分;新增范围需重新鉴权。鉴权范围内任一事件未获准,整个鉴权失败。
|
|
224
224
|
|
|
225
|
-
同一角色在相同授权模式和凭证下再次 `authorize`,新增事件与已有授权范围合并;不同凭证不能混合扩大权限。后续 `subscribe`
|
|
225
|
+
同一角色在相同授权模式和凭证下再次 `authorize`,新增事件与已有授权范围合并;不同凭证不能混合扩大权限。后续 `subscribe` 追加关系;同一事件再次订阅时替换其发布者过滤条件,省略过滤条件恢复不限。`unsubscribe` 移除对应关系,其余订阅及目录条目保留。
|
|
226
226
|
|
|
227
227
|
回调在订阅前注册,支持返回 Promise。也可以不注册回调,使用 `await sub.nextEvent(busAid, 5)` 主动等待,超时单位为秒。Python 对应 `next_event(bus_aid, timeout=5)`;Go 用 `NextEvent(ctx, bus_aid)` 的 context 控制超时。
|
|
228
228
|
|
|
229
229
|
回调与主动等待选择一种消费方式;有回调时,新事件进入回调路径,不会同时成为 `nextEvent` 的副本。回调按顺序执行,异常不会终止后续事件,也不会要求 Bus 重发;慢处理会占用有界接收容量。
|
|
230
230
|
|
|
231
|
+
#### 3.2.1 按事件层级订阅
|
|
232
|
+
|
|
233
|
+
事件名描述业务事实,例如 `task.completed`,不要把发布者 AID 写进事件名。发布者变化时,订阅者仍可使用相同业务事件名。
|
|
234
|
+
|
|
235
|
+
```ts
|
|
236
|
+
await sub.authorize(busAid, 'sub', 'allowlist', ['task.completed', 'task.failed']);
|
|
237
|
+
const subscribed = await sub.subscribe(busAid, ['task.*']);
|
|
238
|
+
await sub.unsubscribe(busAid, ['task.*']);
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
`authorize` 仍传完整事件名。`subscribe` 的模式由 Bus 在当前目录和当前租约已授权事件的交集中展开,回复 `events` 是实际订阅的完整事件名,不是原模式。模式不保存为动态规则:目录新增事件或取得新授权后,需再次 `subscribe`。`unsubscribe` 的模式只作用于当前已订阅项。
|
|
242
|
+
|
|
243
|
+
| 模式 | 匹配边界 |
|
|
244
|
+
| --- | --- |
|
|
245
|
+
| `task.*` | 匹配 `task.completed`,不匹配 `task.order.completed` |
|
|
246
|
+
| `task.worker-*` | 匹配 `task.worker-`、`task.worker-1`,不跨 `.` |
|
|
247
|
+
| `*` | 只匹配单层名称,不表示所有层级 |
|
|
248
|
+
| `task.**`、`task..completed` | 无效模式,返回 `INVALID_PATTERN` |
|
|
249
|
+
|
|
250
|
+
名称按 `.` 分层;模式与名称层数必须相同,每层非空。层内 `*` 匹配零个或多个字符,其他字符按字面量匹配,`?` 等不具有特殊含义。模式在目录无命中返回 `UNKNOWN_EVENT`;目录有命中、但租约无获准事件返回 `FORBIDDEN`。重叠模式或重复事件不会产生重复投递。
|
|
251
|
+
|
|
252
|
+
#### 3.2.2 按发布者筛选
|
|
253
|
+
|
|
254
|
+
优先按发布者名片的 `type` / `exttype` 筛选业务角色,保持发布与订阅解耦。写死发布者 AID 会把订阅者绑定到具体身份,削弱解耦,不建议常规使用;确需限定来源身份时再使用 AID 条件。以下为相互独立的调用示例,均假定已取得对应完整事件名的订阅权限。
|
|
255
|
+
|
|
256
|
+
Python:
|
|
257
|
+
|
|
258
|
+
```python
|
|
259
|
+
await sub.subscribe(bus_aid, ["task.*"], publisher_types=["worker-*"])
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
TypeScript:
|
|
263
|
+
|
|
264
|
+
```ts
|
|
265
|
+
await sub.subscribe(busAid, ['task.*'], { publisherTypes: ['worker-*'] });
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
JavaScript:
|
|
269
|
+
|
|
270
|
+
```js
|
|
271
|
+
await sub.subscribe(busAid, ['task.*'], { publisherExttypes: ['task.executor'] });
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
Go:
|
|
275
|
+
|
|
276
|
+
```go
|
|
277
|
+
_, err := sub.Subscribe(ctx, busAID, []string{"task.*"}, aun.PubSubSubscribeOptions{
|
|
278
|
+
PublisherTypes: []string{"worker-*"},
|
|
279
|
+
})
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
| 条件 | Python | TypeScript / JavaScript | Go |
|
|
283
|
+
| --- | --- | --- | --- |
|
|
284
|
+
| 发布者 AID | `publisher_aids` | `publisherAids` | `PublisherAIDs` |
|
|
285
|
+
| 名片 type | `publisher_types` | `publisherTypes` | `PublisherTypes` |
|
|
286
|
+
| 名片 exttype | `publisher_exttypes` | `publisherExttypes` | `PublisherExtTypes` |
|
|
287
|
+
|
|
288
|
+
每个数组内部是“或”,不同条件之间是“且”;省略条件表示不限,显式空数组无效。过滤值沿用上述单层 `*` 规则,例如 `publisherAids: ['*.example.com']` 只匹配一个 name 层,不匹配 `worker.team.example.com`;单个 `*` 也不能跨层匹配全部 AID。
|
|
289
|
+
|
|
290
|
+
```ts
|
|
291
|
+
await sub.subscribe(busAid, ['task.completed'], {
|
|
292
|
+
publisherTypes: ['worker-*'], publisherExttypes: ['task.executor'],
|
|
293
|
+
});
|
|
294
|
+
await sub.subscribe(busAid, ['task.completed']);
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
首个调用同时限制 type 与 exttype;第二个调用将该事件恢复为不限发布者。续租与断线恢复保留各实际事件的过滤条件,本地 Bus 自己订阅与远端订阅遵循相同规则。Bus 在 fanout 前过滤:AID 来自已认证发送者,type/exttype 来自已验证名片,不采信事件正文自报字段。元数据读取失败时,仅需要 type/exttype 的订阅不匹配,不影响不限或只限定 AID 的订阅。
|
|
298
|
+
|
|
231
299
|
### 3.3 发布并观察完成结果
|
|
232
300
|
|
|
233
301
|
**Pub 视角:** 一次鉴权多个事件后,分别发布 JSON 正文;publish 返回本地 event_id,后续通过完成结果观察实际发送或 Bus 受理。
|
|
@@ -408,7 +476,7 @@ Bus 从 AUN 验签结果取得发布者、订阅者的 AID 和设备身份,再
|
|
|
408
476
|
| 修改事件目录或版本 | Bus 宿主 `updateConfig(busAid, { catalog })`;客户端重新 `catalog`,发布使用当前 `schemaVersion` |
|
|
409
477
|
| 关闭回调 | 调用注册返回的 `stopEvents()`;它只取消本地 handler,不等于远端 `unsubscribe` |
|
|
410
478
|
|
|
411
|
-
白名单可使用事件条目 `"*"`,也可在 AID 数组使用 `"*"`,分别表示不限制事件或 AID,精确条目与通配条目按并集授权。通配应仅限本机受控多 agent
|
|
479
|
+
白名单可使用事件条目 `"*"`,也可在 AID 数组使用 `"*"`,分别表示不限制事件或 AID,精确条目与通配条目按并集授权。通配应仅限本机受控多 agent 之间使用,其他情况不建议如此。此处单独 `"*"` 的全部允许语义保持不变,不等于 §3.2 中订阅/发布者过滤的单层模式。白名单通配不会创建目录外事件;`authorize` 仍传完整事件名数组,`subscribe` 可传单层模式,但只展开已获准的目录事件。
|
|
412
480
|
|
|
413
481
|
`authorize` 回复的 `catalog` 是本次授权目录首页,最多 2 KiB;普通单事件或少量事件通常一次请求完成,大结构由 SDK 自动续查并缓存,应用调用方式相同。返回值保留首页,不汇总全部条目。独立 `catalog` 用于查询或刷新,响应含 `items`、`next_page_token`、`catalog_revision`,门面另提供 `events` 别名。远程查询按有效租约过滤,本地 Bus 可查全部目录;分页默认 50、上限 200、完整回包最多 64 KiB,应用继续传 `page_token` 直至结束。目录变化导致 `CATALOG_CHANGED` 时重新鉴权或从查询首页刷新。客户端保留短期旧版本校验窗口,只处理仍在原 TTL 内的在途事件。
|
|
414
482
|
|
|
@@ -470,10 +538,12 @@ Bus 宿主应用调用 `bus.stats(busAid, { event_name: eventName })`,结果
|
|
|
470
538
|
| `SERVICE_NOT_STARTED` / `DEVICE_CONFLICT` | 确认 Bus 是否已成功 start、是否有其他承接实例 |
|
|
471
539
|
| `ROLE_MISMATCH` / `SERVICE_IDENTITY_MISMATCH` | 检查是否已授权调用所需角色,以及宿主 AID 是否正确;角色并存无需拆分 client |
|
|
472
540
|
| `FORBIDDEN` / `REAUTH_REQUIRED` | 检查名单或凭证 scope、租约、证明和撤销状态 |
|
|
541
|
+
| `INVALID_PATTERN` | 检查模式空层或连续 `**`;单层 `*` 不跨 `.` |
|
|
542
|
+
| `UNKNOWN_EVENT` | 模式在当前目录无命中;有命中但无授权时为 `FORBIDDEN` |
|
|
473
543
|
| `CATALOG_REQUIRED` / `SCHEMA_MISMATCH` / `UNSUPPORTED_SCHEMA_VERSION` | 获取当前事件目录,再使用匹配版本发布 |
|
|
474
544
|
| `OVERLOADED` / `MESSAGE_TOO_LARGE` | 检查发布及接收容量、正文尺寸;未入队的调用不能视为成功 |
|
|
475
545
|
| `TIMEOUT` | 结果可能未知;保留事件或管理操作的原有幂等材料 |
|
|
476
|
-
| 已受理但未收到 |
|
|
546
|
+
| 已受理但未收到 | 核对订阅生效时点、接收端目录、当前设备实例、发布者过滤及已验证名片、TTL、授权、接收速度及 Bus 统计 |
|
|
477
547
|
|
|
478
548
|
## 8. 代码与验收依据
|
|
479
549
|
|
|
@@ -150,7 +150,8 @@ P/C 与 Bus 之间全部复用 E2EE P2P `message.send`。加密外层 `payload.t
|
|
|
150
150
|
| op | 关键输入 | 结果 |
|
|
151
151
|
| --- | --- | --- |
|
|
152
152
|
| `authorize` | auth_mode、scope、凭证模式的 grant | lease_id、auth_mode、scope、expires_at、renew_after_seconds、catalog 首页 |
|
|
153
|
-
| `subscribe`
|
|
153
|
+
| `subscribe` | lease_id、完整事件名或单层模式数组 events;可选平级 publisher_aids、publisher_types、publisher_exttypes | 关系变更状态;events 为展开后的实际完整事件名 |
|
|
154
|
+
| `unsubscribe` | lease_id、完整事件名或单层模式数组 events | 从现有订阅移除的实际事件名 |
|
|
154
155
|
| `renew` | lease_id;凭证模式带原授权绑定材料 | 原范围的新到期时间 |
|
|
155
156
|
| `catalog` | 可选 event_name、limit、page_token;普通调用方带租约 | items、revision/catalog_revision、next_page_token |
|
|
156
157
|
| `publications` | 可选 event_name、limit、page_token;远端带发布租约 | 按 publisher_aid/event_name 汇总的受理次数与首次/最近时间 |
|
|
@@ -186,7 +187,7 @@ P/C 与 Bus 之间全部复用 E2EE P2P `message.send`。加密外层 `payload.t
|
|
|
186
187
|
|
|
187
188
|
### 4.1 白名单与本地宿主
|
|
188
189
|
|
|
189
|
-
目录按完整事件名登记;allowlist 每项区分 `publish_aids/subscribe_aids`。事件条目 `"*"` 与精确条目按并集合并,AID 数组 `"*"` 允许任意已通过 AUN
|
|
190
|
+
目录按完整事件名登记;allowlist 每项区分 `publish_aids/subscribe_aids`。事件条目 `"*"` 与精确条目按并集合并,AID 数组 `"*"` 允许任意已通过 AUN 身份认证的主体;目录外事件仍被拒绝。allowlist 单独 `"*"` 的全部允许语义保持不变,与 §4.4 订阅及发布者过滤的单层模式分开处理。
|
|
190
191
|
|
|
191
192
|
Bus 宿主本地维护全部配置并调用签发、撤销和统计。远端发布者、订阅者仅持各自设备租约,目录查询按该租约过滤;本地 Bus 可查询全部目录。
|
|
192
193
|
|
|
@@ -194,7 +195,7 @@ Bus 宿主本地维护全部配置并调用签发、撤销和统计。远端发
|
|
|
194
195
|
|
|
195
196
|
多事件沿用相同协议:Bus 目录登记多个完整事件名,allowlist 对每个事件分别配置。客户端一次 authorize 的 scope 可包含多个事件;同一请求任一项未获准则整体失败。subscribe/unsubscribe 的 events 数组可选择获准范围内的一部分,每次 publish 仍只包含一个 event_name 和一份 JSON 正文。回调依据 event_name 分发;不同事件共享当前 Bus 的容量与公平调度预算。应用示例见[应用指南 §3](AUN事件发布订阅应用集成指南.md#3-场景一白名单接入)。
|
|
196
197
|
|
|
197
|
-
同角色且授权模式、凭证相同时,后续 authorize 的事件与已授权事件合并,再整体校验;不同凭证不能混合扩大 scope。subscribe
|
|
198
|
+
同角色且授权模式、凭证相同时,后续 authorize 的事件与已授权事件合并,再整体校验;不同凭证不能混合扩大 scope。subscribe 追加关系,同一实际事件再次订阅则替换其过滤条件,省略过滤恢复不限;unsubscribe 仅移除指定关系。客户端目录、授权和逐事件订阅及过滤条件的持久状态按身份、Bus、角色及设备实例隔离,Pub/Sub 相互不覆盖。
|
|
198
199
|
|
|
199
200
|
### 4.2 完整凭证校验
|
|
200
201
|
|
|
@@ -321,6 +322,46 @@ Pub 随后可 publish;Sub 还须 subscribe 才有事件订阅关系。续页
|
|
|
321
322
|
|
|
322
323
|
来源:[Python 凭证适配器](../../python/src/aun_core/pubsub/credentials.py)、[TS 凭证适配器](../../ts/src/pubsub/credentials.ts)、[Go 凭证适配器](../../go/pubsub_credentials.go)、[凭证移植指南](凭证与组织服务SDK开发与移植指南.md)。
|
|
323
324
|
|
|
325
|
+
### 4.4 单层模式与发布者过滤
|
|
326
|
+
|
|
327
|
+
**模式规则。** 事件名及发布者 AID、type、exttype 的模式都按 `.` 分层,双方层数相同且各层非空才可能匹配。层内 `*` 匹配零到多个字符,不跨 `.`;连续 `**` 或空层返回 `INVALID_PATTERN`。其他字符仅按字面量匹配,不引入 `?`、字符组或正则语义。`task.*` 匹配 `task.created`,不匹配 `task.order.created`;`worker-*` 可匹配 `worker-`。AID 模式 `*.example.com` 只匹配一个 name 层;单个 `*` 不是跨层全部匹配。
|
|
328
|
+
|
|
329
|
+
**展开与权限。** authorize / grant scope / publish 仍使用完整事件名。Bus 对每个 subscribe 模式先查当前目录,再与该设备租约获准的精确事件求交集、合并去重;目录无命中报 `UNKNOWN_EVENT`,有目录命中但无授权报 `FORBIDDEN`。回复 `events` 只含实际事件名。模式不保留为动态规则,不因新增目录或授权自动增订阅;调用方须重新 subscribe。unsubscribe 模式仅匹配该租约已有订阅项,不能借此更改其他设备关系。
|
|
330
|
+
|
|
331
|
+
**字段与替换。** subscribe 请求在 `events` 同级增加可选 `publisher_aids`、`publisher_types`、`publisher_exttypes`,值均为非空模式数组;数组内部 OR,条件之间 AND,省略条件表示不限,显式空数组无效。同一事件再次 subscribe 替换过滤条件,省略三项即恢复不限。事件模式重叠不创建重复关系,同一发布事件不会因此重复投递。
|
|
332
|
+
|
|
333
|
+
| SDK 门面 | 调用签名与字段 |
|
|
334
|
+
| --- | --- |
|
|
335
|
+
| Python | `subscribe(bus_aid, events, *, publisher_aids=None, publisher_types=None, publisher_exttypes=None)` |
|
|
336
|
+
| TypeScript / JavaScript | `subscribe(busAid, events, { publisherAids?, publisherTypes?, publisherExttypes? })` |
|
|
337
|
+
| Go | `Subscribe(ctx, busAID, events, options ...PubSubSubscribeOptions)`;字段 `PublisherAIDs / PublisherTypes / PublisherExtTypes` |
|
|
338
|
+
|
|
339
|
+
应用短示例见[应用指南 §3.2](AUN事件发布订阅应用集成指南.md#32-订阅方一次鉴权多个事件并登记订阅)。业务事件名不应携带发布者身份;写死 publisher AID 会削弱解耦,不建议常规使用,按名片业务角色过滤更适合发布者可替换的场景。
|
|
340
|
+
|
|
341
|
+
```mermaid
|
|
342
|
+
sequenceDiagram
|
|
343
|
+
participant S as Sub SDK
|
|
344
|
+
participant B as Bus SDK
|
|
345
|
+
participant P as Pub SDK
|
|
346
|
+
participant C as 名片读取
|
|
347
|
+
S->>B: subscribe:task.*、publisher_types=[worker-*]
|
|
348
|
+
B->>B: 当前目录与租约求交,保存精确事件和过滤条件
|
|
349
|
+
B-->>S: events=[task.created, task.completed]
|
|
350
|
+
P->>B: publish:可信sender及事件正文
|
|
351
|
+
opt 此事件存在type/exttype过滤
|
|
352
|
+
B->>C: 按可信publisher AID读取已验证agent.md
|
|
353
|
+
C-->>B: verified资料摘要或读取失败
|
|
354
|
+
end
|
|
355
|
+
B->>B: 权限复核与发布者条件匹配后确定fanout目标
|
|
356
|
+
B-->>S: 只向匹配的订阅设备发送事件
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
**可信来源与读取边界。** 发布者 AID 只能取已认证 sender;type/exttype 只能取已验证 `agent.md` 的 verified 结果,不能采信 publish 正文自报身份或名片字段。Bus 在 fanout 前执行过滤,本地和远端路径一致;Message 不维护业务过滤表。
|
|
360
|
+
|
|
361
|
+
仅当当前事件存在 AID 条件也匹配的 type/exttype 订阅时才懒读取发布者资料;成功缓存 60 秒、失败负缓存 5 秒,最多 1024 个资料摘要,同 AID 并发读取合并。共享查询独立最多运行 10 秒,每次发布只等待至事件到期前 2 秒;预算不足时仅复用有效缓存,短请求退出不取消其他请求共享的查询。不新增周期定时任务;缓存只存所需摘要,不持有整份名片。元数据不可用只令 metadata 条件不匹配,为不限过滤或 AID-only 关系保留正常投递窗口。
|
|
362
|
+
|
|
363
|
+
**续租与恢复。** Bus 关系和客户端订阅意图均按展开后的精确 event 保存过滤条件;续租、重新鉴权、持久重开及取消恢复竞态不得丢失或放宽条件。恢复逐事件使用原条件,不能把不同事件的过滤合并成全局条件;旧状态无过滤字段按不限读取。新目录或新权限不会通过恢复再次展开旧模式。
|
|
364
|
+
|
|
324
365
|
## 5. 目录、版本与内容校验
|
|
325
366
|
|
|
326
367
|
目录条目包含 `description/schema_version/content_schema/default_ttl_seconds/max_ttl_seconds`,回复另有 event_name、allowed_actions。白名单与凭证 authorize 均返回嵌套 catalog 首页,客户端自动取完后续页并缓存,然后提交新授权状态;成功返回后即可发布或订阅接收。独立 catalog 保留,用于查询与刷新。
|
|
@@ -446,13 +487,13 @@ sequenceDiagram
|
|
|
446
487
|
G->>M: 发往Bus的sdk_control
|
|
447
488
|
M-->>G: 定向到Bus
|
|
448
489
|
G-->>B: 可信AID/device/slot及订阅请求
|
|
449
|
-
B->>B:
|
|
490
|
+
B->>B: 展开已授权事件,建立带逐事件过滤的设备订阅
|
|
450
491
|
B->>G: 定向subscribe.result
|
|
451
492
|
G->>M: 回复原设备/slot
|
|
452
493
|
M-->>G: 定向投递
|
|
453
494
|
G-->>S: 订阅成功
|
|
454
495
|
S-->>A: subscribe完成
|
|
455
|
-
B->>G: fanout
|
|
496
|
+
B->>G: fanout事件至符合发布者过滤的订阅设备/slot
|
|
456
497
|
G->>M: TTL内存收件箱
|
|
457
498
|
M-->>G: Push或Pull响应,仅目标设备可消费
|
|
458
499
|
G-->>S: sdk_control事件密文及可信来源
|
|
@@ -509,7 +550,7 @@ sequenceDiagram
|
|
|
509
550
|
无已保存授权材料:结束;否则按当前生命周期串行恢复
|
|
510
551
|
租约未过期:先renew,仅REAUTH_REQUIRED转重新鉴权
|
|
511
552
|
租约已过期或renew返回REAUTH_REQUIRED:重新authorize并自动加载完整目录
|
|
512
|
-
Sub
|
|
553
|
+
Sub需要补订阅时:锁定意图,按各精确事件原过滤subscribe仍未取消项
|
|
513
554
|
成功才清除待恢复标记;暂时失败保留意图并有界重试
|
|
514
555
|
发布恢复:按原event_id及expires_at入有界队列,成功后删除持久正文
|
|
515
556
|
已关闭或代次已变化:结束旧恢复流程
|
|
@@ -531,8 +572,8 @@ close 清理运行时租约、请求等待、队列和去重,阻止旧代次
|
|
|
531
572
|
|
|
532
573
|
| 状态 | 保存边界 |
|
|
533
574
|
| --- | --- |
|
|
534
|
-
| Bus 目录与关系 | 目录、白名单、签发记录、暂停 CID
|
|
535
|
-
| 发布/订阅客户端 |
|
|
575
|
+
| Bus 目录与关系 | 目录、白名单、签发记录、暂停 CID、授权租约及逐事件订阅与发布者过滤;加载后增量合并本次配置,仅恢复未过期且通过当前权限复核的关系 |
|
|
576
|
+
| 发布/订阅客户端 | 授权材料、目录缓存和逐事件订阅意图及过滤;启动加载后重新鉴权,按原条件恢复,后续授权、订阅增量合并 |
|
|
536
577
|
| 发布记录 | 确认入队前耐久保存;成功后删除正文,中断保留;重启按原 ID、原 TTL 恢复,过期失败结果可查 |
|
|
537
578
|
| 凭证适配器 | 原凭证、登记/撤销请求、真实提交证据及结果;支持原操作恢复 |
|
|
538
579
|
| 运行时 | Bus 实例令牌、受理快照、fanout 与目标投递队列、接收队列、成功结果缓存、事件去重、发布汇总和统计不作为持久恢复账本 |
|
|
@@ -568,6 +609,7 @@ stats 仅由本地 Bus 宿主调用,可按 event_name 过滤,含 service_aid
|
|
|
568
609
|
| `SERVICE_IDENTITY_MISMATCH/DEVICE_CONFLICT/SERVICE_LEASE_LOST/SERVICE_NOT_STARTED` | 宿主身份或实例生命周期不满足 |
|
|
569
610
|
| `FORBIDDEN/REAUTH_REQUIRED/CREDENTIAL_UNAVAILABLE` | 权限、租约或凭证证明不可用;按来源重新核验,不自动扩大授权 |
|
|
570
611
|
| `CATALOG_REQUIRED/UNKNOWN_EVENT/SCHEMA_MISMATCH/UNSUPPORTED_SCHEMA_VERSION/INVALID_CONTENT` | 目录、版本或内容不满足 |
|
|
612
|
+
| `INVALID_PATTERN` | 事件或发布者模式含空层、连续 `**` 等无效结构 |
|
|
571
613
|
| `REQUEST_CONFLICT/IDEMPOTENCY_CONFLICT/EVENT_CONFLICT` | 相应层级同幂等键改参 |
|
|
572
614
|
| `OVERLOADED/MESSAGE_TOO_LARGE/EXPIRED/TIMEOUT/CLOSED` | 容量、期限或生命周期不满足;TIMEOUT 保留结果未知语义 |
|
|
573
615
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# AUN SDK 文档索引
|
|
2
2
|
|
|
3
|
-
> 当前四 SDK 源码版本为 **0.5.
|
|
3
|
+
> 当前四 SDK 源码版本为 **0.5.36**;本版接入与实现见 [0.5.36 应用集成指南](0.5.36-SDK应用集成指南.md)、[开发与移植指南](0.5.36-SDK开发与移植指南.md),源码增量见 [parity 0.5.36](../../python/CHANGES_FOR_PARITY.md#v0536) 和四 SDK CHANGELOG;[0.5.35 应用集成指南](0.5.35-SDK应用集成指南.md)、[开发与移植指南](0.5.35-SDK开发与移植指南.md)与 [parity 0.5.35](../../python/CHANGES_FOR_PARITY.md#v0535) 保留历史记录,基础手册、RPC 手册与 0.5.34 历史专题继续提供接入说明。`0.5.xx-*` 为版本增量专题,CHANGELOG 保留历史记录;完整事件协议另见发布订阅专题。三层索引:Layer 1 文档地图,Layer 2 主题交叉索引,Layer 3 单篇摘要。
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
| [0.5.22 SDK 开发与移植指南](0.5.22-SDK开发与移植指南.md) | 后台退避 · 群状态 · 两种绑定与 Stage/CAS · 消息内部消费 · 撤销同步 · 组织恢复及配套服务修复 · 默认读缓存 · Rust 清单 |
|
|
17
17
|
| [0.5.24 SDK 应用集成指南](0.5.24-SDK应用集成指南.md) | 当前身份与消息接入 · 无任务 Ownership · local 双/三身份编排 · resolve 与文件缓存 · 凭证组织 · 升级 |
|
|
18
18
|
| [0.5.24 SDK 开发与移植指南](0.5.24-SDK开发与移植指南.md) | peer/batch 提交 · NS 事实与远端 CAS · local 短连接 · 观察与 PKI 缓存 · 持久化边界 · 语言差异和验收 |
|
|
19
|
-
| [0.5.
|
|
19
|
+
| [0.5.36 应用集成指南](0.5.36-SDK应用集成指南.md)、[开发与移植指南](0.5.36-SDK开发与移植指南.md)、[变更与跨端对齐](../../python/CHANGES_FOR_PARITY.md#v0536);四 SDK CHANGELOG | 事件大小/令牌桶、共识持久缓存与 force、摘要观察失效、历史验签/新签、UDP 租约、Node/Go 差异及单实例边界 |
|
|
20
|
+
| [0.5.35 应用集成指南](0.5.35-SDK应用集成指南.md)、[开发与移植指南](0.5.35-SDK开发与移植指南.md);[0.5.35 变更与跨端对齐](../../python/CHANGES_FOR_PARITY.md#v0535);[0.5.34 历史应用集成指南](0.5.34-SDK应用集成指南.md)、[开发与移植指南](0.5.34-SDK开发与移植指南.md)、[变更与跨端对齐](../../python/CHANGES_FOR_PARITY.md#v0534);[Python](../../python/CHANGELOG.md)、[Go](../../go/CHANGELOG.md)、[TS](../../ts/CHANGELOG.md)、[JS](../../js/CHANGELOG.md) CHANGELOG | 对照已发布 0.5.34:通配订阅/发布者过滤、本地收发、后台 ACK、Echo v3.2、三端 UDP/原生 Mail、语言专属修复、单实例及验证边界 |
|
|
20
21
|
| [0.5.32 应用集成指南](0.5.32-SDK应用集成指南.md)、[开发与移植指南](0.5.32-SDK开发与移植指南.md)、[变更与跨端对齐](../../python/CHANGES_FOR_PARITY.md#v0532);[Python](../../python/CHANGELOG.md)、[Go](../../go/CHANGELOG.md)、[TS](../../ts/CHANGELOG.md)、[JS](../../js/CHANGELOG.md) CHANGELOG | 对照已发布 0.5.31:EventService · 设备租约 · 有界背压 · 消息调度 · 限流缓存 · Ownership · 已有验证范围 |
|
|
21
22
|
| [0.5.30 SDK 应用集成指南](0.5.30-SDK应用集成指南.md)、[开发与移植指南](0.5.30-SDK开发与移植指南.md)、[变更与跨端对齐](../../python/CHANGES_FOR_PARITY.md#v0530--控制流按需恢复与-sdk-行为对齐未发布) | 按需控制流恢复 · observer.forward 本地字段剥离 · human owner 本地 Ownership · Storage 版本预检 · 内部 RPC 边界 |
|
|
22
23
|
| [0.5.29 应用指南](0.5.29-SDK应用集成指南.md)、[开发与移植指南](0.5.29-SDK开发与移植指南.md)、[变更与跨端对齐](../../python/CHANGES_FOR_PARITY.md#v0529--共识查询缓存与普通上传未发布);[Python](../../python/CHANGELOG.md)、[Go](../../go/CHANGELOG.md)、[TS](../../ts/CHANGELOG.md)、[JS](../../js/CHANGELOG.md) CHANGELOG | 0.5.29 基线:共识默认 force=false、NS 单次查询、无 TTL 的 ETag 缓存、resolve、普通上传锁/恢复与四端移植 |
|
|
@@ -30,7 +31,7 @@
|
|
|
30
31
|
| [Ownership SDK集成指南(legacy)](Ownership-SDK集成指南.md) | TypeScript 应用层快速接入 · 审批 API · 状态查询 · SDK 自动编排流程图 |
|
|
31
32
|
| [Ownership SDK实现指南(legacy)](Ownership-SDK实现指南.md) | 四端移植入口 · proof/escrow · 消息拦截 · metadata · rekey/上传恢复 · 验收 |
|
|
32
33
|
| [Ownership协议定义(legacy)](../protocol/Ownership协议定义.md) | P2P 消息 schema · proof/签名 · agent.md · escrow · owner 授权头 · 现有 RPC |
|
|
33
|
-
| [Ownership 协议定义 2.1](../protocol/Ownership协议定义2.1.md) | 关系仅由agent.md/owner.md 确认 · release 保持 v、清理后 0/重绑默认 1 · Header 结果投影 · Group/Org
|
|
34
|
+
| [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路径历史 |
|
|
34
35
|
| [Ownership SDK 编排指南 2.1](Ownership-SDK编排指南2.1.md) | 历史编排方案;任务恢复、reset 与一次性决定已由当前两份指南的无状态流程替代 |
|
|
35
36
|
| [Ownership 2.1 应用集成指南](Ownership2.1-SDK应用集成指南.md) | TS 接线与审批;双向绑定、释放、转移、两个 local 编排和显式重试的图与示例,以 NS 当前归属为准 |
|
|
36
37
|
| [Ownership 2.1 开发与移植指南](Ownership2.1-SDK开发与移植指南.md) | 严格签验、NS 验收、Storage 条件发布、通用消息交付、本地编排和文件 CAS;不维护 Ownership 任务或 WAL |
|
|
@@ -40,13 +41,13 @@
|
|
|
40
41
|
| [凭证服务 RPC 手册](09-凭证服务RPC手册.md) | 旧版RPC及六个credential.semantic.*的params/result、CAS/协调、CRL分页与十错误码 |
|
|
41
42
|
| [语义凭证示例与验收](../../examples/semantic-credential/示例使用指南.md) | E01—E36、286组配置证据、CN/本地aid.com、浏览器/普通凭证冷恢复与验证边界 |
|
|
42
43
|
| [组织服务 RPC 手册](09-组织服务RPC手册.md) | Org Service 生命周期、成员、凭证查询、审计/授权及内部/未实现方法 |
|
|
43
|
-
| [Ownership 2.1 详细设计](Ownership2.1详细设计.md) | agent.md/owner.md 关系、agent.md 兼容非回归矩阵、旧 SDK owner RPC/JSONL
|
|
44
|
+
| [Ownership 2.1 详细设计](Ownership2.1详细设计.md) | agent.md/owner.md 关系、agent.md 兼容非回归矩阵、旧 SDK owner RPC/JSONL 隔离、本地失败稿/显式重试、现代实体声明补齐与原 CAS |
|
|
44
45
|
| [Ownership 2.1 TDD 实施计划](Ownership2.1-TDD分阶段实施计划.md) | 历史分阶段计划、冻结契约与网络账本、2026-10-13 复查修复边界 |
|
|
45
46
|
| [Ownership 2.1 审查报告](../audit/Ownership2.1代码审查报告.md) | 第二十二节:恢复 agent.md/owner.md 与原控制格式、reset 及历史兼容;第十六至二十一节保留已撤销方案的历史验证边界 |
|
|
46
47
|
| [05-E2EE加密通信](05-E2EE加密通信.md) | E2EE V2 消息 · ProtectedHeaders · need_render 外层提示 · agent.md 版本提示 · 旧 SPK 保留边界 |
|
|
47
48
|
| [ProtectedHeaders用法专题](ProtectedHeaders用法专题.md) | `protected_headers` 四端 API · 实例级/单次调用 · E2EE V2 HMAC 完整性 · 接收信任边界 |
|
|
48
49
|
| [E2EE_V2消息通信时序图](E2EE_V2消息通信时序图.md) | V2 P2P/GROUP 明文与加密主链路 |
|
|
49
|
-
| [06-API手册](06-API手册.md) | AIDStore · resolve 完整输入输出/frontmatter/ownership 与 owner.md 缓存 · AID · AUNClient · 四 SDK access token getter · Python PushFacade · P2P TTL volatile 消息 · Message/Group History 与已读门面 · 已读变更和本地补偿完成 · 消息来源与 Pull 同步生命周期 · 三类批量事件/完整 single fallback · SDK 50k 内存去重/应用持久幂等 · E2EE 高级 API · RPC 索引 |
|
|
50
|
+
| [06-API手册](06-API手册.md) | AIDStore · resolve 完整输入输出/frontmatter/ownership 与 owner.md 缓存 · AID · AUNClient · 四 SDK access token getter · Python PushFacade · P2P TTL volatile 消息 · Message/Group History 与已读门面 · 已读变更和本地补偿完成 · 消息来源与 Pull 同步生命周期 · 三类批量事件/完整 single fallback · SDK 50k 内存去重/应用持久幂等 · E2EE 高级 API · RPC 索引 · UDP 待机 L1141-1165 |
|
|
50
51
|
| [agent.md 与 group.index 的 ETag 观察与同步机制](agent.md与group.index的ETag观察与同步机制.md) | 服务端 ETag 来源 · 四 SDK 被动观察 · agent.md HEAD/GET 触发 · group.index 显式 pull 与 CAS · 协议和源码索引 |
|
|
51
52
|
| [07-错误处理](07-错误处理.md) | Result · Python `ErrorInfo.cause` · 错误类层级 · 错误码 · 重试 |
|
|
52
53
|
| [08-最佳实践](08-最佳实践.md) | 幂等连接 · 消息同步/History · AUNClient 级 Pull Gate(同 namespace 单飞、客户端最多 4 个并行)· group.index · 测试数据保护 |
|
|
@@ -84,11 +85,13 @@
|
|
|
84
85
|
- 当前身份与消息接入、无任务 Ownership、两个 local 场景、名片及文件缓存、凭证组织与升级 → [应用集成指南](0.5.24-SDK应用集成指南.md)
|
|
85
86
|
- 三主体分层、提交/ACK、NS 事实和远端 CAS、local 身份隔离、缓存新鲜度、语言差异与验收 → [开发与移植指南](0.5.24-SDK开发与移植指南.md)
|
|
86
87
|
|
|
87
|
-
### 0.5.
|
|
88
|
+
### 0.5.36 增量与历史接入专题
|
|
88
89
|
|
|
89
|
-
-
|
|
90
|
-
|
|
91
|
-
-
|
|
90
|
+
- 0.5.36 应用升级、大事件、共识重启复用、证书与 UDP → [应用集成指南](0.5.36-SDK应用集成指南.md);令牌桶、缓存与失效、NS 配套、验签/新签、UDP 状态机及四端落点 → [开发与移植指南](0.5.36-SDK开发与移植指南.md);源码与已有验证 → [parity 0.5.36](../../python/CHANGES_FOR_PARITY.md#v0536) 和四 SDK CHANGELOG
|
|
91
|
+
|
|
92
|
+
- 0.5.35 应用升级、订阅过滤、ACK/恢复、Echo、UDP/Mail 接线与验收 → [应用集成指南](0.5.35-SDK应用集成指南.md);0.5.34 多角色、持久化、durable outbox、实时目录及 Group FS/Service Proxy → [历史应用指南](0.5.34-SDK应用集成指南.md)
|
|
93
|
+
- 0.5.35 四端共同契约、可信发布者、本地路径、ACK 任务、UDP 心跳和三端 Mail 差异 → [开发与移植指南](0.5.35-SDK开发与移植指南.md);0.5.34 存储、队列恢复、条件 ACL、Group FS/Storage/Proxy → [历史移植指南](0.5.34-SDK开发与移植指南.md)
|
|
94
|
+
- 0.5.35 源码差异、三端 UDP/Mail、单实例发布与验证边界 → [parity 0.5.35](../../python/CHANGES_FOR_PARITY.md#v0535);[0.5.34 parity](../../python/CHANGES_FOR_PARITY.md#v0534) 保留历史记录
|
|
92
95
|
|
|
93
96
|
- 0.5.32 历史应用调用与升级影响 → [应用集成指南](0.5.32-SDK应用集成指南.md);四端契约、内部流程及验收 → [开发与移植指南](0.5.32-SDK开发与移植指南.md);源码差异与已有验证 → [parity](../../python/CHANGES_FOR_PARITY.md#v0532)。EventService 的当前增量见上面的 0.5.34 专题。
|
|
94
97
|
- 0.5.30 应用行为、主动 Pull 边界、本地 Ownership、Storage 版本及内部 RPC → [应用指南](0.5.30-SDK应用集成指南.md);控制恢复、转发净化、YAML 与版本预检的四端契约 → [开发与移植指南](0.5.30-SDK开发与移植指南.md);验证范围见 [parity](../../python/CHANGES_FOR_PARITY.md#v0530--控制流按需恢复与-sdk-行为对齐未发布)。
|
|
@@ -98,7 +101,7 @@
|
|
|
98
101
|
### 身份与认证
|
|
99
102
|
|
|
100
103
|
- 当前普通 Ownership 2.1 双文件关系、双向绑定、release/转移、两个 local 编排、文件 CAS 与显式重试 → [应用集成指南](Ownership2.1-SDK应用集成指南.md)、[开发与移植指南](Ownership2.1-SDK开发与移植指南.md);wire 格式见[协议 2.1](../protocol/Ownership协议定义2.1.md)
|
|
101
|
-
- 通用 Store raw/document
|
|
104
|
+
- 通用 Store raw/document 多签、现代 Group/Org 双文件声明/共识、实体主签、owner token 上传、历史格式及访问补齐 → [协议 §2.5](../protocol/Ownership协议定义2.1.md#25-grouporg-名片的实体主签与-owner-上传)、[Group RPC](09-group-rpc-manual.md#群组生命周期)
|
|
102
105
|
- 结构化约束→委托→登记→完整Verify→状态/CRL,以及语义签发→确认→登记→请求验真→业务验收 → [应用集成指南](凭证与组织服务SDK应用集成指南.md)
|
|
103
106
|
- 结构化链/完整Verify、可信proof/CRL适配及语义四SDK契约与独立持久状态 → [开发与移植指南](凭证与组织服务SDK开发与移植指南.md)
|
|
104
107
|
- 旧版与六语义RPC的参数/结果、修订、协调、CRL及错误 → [凭证服务 RPC 手册](09-凭证服务RPC手册.md)
|
|
@@ -194,9 +197,11 @@ TypeScript 身份与消息接线、Ownership 审批恢复、resolve、默认缓
|
|
|
194
197
|
|
|
195
198
|
定义消息 peer/batch/Gate、Ownership NS 事实和远端 CAS、Stage、local 专属 slot 与身份代际、展示及文件缓存、PKI 和 Credential 查询新鲜度、组织 checkpoint。列出四端兼容差异、Rust 核查与分层验收,不将已有专项证据等同完整发布验证。
|
|
196
199
|
|
|
197
|
-
### 0.5.
|
|
200
|
+
### 0.5.36 应用集成、开发移植与历史指南
|
|
201
|
+
|
|
202
|
+
[0.5.36 应用指南](0.5.36-SDK应用集成指南.md):范围 L7-19、事件大小/速率 L20-42、共识复用与失效 L43-76、证书 L77-87、UDP L88-107、Node/Go L108-117、验收 L118-130;[开发与移植指南](0.5.36-SDK开发与移植指南.md):契约 L7-19、事件 L20-50、持久共识 L51-85、观察失效 L86-102、NS L103-112、历史验签/新签 L113-128、UDP L129-153、语言专属 L154-161、回归 L162-176。[0.5.36 变更与跨端对齐](../../python/CHANGES_FOR_PARITY.md#v0536) L15-78:基线/矩阵 L17-30、事件大小与速率 L32-38、共识缓存、观察及证书验签 L40-54、UDP/Node/Go 差异 L56-61、配套服务与边界 L63-67、核验 L69-78。
|
|
198
203
|
|
|
199
|
-
|
|
204
|
+
[0.5.35 应用指南](0.5.35-SDK应用集成指南.md):范围 L7-20、EventService L21-61、ACK/恢复 L62-77、Echo L78-94、UDP L95-124、Mail L125-163、语言专属 L164-177、验收 L178-189;[开发与移植指南](0.5.35-SDK开发与移植指南.md):职责 L7-17、事件契约 L18-63、ACK/同步 L64-83、Echo L84-99、UDP L100-136、Mail L137-172、语言落点 L173-184、回归 L185-204。 [历史 0.5.35 parity](../../python/CHANGES_FOR_PARITY.md#v0535) L84-159 覆盖通配/过滤、本地事件路径、后台 ACK、Echo、三端 UDP/原生 Mail、Python/Go 专属变化及单实例发布边界。两份 0.5.34 历史专题分别覆盖应用接入和四端实现:EventService 多角色共存、目录与订阅合并恢复、发布 durable outbox、按事件汇总的实时目录,以及 Storage 条件 ACL、Group FS、Service Proxy 和弹性补拉。配套 parity 章节记录四端落点、服务依赖和未执行的部署/跨域验收边界。
|
|
200
205
|
|
|
201
206
|
### 0.5.32 更新日志与跨端对齐
|
|
202
207
|
|
|
@@ -204,25 +209,25 @@ TypeScript 身份与消息接线、Ownership 审批恢复、resolve、默认缓
|
|
|
204
209
|
|
|
205
210
|
[开发与移植指南](0.5.32-SDK开发与移植指南.md):基线/架构/四端入口 L5-53、单实例注册与状态 L54-107、鉴权和目录原子提交 L108-156、消息/公平背压/RPC预算 L157-227、恢复/限流/任务 L228-242、VFS并发失效 L243-288、四端落点/独有变化 L289-303、验收入口及已有证据 L304-319。
|
|
206
211
|
|
|
207
|
-
|
|
212
|
+
历史 [parity](../../python/CHANGES_FOR_PARITY.md#v0532) L311-408:发布基线 L315-320、门面 L321-336、授权与默认凭证存储 L337-352、消息及设备租约 L353-362、容量与公平调度 L363-379、通用消息恢复/限流 L380-388、Storage/Ownership L389-398、已有验证和发布边界 L399-408。四 SDK CHANGELOG 按各语言整理同一基线后的实际增量;0.5.31 已发布,较早章节保留历史语义。
|
|
208
213
|
|
|
209
214
|
### 0.5.30 更新日志与跨端对齐
|
|
210
215
|
|
|
211
216
|
0.5.30 [应用指南](0.5.30-SDK应用集成指南.md):行为摘要 §1 L5-14、消息恢复 §2 L16-29、本地 Ownership §3 L31-43、Storage §4 L45-47、转发与风控 §5 L49-53、升级 §6 L55-61;[开发与移植指南](0.5.30-SDK开发与移植指南.md):跨端契约 §1 L5-14、控制恢复 §2 L16-29、observer.forward §3 L31-43、Ownership/YAML §4 L45-49、Storage §5 L51-55、内部 RPC 与差异 §6 L57-68。
|
|
212
217
|
|
|
213
|
-
历史 [0.5.30 变更与对齐清单](../../python/CHANGES_FOR_PARITY.md#v0530--控制流按需恢复与-sdk-行为对齐未发布)
|
|
218
|
+
历史 [0.5.30 变更与对齐清单](../../python/CHANGES_FOR_PARITY.md#v0530--控制流按需恢复与-sdk-行为对齐未发布) L480-521:按需恢复、转发净化、本地 Ownership、Storage 预检与当时的验证范围;当前增量见 [0.5.36 parity](../../python/CHANGES_FOR_PARITY.md#v0536)。
|
|
214
219
|
|
|
215
220
|
### 0.5.29 更新日志与跨端对齐
|
|
216
221
|
|
|
217
222
|
0.5.29 [应用指南](0.5.29-SDK应用集成指南.md):接入与消息 §1—§2 L5-54、共识 §3 L55-80、resolve §4 L81-104、上传管理 §5 L105-145、缓存/业务 §6—§7 L146-167、升级 §8 L168-180;[开发与移植指南](0.5.29-SDK开发与移植指南.md):契约 §1—§2 L5-63、缓存/resolve §3—§4 L64-94、上传恢复 §5 L95-123、四端/继承 §6—§7 L124-151、核查 §8 L152-164。
|
|
218
223
|
|
|
219
|
-
历史 [0.5.29 变更与对齐清单](../../python/CHANGES_FOR_PARITY.md#v0529--共识查询缓存与普通上传未发布)
|
|
224
|
+
历史 [0.5.29 变更与对齐清单](../../python/CHANGES_FOR_PARITY.md#v0529--共识查询缓存与普通上传未发布) L525-594:公共共识、ETag/resolve、普通上传、NS 配套与当时的验证范围;四端 CHANGELOG 提供接口摘要。
|
|
220
225
|
|
|
221
226
|
### 0.5.28 更新日志与跨端对齐
|
|
222
227
|
|
|
223
|
-
历史 0.5.28 [应用指南](0.5.28-SDK应用集成指南.md):身份/消息接入 §2—§3 L18-95、凭证/组织 §4—§5 L96-137、Storage/Ownership §6—§7 L138-186、Owner 通知 §8 L187-201、风控/升级 §9—§10 L202-228;[开发与移植指南](0.5.28-SDK开发与移植指南.md):上传/下载 schema §1 L7-36、非一致共识 fresh §2 L37-62、分类控制消息 §3 L63-108、Owner outbox §4 L109-121、风控 §5 L122-134、移植矩阵 §6 L135-146。 [历史对齐清单](../../python/CHANGES_FOR_PARITY.md#v0528--校验控制消息与风控未发布)
|
|
228
|
+
历史 0.5.28 [应用指南](0.5.28-SDK应用集成指南.md):身份/消息接入 §2—§3 L18-95、凭证/组织 §4—§5 L96-137、Storage/Ownership §6—§7 L138-186、Owner 通知 §8 L187-201、风控/升级 §9—§10 L202-228;[开发与移植指南](0.5.28-SDK开发与移植指南.md):上传/下载 schema §1 L7-36、非一致共识 fresh §2 L37-62、分类控制消息 §3 L63-108、Owner outbox §4 L109-121、风控 §5 L122-134、移植矩阵 §6 L135-146。 [历史对齐清单](../../python/CHANGES_FOR_PARITY.md#v0528--校验控制消息与风控未发布) L598-679 记录四端落点、已有测试入口及服务依赖/验收边界;公共共识流程以 0.5.29 为准。
|
|
224
229
|
|
|
225
|
-
0.5.27 [应用指南](0.5.27-SDK应用集成指南.md):身份/连接/消息迁移 §2—§3 L30-133,结构化 §4 L134-192/语义 §5 L193-349,组织与缓存 §6—§7 L350-388,升级 §8 L389-408;[开发与移植指南](0.5.27-SDK开发与移植指南.md):字节/签名 §2 L38-84,结构化 §3 L85-123/语义 §4 L124-297,组织 §5 L298-334,迁移交付 §6 L335-383,平台与回归 §7—§8 L384-410。 [变更与对齐清单](../../python/CHANGES_FOR_PARITY.md#v0527--相对于-v0525-基线的变更未发布)
|
|
230
|
+
0.5.27 [应用指南](0.5.27-SDK应用集成指南.md):身份/连接/消息迁移 §2—§3 L30-133,结构化 §4 L134-192/语义 §5 L193-349,组织与缓存 §6—§7 L350-388,升级 §8 L389-408;[开发与移植指南](0.5.27-SDK开发与移植指南.md):字节/签名 §2 L38-84,结构化 §3 L85-123/语义 §4 L124-297,组织 §5 L298-334,迁移交付 §6 L335-383,平台与回归 §7—§8 L384-410。 [变更与对齐清单](../../python/CHANGES_FOR_PARITY.md#v0527--相对于-v0525-基线的变更未发布) L683-797 对照 0.5.25 源码,说明语义凭证、消息证据、状态/Usage 恢复、Gateway 迁移、时间容错、组织及 CLI;四端 CHANGELOG 提供接口级摘要,parity 列出实现落点、语言差异和已有验证范围。0.5.26 仅为 TypeScript 根证书打包修正,旧版本章节保留历史记录。
|
|
226
231
|
|
|
227
232
|
### CHANGELOG-0.5.6
|
|
228
233
|
|
|
@@ -298,7 +303,7 @@ TypeScript 身份与消息接线、Ownership 审批恢复、resolve、默认缓
|
|
|
298
303
|
|
|
299
304
|
### 06-API手册
|
|
300
305
|
|
|
301
|
-
列出 AIDStore、resolve 的四语言 opts/输入输出、frontmatter 标准与扩展字段、ownership 七种共识状态及 owner.md 快照/TTL/失败语义、AID、AUNClient、Ownership 2.1 与 Credential/Org 入口、EventService 多角色/持久化/发布订阅目录查询、Python PushFacade、P2P peer/全部对端 Pull、轻量 pending 快照与可选整体估计/Pull 页内渲染计数、50k 内存去重和应用幂等、Message/Group History 与已读门面、生命周期事件、agent.md、ServiceProxyClient、E2EE 和 Group Index facade。
|
|
306
|
+
列出 AIDStore、resolve 的四语言 opts/输入输出、frontmatter 标准与扩展字段、ownership 七种共识状态及 owner.md 快照/TTL/失败语义、AID、AUNClient、Ownership 2.1 与 Credential/Org 入口、EventService 多角色/持久化/发布订阅目录查询、Python PushFacade、P2P peer/全部对端 Pull、轻量 pending 快照与可选整体估计/Pull 页内渲染计数、50k 内存去重和应用幂等、Message/Group History 与已读门面、生命周期事件、agent.md、ServiceProxyClient、E2EE 和 Group Index facade。UDP 待机尾节 L1141-1165 定义固定 20 字节心跳与动态周期、human 准入、应用在线与恢复边界;浏览器 JS 和本期 Rust 保持 WS。
|
|
302
307
|
|
|
303
308
|
### 07-错误处理
|
|
304
309
|
|
package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/2272.1.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
## 1. 参与方与顺序
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
本指南的普通 bind/release/transfer Facade 只处理普通主体的 Ownership 2.1,`human` 不可声明 owner。当前现代 `group/org` 由专属生命周期维护归属,同时发布配对 `owner.md`/`agent.md` 声明并参与关系版本、owner 锁及通用共识;通用管理操作仍返回 `not_applicable`、`retryable=false`,不自动转调用生命周期方法,NS 仅对缺少 ownership 的历史实体保留 `not_applicable` 标记,SDK 按实际返回状态处理。实体主签不含 signer_aid,也不要求旧 entity_cert_fingerprint;当前 owner token 上传、可选 owner 附签与恢复见 [协议 §2.5](../protocol/Ownership协议定义2.1.md#25-grouporg-名片的实体主签与-owner-上传)。下文保留普通主体及历史编排说明,不得据其中旧边界排除现代实体的双文件声明与共识。
|
|
12
12
|
|
|
13
13
|
| 参与方 | 职责 |
|
|
14
14
|
| --- | --- |
|
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
|
|
9
9
|
| 角色/材料 | 职责 |
|
|
10
10
|
| --- | --- |
|
|
11
|
-
| sub |
|
|
11
|
+
| sub | 普通被管理身份自己签署并以本人身份向 NS 提交 `agent.md`;现代 Group/Org 由实体主签、当前 owner token 上传。 |
|
|
12
12
|
| owner/新 owner | 自己签署并向本人 Storage 发布 `sub_aids/{sub_aid}/owner.md`。 |
|
|
13
13
|
| NS | 根据这两份当前权威文件验收并锁定关系;Storage 中的 sub 名片副本不参与验收。 |
|
|
14
14
|
|
|
15
|
-
owner 权限不包含 sub 私钥或代签、代上传能力。普通名片更新保留全部关系字段及原 CAS;关系无效或暂不可确认只影响依赖 owner 的授权,不阻断普通名片和通信。
|
|
15
|
+
普通主体的 owner 权限不包含 sub 私钥或代签、代上传能力。普通名片更新保留全部关系字段及原 CAS;关系无效或暂不可确认只影响依赖 owner 的授权,不阻断普通名片和通信。
|
|
16
16
|
|
|
17
|
-
本流程用于普通主体;human 可作为 owner,不能作为声明 owner 的 sub
|
|
17
|
+
本流程用于普通主体;human 可作为 owner,不能作为声明 owner 的 sub。现代 Group/Org 支持配对的 owner.md/agent.md 声明与通用共识;创建、绑定、解散和强制 rekey 转让仍由专属生命周期驱动,普通 bind/release/transfer 关系管理 Facade 对其返回 `not_applicable`。缺少 ownership 的历史实体名片保留读取兼容,NS 保留 `not_applicable` 标记,SDK 以实际返回 status 为准,不将 owner-only 视为共识。作为 owner 仍须遵守各入口的类型限制,local 编排的 owner 仅接受 human/agent。
|
|
18
18
|
|
|
19
19
|
SDK 不维护 Ownership 任务状态机、WAL 或后台恢复,不提交独立 decisions 回执。NS 以归属事实判断冲突;锁定后,新的 accept/reject 不能改变关系,须走释放或转移。
|
|
20
20
|
|
|
@@ -319,7 +319,7 @@ if (current.status === 'consensus' && current.owner_aid === 'owner.agentid.pub')
|
|
|
319
319
|
| `invalid` | 材料确定无效,不能授权。 |
|
|
320
320
|
| `unavailable` | 当前事实不可确认,保留保护并等待。 |
|
|
321
321
|
|
|
322
|
-
Group/Org
|
|
322
|
+
NS 对缺少 ownership 的历史 Group/Org 保留 `not_applicable` 标记,该状态不属于六态;现代实体声明参与双文件共识,SDK 以实际返回 status 为准。先判断 status,不能把占位版本 0/unlocked 当成无锁证据。无目标上下文的查询也不能枚举独立 owner 邀请。
|
|
323
323
|
|
|
324
324
|
普通下载的 `verification.ownership_status` 是 legacy 展示字段。普通 peer 名片展示可按 ETag 复用 Ownership 快照,不必轮询重检;`owner.md` 可独立变化,实际管理操作仍由 SDK/服务端回源核验当前归属、权限和文件 CAS。清理后可再次出现版本 1,版本号不是全局关系标识。
|
|
325
325
|
|
|
@@ -360,4 +360,4 @@ SDK 不保存未完成操作,不在 `connect()` 后扫描任务或补发通知
|
|
|
360
360
|
|
|
361
361
|
完整的新语义应配套发布 NS 与四 SDK。已有 2.1 NS 的普通绑定、本地绑定及目标 owner 文件先提交的本地转移,正常路径仍可能可用;sub 先同意的转移、Stage 与 owner 文件交错及相同归属重新签发,需要本轮 NS 修复。新 SDK 不调用 decisions,旧服务保留该接口不影响它;过渡版 SDK 若强依赖已移除接口,则需升级。Rust SDK 未随本轮改造,不能套用本文“无任务、无 WAL”的实现结论。
|
|
362
362
|
|
|
363
|
-
Group/Org 名片由实体主签、当前 owner token
|
|
363
|
+
现代 Group/Org 名片由实体主签、当前 owner token 上传,主签不含 signer_aid,也不要求旧 entity_cert_fingerprint;SDK 生命周期流程先写配对 owner.md,再发布实体声明并确认共识。失败稿保留完整多签原文、固定 owner/证书代际及原 CAS,应用显式重试;当前 owner 具备本地实体密钥或可恢复的群绑定材料时,每连接首次访问对应实体检查并按需补齐共识,不在重连时遍历全部实体 PUT。格式见 [协议 §2.5](../protocol/Ownership协议定义2.1.md#25-grouporg-名片的实体主签与-owner-上传)。
|