@agentunion/fastaun 0.5.30 → 0.5.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/_packed_docs/CHANGELOG.md +22 -0
  3. package/_packed_docs/sdk/0.5.31-SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +162 -0
  4. package/_packed_docs/sdk/0.5.31-SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +167 -0
  5. package/dist/agent-md-schema.js +7 -6
  6. package/dist/agent-md-schema.js.map +1 -1
  7. package/dist/agent-md.d.ts +2 -0
  8. package/dist/agent-md.js +20 -6
  9. package/dist/agent-md.js.map +1 -1
  10. package/dist/aid-store.d.ts +1 -0
  11. package/dist/aid-store.js +1 -0
  12. package/dist/aid-store.js.map +1 -1
  13. package/dist/aid.js +1 -1
  14. package/dist/aid.js.map +1 -1
  15. package/dist/auth.js +1 -1
  16. package/dist/auth.js.map +1 -1
  17. package/dist/client/control-messages.d.ts +0 -1
  18. package/dist/client/control-messages.js +13 -40
  19. package/dist/client/control-messages.js.map +1 -1
  20. package/dist/client/lifecycle.js +11 -3
  21. package/dist/client/lifecycle.js.map +1 -1
  22. package/dist/client/rpc-pipeline.d.ts +1 -1
  23. package/dist/client/rpc-pipeline.js +9 -5
  24. package/dist/client/rpc-pipeline.js.map +1 -1
  25. package/dist/client.d.ts +12 -0
  26. package/dist/client.js +341 -121
  27. package/dist/client.js.map +1 -1
  28. package/dist/discovery.d.ts +1 -0
  29. package/dist/discovery.js +3 -1
  30. package/dist/discovery.js.map +1 -1
  31. package/dist/ownership-v21.d.ts +2 -2
  32. package/dist/ownership-v21.js +18 -21
  33. package/dist/ownership-v21.js.map +1 -1
  34. package/dist/ownership-workflow.js +3 -1
  35. package/dist/ownership-workflow.js.map +1 -1
  36. package/dist/register-flow.js +1 -1
  37. package/dist/register-flow.js.map +1 -1
  38. package/dist/storage/lowlevel.js +5 -1
  39. package/dist/storage/lowlevel.js.map +1 -1
  40. package/dist/storage/vfs.js +1 -3
  41. package/dist/storage/vfs.js.map +1 -1
  42. package/dist/tools/cross-sdk-agent.d.ts +1 -1
  43. package/dist/tools/cross-sdk-agent.js +4 -2
  44. package/dist/tools/cross-sdk-agent.js.map +1 -1
  45. package/dist/transport.d.ts +1 -1
  46. package/dist/transport.js +7 -7
  47. package/dist/transport.js.map +1 -1
  48. package/dist/version.d.ts +1 -1
  49. package/dist/version.js +1 -1
  50. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -6,6 +6,28 @@
6
6
 
7
7
  ---
8
8
 
9
+ ## 0.5.31 — 未发布
10
+
11
+ ### Group/Org Ownership
12
+
13
+ - 现代 `group`/`org` 名片支持 Ownership 2.1 的 `agent.md`+`owner.md` 共识查询与实体自身签名,保留旧实体名片的读取和签名兼容;单文件下载只确认文档,不能代替双文件共识。通用绑定/转移工作流仍不直接操作群/组织,生命周期操作继续使用对应服务。
14
+ - 当前 owner 具备本地实体密钥或可恢复的群绑定材料时,每次连接后首次访问对应群/组织检查共识,必要时补齐现代声明并确认发布结果;创建、绑定及接收转让后的名片发布同样检查共识,不再在连接后遍历全部群补绑。
15
+ - 转让/解散前写入 owner 的转让/释放声明;仅在明确业务拒绝、实体仍属原 owner 且声明未被改写时尝试恢复原件,网络超时等结果不确定的失败不恢复。RPC 与文件提交前检查身份和连接代际,阻止旧任务继续写入;相同上下文的并发组织创建合并执行。
16
+
17
+ ### 控制消息协议
18
+
19
+ - 分类能力升级为 `message_classes_v2`:P2P 支持 `normal`/`control`/`sdk_control`,群仅支持 `normal`/`control`;本地拒绝群 `sdk_control` 请求并忽略该类群推送,避免进入应用交付或内部 P2P 控制处理。
20
+ - 持久控制消息 ACK 不再携带 `scan_proof`,移除证明过期后的重扫续证;恢复旧待确认记录时剥离旧证明。继续校验拉取范围和覆盖水位,持久保存处理游标及待确认 ACK 后再确认,volatile 流继续使用自身游标。
21
+
22
+ ### Storage CAS
23
+
24
+ - 对象写操作及文件重命名未指定 `expected_version` 时,先读取当前版本并随请求发送;对象不存在时使用 `0`。显式版本仍先比对,不一致时返回冲突,服务端原子 CAS 继续负责最终并发检查。
25
+ - `force=true` 不再清除显式版本或跳过预检;未指定版本时重新取得当前版本,避免使用 VFS 的旧写版本缓存。
26
+
27
+ ### 版本与验证
28
+
29
+ - 包配置、锁文件及运行时版本统一为 `0.5.31`;版本升级阶段 TypeScript 类型检查通过。本节按当前代码与既有回归用例核对,整理文档时未重跑测试;四端差异与验证范围见 [parity 文档](../python/CHANGES_FOR_PARITY.md)。
30
+
9
31
  ## 0.5.30 — 未发布
10
32
 
11
33
  ### 消息恢复与同步
@@ -6,6 +6,28 @@
6
6
 
7
7
  ---
8
8
 
9
+ ## 0.5.31 — 未发布
10
+
11
+ ### Group/Org Ownership
12
+
13
+ - 现代 `group`/`org` 名片支持 Ownership 2.1 的 `agent.md`+`owner.md` 共识查询与实体自身签名,保留旧实体名片的读取和签名兼容;单文件下载只确认文档,不能代替双文件共识。通用绑定/转移工作流仍不直接操作群/组织,生命周期操作继续使用对应服务。
14
+ - 当前 owner 具备本地实体密钥或可恢复的群绑定材料时,每次连接后首次访问对应群/组织检查共识,必要时补齐现代声明并确认发布结果;创建、绑定及接收转让后的名片发布同样检查共识,不再在连接后遍历全部群补绑。
15
+ - 转让/解散前写入 owner 的转让/释放声明;仅在明确业务拒绝、实体仍属原 owner 且声明未被改写时尝试恢复原件,网络超时等结果不确定的失败不恢复。RPC 与文件提交前检查身份和连接代际,阻止旧任务继续写入;相同上下文的并发组织创建合并执行。
16
+
17
+ ### 控制消息协议
18
+
19
+ - 分类能力升级为 `message_classes_v2`:P2P 支持 `normal`/`control`/`sdk_control`,群仅支持 `normal`/`control`;本地拒绝群 `sdk_control` 请求并忽略该类群推送,避免进入应用交付或内部 P2P 控制处理。
20
+ - 持久控制消息 ACK 不再携带 `scan_proof`,移除证明过期后的重扫续证;恢复旧待确认记录时剥离旧证明。继续校验拉取范围和覆盖水位,持久保存处理游标及待确认 ACK 后再确认,volatile 流继续使用自身游标。
21
+
22
+ ### Storage CAS
23
+
24
+ - 对象写操作及文件重命名未指定 `expected_version` 时,先读取当前版本并随请求发送;对象不存在时使用 `0`。显式版本仍先比对,不一致时返回冲突,服务端原子 CAS 继续负责最终并发检查。
25
+ - `force=true` 不再清除显式版本或跳过预检;未指定版本时重新取得当前版本,避免使用 VFS 的旧写版本缓存。
26
+
27
+ ### 版本与验证
28
+
29
+ - 包配置、锁文件及运行时版本统一为 `0.5.31`;版本升级阶段 TypeScript 类型检查通过。本节按当前代码与既有回归用例核对,整理文档时未重跑测试;四端差异与验证范围见 [parity 文档](../python/CHANGES_FOR_PARITY.md)。
30
+
9
31
  ## 0.5.30 — 未发布
