@agentunion/fastaun 0.5.33 → 0.5.35
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 +59 -2
- package/README.md +28 -26
- package/_packed_docs/CHANGELOG.md +59 -2
- package/_packed_docs/INDEX.md +26 -12
- package/_packed_docs/KITE_DOCS_GUIDE.md +17 -11
- 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/03-Gateway-/350/277/236/346/216/245/346/250/241/345/274/217.md +58 -8
- 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.33-SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +464 -316
- package/_packed_docs/sdk/0.5.33-SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +499 -304
- package/_packed_docs/sdk/0.5.34-SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +133 -0
- package/_packed_docs/sdk/0.5.34-SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +107 -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/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +16 -13
- package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +13 -1
- package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +19 -9
- package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +87 -20
- package/_packed_docs/sdk/09-collab-rpc-manual.md +48 -30
- package/_packed_docs/sdk/09-custody-api-manual.md +3 -3
- package/_packed_docs/sdk/09-group-rpc-manual.md +60 -13
- package/_packed_docs/sdk/09-message-rpc-manual.md +22 -0
- package/_packed_docs/sdk/09-meta-rpc-manual.md +2 -1
- package/_packed_docs/sdk/09-payload-reference.md +9 -8
- package/_packed_docs/sdk/09-proxy-rpc-manual.md +20 -14
- package/_packed_docs/sdk/09-storage-rpc-manual.md +1698 -1659
- package/_packed_docs/sdk/09-stream-rpc-manual.md +33 -20
- package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +19 -17
- 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 +125 -30
- 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 +109 -33
- package/_packed_docs/sdk/INDEX.md +30 -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/sdk/README.md +11 -6
- 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/auth.js +39 -45
- package/dist/auth.js.map +1 -1
- package/dist/client/control-messages.js +2 -2
- package/dist/client/control-messages.js.map +1 -1
- package/dist/client/delivery.d.ts +12 -1
- package/dist/client/delivery.js +281 -46
- package/dist/client/delivery.js.map +1 -1
- package/dist/client/lifecycle.js +13 -1
- package/dist/client/lifecycle.js.map +1 -1
- package/dist/client/rpc-budget.d.ts +21 -0
- package/dist/client/rpc-budget.js +82 -0
- package/dist/client/rpc-budget.js.map +1 -0
- package/dist/client/rpc-pipeline.d.ts +5 -0
- package/dist/client/rpc-pipeline.js +227 -63
- package/dist/client/rpc-pipeline.js.map +1 -1
- package/dist/client/sync-channels.d.ts +90 -0
- package/dist/client/sync-channels.js +508 -0
- package/dist/client/sync-channels.js.map +1 -0
- package/dist/client/v2-e2ee.d.ts +5 -1
- package/dist/client/v2-e2ee.js +420 -303
- package/dist/client/v2-e2ee.js.map +1 -1
- package/dist/client.d.ts +17 -0
- package/dist/client.js +373 -50
- 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 +3 -1
- 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/pubsub/binding.js +23 -3
- package/dist/pubsub/binding.js.map +1 -1
- package/dist/pubsub/channel.d.ts +15 -3
- package/dist/pubsub/channel.js +114 -7
- package/dist/pubsub/channel.js.map +1 -1
- package/dist/pubsub/client.d.ts +17 -2
- package/dist/pubsub/client.js +205 -40
- package/dist/pubsub/client.js.map +1 -1
- package/dist/pubsub/credentials.d.ts +3 -0
- package/dist/pubsub/credentials.js +57 -20
- package/dist/pubsub/credentials.js.map +1 -1
- package/dist/pubsub/index.d.ts +5 -2
- package/dist/pubsub/index.js +70 -54
- package/dist/pubsub/index.js.map +1 -1
- package/dist/pubsub/service.d.ts +9 -0
- package/dist/pubsub/service.js +266 -20
- package/dist/pubsub/service.js.map +1 -1
- package/dist/pubsub/types.d.ts +13 -1
- package/dist/storage/lowlevel.d.ts +3 -1
- package/dist/storage/lowlevel.js +13 -0
- package/dist/storage/lowlevel.js.map +1 -1
- package/dist/storage/types.d.ts +10 -0
- package/dist/storage/types.js.map +1 -1
- package/dist/storage/vfs.d.ts +3 -1
- package/dist/storage/vfs.js +2 -2
- package/dist/storage/vfs.js.map +1 -1
- package/dist/tools/cross-sdk-agent.d.ts +55 -5
- package/dist/tools/cross-sdk-agent.js +88 -21
- package/dist/tools/cross-sdk-agent.js.map +1 -1
- package/dist/transport.d.ts +16 -0
- package/dist/transport.js +129 -7
- package/dist/transport.js.map +1 -1
- package/dist/udp-standby.d.ts +89 -0
- package/dist/udp-standby.js +487 -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事件发布订阅开发移植指南
|
|
2
2
|
|
|
3
|
-
面向 SDK
|
|
3
|
+
面向 SDK 维护者和新语言移植者,定义四端 SDK 0.5.34 工作区源码中 EventService 的分层、消息与状态契约、关键执行顺序及验收场景;包发布和服务部署状态另行核对。应用接线见[应用集成指南](AUN事件发布订阅应用集成指南.md),完整设计见[事件订阅发布方案](../../../docs/AUN文档/AUN事件订阅发布方案.md)。底层消息与实例 RPC 见[消息 RPC 手册](09-message-rpc-manual.md)。本文整理现有实现,不新增框架接口。
|
|
4
4
|
|
|
5
5
|
## 1. 分层与移植顺序
|
|
6
6
|
|
|
@@ -41,16 +41,16 @@ Pub → Bus 与 Bus → Sub 是两次独立 P2P 投递,均经过 Gateway 和 M
|
|
|
41
41
|
|
|
42
42
|
| 实现视角 | 先实现的内部链路 | 对外验收入口 | 对应章节 |
|
|
43
43
|
| --- | --- | --- | --- |
|
|
44
|
-
| Bus | Binding注册与失租 → 核心授权/设备订阅 → 原子受理 → 公平调度 → 注销 | start、issue_grant、update_config、stats、close | §2、§4、§6、§9 |
|
|
45
|
-
| Pub | 新授权与目录暂存 → 有界发布队列 → 后台发送 →
|
|
46
|
-
| Sub | 订阅意图与设备租约 → 有界接收/去重 → handler或等待队列 → 续期与恢复 | authorize、subscribe、on_event或next_event | §4、§5、§7 |
|
|
44
|
+
| Bus | Binding注册与失租 → 核心授权/设备订阅 → 原子受理 → 公平调度 → 注销 | start、issue_grant、update_config、publications、subscriptions、stats、close | §2、§4、§6、§9 |
|
|
45
|
+
| Pub | 新授权与目录暂存 → 待发布记录持久化 → 有界发布队列 → 后台发送 → 完成后删除持久正文 | authorize、publications、publish、wait_published | §4—§6、§8 |
|
|
46
|
+
| Sub | 订阅意图与设备租约 → 有界接收/去重 → handler或等待队列 → 续期与恢复 | authorize、subscribe、subscriptions、on_event或next_event | §4、§5、§7 |
|
|
47
47
|
|
|
48
48
|
按上表逐端实现与验收;公开方法用 Python 风格标识,各语言命名见 §8。本地 Bus 管理直接进入当前服务核心,远端 Pub/Sub 经 Channel、Gateway、Message 与 Bus Binding 通信。
|
|
49
49
|
|
|
50
50
|
| 层次 | 职责 | 不应混入的状态 |
|
|
51
51
|
| --- | --- | --- |
|
|
52
52
|
| EventService 门面 | 按 client 与 bus_aid 管理角色、生命周期、公开方法和 JSON 对象校验 | 不向应用暴露 Binding 或实例注册令牌 |
|
|
53
|
-
| 发布/订阅客户端 |
|
|
53
|
+
| 发布/订阅客户端 | 授权材料、目录与订阅意图持久化,待发布记录恢复,有界收发与完成结果 | 不把本地发布恢复扩展为事件历史或远端业务交付保证 |
|
|
54
54
|
| Bus 核心 | 目录、白名单/凭证校验、设备级租约与订阅、受理去重、快照、fanout、统计 | 不依赖服务端存储事件订阅表 |
|
|
55
55
|
| Binding / Channel | E2EE 控制消息、可信来源与设备定向、入站准入、回复和实例注册 | 不将业务处理结果解释为底层 ACK |
|
|
56
56
|
| 凭证适配器 | 完整 Verify、签发登记、撤销、真实提交记录及恢复 | 不以只验签或 CID 查询替代完整校验 |
|
|
@@ -58,7 +58,9 @@ Pub → Bus 与 Bus → Sub 是两次独立 P2P 投递,均经过 Gateway 和 M
|
|
|
58
58
|
|
|
59
59
|
推荐按“既有 AUN E2EE 与控制流 → Channel/Binding → Bus 核心及调度 → 客户端 → 统一门面”落地,并先做同语言场景,再做有向跨 SDK 组合。各语言独立实现语言无关 JSON 协议,内部类、线程机制和状态文件不构成共享代码依赖。
|
|
60
60
|
|
|
61
|
-
公开边界固定:Python/TS/JS 为 `client.EventService`,Go 为 `client.EventService()`。同 client、同 Bus
|
|
61
|
+
公开边界固定:Python/TS/JS 为 `client.EventService`,Go 为 `client.EventService()`。同 client、同 Bus 可同时绑定 `bus/pub/sub`,按 `(bus_aid, role)` 分别管理端点;Pub/Sub 分别授权并持有独立租约,Bus 身份仍必须等于当前 client AID。签发、撤销及统计只允许已启动的本地 Bus 宿主调用。网络目标以 `bus_aid` 传入;内部 wire 使用 `service_aid`,应用事件由门面补充 `bus_aid`。
|
|
62
|
+
|
|
63
|
+
门面把发布与订阅方法路由到相应角色;`catalog` 优先本地 Bus,否则 Pub 再 Sub,沿用所选端点的分页协议。`renew` 覆盖已绑定的 Pub/Sub,`drain/close` 覆盖该 Bus 的已绑定角色;启动恢复须先使本地 Bus 就绪,再启动客户端角色。
|
|
62
64
|
|
|
63
65
|
## 2. 场景一:启动唯一 Bus 实例
|
|
64
66
|
|
|
@@ -72,7 +74,7 @@ Message 只维护 `Bus AID + service=event_service` 的实例注册;目录、
|
|
|
72
74
|
|
|
73
75
|
可信 AID、device、slot、connection 来自 Gateway 认证会话,不能从请求正文自报。成功回复含原 `registration_id`、实例地址、`expires_at`(毫秒)、`ttl_seconds=100`、`renew_after_seconds=30`。RPC 错误 `-32009` 的 `data.code` 区分 `DEVICE_CONFLICT`、`SERVICE_LEASE_LOST`、`SERVICE_UNAVAILABLE`;发往未启用服务的消息返回 `SERVICE_NOT_STARTED`。
|
|
74
76
|
|
|
75
|
-
本次 start
|
|
77
|
+
本次 start 生成新令牌,验证回复令牌一致。注册成功后再加载和合并持久状态,注册冲突不得改写存储;恢复完成须再次检查原实例期限,过期则清理并注销,不启用接收。本地承接截止取“请求开始的单调时钟 + ttl_seconds”,不能用回复到达时间重新计满 100 秒;回复延迟不增加有效期。按下一期限安排续期,续期与重试不得超过原实例剩余期限。
|
|
76
78
|
|
|
77
79
|
失租或到期后同时停止入站、排队处理及 fanout;不自动争抢后来实例。显式再次 start 清理旧状态,以新令牌注册。旧启动代次的迟到回复、任务或定时器不能修改新实例。关闭须停止接收、清理/等待已接管工作并注销;失败启动也须释放本地资源。
|
|
78
80
|
|
|
@@ -97,6 +99,7 @@ sequenceDiagram
|
|
|
97
99
|
else 注册成功
|
|
98
100
|
M-->>G: 实例租约100秒,30秒后续期
|
|
99
101
|
G-->>B: 原注册令牌及期限
|
|
102
|
+
B->>B: 加载持久目录及有效关系,合并本次配置
|
|
100
103
|
B->>B: 启用接收、处理队列及fanout
|
|
101
104
|
B-->>A: start成功
|
|
102
105
|
loop 按下次期限等待,正常每30秒
|
|
@@ -147,9 +150,12 @@ P/C 与 Bus 之间全部复用 E2EE P2P `message.send`。加密外层 `payload.t
|
|
|
147
150
|
| op | 关键输入 | 结果 |
|
|
148
151
|
| --- | --- | --- |
|
|
149
152
|
| `authorize` | auth_mode、scope、凭证模式的 grant | lease_id、auth_mode、scope、expires_at、renew_after_seconds、catalog 首页 |
|
|
150
|
-
| `subscribe`
|
|
153
|
+
| `subscribe` | lease_id、完整事件名或单层模式数组 events;可选平级 publisher_aids、publisher_types、publisher_exttypes | 关系变更状态;events 为展开后的实际完整事件名 |
|
|
154
|
+
| `unsubscribe` | lease_id、完整事件名或单层模式数组 events | 从现有订阅移除的实际事件名 |
|
|
151
155
|
| `renew` | lease_id;凭证模式带原授权绑定材料 | 原范围的新到期时间 |
|
|
152
156
|
| `catalog` | 可选 event_name、limit、page_token;普通调用方带租约 | items、revision/catalog_revision、next_page_token |
|
|
157
|
+
| `publications` | 可选 event_name、limit、page_token;远端带发布租约 | 按 publisher_aid/event_name 汇总的受理次数与首次/最近时间 |
|
|
158
|
+
| `subscriptions` | 可选 event_name、limit、page_token;远端带订阅租约 | 当前有效的 AID/device/slot/event 关系,不含凭证或租约令牌 |
|
|
153
159
|
| `publish` | lease_id、event_id、event_name、schema_version、data、expires_at、reply_mode | none 无业务回复;accepted 返回快速受理结果 |
|
|
154
160
|
| 本地 `issue_grant` | subject_aid、scope、grant_expires_at | grant、cid、receipt 或 registration_confirmation |
|
|
155
161
|
| 本地 `revoke_grant` | cid | 撤销结果 |
|
|
@@ -168,7 +174,7 @@ P/C 与 Bus 之间全部复用 E2EE P2P `message.send`。加密外层 `payload.t
|
|
|
168
174
|
| 层级 | 幂等键与约束 |
|
|
169
175
|
| --- | --- |
|
|
170
176
|
| 控制请求 | 可信发送 AID、device、slot、request_id 绑定完整请求指纹;并发重复复用首次结果,改参报 `REQUEST_CONFLICT` |
|
|
171
|
-
| 发布客户端 | 同 event_id 保持 event_name/schema_version/data,复用原 expires_at;冲突报 `IDEMPOTENCY_CONFLICT` |
|
|
177
|
+
| 发布客户端 | 同 event_id 保持 event_name/schema_version/data,复用原 expires_at;同一发送尝试的网络重试复用 message_id,恢复或失败后的新尝试更新 request_id、绑定和网络 message_id;冲突报 `IDEMPOTENCY_CONFLICT` |
|
|
172
178
|
| Bus 发布受理 | `(publisher_aid,event_id)` 缓存首次事件指纹和受理结果至原期限;冲突报 `EVENT_CONFLICT`;去重记录不保留正文 |
|
|
173
179
|
| 目标投递 | 稳定 message_id 包含服务、发布者、事件、订阅 AID 和设备/slot;超时重试复用原 ID 和截止 |
|
|
174
180
|
| 订阅接收 | `(Bus AID,publisher_aid,event_id)` 去重至原期限,内存有界 |
|
|
@@ -181,14 +187,16 @@ P/C 与 Bus 之间全部复用 E2EE P2P `message.send`。加密外层 `payload.t
|
|
|
181
187
|
|
|
182
188
|
### 4.1 白名单与本地宿主
|
|
183
189
|
|
|
184
|
-
目录按完整事件名登记;allowlist 每项区分 `publish_aids/subscribe_aids`。事件条目 `"*"` 与精确条目按并集合并,AID 数组 `"*"` 允许任意已通过 AUN
|
|
190
|
+
目录按完整事件名登记;allowlist 每项区分 `publish_aids/subscribe_aids`。事件条目 `"*"` 与精确条目按并集合并,AID 数组 `"*"` 允许任意已通过 AUN 身份认证的主体;目录外事件仍被拒绝。allowlist 单独 `"*"` 的全部允许语义保持不变,与 §4.4 订阅及发布者过滤的单层模式分开处理。
|
|
185
191
|
|
|
186
192
|
Bus 宿主本地维护全部配置并调用签发、撤销和统计。远端发布者、订阅者仅持各自设备租约,目录查询按该租约过滤;本地 Bus 可查询全部目录。
|
|
187
193
|
|
|
188
|
-
配置缩权时立即裁剪 allowlist 租约 scope
|
|
194
|
+
配置缩权时立即裁剪 allowlist 租约 scope、删除无剩余权限的租约和相应订阅。客户端按成功 renew 返回的 scope 收缩并持久保存原授权范围及订阅意图,后续合并授权不重新带入已知撤销范围。新增权限只在重新 authorize 时授予;renew 不能扩大原 scope。凭证租约不会因白名单缩权而改变授权来源。
|
|
189
195
|
|
|
190
196
|
多事件沿用相同协议:Bus 目录登记多个完整事件名,allowlist 对每个事件分别配置。客户端一次 authorize 的 scope 可包含多个事件;同一请求任一项未获准则整体失败。subscribe/unsubscribe 的 events 数组可选择获准范围内的一部分,每次 publish 仍只包含一个 event_name 和一份 JSON 正文。回调依据 event_name 分发;不同事件共享当前 Bus 的容量与公平调度预算。应用示例见[应用指南 §3](AUN事件发布订阅应用集成指南.md#3-场景一白名单接入)。
|
|
191
197
|
|
|
198
|
+
同角色且授权模式、凭证相同时,后续 authorize 的事件与已授权事件合并,再整体校验;不同凭证不能混合扩大 scope。subscribe 追加关系,同一实际事件再次订阅则替换其过滤条件,省略过滤恢复不限;unsubscribe 仅移除指定关系。客户端目录、授权和逐事件订阅及过滤条件的持久状态按身份、Bus、角色及设备实例隔离,Pub/Sub 相互不覆盖。
|
|
199
|
+
|
|
192
200
|
### 4.2 完整凭证校验
|
|
193
201
|
|
|
194
202
|
凭证模式的启动顺序是“Bus AUN 身份连接就绪 → 本地 start 配置目录 → 宿主审批并本地签发凭证 → 发布/订阅方 authorize → 订阅方 subscribe”。Bus 使用自身 AID 接入 AUN,start 要求 bus_aid 等于当前身份,随后自动调用 message.evtsvc.register;凭证模式省略 allowlist 即可,凭证适配器由 SDK 自动创建。
|
|
@@ -292,7 +300,7 @@ sequenceDiagram
|
|
|
292
300
|
M-->>G: 定向投递
|
|
293
301
|
G-->>P: 目录后续页,重复直至取齐
|
|
294
302
|
end
|
|
295
|
-
P->>P:
|
|
303
|
+
P->>P: 所有页成功且代次有效后提交并持久保存目录与授权材料
|
|
296
304
|
```
|
|
297
305
|
|
|
298
306
|
```text
|
|
@@ -300,7 +308,7 @@ sequenceDiagram
|
|
|
300
308
|
暂存目录 = 当前目录副本;页 = 回复.catalog
|
|
301
309
|
循环:暂存(页.items);无next_page_token则退出
|
|
302
310
|
页 = await catalog(回复.lease_id, 页.next_page_token, 本次新授权材料)
|
|
303
|
-
|
|
311
|
+
所有页成功且代次仍有效:一次提交暂存目录、授权材料和新租约,保存持久状态
|
|
304
312
|
任一页失败或已关闭:保留旧状态,不提交部分结果
|
|
305
313
|
```
|
|
306
314
|
|
|
@@ -310,14 +318,56 @@ Pub 随后可 publish;Sub 还须 subscribe 才有事件订阅关系。续页
|
|
|
310
318
|
|
|
311
319
|
签发前保存原 grant 和登记请求;真实提交前保存提交时间及请求摘要,正常返回需验登记回执。有效绑定窗口内重试原材料;超窗后只允许依据真实发送证据与最新签名状态证明确认原登记,不得仅凭“凭证已存在”认定该次操作成功。
|
|
312
320
|
|
|
313
|
-
确认成功后返回同一 grant/cid,`receipt=null` 并附 `registration_confirmation
|
|
321
|
+
确认成功后返回同一 grant/cid,`receipt=null` 并附 `registration_confirmation`。撤销同样保留原请求和结果。服务配置与凭证适配器是两个持久化域,均默认复用 SDK 已有持久层;应用可显式覆盖相应存储。
|
|
314
322
|
|
|
315
323
|
来源:[Python 凭证适配器](../../python/src/aun_core/pubsub/credentials.py)、[TS 凭证适配器](../../ts/src/pubsub/credentials.ts)、[Go 凭证适配器](../../go/pubsub_credentials.go)、[凭证移植指南](凭证与组织服务SDK开发与移植指南.md)。
|
|
316
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
|
+
|
|
317
365
|
## 5. 目录、版本与内容校验
|
|
318
366
|
|
|
319
367
|
目录条目包含 `description/schema_version/content_schema/default_ttl_seconds/max_ttl_seconds`,回复另有 event_name、allowed_actions。白名单与凭证 authorize 均返回嵌套 catalog 首页,客户端自动取完后续页并缓存,然后提交新授权状态;成功返回后即可发布或订阅接收。独立 catalog 保留,用于查询与刷新。
|
|
320
368
|
|
|
369
|
+
Bus 启动先加载持久目录、白名单,再按事件合并本次配置;update_config 同样增量合并,同名条目以本次值为准,其余保留。对合并结果完成校验再保存。收回某事件的白名单权限须提交该事件的空名单,不能把省略条目或空配置解释为清空目录。
|
|
370
|
+
|
|
321
371
|
- authorize 附带目录只按新租约 scope 生成。续页 token 额外绑定该租约,不能用于另一租约。
|
|
322
372
|
- authorize 附带 catalog 的 UTF-8 JSON 最多 2 KiB,完整 authorize.result 仍最多 64 KiB。首页容不下一条时返回空 items 与 offset=0 的续页 token,SDK 自动按普通目录页补齐。这样默认 4096 条幂等缓存新增目录的 UTF-8 JSON 总量最多 8 MiB,不把大 schema 逐请求复制留存。
|
|
323
373
|
- 客户端暂存各页,在全部成功且运行代次仍有效后更新目录、授权和租约;续页失败或关闭不提交部分状态。返回值保留有界首页,不能再把所有页合并进租约或幂等回包。
|
|
@@ -334,7 +384,7 @@ Pub 随后可 publish;Sub 还须 subscribe 才有事件订阅关系。续页
|
|
|
334
384
|
|
|
335
385
|
### 6.1 受理与快照顺序
|
|
336
386
|
|
|
337
|
-
发布客户端先做目录、版本、TTL、JSON
|
|
387
|
+
发布客户端先做目录、版本、TTL、JSON 与本地容量检查,将原 event_id、expires_at、正文及发布选项写入持久存储,写入成功后才确认有界入队并返回 event_id。持久写入失败时调用失败,不确认接收。后台发送结果进入完成等待表或回调,publish 不等待整个网络及 fanout。
|
|
338
388
|
|
|
339
389
|
同一事件的订阅视图在受理时固定。随后新订阅不能加入旧事件;取消、撤销或替换订阅代次后,发送前复核可以阻止尚未发送的旧快照任务。快照采用共享引用计费,不能为每次 publish 无界复制整张订阅表。
|
|
340
390
|
|
|
@@ -348,7 +398,7 @@ sequenceDiagram
|
|
|
348
398
|
participant M as 消息服务
|
|
349
399
|
participant B as Bus SDK
|
|
350
400
|
A->>P: publish(bus_aid, event_name, data)
|
|
351
|
-
P->>P:
|
|
401
|
+
P->>P: 校验后持久写入待发布记录,再放入有界发送队列
|
|
352
402
|
P-->>A: event_id
|
|
353
403
|
P->>G: 后台message.send:publish,原始expires_at
|
|
354
404
|
G->>M: 正TTL的sdk_control密文
|
|
@@ -371,11 +421,12 @@ sequenceDiagram
|
|
|
371
421
|
G->>M: 定向内存投递
|
|
372
422
|
B->>B: 释放预算,唤醒受背压入口
|
|
373
423
|
end
|
|
424
|
+
P->>P: 达到所选成功阶段后删除本地持久正文
|
|
374
425
|
Note over A,P: none以AUN接受发送为完成;accepted以Bus受理为完成
|
|
375
426
|
```
|
|
376
427
|
|
|
377
428
|
```text
|
|
378
|
-
Pub.publish
|
|
429
|
+
Pub.publish:校验并持久写入成功后有界入队,返回event_id;worker后台发送
|
|
379
430
|
Bus入口:尝试预留条数与字节,失败则暂停对应Pull且不ACK/去重
|
|
380
431
|
成功接管后提交消息去重与ACK,按发布AID轮转处理
|
|
381
432
|
通过授权/版本/期限/事件去重后,原子受理快照及fanout任务
|
|
@@ -392,6 +443,10 @@ Bus入口:尝试预留条数与字节,失败则暂停对应Pull且不ACK/去
|
|
|
392
443
|
|
|
393
444
|
`publish` 返回、本地 `message.send` 成功、`publish.result(status=accepted)` 是三个不同阶段;受理确认不等目标匹配及发送完成。目标发送超时表示结果未知,重试沿用 ID 与期限;确认后只入账一次,不能把超时直接计为明确失败。
|
|
394
445
|
|
|
446
|
+
发布端仅在对应阶段成功后删除持久正文:none 等 AUN 接受发送,accepted 等 Bus 受理。close、取消、中断或未确认成功时保留待发布记录;删除持久记录失败也不得把记录视为已完成。并发提交同一 event_id 必须共同等待首次耐久写入,写入失败不能有调用提前确认成功。重启按原 event_id 和 expires_at 恢复,经重新鉴权后继续发送;已过期则移除待发布正文并保存可查询的失败结果,不延长 TTL。成功的运行时结果缓存不承担跨重启查询承诺。
|
|
447
|
+
|
|
448
|
+
此持久顺序只覆盖发布端尚未完成的记录。Bus 已受理后的 fanout、目标投递队列及 Message 的 volatile 收件箱仍是运行时状态,不因此获得事件历史或端到端持久交付保证。
|
|
449
|
+
|
|
395
450
|
每个订阅 AID 一个逻辑 worker,同 AID 多设备共享公平份额,每个 AID 最多一条事件发送在途。使用 DRR 按工作量推进,成本为明文字节加默认 128 字节固定开销;发布 AID 与目标 AID 都计相应预算,避免只按事件条数轮转导致大消息独占。
|
|
396
451
|
|
|
397
452
|
### 6.3 容量与调度预算
|
|
@@ -432,13 +487,13 @@ sequenceDiagram
|
|
|
432
487
|
G->>M: 发往Bus的sdk_control
|
|
433
488
|
M-->>G: 定向到Bus
|
|
434
489
|
G-->>B: 可信AID/device/slot及订阅请求
|
|
435
|
-
B->>B:
|
|
490
|
+
B->>B: 展开已授权事件,建立带逐事件过滤的设备订阅
|
|
436
491
|
B->>G: 定向subscribe.result
|
|
437
492
|
G->>M: 回复原设备/slot
|
|
438
493
|
M-->>G: 定向投递
|
|
439
494
|
G-->>S: 订阅成功
|
|
440
495
|
S-->>A: subscribe完成
|
|
441
|
-
B->>G: fanout
|
|
496
|
+
B->>G: fanout事件至符合发布者过滤的订阅设备/slot
|
|
442
497
|
G->>M: TTL内存收件箱
|
|
443
498
|
M-->>G: Push或Pull响应,仅目标设备可消费
|
|
444
499
|
G-->>S: sdk_control事件密文及可信来源
|
|
@@ -465,6 +520,10 @@ sequenceDiagram
|
|
|
465
520
|
participant M as 消息服务
|
|
466
521
|
participant B as Bus SDK
|
|
467
522
|
Note over P,B: 授权默认200分钟有效,正常每1小时续期
|
|
523
|
+
opt 新进程已重新authorize,或已绑定角色再次start
|
|
524
|
+
P->>P: 加载本角色目录、授权、订阅意图及待发布记录
|
|
525
|
+
P->>P: 已过期记录保存失败结果,其余等待重新鉴权
|
|
526
|
+
end
|
|
468
527
|
P->>P: 等待授权续期时点,或连接重新ready
|
|
469
528
|
P->>G: renew:当前lease_id及原授权材料
|
|
470
529
|
G->>M: 发往Bus的控制消息
|
|
@@ -483,14 +542,17 @@ sequenceDiagram
|
|
|
483
542
|
P->>P: 经同一消息路径补subscribe,仅恢复未取消事件
|
|
484
543
|
end
|
|
485
544
|
end
|
|
545
|
+
P->>P: 鉴权就绪后按原ID及期限续发未完成记录
|
|
486
546
|
```
|
|
487
547
|
|
|
488
548
|
```text
|
|
549
|
+
角色启动:加载持久目录、授权、订阅意图及待发布记录;过期发布保存失败结果
|
|
489
550
|
无已保存授权材料:结束;否则按当前生命周期串行恢复
|
|
490
551
|
租约未过期:先renew,仅REAUTH_REQUIRED转重新鉴权
|
|
491
552
|
租约已过期或renew返回REAUTH_REQUIRED:重新authorize并自动加载完整目录
|
|
492
|
-
Sub
|
|
553
|
+
Sub需要补订阅时:锁定意图,按各精确事件原过滤subscribe仍未取消项
|
|
493
554
|
成功才清除待恢复标记;暂时失败保留意图并有界重试
|
|
555
|
+
发布恢复:按原event_id及expires_at入有界队列,成功后删除持久正文
|
|
494
556
|
已关闭或代次已变化:结束旧恢复流程
|
|
495
557
|
```
|
|
496
558
|
|
|
@@ -500,9 +562,9 @@ Bus 实例续期是 §2 的30秒/100秒链路,Pub/Sub授权续期是这里的1
|
|
|
500
562
|
|
|
501
563
|
`on_event/onEvent/OnEvent` 与 `next_event/nextEvent/NextEvent` 是两种消费模式;有 handler 时新事件进入 handler 路径。Python 异步回调 await、同步回调在线程中串行执行;TS/JS await 返回 Promise;Go 回调为函数。回调失败不自动重发,慢回调占用接收额度。
|
|
502
564
|
|
|
503
|
-
连接 ready 或授权续期到期触发进程内恢复:优先 renew,有效关系不重复创建;`REAUTH_REQUIRED` 时按保存的原授权重新 authorize
|
|
565
|
+
连接 ready 或授权续期到期触发进程内恢复:优先 renew,有效关系不重复创建;`REAUTH_REQUIRED` 时按保存的原授权重新 authorize,再恢复未取消的订阅。进程重启后,Bus 宿主重新 start,远端 Pub/Sub 分别 authorize 建立目标角色,内部启动加载该角色的目录、授权材料、订阅意图和待发布记录,再经鉴权恢复订阅与发布;已绑定角色可再次 start。Go 启动后的恢复由后台推进,Start 返回不等于所有待发布消息已发送。订阅恢复失败应保留待恢复状态,不因一次失败丢失意图;取消与恢复要串行,不能把已取消事件重新加入。门面没有公开 recover API。
|
|
504
566
|
|
|
505
|
-
close
|
|
567
|
+
close 清理运行时租约、请求等待、队列和去重,阻止旧代次回调继续交给后续 handler;保留持久目录、授权及订阅意图、尚未完成的发布记录。支持同对象显式再次 start,也支持新进程按原身份和设备实例恢复;目录加载后合并后续注册、订阅。drain 等待已接管工作及仍运行的回调,不能把 AUN 接受发送当作远端业务完成。
|
|
506
568
|
|
|
507
569
|
底层 Push/Pull/ACK 沿用设备、slot 和类别隔离;只有成功接管才提交去重与 ACK。事件交给应用后没有独立业务 ACK、历史游标或 replay API;应用回调返回不提供持久交付保证。
|
|
508
570
|
|
|
@@ -510,33 +572,44 @@ close 清租约、授权、订阅、pending、发布结果、队列和运行时
|
|
|
510
572
|
|
|
511
573
|
| 状态 | 保存边界 |
|
|
512
574
|
| --- | --- |
|
|
513
|
-
|
|
|
575
|
+
| Bus 目录与关系 | 目录、白名单、签发记录、暂停 CID、授权租约及逐事件订阅与发布者过滤;加载后增量合并本次配置,仅恢复未过期且通过当前权限复核的关系 |
|
|
576
|
+
| 发布/订阅客户端 | 授权材料、目录缓存和逐事件订阅意图及过滤;启动加载后重新鉴权,按原条件恢复,后续授权、订阅增量合并 |
|
|
577
|
+
| 发布记录 | 确认入队前耐久保存;成功后删除正文,中断保留;重启按原 ID、原 TTL 恢复,过期失败结果可查 |
|
|
514
578
|
| 凭证适配器 | 原凭证、登记/撤销请求、真实提交证据及结果;支持原操作恢复 |
|
|
515
|
-
| 运行时 |
|
|
579
|
+
| 运行时 | Bus 实例令牌、受理快照、fanout 与目标投递队列、接收队列、成功结果缓存、事件去重、发布汇总和统计不作为持久恢复账本 |
|
|
516
580
|
|
|
517
581
|
| SDK | 入口和配置 | 源码入口 |
|
|
518
582
|
| --- | --- | --- |
|
|
519
|
-
| Python |
|
|
520
|
-
| TS |
|
|
521
|
-
| JS |
|
|
522
|
-
| Go |
|
|
583
|
+
| Python | 默认复用自身 AID 的 SQLite aun.db;显式 state_path 的 Bus 状态使用 event-service.sqlite3,凭证仍使用 credential-state.json | [门面](../../python/src/aun_core/pubsub/__init__.py)、[Binding](../../python/src/aun_core/pubsub/binding.py) |
|
|
584
|
+
| TS(Node.js) | 默认复用自身 AID 的 SQLite aun.db;start.state 覆盖 Bus 状态,credentialOptions.state 覆盖凭证存储,客户端状态仍走默认持久层 | [门面与 options](../../ts/src/pubsub/index.ts)、[凭证](../../ts/src/pubsub/credentials.ts) |
|
|
585
|
+
| JS(浏览器) | 默认复用 IndexedDB aun-keystore/metadata;Bus 状态按身份及 Bus 隔离,客户端另区分角色及设备实例;显式适配器与 TS 相同 | [门面](../../js/src/pubsub/index.ts)、[凭证](../../js/src/pubsub/credentials.ts) |
|
|
586
|
+
| Go | 默认复用自身 AID 的 SQLite aun.db;显式 StatePath 的 Bus 状态使用 event-service.sqlite3,凭证仍使用 credential-state.json | [门面](../../go/pubsub_service.go)、[类型](../../go/pubsub_types.go) |
|
|
523
587
|
|
|
524
|
-
|
|
588
|
+
原生端数据库路径为 `{aun_path}/AIDs/{self-aid}/aun.db`,复用 TokenStore 的元数据或实例状态层;浏览器复用现有 IndexedDB 元数据层。默认凭证键仍为 `pubsub_credentials_v1`。Bus 状态按身份和 Bus 隔离,Go 另使用实例状态隔离;客户端状态按身份、Bus、角色及设备实例隔离。显式 state_path/StatePath 或 start.state 仅覆盖对应 Bus 状态,客户端队列仍走默认本地库;credentialOptions.state 仅覆盖凭证材料。Python/Go 首次可导入旧 event-service.json,后续写入 SQLite,保留旧文件。
|
|
589
|
+
|
|
590
|
+
Bus 恢复须复核租约原期限、当前目录与白名单、凭证有效性及撤销状态;已撤权的 scope 和订阅不得恢复,仍有效的权限可以保留。内建凭证适配器随租约保存能力约束所需的原授权参数,恢复时重新校验当前凭证链、状态证明、期限、撤销及约束,通过后才重建内存验证上下文;旧记录缺必要上下文时要求重新鉴权。暂时网络或读取故障应中止启动并保留原持久关系,不能按撤权过滤后覆盖存储。客户端恢复不能复用失效授权或延长原事件期限,也不能让结果缓存淘汰尚未成功的持久待发布记录。
|
|
525
591
|
|
|
526
592
|
Python 使用 snake_case,TS/JS 使用 camelCase(发布选项也接受 snake_case),Go 使用导出方法和 `PubSubPublishOptions`。Python/TS/JS next_event 超时为秒,Go 通过 context 控制。内部持久字段及分页 token 不承诺跨语言交换;移植应保证线上协议互通,不照搬另一语言运行时对象布局。
|
|
527
593
|
|
|
528
|
-
文件适配采用平台路径 API 和 UTF-8
|
|
594
|
+
文件适配采用平台路径 API 和 UTF-8,浏览器等待 IndexedDB 事务完成;保存完成后才确认目录、订阅、签发变更及发布入队。持久写入失败须向调用方报告,保留原待发布记录;恢复读取失败后应允许重试启动。独立 SDK 不依赖 Kite 模块共享代码,也不增加语言专有 IPC。
|
|
529
595
|
|
|
530
596
|
## 9. 统计、错误与验收场景
|
|
531
597
|
|
|
532
598
|
stats 仅由本地 Bus 宿主调用,可按 event_name 过滤,含 service_aid、scope、since、as_of、counts;重启重置累计计数。`active_subscribers` 是去重 AID 数,`active_subscriptions` 是 AID/device/slot/event 关系数。`matched` 来自受理快照,`submitted` 是 AUN 接受的目标设备投递,`unconfirmed` 是结果未知;均不等于应用处理成功。具体字段见[应用指南 §7](AUN事件发布订阅应用集成指南.md#7-持久化统计与故障定位)。
|
|
533
599
|
|
|
600
|
+
公开 `publications` / `subscriptions`(Go 为 `Publications` / `Subscriptions`)按参数 `role` 选择本地 Bus 或对应 Pub/Sub,省略优先 Bus;role 不进入线上请求。本地 Bus 返回全局,远端 publications 只返回可信 sender AID 且处于当前 publish scope 内的条目,subscriptions 只返回当前 device/slot 租约实际建立的关系。查询必须复核当前凭证、撤销、范围及设备绑定,能力约束使用租约已验证的原授权参数,不以查询参数重新解释原约束;暂时查证失败应查询失败,不能据此删除有效关系。
|
|
601
|
+
|
|
602
|
+
发布条目为 `publisher_aid、event_name、published、first_published_at、last_published_at`,只在首次成功受理时更新,重复去重和拒绝不计;使用独立运行期汇总,不随事件 TTL 淘汰、不存正文或逐消息 ID,Bus 重启清零。汇总默认受限于 publication_items=8192、publication_bytes=4 MiB;条目新增或字节增量超额在受理前报 OVERLOADED。订阅条目为 `subscriber_aid、event_name、device_id、slot_id、expires_at`,仅含有效实际关系,不把 scope 当订阅;客户端订阅意图的原持久化机制不变。
|
|
603
|
+
|
|
604
|
+
回复固定为 `service_aid、since、as_of、items、next_page_token`,末页 token 为 null。可选 event_name 仅过滤可见条目,无匹配空页;limit 默认50、范围1—200。keyset 按 Unicode 码点升序,以发布 `(event_name,publisher_aid)` 或订阅 `(event_name,subscriber_aid,device_id,slot_id)` 排序;签名 token 绑定 op、本地/远端来源、sender、lease_id、scope、过滤条件及末键,60秒有效,不与 catalog token 混用。Bus 重启后旧 token 失效,应从首页重查。每次续页按当前有效数据继续,无冻结快照;完整 wire 回复受 catalog_page_bytes(最多64 KiB)约束,单项放不下报 MESSAGE_TOO_LARGE。
|
|
605
|
+
|
|
534
606
|
| 错误族 | 当前边界 |
|
|
535
607
|
| --- | --- |
|
|
536
|
-
| `BUS_NOT_BOUND/
|
|
608
|
+
| `BUS_NOT_BOUND/ROLE_MISMATCH` | 目标 Bus 或调用所需角色未绑定;同 Bus 的多个角色可以并存 |
|
|
537
609
|
| `SERVICE_IDENTITY_MISMATCH/DEVICE_CONFLICT/SERVICE_LEASE_LOST/SERVICE_NOT_STARTED` | 宿主身份或实例生命周期不满足 |
|
|
538
610
|
| `FORBIDDEN/REAUTH_REQUIRED/CREDENTIAL_UNAVAILABLE` | 权限、租约或凭证证明不可用;按来源重新核验,不自动扩大授权 |
|
|
539
611
|
| `CATALOG_REQUIRED/UNKNOWN_EVENT/SCHEMA_MISMATCH/UNSUPPORTED_SCHEMA_VERSION/INVALID_CONTENT` | 目录、版本或内容不满足 |
|
|
612
|
+
| `INVALID_PATTERN` | 事件或发布者模式含空层、连续 `**` 等无效结构 |
|
|
540
613
|
| `REQUEST_CONFLICT/IDEMPOTENCY_CONFLICT/EVENT_CONFLICT` | 相应层级同幂等键改参 |
|
|
541
614
|
| `OVERLOADED/MESSAGE_TOO_LARGE/EXPIRED/TIMEOUT/CLOSED` | 容量、期限或生命周期不满足;TIMEOUT 保留结果未知语义 |
|
|
542
615
|
|
|
@@ -544,11 +617,14 @@ stats 仅由本地 Bus 宿主调用,可按 event_name 过滤,含 service_aid
|
|
|
544
617
|
|
|
545
618
|
| 场景 | 必须断言 | 现有依据 |
|
|
546
619
|
| --- | --- | --- |
|
|
547
|
-
| 白名单/凭证完整应用流程 |
|
|
620
|
+
| 白名单/凭证完整应用流程 | 多事件授权自动加载目录、同 client 同 Bus 多角色并存且独立授权、JSON 对象、回执分层、两种接收方式 | [Python application](../../python/tests/unit/test_pubsub_application.py)、[TS client](../../ts/tests/unit/pubsub-client.test.ts)、[Go client](../../go/pubsub_client_test.go) |
|
|
621
|
+
| 目录与待发布持久化 | SQLite/IndexedDB 重开、目录与订阅增量合并、写入成功才入队、成功删除正文、中断恢复原 ID/TTL、过期失败可查、写入失败不确认成功 | [Python client](../../python/tests/unit/test_pubsub_client.py)、[Python service](../../python/tests/unit/test_pubsub_service.py)、[TS client](../../ts/tests/unit/pubsub-client.test.ts)、[Go client](../../go/pubsub_client_test.go) |
|
|
548
622
|
| 凭证状态与恢复 | 完整绑定、撤销、证明到期、登记回复丢失、超窗确认及持久材料 | [Python credentials](../../python/tests/unit/test_pubsub_credentials.py)、[Go credentials](../../go/pubsub_credentials_test.go) |
|
|
549
623
|
| 设备与实例 | 同 AID 多设备独立订阅、同设备不同 slot、冲突、失租、旧代次不可消费 | [恢复 E2E](../../python/tests/e2e_test_event_pubsub_recovery.py)、[Message 测试](../../../extensions/services/message/go/cmd/message-go/main_test.go) |
|
|
550
624
|
| 容量与公平 | 64 条/64 MiB、未接管不 ACK、容量唤醒、每 AID 单飞、16/8/4/4 和前台推进 | [容量契约](../../python/tests/unit/test_pubsub_capacity_contracts.py)、[Pull Gate](../../python/tests/unit/test_pubsub_pull_gate.py)、[Go scheduler](../../go/pubsub_scheduler_test.go) |
|
|
551
625
|
| 目录与关系变更 | authorize 全封装预算、自动续页与关闭代次、租约范围目录、token 隔离、版本窗口、缩权和取消 | [Python scenarios](../../python/tests/unit/test_pubsub_scenarios.py)、[JS service](../../js/tests/unit/pubsub-service.test.ts) |
|
|
552
626
|
| 跨 SDK | 四种 Bus 分别验证两种授权、同端、有向跨端和设备场景 | [验收 runner](../../tests/cross-sdk/runner/run_pubsub_acceptance.py)、[实施计划](../../../docs/AUN文档/AUN事件订阅发布TDD实施计划.md) |
|
|
553
627
|
|
|
554
|
-
|
|
628
|
+
此前[128项归档](../../tests/cross-sdk/artifacts/pubsub-4sdk-20261105/remove-manager-acceptance/final-acceptance-summary.json)由四种Bus各32/32组成,覆盖两种授权、同SDK和有向跨SDK;256份内嵌目录经核对,未显式调用catalog。默认凭证入库另由真实SQLite/IndexedDB重开专项签收,详见[实施计划 §9.9](../../../docs/AUN文档/AUN事件订阅发布TDD实施计划.md#99-凭证默认存储授权目录与移除管理身份)。该归档不作为本次角色并存与发布队列持久化变更的验收结果。历史208项保留;真实浏览器、macOS、真实双域设备E2E、实填64 MiB/RSS压力未纳入。
|
|
629
|
+
|
|
630
|
+
本次变更已通过本机相关单元测试、SQLite/IndexedDB 存储重开与故障模拟及静态检查,未执行真实服务 E2E 或浏览器网络 E2E。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# AUN SDK 文档索引
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> 当前四 SDK 源码版本为 **0.5.35**;最新接入与实现见 [0.5.35 应用集成指南](0.5.35-SDK应用集成指南.md)、[开发与移植指南](0.5.35-SDK开发与移植指南.md),源码增量见 [parity 0.5.35](../../python/CHANGES_FOR_PARITY.md#v0535) 和四 SDK CHANGELOG,基础手册、RPC 手册与 0.5.34 历史专题继续提供接入说明。`0.5.xx-*` 为版本增量专题,CHANGELOG 保留历史记录;完整事件协议另见发布订阅专题。三层索引:Layer 1 文档地图,Layer 2 主题交叉索引,Layer 3 单篇摘要。
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -8,14 +8,15 @@
|
|
|
8
8
|
|
|
9
9
|
| 文档 | 说明 |
|
|
10
10
|
|------|------|
|
|
11
|
-
| [AUN事件发布订阅应用集成指南](AUN事件发布订阅应用集成指南.md) |
|
|
12
|
-
| [AUN事件发布订阅开发移植指南](AUN事件发布订阅开发移植指南.md) | SDK
|
|
11
|
+
| [AUN事件发布订阅应用集成指南](AUN事件发布订阅应用集成指南.md) | 应用视角:Bus/Pub/Sub多角色共存、两种授权、目录合并、SQLite/IndexedDB持久化与待发布恢复 |
|
|
12
|
+
| [AUN事件发布订阅开发移植指南](AUN事件发布订阅开发移植指南.md) | SDK移植视角:独立角色租约、目录与订阅持久化、先落盘再发布、成功删除、原TTL与新发送尝试、凭证关系复核恢复及分角色实时清单查询 |
|
|
13
13
|
| [0.5.21 SDK 应用集成指南](0.5.21-SDK应用集成指南.md) | TypeScript 接入 · batch 持久幂等 · peer 同步 · resolve/owner 展示 · 凭证组织恢复 · 诊断与升级 |
|
|
14
14
|
| [0.5.21 SDK 开发与移植指南](0.5.21-SDK开发与移植指南.md) | 四端公开契约 · peer 水位/流控/提交 · frontmatter 与共识缓存 · 原 CAS/旧任务/reset · checkpoint · 语言差异和验收 |
|
|
15
15
|
| [0.5.22 SDK 应用集成指南](0.5.22-SDK应用集成指南.md) | TypeScript 接入 · 消息订阅 · 两种绑定与审批恢复 · resolve 展示 · 60 秒读缓存与刷新 · 撤销同步和完整成员包 |
|
|
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.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、语言专属修复、单实例及验证边界 |
|
|
19
20
|
| [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 · 已有验证范围 |
|
|
20
21
|
| [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 边界 |
|
|
21
22
|
| [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、普通上传锁/恢复与四端移植 |
|
|
@@ -29,7 +30,7 @@
|
|
|
29
30
|
| [Ownership SDK集成指南(legacy)](Ownership-SDK集成指南.md) | TypeScript 应用层快速接入 · 审批 API · 状态查询 · SDK 自动编排流程图 |
|
|
30
31
|
| [Ownership SDK实现指南(legacy)](Ownership-SDK实现指南.md) | 四端移植入口 · proof/escrow · 消息拦截 · metadata · rekey/上传恢复 · 验收 |
|
|
31
32
|
| [Ownership协议定义(legacy)](../protocol/Ownership协议定义.md) | P2P 消息 schema · proof/签名 · agent.md · escrow · owner 授权头 · 现有 RPC |
|
|
32
|
-
| [Ownership 协议定义 2.1](../protocol/Ownership协议定义2.1.md) | 关系仅由agent.md/owner.md 确认 · release 保持 v、清理后 0/重绑默认 1 · Header 结果投影 · Group/Org
|
|
33
|
+
| [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路径历史 |
|
|
33
34
|
| [Ownership SDK 编排指南 2.1](Ownership-SDK编排指南2.1.md) | 历史编排方案;任务恢复、reset 与一次性决定已由当前两份指南的无状态流程替代 |
|
|
34
35
|
| [Ownership 2.1 应用集成指南](Ownership2.1-SDK应用集成指南.md) | TS 接线与审批;双向绑定、释放、转移、两个 local 编排和显式重试的图与示例,以 NS 当前归属为准 |
|
|
35
36
|
| [Ownership 2.1 开发与移植指南](Ownership2.1-SDK开发与移植指南.md) | 严格签验、NS 验收、Storage 条件发布、通用消息交付、本地编排和文件 CAS;不维护 Ownership 任务或 WAL |
|
|
@@ -39,13 +40,13 @@
|
|
|
39
40
|
| [凭证服务 RPC 手册](09-凭证服务RPC手册.md) | 旧版RPC及六个credential.semantic.*的params/result、CAS/协调、CRL分页与十错误码 |
|
|
40
41
|
| [语义凭证示例与验收](../../examples/semantic-credential/示例使用指南.md) | E01—E36、286组配置证据、CN/本地aid.com、浏览器/普通凭证冷恢复与验证边界 |
|
|
41
42
|
| [组织服务 RPC 手册](09-组织服务RPC手册.md) | Org Service 生命周期、成员、凭证查询、审计/授权及内部/未实现方法 |
|
|
42
|
-
| [Ownership 2.1 详细设计](Ownership2.1详细设计.md) | agent.md/owner.md 关系、agent.md 兼容非回归矩阵、旧 SDK owner RPC/JSONL
|
|
43
|
+
| [Ownership 2.1 详细设计](Ownership2.1详细设计.md) | agent.md/owner.md 关系、agent.md 兼容非回归矩阵、旧 SDK owner RPC/JSONL 隔离、本地失败稿/显式重试、现代实体声明补齐与原 CAS |
|
|
43
44
|
| [Ownership 2.1 TDD 实施计划](Ownership2.1-TDD分阶段实施计划.md) | 历史分阶段计划、冻结契约与网络账本、2026-10-13 复查修复边界 |
|
|
44
45
|
| [Ownership 2.1 审查报告](../audit/Ownership2.1代码审查报告.md) | 第二十二节:恢复 agent.md/owner.md 与原控制格式、reset 及历史兼容;第十六至二十一节保留已撤销方案的历史验证边界 |
|
|
45
46
|
| [05-E2EE加密通信](05-E2EE加密通信.md) | E2EE V2 消息 · ProtectedHeaders · need_render 外层提示 · agent.md 版本提示 · 旧 SPK 保留边界 |
|
|
46
47
|
| [ProtectedHeaders用法专题](ProtectedHeaders用法专题.md) | `protected_headers` 四端 API · 实例级/单次调用 · E2EE V2 HMAC 完整性 · 接收信任边界 |
|
|
47
48
|
| [E2EE_V2消息通信时序图](E2EE_V2消息通信时序图.md) | V2 P2P/GROUP 明文与加密主链路 |
|
|
48
|
-
| [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 索引 |
|
|
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 索引 · UDP 待机 L1141-1165 |
|
|
49
50
|
| [agent.md 与 group.index 的 ETag 观察与同步机制](agent.md与group.index的ETag观察与同步机制.md) | 服务端 ETag 来源 · 四 SDK 被动观察 · agent.md HEAD/GET 触发 · group.index 显式 pull 与 CAS · 协议和源码索引 |
|
|
50
51
|
| [07-错误处理](07-错误处理.md) | Result · Python `ErrorInfo.cause` · 错误类层级 · 错误码 · 重试 |
|
|
51
52
|
| [08-最佳实践](08-最佳实践.md) | 幂等连接 · 消息同步/History · AUNClient 级 Pull Gate(同 namespace 单飞、客户端最多 4 个并行)· group.index · 测试数据保护 |
|
|
@@ -82,7 +83,14 @@
|
|
|
82
83
|
|
|
83
84
|
- 当前身份与消息接入、无任务 Ownership、两个 local 场景、名片及文件缓存、凭证组织与升级 → [应用集成指南](0.5.24-SDK应用集成指南.md)
|
|
84
85
|
- 三主体分层、提交/ACK、NS 事实和远端 CAS、local 身份隔离、缓存新鲜度、语言差异与验收 → [开发与移植指南](0.5.24-SDK开发与移植指南.md)
|
|
85
|
-
|
|
86
|
+
|
|
87
|
+
### 0.5.35 增量与 0.5.34 接入专题
|
|
88
|
+
|
|
89
|
+
- 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)
|
|
90
|
+
- 0.5.35 四端共同契约、可信发布者、本地路径、ACK 任务、UDP 心跳和三端 Mail 差异 → [开发与移植指南](0.5.35-SDK开发与移植指南.md);0.5.34 存储、队列恢复、条件 ACL、Group FS/Storage/Proxy → [历史移植指南](0.5.34-SDK开发与移植指南.md)
|
|
91
|
+
- 当前源码差异、三端 UDP/Mail、单实例发布与验证边界 → [parity 0.5.35](../../python/CHANGES_FOR_PARITY.md#v0535);[0.5.34 parity](../../python/CHANGES_FOR_PARITY.md#v0534) 保留历史记录
|
|
92
|
+
|
|
93
|
+
- 0.5.32 历史应用调用与升级影响 → [应用集成指南](0.5.32-SDK应用集成指南.md);四端契约、内部流程及验收 → [开发与移植指南](0.5.32-SDK开发与移植指南.md);源码差异与已有验证 → [parity](../../python/CHANGES_FOR_PARITY.md#v0532)。EventService 的当前增量见上面的 0.5.34 专题。
|
|
86
94
|
- 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-行为对齐未发布)。
|
|
87
95
|
- 0.5.29 应用接入、共识输入输出、resolve、上传与业务服务 → [应用指南](0.5.29-SDK应用集成指南.md);缓存并发、上传恢复、NS 配套与四端落点 → [开发与移植指南](0.5.29-SDK开发与移植指南.md);已有增量及验证见 [历史 parity](../../python/CHANGES_FOR_PARITY.md#v0529--共识查询缓存与普通上传未发布)。
|
|
88
96
|
- 0.5.28 agent.md 校验、共识 fresh、分类控制消息、Owner 通知、风控和四端验证边界 → [应用指南](0.5.28-SDK应用集成指南.md)、[开发与移植指南](0.5.28-SDK开发与移植指南.md);实现差异见 [历史 parity](../../python/CHANGES_FOR_PARITY.md#v0528--校验控制消息与风控未发布)。0.5.27 历史版本见对应旧指南与 parity。
|
|
@@ -90,7 +98,7 @@
|
|
|
90
98
|
### 身份与认证
|
|
91
99
|
|
|
92
100
|
- 当前普通 Ownership 2.1 双文件关系、双向绑定、release/转移、两个 local 编排、文件 CAS 与显式重试 → [应用集成指南](Ownership2.1-SDK应用集成指南.md)、[开发与移植指南](Ownership2.1-SDK开发与移植指南.md);wire 格式见[协议 2.1](../protocol/Ownership协议定义2.1.md)
|
|
93
|
-
- 通用 Store raw/document
|
|
101
|
+
- 通用 Store raw/document 多签、现代 Group/Org 双文件声明/共识、实体主签、owner token 上传、历史格式及访问补齐 → [协议 §2.5](../protocol/Ownership协议定义2.1.md#25-grouporg-名片的实体主签与-owner-上传)、[Group RPC](09-group-rpc-manual.md#群组生命周期)
|
|
94
102
|
- 结构化约束→委托→登记→完整Verify→状态/CRL,以及语义签发→确认→登记→请求验真→业务验收 → [应用集成指南](凭证与组织服务SDK应用集成指南.md)
|
|
95
103
|
- 结构化链/完整Verify、可信proof/CRL适配及语义四SDK契约与独立持久状态 → [开发与移植指南](凭证与组织服务SDK开发与移植指南.md)
|
|
96
104
|
- 旧版与六语义RPC的参数/结果、修订、协调、CRL及错误 → [凭证服务 RPC 手册](09-凭证服务RPC手册.md)
|
|
@@ -133,7 +141,7 @@
|
|
|
133
141
|
|
|
134
142
|
### RPC 与事件
|
|
135
143
|
|
|
136
|
-
- AUN EventService
|
|
144
|
+
- 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事件发布订阅开发移植指南.md);公开门面见 [API 手册](06-API手册.md)
|
|
137
145
|
- `client.call()` / `client.on()` → [04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)
|
|
138
146
|
- Python `connect()` 携带 `push_notify_aid/push_token` 自动登记,以及 `client.push.register/unregister` 运行期变更 → [04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)、`docs/protocol/15-离线推送通知协议.md`
|
|
139
147
|
- `client.notify()` 在线轻量通知、跨域 federation、在线/离线边界 → [Notify通知方案](Notify通知方案.md)
|
|
@@ -186,31 +194,35 @@ TypeScript 身份与消息接线、Ownership 审批恢复、resolve、默认缓
|
|
|
186
194
|
|
|
187
195
|
定义消息 peer/batch/Gate、Ownership NS 事实和远端 CAS、Stage、local 专属 slot 与身份代际、展示及文件缓存、PKI 和 Credential 查询新鲜度、组织 checkpoint。列出四端兼容差异、Rust 核查与分层验收,不将已有专项证据等同完整发布验证。
|
|
188
196
|
|
|
197
|
+
### 0.5.35 变更与 0.5.34 历史指南
|
|
198
|
+
|
|
199
|
+
[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) L15-90 覆盖通配/过滤、本地事件路径、后台 ACK、Echo、三端 UDP/原生 Mail、Python/Go 专属变化及单实例发布边界。两份 0.5.34 历史专题分别覆盖应用接入和四端实现:EventService 多角色共存、目录与订阅合并恢复、发布 durable outbox、按事件汇总的实时目录,以及 Storage 条件 ACL、Group FS、Service Proxy 和弹性补拉。配套 parity 章节记录四端落点、服务依赖和未执行的部署/跨域验收边界。
|
|
200
|
+
|
|
189
201
|
### 0.5.32 更新日志与跨端对齐
|
|
190
202
|
|
|
191
203
|
[应用集成指南](0.5.32-SDK应用集成指南.md):本版变化/整体架构 L5-52、身份与入口 L53-87、白名单多事件流程 L88-171、凭证审批签发 L172-246、设备/租约/容量/存储 L247-282、VFS Cache L283-330、其它主要改动与验收 L331-350。
|
|
192
204
|
|
|
193
205
|
[开发与移植指南](0.5.32-SDK开发与移植指南.md):基线/架构/四端入口 L5-53、单实例注册与状态 L54-107、鉴权和目录原子提交 L108-156、消息/公平背压/RPC预算 L157-227、恢复/限流/任务 L228-242、VFS并发失效 L243-288、四端落点/独有变化 L289-303、验收入口及已有证据 L304-319。
|
|
194
206
|
|
|
195
|
-
|
|
207
|
+
历史 [parity](../../python/CHANGES_FOR_PARITY.md#v0532) L242-339:发布基线 L246-251、门面 L252-267、授权与默认凭证存储 L268-283、消息及设备租约 L284-293、容量与公平调度 L294-310、通用消息恢复/限流 L311-319、Storage/Ownership L320-329、已有验证和发布边界 L330-339。四 SDK CHANGELOG 按各语言整理同一基线后的实际增量;0.5.31 已发布,较早章节保留历史语义。
|
|
196
208
|
|
|
197
209
|
### 0.5.30 更新日志与跨端对齐
|
|
198
210
|
|
|
199
211
|
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。
|
|
200
212
|
|
|
201
|
-
历史 [0.5.30 变更与对齐清单](../../python/CHANGES_FOR_PARITY.md#v0530--控制流按需恢复与-sdk-行为对齐未发布)
|
|
213
|
+
历史 [0.5.30 变更与对齐清单](../../python/CHANGES_FOR_PARITY.md#v0530--控制流按需恢复与-sdk-行为对齐未发布) L411-452:按需恢复、转发净化、本地 Ownership、Storage 预检与当时的验证范围;当前增量见 [0.5.35 parity](../../python/CHANGES_FOR_PARITY.md#v0535)。
|
|
202
214
|
|
|
203
215
|
### 0.5.29 更新日志与跨端对齐
|
|
204
216
|
|
|
205
217
|
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。
|
|
206
218
|
|
|
207
|
-
历史 [0.5.29 变更与对齐清单](../../python/CHANGES_FOR_PARITY.md#v0529--共识查询缓存与普通上传未发布)
|
|
219
|
+
历史 [0.5.29 变更与对齐清单](../../python/CHANGES_FOR_PARITY.md#v0529--共识查询缓存与普通上传未发布) L456-525:公共共识、ETag/resolve、普通上传、NS 配套与当时的验证范围;四端 CHANGELOG 提供接口摘要。
|
|
208
220
|
|
|
209
221
|
### 0.5.28 更新日志与跨端对齐
|
|
210
222
|
|
|
211
|
-
历史 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--校验控制消息与风控未发布)
|
|
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--校验控制消息与风控未发布) L529-610 记录四端落点、已有测试入口及服务依赖/验收边界;公共共识流程以 0.5.29 为准。
|
|
212
224
|
|
|
213
|
-
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-基线的变更未发布)
|
|
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-基线的变更未发布) L614-728 对照 0.5.25 源码,说明语义凭证、消息证据、状态/Usage 恢复、Gateway 迁移、时间容错、组织及 CLI;四端 CHANGELOG 提供接口级摘要,parity 列出实现落点、语言差异和已有验证范围。0.5.26 仅为 TypeScript 根证书打包修正,旧版本章节保留历史记录。
|
|
214
226
|
|
|
215
227
|
### CHANGELOG-0.5.6
|
|
216
228
|
|
|
@@ -286,7 +298,7 @@ TypeScript 身份与消息接线、Ownership 审批恢复、resolve、默认缓
|
|
|
286
298
|
|
|
287
299
|
### 06-API手册
|
|
288
300
|
|
|
289
|
-
列出 AIDStore、resolve 的四语言 opts/输入输出、frontmatter 标准与扩展字段、ownership 七种共识状态及 owner.md 快照/TTL/失败语义、AID、AUNClient、Ownership 2.1 与 Credential/Org 入口、Python PushFacade、P2P peer/全部对端 Pull、轻量 pending 快照与可选整体估计/Pull 页内渲染计数、50k
|
|
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。UDP 待机尾节 L1141-1165 定义固定 20 字节心跳与动态周期、human 准入、应用在线与恢复边界;浏览器 JS 和本期 Rust 保持 WS。
|
|
290
302
|
|
|
291
303
|
### 07-错误处理
|
|
292
304
|
|
|
@@ -310,7 +322,7 @@ TypeScript 身份与消息接线、Ownership 审批恢复、resolve、默认缓
|
|
|
310
322
|
|
|
311
323
|
### 09-proxy-rpc-manual
|
|
312
324
|
|
|
313
|
-
定义 Service Proxy 的 Gateway 控制面 `proxy.register_services` / `proxy.unregister_services` / `proxy.list_services`,以及 proxy-server 数据面 `register_services` 隧道消息、双注册顺序、服务列表一致性和 wakeup
|
|
325
|
+
定义 Service Proxy 的 Gateway 控制面 `proxy.register_services` / `proxy.unregister_services` / `proxy.list_services`,以及 proxy-server 数据面 `register_services` 隧道消息、双注册顺序、服务列表一致性和 wakeup 路由语义;列出四 SDK 入口及 Browser provider 隧道的 `webSocketFactory` 要求。
|
|
314
326
|
|
|
315
327
|
### Notify通知方案
|
|
316
328
|
|
|
@@ -318,10 +330,10 @@ TypeScript 身份与消息接线、Ownership 审批恢复、resolve、默认缓
|
|
|
318
330
|
|
|
319
331
|
### AUN事件发布订阅应用集成指南
|
|
320
332
|
|
|
321
|
-
[应用集成指南](AUN事件发布订阅应用集成指南.md):面向应用开发者:整体架构 L9-43、三角色总流程 L44-
|
|
333
|
+
[应用集成指南](AUN事件发布订阅应用集成指南.md):面向应用开发者:整体架构 L9-43、三角色总流程 L44-76、Facade与多角色入口 L77-103;Bus启动及目录合并 L106-174、Sub订阅/回调及恢复 L175-230、Pub先持久再发布及结果 L231-290;凭证启动/签发验证及两方接入 L291-398、多设备与目录 L399-414、生命周期与原ID/TTL恢复 L415-430、SQLite/IndexedDB及成功删除边界/本地清单与统计 L431-477、源码与本次验收边界 L478-484。
|
|
322
334
|
|
|
323
335
|
### AUN事件发布订阅开发移植指南
|
|
324
336
|
|
|
325
|
-
[开发移植指南](AUN事件发布订阅开发移植指南.md):面向SDK
|
|
337
|
+
[开发移植指南](AUN事件发布订阅开发移植指南.md):面向SDK维护与移植:整体架构及多角色分层 L5-64、Bus注册续租及持久加载 L65-132、消息字段/设备路由/幂等 L133-184;Bus签发与Pub/Sub独立鉴权/目录原子提交 L185-323、目录合并契约 L324-341;Pub耐久入队/成功删除/原TTL与Bus背压fanout预算 L342-430、Sub接收及订阅与发布恢复 L431-529、四端SQLite/IndexedDB状态与隔离 L530-554、统计错误及本次验收边界 L555-588。
|
|
326
338
|
|
|
327
339
|
|
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
|
| --- | --- |
|