@agentunion/fastaun-browser 0.5.17 → 0.5.18
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 +41 -0
- package/_packed_docs/CHANGELOG.md +41 -0
- package/_packed_docs/INDEX.md +28 -3
- package/_packed_docs/KITE_DOCS_GUIDE.md +11 -5
- package/_packed_docs/agent.md/SCHEMA.md +37 -18
- package/_packed_docs/aun/345/210/206/345/270/203/345/274/217/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md +23 -17
- package/_packed_docs/aun/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md +4 -2
- package/_packed_docs/protocol/01-/350/272/253/344/273/275/344/270/216/345/207/255/350/257/201/345/215/217/350/256/256-auth.md +95 -6
- package/_packed_docs/protocol/07-/351/224/231/350/257/257/347/240/201/344/270/216/347/212/266/346/200/201/346/234/272.md +19 -4
- package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +25 -2
- package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +42 -4
- package/_packed_docs/sdk/09-storage-rpc-manual.md +25 -4
- package/_packed_docs/sdk/INDEX.md +3 -2
- package/dist/agent-md-schema.d.ts.map +1 -1
- package/dist/agent-md-schema.js +2 -0
- package/dist/agent-md-schema.js.map +1 -1
- package/dist/agent-md.d.ts +1 -1
- package/dist/agent-md.d.ts.map +1 -1
- package/dist/agent-md.js +6 -3
- package/dist/agent-md.js.map +1 -1
- package/dist/aid-store.d.ts +45 -0
- package/dist/aid-store.d.ts.map +1 -1
- package/dist/aid-store.js +231 -3
- package/dist/aid-store.js.map +1 -1
- package/dist/aid.d.ts +17 -1
- package/dist/aid.d.ts.map +1 -1
- package/dist/aid.js +49 -2
- package/dist/aid.js.map +1 -1
- package/dist/bundle.js +1315 -628
- package/dist/cert-utils.d.ts.map +1 -1
- package/dist/cert-utils.js +5 -3
- package/dist/cert-utils.js.map +1 -1
- package/dist/client/delivery.d.ts +1 -0
- package/dist/client/delivery.d.ts.map +1 -1
- package/dist/client/delivery.js +51 -7
- package/dist/client/delivery.js.map +1 -1
- package/dist/client/rpc-pipeline.d.ts.map +1 -1
- package/dist/client/rpc-pipeline.js +9 -1
- package/dist/client/rpc-pipeline.js.map +1 -1
- package/dist/client/v2-e2ee.d.ts.map +1 -1
- package/dist/client/v2-e2ee.js +771 -471
- package/dist/client/v2-e2ee.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +13 -2
- package/dist/client.js.map +1 -1
- package/dist/facades.d.ts +2 -0
- package/dist/facades.d.ts.map +1 -1
- package/dist/facades.js +6 -0
- package/dist/facades.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/ownership-proof.d.ts +30 -0
- package/dist/ownership-proof.d.ts.map +1 -0
- package/dist/ownership-proof.js +97 -0
- package/dist/ownership-proof.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,47 @@
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
## 0.5.18 — 2026-10-06
|
|
10
|
+
|
|
11
|
+
### 新功能
|
|
12
|
+
|
|
13
|
+
#### Owner relation 与 AID 注册编排
|
|
14
|
+
- 新增 `register({aid, type, owner?, ...})`,由 SDK 编排 `auth.aid_register_prepare` → `auth.aid_register_submit` → 带 `ownerOperationId` 的 agent.md 上传 → `auth.aid_register_activate`;保留 `register(aid)` 的 legacy 兼容语义。
|
|
15
|
+
- 新增 `bindAid`、`getAidBindingStatus`、`resumeAidBinding` 和 `changeOwner`,分别覆盖已有 `legacy_unbound`/`unbound` AID 的绑定、状态查询、operation 恢复和三方换 owner;绑定不重新签发证书。
|
|
16
|
+
- 注册规则明确 human 不得指定 owner,非 human 必须指定 owner,只有 agent 支持 self-owner;外部 owner 需要 subject 与 owner 双签,换 owner 需要旧 owner、subject、新 owner 签名及 `expected_relation_version` CAS。
|
|
17
|
+
- 新增 ownership proof canonical bytes、`factHash`/`statementHash`、UUID v4 `proofId` 和签名封套校验;AID 统一规范化为小写,普通 agent.md 更新保留现有 proof,不能通过普通 PUT 改 owner。
|
|
18
|
+
- owner operation 有效期为 7 天;pending、失败或过期期间证书、登录、连接和基本消息通信保持可用,关系状态可查询并从 operation ID 恢复。
|
|
19
|
+
|
|
20
|
+
#### Owner relation Storage 与审计门面
|
|
21
|
+
- 补齐 `storage.relation_backup_provision`、`relation_backup_revoke`、`relation_backup_status` 的 SDK 契约和集成验证;关系目录固定为 `.aun/subjects/<lowercase_subject_aid>`,撤销只回收 ACL、保留数据并递增 ACL generation。
|
|
22
|
+
- `MessageFacade` 和 `GroupFacade` 新增 `getAuditStatus`,统一映射对应的审计状态 RPC。
|
|
23
|
+
|
|
24
|
+
### 修复
|
|
25
|
+
|
|
26
|
+
#### 证书与签名安全
|
|
27
|
+
- `AID.sign` 拒绝无效、过期或尚未生效证书;新增 `verifyWithContext`,绑定 expected AID、完整证书指纹、签名时间及当前有效性选项。
|
|
28
|
+
- RPC client signature、事件签名和 agent.md 签名路径增加证书有效期检查,并统一处理 `signature_verification_unavailable`、`type_change_blocked`、`aid_binding_required` 等关系错误。
|
|
29
|
+
|
|
30
|
+
#### V2 消息同步与投递
|
|
31
|
+
- P2P/Group V2 Pull 增加有界生产者消费者流水线、volatile cursor 去重、epoch mismatch 单次重试和后台 gap fill;`background_sync` 关闭时不再隐式启动后台补齐。
|
|
32
|
+
- inline push 在终态解密失败时仍提交连续序号并保留 ACK pending;Push、Pull、sender IK 延迟恢复共用去重和并发占用状态,减少交错投递重复。
|
|
33
|
+
- 当前设备 self-sync 消息只推进本地发布序号而不重复投递,其它设备仍可收到;公开 payload 保留 `sender_device_id` 和 `direction`,继续隐藏内部 slot 字段。
|
|
34
|
+
|
|
35
|
+
#### 会话、设备与连接生命周期
|
|
36
|
+
- 加强 slot ID/full slot ID 隔离,支持 long/short connection、short TTL 和 `background_sync` 组合;重连任务增加所有权、代际保护和旧连接结果隔离。
|
|
37
|
+
- 连接阶段暂存 Push,待应用监听器注册后排空,降低 `delivery.changed` 丢失和竞态;补齐多设备明文 P2P/Group self-sync 边界。
|
|
38
|
+
|
|
39
|
+
### 改进
|
|
40
|
+
|
|
41
|
+
- 四端公开类型和结果继续对齐 volatile cursor、ACK、设备来源及审计状态;当前 CA/Name Service 仅实现 `signing` 与 `group_identity` 证书用途,`org_identity` 不作为已实现能力暴露。
|
|
42
|
+
- SDK、锁文件、运行时版本、V2 E2EE envelope `sdk_version` 和 conformance 期望统一更新为 `0.5.18`。
|
|
43
|
+
|
|
44
|
+
### 测试
|
|
45
|
+
|
|
46
|
+
- 新增 ownership proof 四端 golden vector、大小写 AID、非法 UUID/控制字符和跨 SDK 验签测试。
|
|
47
|
+
- 增加 JavaScript owner relation 集成测试,覆盖新注册、self-owner、外部 owner 双签、legacy bind、operation 恢复、换 owner、unbind、Storage ACL/数据保留和重建访问。
|
|
48
|
+
- 扩展证书有效期、上下文验签、审计 facade、V2 Pull/Push、volatile 分页、设备隔离、连接代际和浏览器 E2E/conformance 测试。
|
|
49
|
+
|
|
9
50
|
## 0.5.17 — 2026-09-19
|
|
10
51
|
|
|
11
52
|
### 新功能
|
|
@@ -6,6 +6,47 @@
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
## 0.5.18 — 2026-10-06
|
|
10
|
+
|
|
11
|
+
### 新功能
|
|
12
|
+
|
|
13
|
+
#### Owner relation 与 AID 注册编排
|
|
14
|
+
- 新增 `register({aid, type, owner?, ...})`,由 SDK 编排 `auth.aid_register_prepare` → `auth.aid_register_submit` → 带 `ownerOperationId` 的 agent.md 上传 → `auth.aid_register_activate`;保留 `register(aid)` 的 legacy 兼容语义。
|
|
15
|
+
- 新增 `bindAid`、`getAidBindingStatus`、`resumeAidBinding` 和 `changeOwner`,分别覆盖已有 `legacy_unbound`/`unbound` AID 的绑定、状态查询、operation 恢复和三方换 owner;绑定不重新签发证书。
|
|
16
|
+
- 注册规则明确 human 不得指定 owner,非 human 必须指定 owner,只有 agent 支持 self-owner;外部 owner 需要 subject 与 owner 双签,换 owner 需要旧 owner、subject、新 owner 签名及 `expected_relation_version` CAS。
|
|
17
|
+
- 新增 ownership proof canonical bytes、`factHash`/`statementHash`、UUID v4 `proofId` 和签名封套校验;AID 统一规范化为小写,普通 agent.md 更新保留现有 proof,不能通过普通 PUT 改 owner。
|
|
18
|
+
- owner operation 有效期为 7 天;pending、失败或过期期间证书、登录、连接和基本消息通信保持可用,关系状态可查询并从 operation ID 恢复。
|
|
19
|
+
|
|
20
|
+
#### Owner relation Storage 与审计门面
|
|
21
|
+
- 补齐 `storage.relation_backup_provision`、`relation_backup_revoke`、`relation_backup_status` 的 SDK 契约和集成验证;关系目录固定为 `.aun/subjects/<lowercase_subject_aid>`,撤销只回收 ACL、保留数据并递增 ACL generation。
|
|
22
|
+
- `MessageFacade` 和 `GroupFacade` 新增 `getAuditStatus`,统一映射对应的审计状态 RPC。
|
|
23
|
+
|
|
24
|
+
### 修复
|
|
25
|
+
|
|
26
|
+
#### 证书与签名安全
|
|
27
|
+
- `AID.sign` 拒绝无效、过期或尚未生效证书;新增 `verifyWithContext`,绑定 expected AID、完整证书指纹、签名时间及当前有效性选项。
|
|
28
|
+
- RPC client signature、事件签名和 agent.md 签名路径增加证书有效期检查,并统一处理 `signature_verification_unavailable`、`type_change_blocked`、`aid_binding_required` 等关系错误。
|
|
29
|
+
|
|
30
|
+
#### V2 消息同步与投递
|
|
31
|
+
- P2P/Group V2 Pull 增加有界生产者消费者流水线、volatile cursor 去重、epoch mismatch 单次重试和后台 gap fill;`background_sync` 关闭时不再隐式启动后台补齐。
|
|
32
|
+
- inline push 在终态解密失败时仍提交连续序号并保留 ACK pending;Push、Pull、sender IK 延迟恢复共用去重和并发占用状态,减少交错投递重复。
|
|
33
|
+
- 当前设备 self-sync 消息只推进本地发布序号而不重复投递,其它设备仍可收到;公开 payload 保留 `sender_device_id` 和 `direction`,继续隐藏内部 slot 字段。
|
|
34
|
+
|
|
35
|
+
#### 会话、设备与连接生命周期
|
|
36
|
+
- 加强 slot ID/full slot ID 隔离,支持 long/short connection、short TTL 和 `background_sync` 组合;重连任务增加所有权、代际保护和旧连接结果隔离。
|
|
37
|
+
- 连接阶段暂存 Push,待应用监听器注册后排空,降低 `delivery.changed` 丢失和竞态;补齐多设备明文 P2P/Group self-sync 边界。
|
|
38
|
+
|
|
39
|
+
### 改进
|
|
40
|
+
|
|
41
|
+
- 四端公开类型和结果继续对齐 volatile cursor、ACK、设备来源及审计状态;当前 CA/Name Service 仅实现 `signing` 与 `group_identity` 证书用途,`org_identity` 不作为已实现能力暴露。
|
|
42
|
+
- SDK、锁文件、运行时版本、V2 E2EE envelope `sdk_version` 和 conformance 期望统一更新为 `0.5.18`。
|
|
43
|
+
|
|
44
|
+
### 测试
|
|
45
|
+
|
|
46
|
+
- 新增 ownership proof 四端 golden vector、大小写 AID、非法 UUID/控制字符和跨 SDK 验签测试。
|
|
47
|
+
- 增加 JavaScript owner relation 集成测试,覆盖新注册、self-owner、外部 owner 双签、legacy bind、operation 恢复、换 owner、unbind、Storage ACL/数据保留和重建访问。
|
|
48
|
+
- 扩展证书有效期、上下文验签、审计 facade、V2 Pull/Push、volatile 分页、设备隔离、连接代际和浏览器 E2E/conformance 测试。
|
|
49
|
+
|
|
9
50
|
## 0.5.17 — 2026-09-19
|
|
10
51
|
|
|
11
52
|
### 新功能
|
package/_packed_docs/INDEX.md
CHANGED
|
@@ -27,7 +27,11 @@
|
|
|
27
27
|
| [消息收件箱统一迁移方案](design/消息收件箱统一迁移方案.md) | P2P `message_inbox` 与群消息 `group_inbox` 的统一读模型、后台回填和旧表清理方案 |
|
|
28
28
|
| [AUN 反向代理服务方案与 TDD 实施计划](design/AUN反向代理服务方案与TDD实施计划.md) | AUN Service Proxy、service_proxy 服务模块、SDK service-proxy-client、URL 路由、隧道协议、Web 边界和分阶段 TDD 落地计划 |
|
|
29
29
|
| [远程 agent.md 缓存与 ETag 透传方案](agent.md/远程agent.md缓存与etag透传方案.md) | 远程 agent.md per-AID 本地文件/IndexedDB 缓存、Gateway `_meta.agent_md_etags` 角色、消息信封 ETag 和注入节流方案 |
|
|
30
|
-
| [
|
|
30
|
+
| [agent.md Schema 与签发/验签流程澄清记录](agent.md/working/agent.md-schema与签发验签流程澄清.md) | working 讨论记录:当前 Schema、内嵌签名实现、三字段关系声明与 self-owner 单签、公开 proof 独立验签、owner 关系写入经 Auth 验证及冲突仲裁、事实摘要与 nonce/编排上下文分层、Auth 登记见证与回执、证书/关系状态分离,以及 `unbound`/`unusable`、状态 pull/push、TTL、type-change 和 Storage 权限的最新决策 |
|
|
31
|
+
| [AID 类型、owner 关系与换 owner 编排方案](agent.md/working/AID类型-owner关系与换owner编排方案.md) | working 方案:Schema 的 owner/proof 可选但出现即必须完整合法,human 禁止 owner;共同签署声明字段为 proof_id/subject_aid/owner_aid,self-owner 仅 subject 单签,事实摘要排除 nonce、完整声明摘要绑定 proof,使用可见分号域分隔符;Auth 作为登记机构托管证据并签发回执,公开 owner 声明多数场景可独立验证,旧 AID 通过 `aid_bind` 建立 type/owner 绑定且基本登录通信不受限,关系写入经 Auth 仲裁,Storage 内部对象可删除/移动/重命名,失效关系进入 `unbound`/`unusable` |
|
|
32
|
+
| [AID 类型、owner 关系与 agent.md 签发/换 owner 完整设计与实施计划](agent.md/working/AID类型-owner关系完整设计与实施计划.md) | 汇总设计及 Phase 0 已确认的 P0-A01 至 P0-A12:Schema owner/proof 可选性与 human 禁止 owner、三字段共同声明与 self-owner 单签、事实 hash 与完整声明 hash 分层、canonical JSON/可见分号域分隔符/签名封套、proof-only 与 registered 验证等级、Auth 登记见证/回执、证书状态与关系 operation 分离、legacy/绑定中基本登录通信及按应用场景降级、旧 AID `aid_bind` 与新建 `aid_register` 的 Facade/RPC 边界、active/pending 唯一性检查、离线审批、`unbound`/`unusable`、Storage 保留目录和内部对象操作、服务端/四端 SDK 调整及逐阶段验收标准;剩余仅为正式 wire/RPC 文档和跨端向量落稿 |
|
|
33
|
+
| [本地 Docker 测试 Bug 清单](agent.md/working/本地Docker测试Bug清单.md) | 本轮 owner 关系实施及单域、cross-SDK、双域 federation 回归中发现的非任务失败、根因、修复与验证记录 |
|
|
34
|
+
| [群索引版本提示与附件引用方案](design/群索引版本提示与附件引用方案.md) | `group.index` 签名索引、`_meta.group_indexes` 版本提示、CAS 更新、服务端缓存注入和附件稳定引用 |
|
|
31
35
|
| [SDK 文档索引](sdk/INDEX.md) | SDK 使用手册、四 SDK 当前 access token getter、Python Push 自动登记/Facade、RPC 手册、E2EE、Storage VFS、Group FS 和 Collab 的子索引 |
|
|
32
36
|
| [SDK 查阅指南](sdk/AUN_DOCS_GUIDE.md) | SDK 文档按行区间渐进式查阅方法 |
|
|
33
37
|
| [AUN SDK 0.5.6 更新日志](sdk/CHANGELOG-0.5.6.md) | 以 0.5.5 为基线的四 SDK 发布汇总;覆盖首次签名者回源、下载提交前验签、消息窗口、显式 change-seed 和语言能力边界 |
|
|
@@ -85,6 +89,7 @@
|
|
|
85
89
|
### SDK 使用与协议
|
|
86
90
|
|
|
87
91
|
- Python / TS / Go / JS SDK 使用手册,以及 Python `push_notify_aid` connect 自动登记和 PushFacade → [SDK 文档索引](sdk/INDEX.md)
|
|
92
|
+
- 新 AID 的 type/owner 注册、legacy AID 的 `aid_bind`、ownership proof、换 owner 与 Storage relation backup → [SDK 文档索引](sdk/INDEX.md)、[Auth 协议](protocol/01-身份与凭证协议-auth.md)、[Storage 子协议](protocol/11-Storage-子协议.md)
|
|
88
93
|
- 四 SDK 当前 access token getter、缓存快照语义和外部 HTTP 数据面下载凭据生命周期 → [连接与认证](sdk/04-连接与认证.md)、[API 手册](sdk/06-API手册.md)、[Storage RPC 手册](sdk/09-storage-rpc-manual.md)、[AUN Storage 架构设计](<aun-fs/AUN Storage架构设计.md>)
|
|
89
94
|
- 按主题和行区间查 SDK 文档 → [SDK 查阅指南](sdk/AUN_DOCS_GUIDE.md)
|
|
90
95
|
- 四 SDK 0.5.6 发布摘要、首次签名者回源、可信缓存提交、消息窗口、语言能力边界 → [AUN SDK 0.5.6 更新日志](sdk/CHANGELOG-0.5.6.md)
|
|
@@ -106,7 +111,11 @@
|
|
|
106
111
|
- P2P/Group 离线唤醒、Python connect/Facade 登记、六项冻结契约、9 Phase/40 Task、发布门和回滚 → [离线推送协议](protocol/15-离线推送通知协议.md)、[Push Service 设计](superpowers/specs/2026-07-24-push-service-design-v3.md)、[契约冻结](superpowers/契约冻结-v3-to-v4.md)、[v4 实施计划](superpowers/plans/2026-07-24-push-service-implementation-v4.md)、[运维与发布指南](AUN离线推送服务运维与发布指南.md);[旧 Codex 版本](AUN离线推送服务架构与详细实现计划-codex.md)仅作历史背景
|
|
107
112
|
- 协议细节、Agent 自主行为、群 `mention_mode` 提及过滤和消息格式 → [协议文档目录](protocol/)、[Group 子协议](protocol/10-Group-子协议.md)、[Agent 行为规范](protocol/13-Agent行为规范.md)
|
|
108
113
|
- agent.md 远程缓存、`remote_etag` / `local_etag`、`requester` / `peer` / `group` 角色、消息信封与 Gateway `_meta` ETag 透传 → [远程 agent.md 缓存与 ETag 透传方案](agent.md/远程agent.md缓存与etag透传方案.md)
|
|
109
|
-
-
|
|
114
|
+
- agent.md Schema、内嵌签名、三字段关系声明与 self-owner 单签、公开 proof 独立验签、关系写入经 Auth 验证与冲突仲裁、既有签名协议开放项及本轮状态/TTL/Storage 决策 → [agent.md Schema 与签发/验签流程澄清记录](agent.md/working/agent.md-schema与签发验签流程澄清.md)
|
|
115
|
+
- AID 类型、owner/ownership_proof 可选但出现即合法、human 禁止 owner、共同签署字段集合、可见分号 canonical bytes、公开关系声明、Auth 关系写入与冲突裁定、owner-side 备份 ACL、`unbound`/`unusable` 与无专门 recovery → [AID 类型、owner 关系与换 owner 编排方案](agent.md/working/AID类型-owner关系与换owner编排方案.md)
|
|
116
|
+
- Auth 权威写入状态、Schema 可选性与 human 禁止 owner、三字段共同声明与 self-owner 单签、canonical bytes、公开 owner proof 独立验证、active/pending 唯一性检查、owner 流程、状态传播、`unbound`/`unusable`、Storage 内部对象权限、服务端/四端 SDK 调整和分阶段验收 Checklist;剩余为正式 wire/RPC 文档和跨端向量落稿 → [AID 类型、owner 关系与 agent.md 签发/换 owner 完整设计与实施计划](agent.md/working/AID类型-owner关系完整设计与实施计划.md)
|
|
117
|
+
- 本轮本地 Docker、单域、cross-SDK 与双域 federation 回归中的非任务失败及修复证据 → [本地 Docker 测试 Bug 清单](agent.md/working/本地Docker测试Bug清单.md)
|
|
118
|
+
- `group.index` owner/admin SDK 生成签名索引、`_meta.group_indexes` 观察、`expected_index_etag` CAS、服务端正/负缓存与注入频率控制 → [群索引版本提示与附件引用方案](design/群索引版本提示与附件引用方案.md)、[SDK 文档索引](sdk/INDEX.md)
|
|
110
119
|
|
|
111
120
|
### Service Proxy 与服务暴露
|
|
112
121
|
|
|
@@ -206,7 +215,23 @@
|
|
|
206
215
|
|
|
207
216
|
定义每个远程 AID 在 SDK 内存和本地持久化记录中维护一条 agent.md 状态:Python / TypeScript / Go 使用 `{aun_path}/AIDs/{aid}/agent.md` 与 `agentmd.json`,浏览器 JavaScript 使用 IndexedDB logical key。方案规定 Gateway 在 RPC response / event push 的 `_meta.agent_md_etags` 中按 `requester`、`peer`、`group` 注入元数据,保留旧别名兼容,并通过 300 秒正缓存、60 秒负缓存和默认 60 秒发送节流控制热路径开销;Message Service V2 P2P 信封携带 `agent_md.sender`。四端 SDK 自动观察 `_meta` 和信封 `agent_md.sender/group`,写入 `remote_etag` / `last_modified`,并遵守按需下载、无条件 GET、304 兼容、竞态和跨 SDK 一致性规则。
|
|
208
217
|
|
|
209
|
-
###
|
|
218
|
+
### agent.md Schema 与签发/验签流程澄清记录
|
|
219
|
+
|
|
220
|
+
记录当前四端 SDK 的 agent.md Schema、尾部内嵌签名格式、签发与验签责任边界,并列出历史外挂 `.sig` 草案与当前实现的冲突。owner proof 可公开独立验证;只有 owner 关系创建、替换或撤销需要 Auth 验证写入,普通内容变化不触发关系审批;证书状态不因关系 pending 改变,legacy/绑定中保留基本登录通信;并记录 `unbound`/`unusable`、状态 pull/push、TTL、type-change 和 Storage 权限决策。该文档处于 working 状态,不是冻结协议。
|
|
221
|
+
|
|
222
|
+
### AID 类型、owner 关系与换 owner 编排方案
|
|
223
|
+
|
|
224
|
+
定义八种 AID 类型下的 owner 必填矩阵、human/agent owner 约束、agent 自主 self-owner、`owner` 与 `ownership_proof` 两字段、subject 与 owner 对三字段关系声明独立签名及 self-owner 单签。大多数场景可信任公开验签通过的 agent.md owner;旧/绑定中 AID 保留基本登录通信,具体 owner 依赖场景由应用层决定;只有关系创建、替换和撤销经 Auth 验证写入,协议冲突由 Auth 按台账与 CAS 裁定,并在绑定和 `agent.md` 激活时检查未解除关系;普通名片内容变化不触发关系审批。文档还涵盖当前 owner 发起并签署目标/版本绑定转移授权、`unbound`/`unusable`、无专门 recovery 及 owner-side 备份 ACL 生命周期。该文档处于 working 状态,不是冻结协议。
|
|
225
|
+
|
|
226
|
+
### AID 类型、owner 关系与 agent.md 签发/换 owner 完整设计与实施计划
|
|
227
|
+
|
|
228
|
+
汇总公开 proof 独立验签、Auth 关系写入与冲突仲裁边界、创建/换 owner/解绑流程、Storage 保留目录与内部对象操作、Auth/Name Service/Storage 和四端 SDK 调整,以及带阶段验收标准的实施 Checklist;其中 12A 节记录了已确认的 Phase 0 P0-A01 至 P0-A12 字段、可见分号 canonical bytes、hash/签名、receipt、TTL、证书状态与关系 operation 分离、legacy/绑定中基本登录通信、`unbound`/`unusable` 和 RPC 方向,剩余为正式 wire/RPC 文档及跨端向量落稿。普通关系读取不要求每次实时查询 Auth;需要确认最新状态的场景按新鲜度契约处理。该文档处于 working 状态,不是冻结协议。
|
|
229
|
+
|
|
230
|
+
### 本地 Docker 测试 Bug 清单
|
|
231
|
+
|
|
232
|
+
记录本轮 owner 关系实施及单域、cross-SDK、双域 federation 回归中发现的非任务失败,包括 Go SQL mock 期望缺失、损坏 Python 字节码、Tester 原生 ABI、身份游标污染、双域端口冲突和 Group 成员状态异步持久化断言竞态;每项均列出根因、修复动作和验证结果。
|
|
233
|
+
|
|
234
|
+
### 群索引版本提示与附件引用方案
|
|
210
235
|
|
|
211
236
|
定义 `group.index` 的 owner/admin SDK 生成、canonical JSONL、签名、`etag` / `body_hash`、`expected_index_etag` CAS、`_meta.group_indexes` 版本提示、Gateway/Message 转发边界、服务端正/负缓存、singleflight、写后失效/刷新、注入频率控制,以及 DB 保存核心设置、group.fs 保存大附件、附件稳定引用和 SDK `check/get/updateGroupIndex` 语义。
|
|
212
237
|
|
|
@@ -29,8 +29,9 @@ AUN SDK Core 文档在 `docs/` 下。根级索引为 `docs/INDEX.md`,SDK API
|
|
|
29
29
|
|
|
30
30
|
## 常见查阅场景
|
|
31
31
|
|
|
32
|
-
| 场景 | 推荐读取 |
|
|
33
|
-
| --- | --- |
|
|
32
|
+
| 场景 | 推荐读取 |
|
|
33
|
+
| --- | --- |
|
|
34
|
+
| 新 AID 的 type/owner 注册、legacy/unbound AID 绑定、ownership proof、换 owner 与 operation 恢复 | `docs/sdk/06-API手册.md`、`docs/sdk/04-连接与认证.md`、`docs/protocol/01-身份与凭证协议-auth.md` |
|
|
34
35
|
| 本机 AUN 环境怎么选、如何避免 Compose/MySQL 混用 | `docs/aun测试运行指南.md` L9-80 |
|
|
35
36
|
| `agentid.pub/evolagent.cn` 本地单实例和四语言 Tester 怎么跑 | `docs/aun测试运行指南.md` L81-317、L501-827 |
|
|
36
37
|
| `evolagent.cn` / `agentid.pub` 等公网域的 Python SDK 测试怎么跑 | `docs/aun公网测试运行指南.md` L57-157 |
|
|
@@ -74,6 +75,7 @@ AUN SDK Core 文档在 `docs/` 下。根级索引为 `docs/INDEX.md`,SDK API
|
|
|
74
75
|
| `query_sessions`、Push RPC/ACK、状态汇总、dispatch 恢复、Gateway ACL、关闭顺序、横向约束和 TDD 执行原则的冻结契约 | `docs/superpowers/契约冻结-v3-to-v4.md` L15-273 |
|
|
75
76
|
| 离线 Push Service 相关文档、实施原则、Phase/Task TDD 门禁及 9 个 Phase、40 个 Task | `docs/superpowers/plans/2026-07-24-push-service-implementation-v4.md` L5-213 |
|
|
76
77
|
| Python SDK 的 `connect()` 自动登记和 `client.push.register/unregister` 运行期接口 | `docs/sdk/04-连接与认证.md` L125-150、`docs/sdk/06-API手册.md` L643-670 |
|
|
78
|
+
| owner relation 的 Storage 备份目录、ACL 撤销与状态查询 | `docs/sdk/09-storage-rpc-manual.md`、`docs/protocol/11-Storage-子协议.md` |
|
|
77
79
|
| 终端客户端和 Push Server 如何接入,以及如何使用 Python Mock 完成隔离演示 | `docs/AUN离线推送接入与演示指南.md` L7-250 |
|
|
78
80
|
| 离线推送接入验收、常见问题和生产硬门 | `docs/AUN离线推送接入与演示指南.md` L252-290 |
|
|
79
81
|
| 离线推送 RPC、事件、批次 ACK、持久恢复和发布边界 | `docs/protocol/15-离线推送通知协议.md` L27-165 |
|
|
@@ -97,10 +99,14 @@ AUN SDK Core 文档在 `docs/` 下。根级索引为 `docs/INDEX.md`,SDK API
|
|
|
97
99
|
| 跨语言日志、trace、身份隔离、CLI 定位 | `docs/design/跨语言容器E2E测试方案.md` L514-576 |
|
|
98
100
|
| 失败分类与落地阶段 | `docs/design/跨语言容器E2E测试方案.md` L579-625 |
|
|
99
101
|
| 与现有测试环境的关系和验收标准 | `docs/design/跨语言容器E2E测试方案.md` L627-665 |
|
|
100
|
-
| agent.md 远程缓存目标与字段 | `docs/agent.md/远程agent.md缓存与etag透传方案.md` L5-127 |
|
|
101
|
-
| agent.md ETag 透传时序图 | `docs/agent.md/远程agent.md缓存与etag透传方案.md` L129-239 |
|
|
102
|
-
| agent.md 服务端与 SDK 实现流程 | `docs/agent.md/远程agent.md缓存与etag透传方案.md` L241-319 |
|
|
102
|
+
| agent.md 远程缓存目标与字段 | `docs/agent.md/远程agent.md缓存与etag透传方案.md` L5-127 |
|
|
103
|
+
| agent.md ETag 透传时序图 | `docs/agent.md/远程agent.md缓存与etag透传方案.md` L129-239 |
|
|
104
|
+
| agent.md 服务端与 SDK 实现流程 | `docs/agent.md/远程agent.md缓存与etag透传方案.md` L241-319 |
|
|
103
105
|
| agent.md 本地持久化、竞态和测试点 | `docs/agent.md/远程agent.md缓存与etag透传方案.md` L321-370 |
|
|
106
|
+
| agent.md Schema、三字段关系声明与 self-owner 单签、公开 proof 独立验签、owner 关系写入经 Auth 验证与冲突仲裁、事实摘要与 nonce/编排上下文分层、Auth 登记见证与回执、证书/关系状态分离,以及 `unbound`/`unusable`、状态 pull/push、TTL、type-change 和 Storage 权限决策 | `docs/agent.md/working/agent.md-schema与签发验签流程澄清.md` |
|
|
107
|
+
| AID Schema owner/proof 可选但出现即合法、human 禁止 owner;共同签署字段为 proof_id/subject_aid/owner_aid,self-owner 仅 subject 单签,事实摘要排除 nonce、完整声明摘要绑定 proof,使用可见分号域分隔符;Auth 登记机构托管证据并签发回执,旧 AID 通过 `aid_bind` 建立 type/owner 绑定且基本登录通信不受限,公开关系声明与 Auth 关系写入边界、未解除关系唯一性检查、转移授权、`unbound`/`unusable`、Storage 内部对象权限和无专门 recovery | `docs/agent.md/working/AID类型-owner关系与换owner编排方案.md` |
|
|
108
|
+
| AID owner 完整设计、Schema 可选性与 human owner 限制、三字段共同声明与 self-owner 单签、Phase 0 已确认的 P0-A01 至 P0-A12(canonical JSON、可见分号域分隔符、签名封套、proof-only/registered、Auth receipt、TTL、证书状态与关系 operation 分离、legacy/绑定中基本登录通信及按应用场景降级、旧 AID `aid_bind` 与新建 `aid_register` 的 RPC/Facade 边界、active/pending 唯一性检查、创建/绑定/换 owner/解绑、`unbound`/`unusable`、服务端/四端 SDK 改动和分阶段验收;剩余为正式 wire/RPC 文档与跨端向量落稿 | `docs/agent.md/working/AID类型-owner关系完整设计与实施计划.md` |
|
|
109
|
+
| 本轮 owner 关系实施及本地 Docker、单域、cross-SDK、双域 federation 回归中发现的非任务失败、根因、修复与验证 | `docs/agent.md/working/本地Docker测试Bug清单.md` |
|
|
104
110
|
| SDK API、RPC、E2EE、Storage VFS、Group FS、Collab GC/reflog/reset 使用细节 | `docs/sdk/AUN_DOCS_GUIDE.md` |
|
|
105
111
|
| 四 SDK 当前 access token getter、缓存快照语义和外部 HTTP 数据面下载凭据生命周期 | `docs/sdk/04-连接与认证.md` L94-123、`docs/sdk/06-API手册.md` L192-209、`docs/sdk/09-storage-rpc-manual.md` L621-663、`docs/sdk/09-group-rpc-manual.md` L1448-1452、`docs/aun-fs/AUN Storage架构设计.md` L153-166 |
|
|
106
112
|
| 四 SDK 0.5.6 发布摘要、验签缓存、消息窗口与语言能力边界 | `docs/sdk/CHANGELOG-0.5.6.md` L1-73 |
|
|
@@ -108,15 +108,25 @@ name:
|
|
|
108
108
|
description: "Agent 显示名称"
|
|
109
109
|
example: "Code Reviewer"
|
|
110
110
|
|
|
111
|
-
type:
|
|
112
|
-
type: string
|
|
113
|
-
required: true
|
|
114
|
-
predefined_values: # 预设值,不是封闭枚举
|
|
115
|
-
- human # 真人用户
|
|
116
|
-
- agent # AI 助手
|
|
117
|
-
- group # 群组
|
|
118
|
-
|
|
119
|
-
|
|
111
|
+
type:
|
|
112
|
+
type: string
|
|
113
|
+
required: true
|
|
114
|
+
predefined_values: # 预设值,不是封闭枚举
|
|
115
|
+
- human # 真人用户
|
|
116
|
+
- agent # AI 助手
|
|
117
|
+
- group # 群组
|
|
118
|
+
- service # 不使用大模型的服务程序
|
|
119
|
+
- device # 被控设备
|
|
120
|
+
- host # 运行时承载主机
|
|
121
|
+
- org # 组织
|
|
122
|
+
- custom # 自定义主体类型
|
|
123
|
+
allow_extensions: true
|
|
124
|
+
description: "主体类型,主要决定主体的数据存储结构;允许使用未预设的扩展值"
|
|
125
|
+
|
|
126
|
+
exttype:
|
|
127
|
+
type: string
|
|
128
|
+
required: false
|
|
129
|
+
description: "主体的扩展类型,表示 type 对应的更具体形态;取值域由 type 决定"
|
|
120
130
|
|
|
121
131
|
version:
|
|
122
132
|
type: string
|
|
@@ -147,15 +157,24 @@ tags:
|
|
|
147
157
|
description: "用于分类和检索"
|
|
148
158
|
```
|
|
149
159
|
|
|
150
|
-
##
|
|
151
|
-
|
|
152
|
-
`type`
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
|
157
|
-
|
|
158
|
-
| `
|
|
160
|
+
## 主体 Type / ExtType 说明
|
|
161
|
+
|
|
162
|
+
`type` 和 `exttype` 共同描述主体。`type` 是可扩展字符串,主要决定主体的数据存储结构;`exttype` 在此基础上表示更具体的形态,取值域由 `type` 决定。
|
|
163
|
+
|
|
164
|
+
下表定义当前支持的 8 种预设 `type`;解析方必须保留并容忍未知类型,不得因其不在预设列表中拒绝 agent.md。
|
|
165
|
+
|
|
166
|
+
| 预设 Type | 用途 | 示例 |
|
|
167
|
+
|------|------|------|
|
|
168
|
+
| `human` | 真人用户 | 开发者、管理员、终端用户 |
|
|
169
|
+
| `agent` | 使用大模型的服务程序 | 对话助手、代码 Agent、自动化 Agent |
|
|
170
|
+
| `group` | 群组身份 | 项目团队、协作群组 |
|
|
171
|
+
| `service` | 不使用大模型的服务程序 | 网关、存储服务、注册服务 |
|
|
172
|
+
| `device` | 被控设备 | 传感器、摄像设备、机器人 |
|
|
173
|
+
| `host` | 运行时承载主机 | 物理机、虚拟机、云主机 |
|
|
174
|
+
| `org` | 组织 | 公司、部门、协作小组 |
|
|
175
|
+
| `custom` | 自定义主体类型 | 用户声明的主体类型 |
|
|
176
|
+
|
|
177
|
+
`exttype` 的具体取值示例:`agent` 可使用 `claude-code`、`codex` 等运行时名称;`org` 可使用 `company`、`department`、`team` 等组织层级;`group` 可使用 `normal`、`org-collab`、`task`、`org` 等群类型。
|
|
159
178
|
|
|
160
179
|
## 示例文件
|
|
161
180
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# AUN 分布式测试运行指南
|
|
2
2
|
|
|
3
|
-
本文档负责三套本地 Docker 环境:三节点单域、本地真实域名双域 `agentid.pub/agentid.cn`、隔离双域 federation `dist-aid.com/dist-aid.net`。默认 `agentid.pub` 单域、默认四语言 Tester 和默认 cross-SDK 统一见 [AUN 测试运行指南](aun测试运行指南.md)。公网 `agentid.pub/agentid.cn` 复测是本地跨域通过后的独立验证层,不属于本地双域 Docker。
|
|
3
|
+
本文档负责三套本地 Docker 环境:三节点单域、本地真实域名双域 `agentid.pub/agentid.cn`、隔离双域 federation `dist-aid.com/dist-aid.net`。默认 `agentid.pub` 单域、默认四语言 Tester 和默认 cross-SDK 统一见 [AUN 测试运行指南](aun测试运行指南.md)。公网 `agentid.pub/agentid.cn` 复测是本地跨域通过后的独立验证层,不属于本地双域 Docker。
|
|
4
|
+
|
|
5
|
+
本轮跨域验收范围仅为本地 `agentid.pub` ↔ `agentid.cn`。`dist-aid.com` / `dist-aid.net` 章节仅保留为独立环境参考,本轮不得启动或运行该隔离 federation,也不得将其结果计入本轮跨域结论。
|
|
4
6
|
|
|
5
7
|
本指南只认当前 worktree `D:\modelunion\kite`。当前分支已经包含完整的默认单实例、三节点分布式、两套双域环境、服务端源码和四语言 SDK;服务端镜像、Tester、Cross-SDK、`data-dist` 与部署包都必须从这个 worktree 生成和运行。
|
|
6
8
|
|
|
@@ -21,7 +23,7 @@ D:\modelunion\kite\aun-sdk-core\docs\aun公网测试运行指南.md
|
|
|
21
23
|
- 当前 worktree:`D:\modelunion\kite`
|
|
22
24
|
- 三节点单域集群:`D:\modelunion\kite\docker-deploy\docker-compose.distributed.yml`
|
|
23
25
|
- 本地真实域名双域:两域基础 Compose + 域覆盖 + `D:\modelunion\kite\docker-deploy\docker-compose.agentid-federation.yml`,当前不加载 Mail overlay
|
|
24
|
-
- 隔离双域 federation
|
|
26
|
+
- 隔离双域 federation(本轮不执行):`D:\modelunion\kite\docker-deploy\federation-test\docker-compose.yml`
|
|
25
27
|
- 分布式 Tester:`D:\modelunion\kite\docker-deploy\docker-compose.distributed-testers.yml`
|
|
26
28
|
- 分布式 Cross-SDK:`D:\modelunion\kite\aun-sdk-core\tests\cross-sdk\docker-compose.cross-sdk.distributed.yml`
|
|
27
29
|
- 本地 TLS 证书:只用于本地测试,SDK 侧统一 `AUN_ENV=development`、`AUN_VERIFY_SSL=0`
|
|
@@ -721,9 +723,9 @@ $tsCases = @(
|
|
|
721
723
|
'federation-service-proxy.test.ts'
|
|
722
724
|
)
|
|
723
725
|
foreach ($case in $tsCases) {
|
|
724
|
-
docker exec -e AUN_TEST_ISSUER_A=agentid.pub -e AUN_TEST_ISSUER_B=agentid.cn `
|
|
725
|
-
-e AUN_VERIFY_SSL=0 -w /workspace/ts kite-ts-tester bash -lc `
|
|
726
|
-
"node_modules
|
|
726
|
+
docker exec -e AUN_TEST_ISSUER_A=agentid.pub -e AUN_TEST_ISSUER_B=agentid.cn `
|
|
727
|
+
-e AUN_VERIFY_SSL=0 -w /workspace/ts kite-ts-tester bash -lc `
|
|
728
|
+
"node --max-opt=0 node_modules/vitest/vitest.mjs run tests/integration/$case --pool forks --no-file-parallelism --maxWorkers=1 --reporter=verbose"
|
|
727
729
|
if ($LASTEXITCODE -ne 0) { throw "TS federation 失败: $case" }
|
|
728
730
|
}
|
|
729
731
|
```
|
|
@@ -733,22 +735,24 @@ foreach ($case in $tsCases) {
|
|
|
733
735
|
浏览器 JS federation 必须使用 Playwright,按文件串行执行。先构建一次,再分别运行 `federation.spec.ts` 与 `notify.spec.ts`;`AUN_TEST_DISABLE_LOCAL_DOCKER_PIN=1` 使浏览器使用共享 Docker DNS,不把域名 pin 到宿主机回环地址:
|
|
734
736
|
|
|
735
737
|
```powershell
|
|
736
|
-
docker exec -e AUN_TEST_ISSUER_A=agentid.pub -e AUN_TEST_ISSUER_B=agentid.cn `
|
|
737
|
-
-e AUN_TEST_DISABLE_LOCAL_DOCKER_PIN=1 -e AUN_VERIFY_SSL=0 `
|
|
738
|
-
-w /workspace/js kite-js-tester bash -lc "npm run build"
|
|
738
|
+
docker exec -e AUN_TEST_ISSUER_A=agentid.pub -e AUN_TEST_ISSUER_B=agentid.cn `
|
|
739
|
+
-e AUN_TEST_DISABLE_LOCAL_DOCKER_PIN=1 -e AUN_VERIFY_SSL=0 `
|
|
740
|
+
-w /workspace/js kite-js-tester bash -lc "npm run build"
|
|
739
741
|
if ($LASTEXITCODE -ne 0) { throw 'JS federation 构建失败' }
|
|
740
742
|
|
|
741
743
|
$jsCases = @('federation.spec.ts', 'notify.spec.ts')
|
|
742
744
|
foreach ($case in $jsCases) {
|
|
743
|
-
docker exec -e AUN_TEST_ISSUER_A=agentid.pub -e AUN_TEST_ISSUER_B=agentid.cn `
|
|
744
|
-
-e AUN_TEST_DISABLE_LOCAL_DOCKER_PIN=1 -e AUN_VERIFY_SSL=0 `
|
|
745
|
-
-w /workspace/js kite-js-tester bash -lc `
|
|
746
|
-
"node_modules
|
|
745
|
+
docker exec -e AUN_TEST_ISSUER_A=agentid.pub -e AUN_TEST_ISSUER_B=agentid.cn `
|
|
746
|
+
-e AUN_TEST_DISABLE_LOCAL_DOCKER_PIN=1 -e AUN_VERIFY_SSL=0 `
|
|
747
|
+
-w /workspace/js kite-js-tester bash -lc `
|
|
748
|
+
"node --max-opt=0 node_modules/@playwright/test/cli.js test --config=playwright.agentid-local.config.ts tests/e2e-browser/$case --reporter=line"
|
|
747
749
|
if ($LASTEXITCODE -ne 0) { throw "JS Playwright federation 失败: $case" }
|
|
748
|
-
}
|
|
749
|
-
```
|
|
750
|
-
|
|
751
|
-
|
|
750
|
+
}
|
|
751
|
+
```
|
|
752
|
+
|
|
753
|
+
若 Docker Tester 中 Playwright 以 `139`/`SIGSEGV` 退出,保留该文件日志并切换到主指南的宿主机 Node 备选命令,仍使用同一套 `agentid.pub ↔ agentid.cn` Docker 服务端;宿主机模式不要设置 `AUN_TEST_DISABLE_LOCAL_DOCKER_PIN`,由 `playwright.agentid-local.config.ts` 将两域宿主端口映射给浏览器。已通过文件无需重复运行。
|
|
754
|
+
|
|
755
|
+
失败后不得重复已通过文件;如果只需重跑 Notify,可将 `$jsCases` 改为 `@('notify.spec.ts')`。隔离 federation 运行时将两处 `agentid.pub/agentid.cn` 同时替换为 `dist-aid.com/dist-aid.net`。
|
|
752
756
|
|
|
753
757
|
除 `federation-boundary` 外,runner 在进入业务阶段前会用全新的运行目录分别完成两域固定身份登录。`auth.aid_login1` 必须依次通过 CA 的 `verify_chain`、`get_cert` 和 `ocsp_query` 数据库查询,因此登录成功就是 CA/Auth 数据库调用链可用的证据;日志必须先出现两条 `DOMAIN_READY ... evidence=aid_login`。`ca.status` 属于域内诊断 RPC,普通 AID 被 Gateway 拒绝是正确权限边界,不得为了预检放宽。任一域登录失败时,runner 会汇总两域结果并在业务 RPC 前停止;此时应先检查对应 MySQL 容器状态和 CA/Auth 重连日志,不能把 `ca.verify_chain: database not connected` 归因于联邦身份边界。
|
|
754
758
|
|
|
@@ -961,7 +965,9 @@ foreach ($phase in 'p2p', 'group', 'storage') {
|
|
|
961
965
|
|
|
962
966
|
公网日志应从两台服务器按本轮开始时间分别采集。若仍保存到 `docker-deploy/agentid.pub/latest.log` 和 `docker-deploy/agentid.cn/latest.log`,必须同时记录日志来源是“本地 Docker”还是“公网服务器”;文件名相同不能证明环境。没有远端日志访问权限时,只能给出客户端 E2E 结论,不能声称已完成服务端调用链闭环。
|
|
963
967
|
|
|
964
|
-
## 隔离双域 federation(dist-aid.com / dist-aid.net
|
|
968
|
+
## 隔离双域 federation(dist-aid.com / dist-aid.net;本轮不执行)
|
|
969
|
+
|
|
970
|
+
本节仅供单独获准的隔离环境回归参考,不属于本轮 `agentid.pub` ↔ `agentid.cn` 跨域验收;本轮不得按本节启动容器或执行测试。
|
|
965
971
|
|
|
966
972
|
### 准备并启动
|
|
967
973
|
|
package/_packed_docs/aun/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md
CHANGED
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
> `D:\modelunion\kite\docker-deploy`,SDK 源码与测试位于
|
|
5
5
|
> `D:\modelunion\kite\aun-sdk-core`。
|
|
6
6
|
|
|
7
|
-
本文档说明默认 `agentid.pub` 单实例服务端、四语言 Tester、默认 cross-SDK、集成测试和 E2E
|
|
7
|
+
本文档说明默认 `agentid.pub` 单实例服务端、四语言 Tester、默认 cross-SDK、集成测试和 E2E 的运行方式,同时给出单实例生产包的构建与部署入口。三节点和本地 `agentid.pub/agentid.cn` 跨域 Docker 统一见分布式指南。
|
|
8
|
+
|
|
9
|
+
本轮跨域验收范围仅为本地 `agentid.pub` ↔ `agentid.cn`。`dist-aid.com` / `dist-aid.net` 隔离 federation 不属于本轮跨域测试或验收结论。
|
|
8
10
|
|
|
9
11
|
## 测试指南:
|
|
10
12
|
D:\modelunion\kite\aun-sdk-core\docs\aun测试运行指南.md
|
|
@@ -1046,7 +1048,7 @@ Go 当前还没有默认单实例 Docker reconnect 用例;默认单实例侧
|
|
|
1046
1048
|
|
|
1047
1049
|
## 分布式与双域环境
|
|
1048
1050
|
|
|
1049
|
-
三节点 `dist-agentid.pub`、本地真实域名双域 `agentid.pub/agentid.cn
|
|
1051
|
+
三节点 `dist-agentid.pub`、本地真实域名双域 `agentid.pub/agentid.cn`、分布式 Tester 和分布式 cross-SDK 的唯一运行说明见 [AUN 分布式测试运行指南](aun分布式测试运行指南.md)。本轮跨域只执行其中的 `agentid.pub/agentid.cn` 专节。
|
|
1050
1052
|
|
|
1051
1053
|
主指南不再复制 federation 命令。不得继续使用旧的 `aid.com/aid.net`、`client-a/client-b`、`federation-kite-*` 或 `federation-test_federation-net`;当前权威名称均以分布式 Compose 的 `dist-*` 配置为准。
|
|
1052
1054
|
|
|
@@ -92,11 +92,98 @@ AID 命名规则:
|
|
|
92
92
|
}
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
**说明**:
|
|
96
|
-
- Gateway 将请求转发到 Auth 服务,Auth 服务调用 CA 签发证书
|
|
97
|
-
- 创建 AID 时固定签发 P-256 证书,确保最大兼容性
|
|
98
|
-
- 协议默认允许创建任意 `aid`;命名冲突、抢注、保留名、审批制等约束由具体网络运营策略决定
|
|
99
|
-
- 客户端需保存返回的证书和本地生成的私钥
|
|
95
|
+
**说明**:
|
|
96
|
+
- Gateway 将请求转发到 Auth 服务,Auth 服务调用 CA 签发证书
|
|
97
|
+
- 创建 AID 时固定签发 P-256 证书,确保最大兼容性
|
|
98
|
+
- 协议默认允许创建任意 `aid`;命名冲突、抢注、保留名、审批制等约束由具体网络运营策略决定
|
|
99
|
+
- 客户端需保存返回的证书和本地生成的私钥
|
|
100
|
+
|
|
101
|
+
### 1.3.1 带 type/owner 的新注册流程
|
|
102
|
+
|
|
103
|
+
`auth.create_aid` 只负责签发证书,保持 legacy 兼容语义,不创建 owner relation。支持 owner 的新身份由 SDK 先完成证书签发,再调用以下可恢复 operation:
|
|
104
|
+
|
|
105
|
+
```text
|
|
106
|
+
证书签发(auth.create_aid)
|
|
107
|
+
→ auth.aid_register_prepare
|
|
108
|
+
→ auth.aid_register_submit(subject/owner 签名,可分批)
|
|
109
|
+
→ 使用 owner_operation_id 发布带 ownership_proof 的 agent.md
|
|
110
|
+
→ auth.aid_register_activate
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
#### auth.aid_register_prepare
|
|
114
|
+
|
|
115
|
+
| 参数 | 类型 | 必需 | 说明 |
|
|
116
|
+
|------|------|:----:|------|
|
|
117
|
+
| `aid`(或 `subject_aid`) | string | 是 | subject AID;服务端规范化为小写 |
|
|
118
|
+
| `type`(或 `aid_type`) | string | 是 | `human`、`agent`、`group`、`service`、`device`、`host`、`org`、`custom` |
|
|
119
|
+
| `owner`(或 `owner_aid`) | string | 条件 | 非 `human` 必填;`agent` 可与 subject 相同 |
|
|
120
|
+
| `idempotency_key` | string | 否 | 相同 kind/subject/key 返回同一 operation |
|
|
121
|
+
|
|
122
|
+
约束:`human` 不得指定 owner;非 `human` 必须指定 owner;只有 `agent` 允许 self-owner;外部 owner 必须是已登记且状态为 `active` 或 `not_applicable` 的 `human`/`agent`,并且不能形成 owner 环。prepare 成功后 operation 的初始 state 为 `proof_pending`(无 owner 的 human 为 `agent_md_pending`),TTL 固定为 7 天。
|
|
123
|
+
|
|
124
|
+
Auth 可登记 `org` 关系类型;但当前 CA/Name Service 只实现 `signing` 与 `group_identity` 证书用途,尚未实现 `org_identity` 映射。组织身份若使用现有流程,不能按已实现的组织专用证书用途对外承诺。
|
|
125
|
+
|
|
126
|
+
**响应**(字段会按场景返回):
|
|
127
|
+
|
|
128
|
+
```json
|
|
129
|
+
{
|
|
130
|
+
"operation_id": "op-...",
|
|
131
|
+
"kind": "register",
|
|
132
|
+
"aid": "sensor.agentid.pub",
|
|
133
|
+
"subject_aid": "sensor.agentid.pub",
|
|
134
|
+
"type": "agent",
|
|
135
|
+
"owner": "alice.agentid.pub",
|
|
136
|
+
"owner_aid": "alice.agentid.pub",
|
|
137
|
+
"state": "proof_pending",
|
|
138
|
+
"operation_state": "proof_pending",
|
|
139
|
+
"ownership_status": "pending",
|
|
140
|
+
"relation_version": 0,
|
|
141
|
+
"proof_id": "550e8400-e29b-41d4-a716-446655440000",
|
|
142
|
+
"fact_hash": "<64 lowercase hex>",
|
|
143
|
+
"statement_hash": "<64 lowercase hex>",
|
|
144
|
+
"expires_at": "2026-10-13T00:00:00Z"
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
#### auth.aid_register_submit
|
|
149
|
+
|
|
150
|
+
请求至少包含 `operation_id`,并可分批提交:
|
|
151
|
+
|
|
152
|
+
| 参数 | 类型 | 说明 |
|
|
153
|
+
|------|------|------|
|
|
154
|
+
| `subject_signature` | object | subject 对 ownership statement 的签名 |
|
|
155
|
+
| `owner_signature` | object | 外部 owner 对同一 statement 的签名;self-owner 禁止 |
|
|
156
|
+
|
|
157
|
+
签名封套只允许 `cert_fingerprint`(`sha256:<64 hex>`)和严格 Base64 的 `signature`。提交后双方签名齐全时 state 变为 `agent_md_pending`;重复提交相同签名幂等,替换已保存签名返回 `owner_relation_conflict`。
|
|
158
|
+
|
|
159
|
+
#### auth.aid_register_activate / auth.aid_register_status
|
|
160
|
+
|
|
161
|
+
`auth.aid_register_activate` 只接受 `operation_id`。客户端必须先用该 operation 的一次性 `owner_operation_id` 发布与 operation 完全匹配的 `agent.md`,成功后返回 `ownership_status=active`(`human` 返回 `not_applicable`)和 `relation_version=1`。`auth.aid_register_status` 接受 `aid`,返回当前登记或 pending operation 的状态。
|
|
162
|
+
|
|
163
|
+
### 1.3.2 已有 AID 的 aid_bind 流程
|
|
164
|
+
|
|
165
|
+
旧客户端通过 `auth.create_aid` 创建的 AID,以及已被 `owner_relation_unbind` 解除关系的 AID,使用 `auth.aid_bind_prepare`、`auth.aid_bind_submit`、`auth.aid_bind_activate` 和 `auth.aid_bind_status` 建立或重建关系。该流程不签发新证书、不改变 AID、密钥、登录或消息通信身份;绑定期间状态为 `legacy_unbound`/`pending`,基本登录和通信仍可用。
|
|
166
|
+
|
|
167
|
+
`aid_bind_prepare` 的参数和签名规则与新注册相同,但 active relation 不能被 bind 替换;已存在的 type/owner 只能重复提交完全相同的值。绑定失败或 operation 过期不会吊销证书。`auth.aid_operation_get` 接受 `operation_id`,用于进程重启后查询并恢复 pending operation。
|
|
168
|
+
|
|
169
|
+
### 1.3.3 Ownership proof 与 canonical bytes
|
|
170
|
+
|
|
171
|
+
四端实现必须对同一 UTF-8 字节序列计算摘要和签名:
|
|
172
|
+
|
|
173
|
+
```text
|
|
174
|
+
fact = canonical_json({"subject_aid": subject_aid, "owner_aid": owner_aid})
|
|
175
|
+
statement = canonical_json({"proof_id": proof_id, "subject_aid": subject_aid, "owner_aid": owner_aid})
|
|
176
|
+
signing_bytes = UTF-8("AUN-AID-OWNER-RELATION-V1;") || statement
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
对象键按字典序、无空格;AID 先规范化为 ASCII 小写;`proof_id` 必须为 UUID v4。`fact_hash=SHA-256(fact)`,`statement_hash=SHA-256(signing_bytes)`,均为裸小写十六进制。agent.md 的 `owner` 与 `ownership_proof` 必须同时出现;proof 的 `subject_aid`/`owner_aid` 必须分别等于 agent.md 的 `aid`/`owner`。`human` 不得携带这两个字段。
|
|
180
|
+
|
|
181
|
+
### 1.3.4 Owner change、解绑与 type 变更
|
|
182
|
+
|
|
183
|
+
- `auth.owner_change_prepare` 参数为 `subject_aid`、`new_owner_aid`、可选 `current_owner_aid`、`expected_relation_version`、`idempotency_key`;只允许当前 owner 发起,并检查 CAS、owner 类型和环。operation 的 `transfer_payload` 包含 `operation_id`、subject、old/new owner、new proof、当前 relation version、challenge nonce 和过期时间。
|
|
184
|
+
- `auth.owner_change_submit` 接收 `old_owner_signature`、`subject_signature`、`new_owner_signature`。old owner 签署 `AUN-AID-OWNER-TRANSFER-V1;` 加 `transfer_payload`;subject 和 new owner 签署新的 ownership statement。三份签名齐全后发布新 agent.md,再调用 `auth.owner_change_activate`。
|
|
185
|
+
- 激活成功后 `relation_version` 递增;旧 owner 的 relation ACL 被撤销但数据保留,新 owner 的 ACL 被创建。subject 自身签名不能替代 old owner 授权。
|
|
186
|
+
- `auth.owner_relation_status` 查询当前关系;`auth.owner_relation_unbind` 只允许当前 owner(可带 `expected_relation_version`),状态变为 `unbound`,版本递增,证书和数据保留;`auth.aid_type_change` 修改登记 type,但有 active 子关系时拒绝。
|
|
100
187
|
|
|
101
188
|
## 1.4 auth.aid_login1 / auth.aid_login2
|
|
102
189
|
|
|
@@ -559,7 +646,9 @@ signature = ECDSA_sign(private_key, SHA256(message))
|
|
|
559
646
|
| `-32003` | Signature verification failed — 签名验证失败 |
|
|
560
647
|
| `-32005` | Authentication expired — Token 过期或刷新链耗尽 |
|
|
561
648
|
|
|
562
|
-
> 通用 JSON-RPC 2.0 错误码(-32700/-32600/-32601/-32602/-32603)同样适用,见 [07-JSON-RPC](07-JSON-RPC.md)。
|
|
649
|
+
> 通用 JSON-RPC 2.0 错误码(-32700/-32600/-32601/-32602/-32603)同样适用,见 [07-JSON-RPC](07-JSON-RPC.md)。
|
|
650
|
+
|
|
651
|
+
Owner relation 方法使用 JSON-RPC `-32602`,并在 `error.data.error_code` 中返回稳定错误码;完整列表和 `signature_verification_unavailable`、`type_change_blocked`、`aid_binding_required` 的说明见 [07-错误码与状态机](07-错误码与状态机.md) §7.1。
|
|
563
652
|
|
|
564
653
|
## 1.9 安全说明
|
|
565
654
|
|
|
@@ -19,8 +19,10 @@
|
|
|
19
19
|
| -32001 | Authentication failed(认证失败) | 检查凭据,重新登录 |
|
|
20
20
|
| -32002 | Certificate/Nonce invalid(凭据无效) | 检查证书链或 nonce |
|
|
21
21
|
| -32003 | Signature verification failed(签名验证失败) | 检查私钥,不重试 |
|
|
22
|
-
| -32004 | Permission denied(权限拒绝) | 提示用户,不重试 |
|
|
23
|
-
| -32005 | Authentication expired(Token 过期) | 刷新 token 或重新登录 |
|
|
22
|
+
| -32004 | Permission denied(权限拒绝) | 提示用户,不重试 |
|
|
23
|
+
| -32005 | Authentication expired(Token 过期) | 刷新 token 或重新登录 |
|
|
24
|
+
|
|
25
|
+
Owner relation RPC 在 `-32602 Invalid params` 的 `error.data.error_code` 中返回稳定错误码:`invalid_aid`、`invalid_aid_type`、`human_owner_forbidden`、`owner_required`、`self_owner_not_allowed`、`owner_not_verified`、`owner_type_forbidden`、`owner_relation_conflict`、`pending_operation_exists`、`operation_not_found`、`operation_expired`、`signature_invalid`、`signature_verification_unavailable`、`relation_version_conflict`、`idempotency_key_reuse`、`type_change_blocked`、`aid_binding_required`。`signature_verification_unavailable` 表示 owner 证书验证服务不可用;`type_change_blocked` 表示该 AID 仍是活动 owner;`aid_binding_required` 表示尚无已登记 type,需先完成 `aid_bind`。JSON-RPC 外层错误码仍为 `-32602`。
|
|
24
26
|
|
|
25
27
|
### 7.1.3 AUN 协议级错误码(连接与会话)
|
|
26
28
|
|
|
@@ -220,8 +222,21 @@ submitted → working → completed
|
|
|
220
222
|
| input_required | | working, failed, canceled |
|
|
221
223
|
| rejected | 是 | |
|
|
222
224
|
| completed | 是 | |
|
|
223
|
-
| failed | 是 | |
|
|
224
|
-
| canceled | 是 | |
|
|
225
|
+
| failed | 是 | |
|
|
226
|
+
| canceled | 是 | |
|
|
227
|
+
|
|
228
|
+
### 7.4.1 Owner relation operation 状态机
|
|
229
|
+
|
|
230
|
+
```text
|
|
231
|
+
proof_pending
|
|
232
|
+
→ agent_md_pending
|
|
233
|
+
→ active
|
|
234
|
+
|
|
235
|
+
proof_pending / agent_md_pending
|
|
236
|
+
→ expired
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
`human` 注册在 agent.md 发布后进入 `not_applicable`;legacy AID 可处于 `legacy_unbound`,解绑后的关系为 `unbound`,因 owner 状态不可用时关系可标为 `unusable`,旧证书和数据保留。`owner_change` 从当前 `active` 关系创建 pending operation,三方签名和新 agent.md 激活后回到 `active`,`relation_version` 递增;CAS 不匹配或重复 pending operation 保持原关系不变。
|
|
225
240
|
|
|
226
241
|
## 7.5 处理原则
|
|
227
242
|
|
|
@@ -130,7 +130,7 @@ Storage 服务是 AUN 协议的应用层扩展,提供对象存储能力。负
|
|
|
130
130
|
|
|
131
131
|
**权限**:仅所有者可列。
|
|
132
132
|
|
|
133
|
-
### `storage.get_quota`
|
|
133
|
+
### `storage.get_quota`
|
|
134
134
|
|
|
135
135
|
查询存储配额使用情况。
|
|
136
136
|
|
|
@@ -142,7 +142,30 @@ Storage 服务是 AUN 协议的应用层扩展,提供对象存储能力。负
|
|
|
142
142
|
|
|
143
143
|
**响应**:`{ owner_aid, used_bytes, object_count, quota_bytes }`
|
|
144
144
|
|
|
145
|
-
**权限**:仅所有者可查。
|
|
145
|
+
**权限**:仅所有者可查。
|
|
146
|
+
|
|
147
|
+
### `storage.relation_backup_provision`
|
|
148
|
+
|
|
149
|
+
由 Auth 服务在 external owner relation 激活或重建时内部调用,普通客户端不得调用。请求必须带 `_caller_id="auth"`,参数如下:
|
|
150
|
+
|
|
151
|
+
| 参数 | 类型 | 必需 | 说明 |
|
|
152
|
+
|------|------|:----:|------|
|
|
153
|
+
| `owner_aid` | string | 是 | 外部 owner AID |
|
|
154
|
+
| `subject_aid` | string | 是 | 被管理的 subject AID;与 owner 不同 |
|
|
155
|
+
| `proof_id` | string | 是 | 当前 active ownership proof |
|
|
156
|
+
| `relation_version` | integer | 是 | 当前关系版本,>=1 |
|
|
157
|
+
|
|
158
|
+
服务端在 owner 的 `default` bucket 创建或复用固定命名空间 `.aun/subjects/<lowercase_subject_aid>`,并写入 subject 的 `rw` ACL。成功响应包含 `schema=aun.relation-backup-namespace.v1`、`owner_aid`、`subject_aid`、`proof_id`、`relation_version`、`bucket=default`、`path`、`acl_source=ownership_relation`、`acl_generation`、`status=ready`、`on_revoke=retain_data_revoke_acl` 和 `data_retained=true`。首次 provision 的 `acl_generation` 为 1;同一 proof/version 重复调用幂等。
|
|
159
|
+
|
|
160
|
+
### `storage.relation_backup_revoke`
|
|
161
|
+
|
|
162
|
+
由 Auth 服务内部调用,参数为 `owner_aid`、`subject_aid` 和可选 `expected_relation_version`。服务端只移除 subject 的 relation ACL,不删除命名空间或其中数据,响应 `status=retained`、`data_retained=true`,并递增 `acl_generation`。记录不存在返回 `-32008`;Auth 之外的调用返回 `-32004`。
|
|
163
|
+
|
|
164
|
+
### `storage.relation_backup_status`
|
|
165
|
+
|
|
166
|
+
查询关系备份命名空间元数据,不返回目录内容。请求参数:`subject_aid` 必填,`owner_aid` 可选。调用者必须是 owner 或 subject;其它调用返回 `-32004`。未创建记录返回 `status=pending`、`acl_generation=0`、`data_retained=false`;已撤销记录返回 `status=retained`,数据仍保留。
|
|
167
|
+
|
|
168
|
+
关系备份目录的权限约束:subject 仅在关系 `ready` 时访问自己的 `.aun/subjects/<subject>/` 后代,不能枚举 `.aun/subjects/` 根或其它 subject 目录,不能删除自己的 subject 根目录,也不能修改 ACL、visibility、token、share 或 mount。owner 可读写目录数据,但不能通过普通 Storage RPC 修改关系 ACL。
|
|
146
169
|
|
|
147
170
|
---
|
|
148
171
|
|