10
32
 
11
33
  ### 消息恢复与同步
@@ -0,0 +1,162 @@
1
+ # AUN SDK 0.5.31 应用集成指南
2
+
3
+ 面向应用开发者,示例使用 Node.js TypeScript SDK。本文依据截至 2026-11-04 的 `0.5.31` 工作区;包发布、服务部署和验收结果分别核对。跨语言契约见[开发与移植指南](0.5.31-SDK开发与移植指南.md),实现及已有验证见 [parity 0.5.31](../../python/CHANGES_FOR_PARITY.md#v0531--群组织共识控制流-v2-与严格版本写入未发布)。
4
+
5
+ ## 1. 本版接入变化
6
+
7
+ | 范围 | 0.5.31 行为 | 应用接入要点 |
8
+ | --- | --- | --- |
9
+ | 群/组织 Ownership | 现代实体使用通用声明和双文件共识,管理仍走各自生命周期 | 创建、转让和解散使用群/组织入口 |
10
+ | 旧实体补绑 | owner 每连接首次访问对应实体时检查,必要时补齐现代材料 | 保留本地实体密钥及中断恢复材料 |
11
+ | 分类消息 | 协商 `message_classes_v2`;群只支持 `normal/control` | 应用控制消息使用 `control`,不发送群 `sdk_control` |
12
+ | 控制流 ACK | 去掉 `scan_proof` 及续证重扫,保留游标和待确认 ACK | 使用 SDK 消费流程,不自行制造证明或推进水位 |
13
+ | Storage 写入 | SDK 写入携带版本,服务端执行最终 CAS,`force` 不取消版本条件 | 以成功版本继续写,冲突后重新读取并处理业务冲突 |
14
+ | Python 显式重连 | 退避/失败状态无 token 时重新认证,已有 token 保留 | 延用 `connect()` 和连接状态处理 |
15
+
16
+ 0.5.29 的公共共识缓存、resolve、普通名片上传锁规则继续适用,见[历史接入说明](0.5.29-SDK应用集成指南.md)。其中群/组织的当前规则以本文为准;0.5.30 中“force 跳过版本预检”的行为已被替代。
17
+
18
+ ## 2. 身份、连接与业务消费
19
+
20
+ Node 包为 `@agentunion/fastaun`,要求 Node `>=22.16.0`;浏览器使用 `@agentunion/fastaun-browser` 和 IndexedDB/WebCrypto。Python 包为 `fastaun`,要求 Python `>=3.11`。四 SDK 的包/运行时版本统一为 `0.5.31`,具体安装产物仍需核对。
21
+
22
+ 加载原有身份仓库后创建 Client;身份目录、加密 seed、device 和 slot 沿用原配置。浏览器存储配置与 Node 文件目录配置分别使用各自 API。
23
+
24
+ ```ts
25
+ import { AIDStore, AUNClient } from '@agentunion/fastaun';
26
+ declare const store: AIDStore;
27
+ declare const aid: string;
28
+ const loaded = store.load(aid);
29
+ if (!loaded.ok) throw new Error(loaded.error.message);
30
+ const client = new AUNClient(loaded.data.aid);
31
+ ```
32
+
33
+ 先订阅消费事件,再连接。下列 handler 由应用实现,返回的 Promise 应在业务持久化完成后成功结束;应用仍需按接收身份、消息 ID 和业务操作键幂等处理。
34
+
35
+ ```ts
36
+ declare function commitBatch(batch: unknown): Promise<void>;
37
+ client.on('message.batch', commitBatch);
38
+ client.on('group.message_batch', commitBatch);
39
+ client.on('group.event_batch', commitBatch);
40
+ await client.connect({ auto_reconnect: true });
41
+ ```
42
+
43
+ SDK 负责解密、消息交付、消费游标与 ACK,应用负责业务事务。连接 READY、后台追赶完成和业务处理完成是不同状态。History 用于历史查询,不替代实时消费;ACK 不等于标记已读。
44
+
45
+ Python 的显式 `connect()` 接管后台退避/失败状态时,无 token 会恢复认证,有 token 继续既有重连路径。这项修复不表示可以无条件重放先前失败的业务写入;超时写入仍需查询结果。
46
+
47
+ ## 3. 分类消息与按需恢复
48
+
49
+ ### 3.1 发送与消费
50
+
51
+ | 类别 | P2P | 群 | 消费者 |
52
+ | --- | --- | --- | --- |
53
+ | `normal` | 支持 | 支持 | 应用 |
54
+ | `control` | 支持,须协商 | 支持,须协商 | 应用 |
55
+ | `sdk_control` | 仅协商的 SDK 内部协议 | 不支持 | SDK 内部 |
56
+
57
+ 普通业务默认使用 `normal`。应用自己的控制指令使用 `message_class: 'control'`,示例中的目标为完整 AID:
58
+
59
+ ```ts
60
+ declare const peerAid: string;
61
+ await client.message.send({ to: peerAid, encrypt: true,
62
+ message_class: 'control', payload: { type: 'app.refresh.v1' } });
63
+ ```
64
+
65
+ 群消息通过 `client.group.send` 发送,类别仅能为 `normal` 或 `control`。群 `sdk_control` 请求在本地拒绝,该类群推送被忽略;不要把内部 Owner 名片通知改成群 `sdk_control` 广播。SDK 内部类别不会作为普通应用消息交付。
66
+
67
+ 正 TTL 消息沿用非持久化流语义,不能依赖离线持久补投;群 TTL 发送也要求协商新能力。旧 `message_classes_v1` 不等于 `message_classes_v2`,分类能力以实际连接协商为准。
68
+
69
+ ### 3.2 恢复和 ACK
70
+
71
+ 连接就绪后恢复一次待处理 peer 与群流,之后由 Push 唤起对应目标、消息类别及 persistent/volatile 流。群恢复根据 `group.list_my` 的 `streams[message_class][persistent|volatile].needs_pull` 选择拉取;没有周期控制流全量扫描。应用主动 Pull 仍可按需执行。
72
+
73
+ 控制消息 Pull/ACK 不再依赖 `scan_proof`,也不再因证明过期重复拉取。SDK 继续保存处理水位与待确认 ACK,重连后恢复确认;volatile 流使用自己的游标。应用通常无需手动 ACK,不要混用消息类别、peer/群或持久/非持久流的水位。
74
+
75
+ ## 4. 群/组织 Ownership
76
+
77
+ ### 4.1 查询当前关系
78
+
79
+ 现代群/组织 `agent.md` 带 `ownership.statement`,由实体身份签名;owner 在自己的 Storage 保存配对 `owner.md`。应用通过公共入口查询 NS 确认的关系,无需自行下载并拼接两个文件:
80
+
81
+ ```ts
82
+ declare const entityAid: string;
83
+ const current = await client.checkOwnershipConsensus(entityAid);
84
+ const fresh = await client.checkOwnershipConsensus(entityAid, true);
85
+ ```
86
+
87
+ 默认查询沿用同一 Client 内的共识缓存:仅复用 `consensus`、本地已观察 ETag 未变且未标记 missing 的结果,无 TTL;新 Client 首查、非一致结果及显式 `true` 回源 NS。需要立即复核时传 `true`,不要把默认缓存命中解释为已经发现所有远端变化。
88
+
89
+ | 结果 | 应用处理 |
90
+ | --- | --- |
91
+ | `consensus` | 读取已确认 `owner_aid` 和关系版本;具体业务权限仍由服务端检查 |
92
+ | `single_sided` | 只有单边材料,尚未完成共识 |
93
+ | `unbound` | 没有现代声明;旧实体可能仍有生命周期 owner,不等于实体无人管理 |
94
+ | `released` | 有声明但关系已解锁,不能继续按已确认归属使用 |
95
+ | `invalid`/`unavailable` | 材料非法或当前无法确认,读取错误信息并保留原恢复材料 |
96
+
97
+ 服务端在现代文件能确认时采用文件共识,旧材料不能确认时由群/组织服务补充确认;相应名片必须确实是 `type=group` 或 `type=org`。这是服务端旧格式兼容,不表示单张名片的 `owner` 字段就能证明现代共识。
98
+
99
+ ### 4.2 每连接首次访问时补绑
100
+
101
+ owner 登录后首次访问指定群/组织时,SDK 先筛选本地实体密钥或可恢复的群绑定材料,再确认当前 active owner;需要时补齐现代声明,已有一致关系直接跳过。检查按身份、连接与实体合并,不会在登录后遍历全部群补传,同一连接失败也不会反复补绑。
102
+
103
+ 访问预检查失败后仍继续原业务请求,由服务端检查权限;它不是“补绑必定成功”的承诺。创建、绑定、接收转让及恢复中断上传则会在发布后确认共识,应用需要处理这些流程返回的失败。
104
+
105
+ ### 4.3 创建、转让与解散
106
+
107
+ | 对象 | 继续使用的入口 |
108
+ | --- | --- |
109
+ | 群 | `createGroup`/`bindGroupAid`、`group.transferOwner`/`completeGroupTransfer`、`group.dissolve` |
110
+ | 组织 | `org.lifecycle.create`/`transfer`/`transferAccept`/`dissolve` |
111
+ | 普通 agent | 原 Ownership 绑定/释放/转移入口;本地编排继续使用 `bindLocalSubaid`/`transferLocalSubaid` |
112
+
113
+ 群/组织统一的是声明材料和共识,不要改用普通 `bindOwneraid`、`transferSubaid` 或 local API 操作实体。普通 local 编排的 owner/新 owner 可为 human 或 agent,subaid 仍只能为 agent;释放沿用 `releaseSubaid`。
114
+
115
+ SDK 在群/组织转让或解散前发布相应 owner 授权。只有确定的业务拒绝,且 owner、声明原件均未变化时,才尝试恢复原声明;网络超时或结果不明时保留材料。遇到这类失败先查询生命周期状态及 fresh 共识,再按原流程恢复,不能删除材料或无条件重放。
116
+
117
+ ## 5. Storage 版本与并发写入
118
+
119
+ ### 5.1 版本选择
120
+
121
+ SDK 对象写入、创建/完成上传、删除、元数据更新、追加、移动及文件 rename 都携带版本条件。low-level 未指定版本时先读取当前权威版本;明确不存在使用 `0`。显式版本不匹配时在写 RPC 前失败,服务端提交时再执行最终 CAS。
122
+
123
+ | 应用意图 | 使用方式与行为 |
124
+ | --- | --- |
125
+ | 只创建新对象 | 显式 `expectedVersion: 0`;对象已存在则冲突 |
126
+ | 修改已知版本 | 传先前读取或写入确认的 `expectedVersion`,成功后保存新 `version` |
127
+ | 允许覆盖 | `overwrite: true` 控制覆盖意图,本身不取消版本条件,也不跳过 VFS 的已知版本 |
128
+ | 按最新状态覆盖 | `force: true` 未传版本时跳过 VFS 历史版本选择,由底层重新读版本提交;仍可能并发冲突 |
129
+ | `force` 同时传版本 | 严格保留该版本,不自动替换为最新版本 |
130
+
131
+ ```ts
132
+ const created = await client.storage.writeBytes('/app/state.json', '{}',
133
+ { expectedVersion: 0 });
134
+ const updated = await client.storage.writeBytes('/app/state.json', '{"ready":true}',
135
+ { expectedVersion: created.version, overwrite: true });
136
+ ```
137
+
138
+ 示例假定父目录存在。VFS 会记录成功写入的版本;已有对象缺少读取/写入版本时,单独 `overwrite: true` 仍可能被 VFS 拒绝。low-level 自动补版本不意味着 VFS 的这些前置规则被取消。对象不存在时显式传非零版本仍可能被 SDK 预检拒绝,不会无条件改成 `0`。
139
+
140
+ ### 5.2 冲突和预读失败
141
+
142
+ 遇到 `ECONFLICT` 应重新读取当前对象、判断业务变更是否可合并,再提交明确版本。写入超时则先查询对象版本和内容确认结果;不能只把版本刷新后自动重放原业务修改。
143
+
144
+ Python 在读权限不足,或已确认挂载路径命中特定权威预读错误时,允许保留显式版本交服务端检查;没有显式版本仍失败。Go/TS/JS 没有该例外,不能假定只有写权限的同一调用在四端都能通过。文件 rename 的预读及其它差异见[移植指南](0.5.31-SDK开发与移植指南.md)。
145
+
146
+ Python CLI 的 inline、去重与会话上传也携带预检版本,包括覆盖上传。服务端未传版本的兼容模式用于旧调用;新 SDK 的上述封装继续携带版本,`force` 不等于无条件覆盖。
147
+
148
+ ## 6. 延续的转发与风控边界
149
+
150
+ `observer.forward` 外发时,SDK 在副本中移除 `original` 的 `_semantic_evidence`、`_agent_md`、`source`、`device_id`、`slot_id_full`、`proximity`、`same_device`、`same_network`、`same_egress_ip`,保留业务 payload,不修改原接收对象。需传递的业务数据应由应用定义,不依赖这些本地诊断字段。
151
+
152
+ `gateway.risk_status` 仍为服务端专用 RPC,应用不能直接调用。SDK 对风险 Push 的验签、请求预算、状态处理和 ACK 保持原流程;应用通过既有风险状态事件处理暂停、限速和重连等待。
153
+
154
+ ## 7. 升级与验收核对
155
+
156
+ - 四 SDK 包/运行时及测试环境使用 `0.5.31`;Gateway/Message/Group 需具备对应 `message_classes_v2` 能力,NS/Storage 与实体归属检查需匹配新契约。
157
+ - 普通消息及应用控制消息可正常消费;群不发送 `sdk_control`;TTL 非持久流与持久流分别确认,重连可恢复 pending ACK。
158
+ - 现代实体查询共识;旧实体在 owner 首次访问时可补绑;无本地材料的成员不触发 owner 修复;转让/解散继续使用生命周期流程。
159
+ - 验证创建版本 `0`、已知版本更新、过时版本冲突、`force` 保留显式版本,以及超时后查询结果的应用处理。
160
+ - 保留原身份、seed 与恢复材料,按[公网测试指南](../aun公网测试运行指南.md)串行断点续跑;具体环境使用 `{svc}.{issuer}`,公网验收开启 TLS 校验。
161
+
162
+ 已有 Python 公网结果按多次断点续跑覆盖服务端 12 项、smoke 9 项、E2E 24 项,签名审计正常生命周期 48 项;期间出现过间歇 WebSocket 握手超时。它们不代表本版四 SDK 单轮全量通过,也不证明最新服务端 GC/索引已部署。精确执行范围与本地定向记录见 [parity 验证范围](../../python/CHANGES_FOR_PARITY.md#0531-已有验证与覆盖范围);本次整理指南未重新运行代码或公网测试。
@@ -0,0 +1,167 @@
1
+ # AUN SDK 0.5.31 开发与移植指南
2
+
3
+ 本文面向 Python、Go、TypeScript、Browser JavaScript SDK 维护者及其它语言移植者,按截至 2026-11-04 的未发布工作区说明共同契约和实现差异。应用接线见[应用集成指南](0.5.31-SDK应用集成指南.md),实现清单及已有验证见 [parity 0.5.31](../../python/CHANGES_FOR_PARITY.md#v0531--群组织共识控制流-v2-与严格版本写入未发布)。
4
+
5
+ 本版继承 0.5.29 的公共共识查询、实例 ETag 缓存和上传锁规则,以及 0.5.30 的按需控制恢复、转发字段净化与内部 RPC 边界;本页明确替代其中已变化的实体、消息分类及 Storage 版本行为。
6
+
7
+ ## 1. 跨端契约与配套服务
8
+
9
+ | 范围 | 0.5.31 必须保持的行为 |
10
+ | --- | --- |
11
+ | 群/组织关系 | 现代实体使用通用 Ownership 材料和共识;管理仍走各自生命周期接口 |
12
+ | owner 首次访问 | 本地材料预筛、确认 active owner、按连接和实体合并检查,必要时补绑 |
13
+ | 公共共识查询 | 委托 NS;SDK 公共查询不另读 owner.md;单文件验签不等于共识 |
14
+ | 控制流 | 协商 `message_classes_v2`,群不支持 `sdk_control`;ACK 不依赖 scan_proof |
15
+ | Storage | 对象写入自动携版本,force 不绕过版本条件;最终 CAS 由服务端执行 |
16
+ | 并发与恢复 | 实际写入前复核身份和连接代际;不把超时当成确定未提交 |
17
+
18
+ 配套 NS/Auth/Gateway/Group/Org 必须支持新旧实体材料及相应生命周期调用,Gateway/Message/Group 必须支持 V2 分类能力,Storage 必须执行携版本请求的严格 CAS。SDK 升级与服务端部署状态分别核对,不能由 SDK 版本推定服务器已具备全部能力。
19
+
20
+ 服务端控制消息存储、投影移除、GC 和数据库索引属于独立实现与验收范围,不写入 SDK 的公共 API 契约。
21
+
22
+ ## 2. 群/组织的文档与公共共识
23
+
24
+ ### 2.1 现代材料与历史兼容
25
+
26
+ 现代 `type=group`/`type=org` 的 agent.md 携带 `owner` 和通用 `ownership.statement`,由实体身份签名;owner 以自身身份签署配对 owner.md,保存于其 Storage `sub_aids/<实体AID>/owner.md`。声明中的 owner、sub、关系版本及声明标识必须配对。
27
+
28
+ 现代 agent.md 主签名不携带旧实体格式的 `signer_aid`;群实体证书验证仍使用对应身份用途。历史实体证书指纹、owner 签署等旧名片走原兼容分支,不能因此跳过现代声明 schema、签名或证书校验。human 名片仍禁止携带 Ownership 材料。
29
+
30
+ 普通 Ownership 的绑定/转让工作流继续拒绝以群/组织为被管理目标;创建、绑定实体 AID、转让、接收及解散由 Group/Org 生命周期编排。复用材料和共识不等于把实体管理开放给普通 agent API。
31
+
32
+ ### 2.2 查询入口与职责
33
+
34
+ | SDK | 公共查询 | 显式强查 |
35
+ | --- | --- | --- |
36
+ | Python | `check_ownership_consensus(sub_aid=None, force=False)` | `force=True` |
37
+ | TypeScript/JavaScript | `checkOwnershipConsensus(subAid?, force=false)` | 第二参数 `true` |
38
+ | Go | `CheckOwnershipConsensus(ctx, subAID...)` | `CheckOwnershipConsensusWithOptions` 与 `OwnershipConsensusOptions{Force: true}` |
39
+
40
+ 公共查询向 NS 请求 agent.md 及权威关系元数据,携带 `X-AUN-Ownership-Check: 1` 和禁止使用陈旧缓存的请求条件;SDK 不为这一公共查询另取 Storage owner.md。管理、补绑及恢复流程仍会直接读写关系文件。
41
+
42
+ 现代双文件可确认时,服务端使用文件共识;历史材料无法确认时,兼容路径再向对应群/组织生命周期服务确认。实体检查必须验证 agent.md 的 type 是所需 group 或 org,其它类型不得借用该回退。公共查询中无现代声明的旧实体返回 `unbound`,旧 owner 字段不能单独授予现代共识。
43
+
44
+ 缓存继续按 Client 实例和目标 AID 保存,不设 TTL;仅复用已达 consensus、未标记 missing 且本地观察 ETag 未变的结果。新实例首查、非一致状态和 force 均回源。观察缓存不能保证发现尚未观察到的远端变更,下载验签成功也不能替代关系检查。
45
+
46
+ ## 3. 首次访问补绑与生命周期写入
47
+
48
+ ### 3.1 连接内去重
49
+
50
+ owner 访问检查按以下顺序执行:
51
+
52
+ 1. 从请求识别并规范化实体 AID;创建、转让、解散等专门入口使用自身编排。
53
+ 2. 本地有实体身份,或存在可恢复的群绑定密钥材料,才继续远端检查。
54
+ 3. 向对应生命周期服务确认实体为 active,当前 caller 是 owner。
55
+ 4. 强查共识;与当前 owner 一致则结束,否则在材料允许时补齐现代关系。
56
+ 5. 补绑发布后再次确认共识;新连接重新开始本轮检查。
57
+
58
+ 任务按身份代际、连接代际和实体目标合并,规范化别名应复用同一在途结果。成功、失败和不适用结果在同一连接内都不反复执行;不在连接后遍历全部群补传。
59
+
60
+ 访问预检查失败仍继续原业务 RPC,由服务端判定权限;这一路径不保证补绑成功。创建、绑定及接收转让后的显式发布、pending 上传恢复则必须确认当前 owner 共识,不能仅凭上传成功作为完成依据。
61
+
62
+ ### 3.2 配对写入与并发保护
63
+
64
+ 补绑核对当前生命周期 owner、有效实体证书和本地私钥,再复用或生成匹配声明。已有一致双边材料直接复用;转让材料还须匹配新 owner、递增关系版本及有效期限。
65
+
66
+ owner.md 的更新保留读取到的原件与版本,写前确认原件未变化,通过版本条件提交并重读确认;agent.md 发布保留 NS ETag 条件与既有 pending 原签名字节。不能在重试时擅自生成新声明或覆盖已变化的关系。
67
+
68
+ 写入 guard 至少绑定 caller、身份代际、连接代际和相关 store/签名身份。RPC 排队、风险预算等待及 HTTP 提交可能发生异步切换,必须在实际发送前再检查;取消、切换身份或重连后,旧任务不得继续提交。
69
+
70
+ 相同目标、相同请求上下文的并发组织创建合并执行;已有在途创建的请求摘要不同则报告冲突,不能向第二个请求返回第一个请求的结果。
71
+
72
+ ### 3.3 转让、解散与失败恢复
73
+
74
+ 转让前 owner.md 发布 `transfer_owner`,解散前发布 `release`,再调用原生命周期接口;已存在相同有效授权可复用。新 owner 完成接收后发布自身声明及新的实体材料。
75
+
76
+ | 结果 | 恢复规则 |
77
+ | --- | --- |
78
+ | 明确业务拒绝 | 仅在仍为原 active owner、远端声明仍是本次原件且版本条件允许时,尝试恢复此前声明 |
79
+ | 超时、断连、可重试错误、结果不明 | 保留授权及恢复材料,不自动恢复旧声明;先查询当前生命周期与关系状态 |
80
+ | 文件或 owner 已变化 | 报告冲突,不能覆盖新材料 |
81
+
82
+ 本流程不增加独立 Ownership 任务/WAL,也不改变业务 RPC 原有的幂等与结果未知边界。
83
+
84
+ ## 4. 分类控制流 V2 与 ACK
85
+
86
+ ### 4.1 能力与调度
87
+
88
+ | 通道 | `message_classes_v2` 分类 | SDK 处理 |
89
+ | --- | --- | --- |
90
+ | P2P | `normal`、`control`、`sdk_control` | 普通与应用控制流按原订阅交付;sdk_control 由内部协议消费 |
91
+ | 群 | `normal`、`control` | 本地拒绝群 sdk_control 请求,忽略该类群 Push |
92
+
93
+ 协商结果决定分类与群 TTL 发送门禁,不能把旧 `message_classes_v1` 当作 V2。P2P 的 `aun.agent_md.changed` 等内部控制协议继续保留,不能因群不支持 sdk_control 而删除 P2P 内部消费。
94
+
95
+ 连接就绪后恢复一次,运行期 Push 仅唤起相关 peer/group、消息类别和持久/volatile 流;群读取 `streams[class][persistent|volatile].needs_pull` 选择有 gap 的流。整个 streams map 缺失时保留旧响应兼容,map 存在但缺少流则跳过。应用主动 Pull 不受后台调度限制,待确认 ACK 另行恢复。
96
+
97
+ ### 4.2 证明移除与持久状态
98
+
99
+ Pull 不再要求 `scan_proof`,ACK 不发送该证明;恢复旧 pending ACK 时主动剥离遗留字段。删除证明过期后重新 Pull 续证的循环,同时保留消息类别、目标、收件范围、快照 head、覆盖水位及 ACK 上界验证。
100
+
101
+ 处理完成后先持久保存待确认 ACK 及本页水位,再发送 ACK;失败后使用保存的待确认请求恢复。volatile 流仍使用自身游标,不套用持久流 SEQ。
102
+
103
+ | SDK | 本地游标提交时机 |
104
+ | --- | --- |
105
+ | Python/TypeScript/JavaScript | 保存已处理游标与 pending ACK 后确认;重试不能越过持久处理水位 |
106
+ | Go | 保存带本页水位的 pending ACK;ACK 成功后推进 `Seq` 并清除 pending |
107
+
108
+ 移植时应保留各端已实现的恢复顺序,不能仅删除证明字段而丢失待确认记录或范围检查。该调整减少的是为证明续期产生的重复拉取,不构成消息“恰好一次”业务执行保证。
109
+
110
+ ## 5. Storage 携版本写入
111
+
112
+ ### 5.1 预检与服务端 CAS
113
+
114
+ 对象 put、创建/完成上传、delete、meta、append、move 及文件 rename 使用版本条件。对象预检通过 `head_object(consistency=authoritative)`;文件 rename 检查源文件 `fs_lstat`,目录等非文件 rename 不套用该文件版本预检。
115
+
116
+ | 输入 | SDK 提交行为 |
117
+ | --- | --- |
118
+ | 未指定 expected_version | 读取当前版本并携带提交;明确不存在使用 `0` |
119
+ | 显式指定版本 | 与当前版本比较,不一致时先失败;符合条件则保留原版本提交 |
120
+ | force=true | 不清除显式版本,不绕过预检或服务端 CAS;未指定版本时跳过 VFS 历史版本选择,重新读取 |
121
+ | 仅 overwrite=true | 保留 VFS 原有版本选择;不能等同于 force 或无条件覆盖 |
122
+
123
+ 显式非零版本遇到不存在对象时,SDK 仍可在预检报告冲突,不会任意改写为 0。预读到提交之间仍有竞态,最终并发检查由服务端原子 CAS 完成;未携版本的旧请求保留服务端兼容路径,但新版对象写入不依靠该路径。
124
+
125
+ VFS 记录成功写响应中的版本,供后续写入选择;Python CLI 的 inline、去重与会话上传也携带版本。对版本冲突应重新读取并由应用决定是否重试,不能自动删除版本条件。低层权威预读补版本只适用于请求已到达 low-level 的路径;VFS 若发现目标已存在但没有已知版本,仍可能在调用 low-level 前拒绝,单独 `overwrite` 不绕过此规则,`force` 才跳过历史版本选择并重新读取。
126
+
127
+ ### 5.2 跨端差异
128
+
129
+ | 维度 | Python | Go | TypeScript/JavaScript |
130
+ | --- | --- | --- | --- |
131
+ | 文件 rename 预读 | 显式 `no_cache=True` | 显式绕过读缓存 | 调用 fs_lstat;当前未显式设置同类绕过条件 |
132
+ | 读权限不足但有显式版本 | 保留显式版本交服务端检查 | 预读失败返回错误 | 预读失败返回错误 |
133
+ | 挂载权威预读特定失败 | 确认为 mount 且已有显式版本时交服务端检查 | 无同类例外 | 无同类例外 |
134
+ | 写版本保存 | VFS 写响应版本 | VFS 写响应版本 | VFS 写响应版本 |
135
+
136
+ Python 的挂载例外仅限特定 `authoritative storage unavailable` 错误,并检查路径或祖先的 mount;未提供版本、非挂载及其它读取错误继续失败。不能将该例外扩大为任意预检失败均尝试写入,亦不能描述为四端共有能力。
137
+
138
+ ## 6. 连接及继承行为
139
+
140
+ Python 显式 connect 接管 `RETRY_BACKOFF`/`CONNECTION_FAILED` 且无 token 时,恢复完整认证;重设 session 前保存 identity/session token,保留旧重连取消、失败计数清理及连接所有权语义。此修复不代表四端新增相同状态转换。
141
+
142
+ 公网测试 helper 保留名片上传 Result 的连接/超时 cause,使既有瞬时重试生效;业务错误保留因果链继续失败。这属于测试辅助修复,不扩展 SDK 业务重试范围。
143
+
144
+ 以下 0.5.30 规则继续生效:observer.forward 仅净化外发副本中的本地证据/诊断字段,不改原接收对象;公开 RPC 管线拒绝 `gateway.risk_status`,风控 Push 验签及 ACK 保留;local Ownership 的 owner/新 owner 可为 human 或 agent,sub 仍限 agent。完整规则见[历史开发指南](0.5.30-SDK开发与移植指南.md)。
145
+
146
+ ## 7. 源码与回归映射
147
+
148
+ | 范围 | 实现入口 | 回归入口 |
149
+ | --- | --- | --- |
150
+ | Python 实体流程 | [client.py](../../python/src/aun_core/client.py)、[ownership_v21.py](../../python/src/aun_core/ownership_v21.py)、[org_facades.py](../../python/src/aun_core/org_facades.py) | [test_client.py](../../python/tests/unit/test_client.py)、[test_ownership_v21.py](../../python/tests/unit/test_ownership_v21.py) |
151
+ | TypeScript 实体流程 | [client.ts](../../ts/src/client.ts)、[ownership-v21.ts](../../ts/src/ownership-v21.ts) | [client.test.ts](../../ts/tests/unit/client.test.ts)、[ownership-v21.test.ts](../../ts/tests/unit/ownership-v21.test.ts) |
152
+ | Browser 实体流程 | [client.ts](../../js/src/client.ts)、[ownership-v21.ts](../../js/src/ownership-v21.ts) | [client.test.ts](../../js/tests/unit/client.test.ts)、[ownership-v21.test.ts](../../js/tests/unit/ownership-v21.test.ts) |
153
+ | Go 实体流程 | [ownership_v21.go](../../go/ownership_v21.go)、[org_facades.go](../../go/org_facades.go) | [ownership_v21_test.go](../../go/ownership_v21_test.go)、[client_test.go](../../go/client_test.go) |
154
+ | 控制流 | [Python](../../python/src/aun_core/_client/control_messages.py)、[TS](../../ts/src/client/control-messages.ts)、[JS](../../js/src/client/control-messages.ts)、[Go](../../go/control_messages.go) | 各端 client/control 回归,验证旧 pending、群类型及 ACK 恢复 |
155
+ | Storage | [Python](../../python/src/aun_core/storage/lowlevel.py)、[TS](../../ts/src/storage/lowlevel.ts)、[JS](../../js/src/storage/lowlevel.ts)、[Go](../../go/storage_lowlevel.go) | [Python P6](../../python/tests/unit/test_storage_vfs_p6.py)、[Go low-level](../../go/storage_lowlevel_test.go)、TS/JS storage-vfs 测试 |
156
+
157
+ SDK 包配置、运行时、Go Version/V2 envelope 及相关门禁和脚本统一为 `0.5.31`;历史日志与固定兼容样例保留原版本。版本门禁见 [test_aun_sdk_version_alignment.py](../../../tests/unit/test_aun_sdk_version_alignment.py)。
158
+
159
+ ## 8. 移植核查与验证范围
160
+
161
+ 移植交付须分别覆盖:现代与旧实体签验、类型拒绝、NS 共识与缓存、每连接首访去重、材料缺失及补绑失败、身份切换后的写入阻断、明确拒绝与结果未知、旧 pending ACK 恢复,以及版本冲突、force/overwrite、上传各路径和预读失败。对实际变更先运行对应回归,再做类型/静态检查,联网测试按指南断点续跑。
162
+
163
+ 已有分阶段证据包括 Python 连接相关定向回归 104 项、helper 35 项;版本对齐、Python 导入、TS/JS 类型检查、JS 加密回环 13 项及 Go E2EE 定向/vet。它们不等于四端全量功能测试。
164
+
165
+ Python `evolagent.cn` 公网验收采用 TLS 校验和串行断点续跑,覆盖服务端 12 项、smoke 9 项、E2E 24 项;签名审计仅正常生命周期 48 项。期间有间歇 WebSocket 握手超时,原因未确认;结果来自多次续跑,不能表述为单轮全绿、四 SDK 全量公网通过或最新服务端 GC/索引已部署。
166
+
167
+ 详细执行记录及限制以 [parity 的验证章节](../../python/CHANGES_FOR_PARITY.md#0531-已有验证与覆盖范围)为准。本次整理仅验证文档与实现对应关系、链接及格式,未新增代码或公网测试结果。联网操作遵循[公网测试指南](../aun公网测试运行指南.md),通用运行规则见[测试运行指南](../aun测试运行指南.md)。
@@ -35,7 +35,7 @@ function parseFileFrontmatterInternal(payload, validateOwnership, forUpload = fa
35
35
  });
36
36
  if (doc.warnings.length)
37
37
  throw new ValidationError(`agent.md frontmatter is invalid: ${doc.warnings[0].message}`);
38
- if (validateOwnership && !(forUpload && ['group', 'org'].includes(String(doc.get('type')))))
38
+ if (validateOwnership)
39
39
  for (const [section, fields] of [['statement', ['version', 'relation_version', 'declared_at']], ['transfer', ['target_relation_version', 'expires_at']]]) {
40
40
  for (const field of fields) {
41
41
  const node = doc.getIn(['ownership', section, field], true);
@@ -70,7 +70,7 @@ function validateAgentMdDocumentInternal(content, opts) {
70
70
  const bare = opts.readCompatibility && parsed.payload.replace(/^\ufeff/, '').split(/\r\n|\n|\r/, 1)[0]?.trim() !== '---';
71
71
  const meta = bare ? {} : parseFileFrontmatterInternal(parsed.payload, !opts.readCompatibility && (opts.forUpload || (opts.validateOwnership ?? true)), opts.forUpload);
72
72
  const legacyEntity = meta.type === 'group' && parsed.signatures.length === 1 && !Object.hasOwn(meta, 'entity_cert_fingerprint') && (parsed.fields?.signer_aid === undefined || aidEqual(parsed.fields.signer_aid, meta.aid));
73
- if (opts.readCompatibility && ['group', 'org'].includes(String(meta.type)) && !legacyEntity)
73
+ if (opts.readCompatibility && ['group', 'org'].includes(String(meta.type)) && !Object.hasOwn(meta, 'ownership') && !legacyEntity)
74
74
  return validateAgentMdDocumentInternal(content, { ...opts, readCompatibility: false, historicalEntityOwner: parsed.signatures.length === 1 && parsed.fields?.signer_aid !== undefined && aidEqual(parsed.fields.signer_aid, meta.owner) && !aidEqual(parsed.fields.signer_aid, meta.aid) });
75
75
  for (const key of opts.readCompatibility ? [] : ['aid', 'name', 'type', 'version'])
76
76
  if (!(key in meta))
@@ -104,7 +104,8 @@ function validateAgentMdDocumentInternal(content, opts) {
104
104
  const human = String(meta.type ?? '').trim().toLowerCase() === 'human';
105
105
  if (human && ['owner', 'ownership', 'ownership_proof', 'ownership_release'].some(field => Object.hasOwn(meta, field)))
106
106
  throw new ValidationError('human AID cannot specify owner or ownership');
107
- if (entity) {
107
+ const modernEntity = entity && Object.hasOwn(meta, 'ownership');
108
+ if (entity && !modernEntity) {
108
109
  if (opts.forUpload) {
109
110
  if (!Object.hasOwn(meta, 'owner'))
110
111
  throw new ValidationError('group/org agent.md requires owner');
@@ -136,15 +137,15 @@ function validateAgentMdDocumentInternal(content, opts) {
136
137
  if (fields) {
137
138
  if (Object.keys(fields).some((key) => !['cert_fingerprint', 'public_key_fingerprint', 'timestamp', 'signature', 'signer_aid'].includes(key)))
138
139
  throw new ValidationError('agent.md signature contains unknown fields');
139
- if (entity && !opts.readCompatibility && fields.signer_aid === undefined)
140
+ if (entity && !modernEntity && !opts.readCompatibility && fields.signer_aid === undefined)
140
141
  throw new ValidationError('group/org agent.md main signature requires signer_aid');
141
- if (!entity && fields.signer_aid !== undefined)
142
+ if ((!entity || modernEntity) && fields.signer_aid !== undefined)
142
143
  throw new ValidationError('ordinary agent.md main signature contains unknown signer_aid');
143
144
  if (fields.signer_aid !== undefined && !aidEqual(fields.signer_aid, opts.historicalEntityOwner ? meta.owner : meta.aid))
144
145
  throw new ValidationError('agent.md main signer must be its own AID');
145
146
  if (entity && !opts.forUpload && !opts.historicalEntityOwner && Object.hasOwn(meta, 'entity_cert_fingerprint') && fields.cert_fingerprint !== meta.entity_cert_fingerprint)
146
147
  throw new ValidationError('entity signature certificate fingerprint does not match entity_cert_fingerprint', { stringCode: 'invalid' });
147
- if (entity && parsed.signatures.slice(1).some(item => !aidEqual(item.fields.signer_aid, meta.owner)))
148
+ if (entity && !modernEntity && parsed.signatures.slice(1).some(item => !aidEqual(item.fields.signer_aid, meta.owner)))
148
149
  throw new ValidationError('group/org additional signer must be owner');
149
150
  const validFingerprint = (value) => opts.readCompatibility ? !!normalizeFingerprintHex(value) : /^sha256:[0-9a-f]{64}$/.test(value);
150
151
  if (!validFingerprint(fields.cert_fingerprint))
@@ -1 +1 @@
1
- {"version":3,"file":"agent-md-schema.js","sourceRoot":"","sources":["../src/agent-md-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-md-schema.js","sourceRoot":"","sources":["../src/agent-md-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,eAAe,EAAE,2BAA2B,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AACnK,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,iCAAiC,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,MAAM,GAAG,+DAA+D,CAAC;AAC/E,MAAM,SAAS,GAAG,iBAAiB,CAAC;AACpC,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAEjD,SAAS,QAAQ,CAAC,IAAa,EAAE,KAAc;IAC7C,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;AAC7G,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe;IAC1C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,OAAO,EAAE,CAAC;QAC3F,MAAM,IAAI,eAAe,CAAC,mCAAmC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,OAAO,4BAA4B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,4BAA4B,CAAC,OAAe,EAAE,iBAA0B,EAAE,SAAS,GAAG,KAAK;IAClG,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACjE,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK;QAAE,MAAM,IAAI,eAAe,CAAC,2CAA2C,CAAC,CAAC;IACvG,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC;IACtE,IAAI,GAAG,GAAG,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,oCAAoC,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACpF,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM;QAAE,MAAM,IAAI,eAAe,CAAC,oCAAoC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/G,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;QACxB,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,eAAe,CAAC,8CAA8C,CAAC,CAAC;IACrM,CAAC,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM;QAAE,MAAM,IAAI,eAAe,CAAC,oCAAoC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACnH,IAAI,iBAAiB;QAAE,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,kBAAkB,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC,CAAU,EAAE,CAAC;YACzL,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC5D,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;oBAAE,MAAM,IAAI,eAAe,CAAC,aAAa,OAAO,IAAI,KAAK,sBAAsB,CAAC,CAAC;YACzL,CAAC;QACH,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC1B,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,wCAAwC,CAAC,CAAC;IACxI,OAAO,MAAiC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAe,EAAE,OAAuJ,EAAE;IAChN,OAAO,+BAA+B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAe,EAAE,OAAqG,EAAE;IAClK,OAAO,+BAA+B,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;AAClH,CAAC;AAED,SAAS,+BAA+B,CAAC,OAAe,EAAE,IAAkN;IAC1Q,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,eAAe,CAAC,kCAAkC,CAAC,CAAC;IACjG,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,yBAAyB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAClF,IAAI,MAAM,CAAC,UAAU;QAAE,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACpE,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,MAAM,IAAI,eAAe,CAAC,gCAAgC,CAAC,CAAC;IACzG,IAAI,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,qCAAqC,CAAC,CAAC;IAC3J,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,GAAG,4BAA4B;QAAE,MAAM,IAAI,eAAe,CAAC,oCAAoC,4BAA4B,QAAQ,CAAC,CAAC;IACpQ,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,CAAC;IACzH,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACvK,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7N,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,YAAY;QAAE,OAAO,+BAA+B,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9Z,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;QAAE,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC;YAAE,MAAM,IAAI,eAAe,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;IACzK,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,6CAA6C,CAAC,CAAC;IAClM,IAAI,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;QAAE,MAAM,IAAI,eAAe,CAAC,mDAAmD,CAAC,CAAC;IAC/M,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;QAAE,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAAE,MAAM,IAAI,eAAe,CAAC,wBAAwB,GAAG,6BAA6B,CAAC,CAAC;IACtO,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,mDAAmD,CAAC,CAAC;IAC1M,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;YAAE,MAAM,IAAI,eAAe,CAAC,mDAAmD,CAAC,CAAC;QACzH,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,GAAG;YAAE,MAAM,IAAI,eAAe,CAAC,6CAA6C,CAAC,CAAC;IAC1H,CAAC;IACD,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;YAAE,MAAM,IAAI,eAAe,CAAC,8CAA8C,CAAC,CAAC;QAC/G,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,GAAG;YAAE,MAAM,IAAI,eAAe,CAAC,wCAAwC,CAAC,CAAC;IAChH,CAAC;IACD,IAAI,SAAS,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;QAAE,MAAM,IAAI,eAAe,CAAC,+CAA+C,CAAC,CAAC;IACtI,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,2CAA2C,CAAC,CAAC;IACzL,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC;IACvE,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,6CAA6C,CAAC,CAAC;IAChM,MAAM,YAAY,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAChE,IAAI,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;gBAAE,MAAM,IAAI,eAAe,CAAC,mCAAmC,CAAC,CAAC;QACpG,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAAE,MAAM,IAAI,eAAe,CAAC,mCAAmC,CAAC,CAAC;YAC9L,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,uBAAuB,KAAK,QAAQ,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;gBAAE,MAAM,IAAI,eAAe,CAAC,qDAAqD,CAAC,CAAC;QACzR,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAAE,MAAM,IAAI,eAAe,CAAC,6CAA6C,CAAC,CAAC;IACjO,CAAC;SAAM,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,EAAE,CAAC;QAC9D,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,eAAe,CAAC,oEAAoE,CAAC,CAAC;QAChP,IAAI,WAAW,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,iBAAiB,IAAI,IAAI,CAAC;YAAE,iCAAiC,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;aACjI,CAAC;YACJ,4BAA4B,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACrD,IAAI,IAAI,CAAC,SAAS,IAAI,iBAAiB,IAAI,IAAI,EAAE,CAAC;gBAChD,MAAM,KAAK,GAAG,IAAI,CAAC,eAA0C,CAAC;gBAC9D,IAAI,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,mBAAmB,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,iBAAiB,IAAI,KAAK,CAAC;oBAAE,MAAM,IAAI,eAAe,CAAC,qDAAqD,CAAC,CAAC;YACtN,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,wBAAwB,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAAE,MAAM,IAAI,eAAe,CAAC,4CAA4C,CAAC,CAAC;QACtN,IAAI,MAAM,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;YAAE,MAAM,IAAI,eAAe,CAAC,uDAAuD,CAAC,CAAC;QAC9K,IAAI,CAAC,CAAC,MAAM,IAAI,YAAY,CAAC,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;YAAE,MAAM,IAAI,eAAe,CAAC,8DAA8D,CAAC,CAAC;QAC5J,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,eAAe,CAAC,0CAA0C,CAAC,CAAC;QAC/L,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,yBAAyB,CAAC,IAAI,MAAM,CAAC,gBAAgB,KAAK,IAAI,CAAC,uBAAuB;YAAE,MAAM,IAAI,eAAe,CAAC,iFAAiF,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;QACpT,IAAI,MAAM,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAAE,MAAM,IAAI,eAAe,CAAC,2CAA2C,CAAC,CAAC;QAC9L,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5I,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,CAAC;YAAE,MAAM,IAAI,eAAe,CAAC,sCAAsC,CAAC,CAAC;QAClH,IAAI,wBAAwB,IAAI,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,sBAAsB,CAAC;YAAE,MAAM,IAAI,eAAe,CAAC,4CAA4C,CAAC,CAAC;QACpK,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,eAAe,CAAC,uCAAuC,CAAC,CAAC;QACjR,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAAC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3F,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG;YAAE,MAAM,IAAI,eAAe,CAAC,uDAAuD,CAAC,CAAC;IACzG,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAe,EAAE,OAAe,EAAE,WAAmB,EAAE,GAAY,EAAE,mBAAqF;IAC5L,2BAA2B,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAe,EAAE,OAAe,EAAE,WAAmB,EAAE,GAAY,EAAE,mBAAqF;IAChM,2BAA2B,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC;AAC9F,CAAC;AAED,SAAS,2BAA2B,CAAC,OAAe,EAAE,OAAe,EAAE,WAAmB,EAAE,GAAuB,EAAE,iBAA0B,EAAE,mBAAqF;IACpO,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClI,MAAM,MAAM,GAAG,MAAM,CAAC,SAAU,CAAC;IACjC,MAAM,MAAM,GAAG,WAAW,CAAC;IAC3B,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;QACpE,GAAG;QACH,sBAAsB,EAAE,IAAI;KAC7B,CAAC,CAAC;IACH,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;QAAE,MAAM,IAAI,eAAe,CAAC,2CAA2C,CAAC,CAAC;IACpK,IAAI,MAAM,CAAC,sBAAsB,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,MAAM,CAAC,sBAAsB,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,0CAA0C,CAAC,CAAC;IACjL,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,GAAG,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC3I,IAAI,CAAC,QAAQ,CAAC,KAAK;QAAE,MAAM,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,IAAI,wCAAwC,CAAC,CAAC;AAC9G,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,OAAe,EACf,WAAmB,EACnB,SAAiB,EACjB,OAAwF,EAAE;IAE1F,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,UAAU,KAAK,YAAY,EAAE,CAAC;QAClH,MAAM,IAAI,eAAe,CAAC,6CAA6C,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,yCAAyC,CAAC,CAAC;IAC5I,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,SAAS,GAAG,GAAG,IAAI,OAAO,GAAG,QAAQ,GAAG,GAAG,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,0DAA0D,CAAC,CAAC;IAC5L,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxE,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,yDAAyD,CAAC,CAAC;IAC1M,IAAI,SAAS,GAAG,SAAS,IAAI,SAAS,GAAG,QAAQ;QAAE,MAAM,IAAI,eAAe,CAAC,8DAA8D,CAAC,CAAC;AAC/I,CAAC"}
@@ -80,6 +80,7 @@ export interface AgentMdManagerOptions {
80
80
  currentAidGetter?: () => AID | null | undefined;
81
81
  entityIdentityGetter?: (aid: string, type?: string) => Promise<AID> | AID;
82
82
  entityOwnerResolver?: (aid: string, type: string) => Promise<string> | string;
83
+ sourceGuard?: () => void;
83
84
  entitySignerResolver?: (aid: string, fingerprint: string) => Promise<AID> | AID;
84
85
  gatewayResolver?: (aid: string) => Promise<string> | string;
85
86
  peerResolver?: (aid: string, certFingerprint?: string | null, signedAt?: number) => Promise<AID> | AID;
@@ -98,6 +99,7 @@ export declare class AgentMdManager {
98
99
  private _ownerAidGetter?;
99
100
  private _entityIdentityGetter?;
100
101
  private _entityOwnerResolver?;
102
+ private _sourceGuard?;
101
103
  private _entitySignerResolver?;
102
104
  private _currentAidGetter?;
103
105
  private _gatewayResolver?;
package/dist/agent-md.js CHANGED
@@ -204,6 +204,7 @@ export class AgentMdManager {
204
204
  _ownerAidGetter;
205
205
  _entityIdentityGetter;
206
206
  _entityOwnerResolver;
207
+ _sourceGuard;
207
208
  _entitySignerResolver;
208
209
  _currentAidGetter;
209
210
  _gatewayResolver;
@@ -219,9 +220,13 @@ export class AgentMdManager {
219
220
  _httpHandler = null;
220
221
  setHttpHandler(handler) { this._httpHandler = handler; }
221
222
  async _requestText(url, opts) {
223
+ if (opts.method === 'PUT')
224
+ this._sourceGuard?.();
222
225
  if (!this._httpHandler)
223
226
  return requestText(url, opts);
224
227
  const perform = async () => {
228
+ if (opts.method === 'PUT')
229
+ this._sourceGuard?.();
225
230
  const result = await requestText(url, opts);
226
231
  return new Response(opts.method === 'HEAD' || [204, 205, 304].includes(result.status) ? null : result.text, { status: result.status, headers: result.headers });
227
232
  };
@@ -239,6 +244,7 @@ export class AgentMdManager {
239
244
  this._ownerAidGetter = opts.ownerAidGetter;
240
245
  this._entityIdentityGetter = opts.entityIdentityGetter;
241
246
  this._entityOwnerResolver = opts.entityOwnerResolver;
247
+ this._sourceGuard = opts.sourceGuard;
242
248
  this._entitySignerResolver = opts.entitySignerResolver;
243
249
  this._currentAidGetter = opts.currentAidGetter;
244
250
  this._gatewayResolver = opts.gatewayResolver;
@@ -517,8 +523,6 @@ export class AgentMdManager {
517
523
  }
518
524
  catch { }
519
525
  }
520
- if (['group', 'org'].includes(String(type)))
521
- throw ownershipFailure('not_applicable', 'group/org uses its lifecycle owner relationship');
522
526
  const protocol = headerValue(response.headers, 'X-AUN-Ownership-Protocol');
523
527
  if (protocol !== '2.1')
524
528
  throw ownershipFailure('unsupported_protocol', 'NS does not provide Ownership 2.1 metadata');
@@ -679,7 +683,7 @@ export class AgentMdManager {
679
683
  if (pending.content_etag !== AgentMdManager.contentEtag(pending.content))
680
684
  throw ownershipFailure('persistence_unavailable', 'pending entity original bytes are corrupt');
681
685
  await this._verifyDocument(pending.content, aid, identity, true);
682
- const remote = await this._readEntityFresh(aid);
686
+ const remote = meta.ownership ? await this.readAgentMdFresh(aid) : await this._readEntityFresh(aid);
683
687
  if (remote.exists && remote.content === pending.content && remote.etag === pending.content_etag) {
684
688
  const saved = await this._saveCommittedRecord(aid, { content: pending.content, remote_etag: remote.etag, pending_operation: '', pending_content: '', pending_content_etag: '', pending_error: '', pending_condition: {}, pending_relation: {}, pending_authorization: '' });
685
689
  if (!saved.aid)
@@ -738,7 +742,7 @@ export class AgentMdManager {
738
742
  let condition = originalCondition;
739
743
  let relation = entityContext ?? (this._pendingUpload(target, draftStrict))?.relation;
740
744
  if (!condition) {
741
- const fresh = entity ? await this._readEntityFresh(target) : await this._readBodyOriginalFresh(target);
745
+ const fresh = entity ? await this.readAgentMdFresh(target) : await this._readBodyOriginalFresh(target);
742
746
  condition = fresh.exists ? { if_match: fresh.etag } : { if_none_match: '*' };
743
747
  if (!entity) {
744
748
  // 锁未知时按 locked 处理:关系字段必须与原件完全一致
@@ -951,7 +955,7 @@ export class AgentMdManager {
951
955
  throw ownershipFailure('unavailable', 'entity current certificate is unavailable', true);
952
956
  if (observed && observed.entity_cert_fingerprint !== entity.certFingerprint)
953
957
  throw ownershipFailure('conflict', 'entity authority changed during verification');
954
- if (meta.entity_cert_fingerprint !== entity.certFingerprint)
958
+ if (meta.entity_cert_fingerprint !== undefined && meta.entity_cert_fingerprint !== entity.certFingerprint)
955
959
  throw ownershipFailure('conflict', 'entity agent.md certificate generation changed');
956
960
  return { type: meta.type, owner_aid: owner, entity_cert_fingerprint: entity.certFingerprint };
957
961
  }
@@ -986,6 +990,7 @@ export class AgentMdManager {
986
990
  const entity = ['group', 'org'].includes(String(meta.type));
987
991
  const uploadHeaders = {
988
992
  'X-AUN-Signature-Format': 'multi-v1',
993
+ ...(entity && meta.ownership ? { 'X-AUN-Ownership-Check': '1' } : {}),
989
994
  'Content-Type': 'text/markdown; charset=utf-8',
990
995
  ...(condition.if_match ? { 'If-Match': condition.if_match } : { 'If-None-Match': '*' }),
991
996
  ...(this._uploadViaGatewayHost ? { Host: target } : {}),
@@ -1397,7 +1402,16 @@ export class AgentMdManager {
1397
1402
  throw new ClientSignatureError(`agent.md verification failed for ${target}${reason ? `: ${reason}` : ''}`, entity ? { stringCode: 'invalid' } : {});
1398
1403
  }
1399
1404
  let ownershipStatus;
1400
- if (entity)
1405
+ if (Object.hasOwn(frontmatter, 'ownership')) {
1406
+ try {
1407
+ parseOwnershipFile(content, 'agent', { expectedSubAid: target });
1408
+ ownershipStatus = 'incomplete';
1409
+ }
1410
+ catch {
1411
+ ownershipStatus = 'invalid';
1412
+ }
1413
+ }
1414
+ else if (entity)
1401
1415
  ownershipStatus = 'not_applicable';
1402
1416
  else {
1403
1417
  try {