@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
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
|
|
9
9
|
| 角色/材料 | 职责 |
|
|
10
10
|
| --- | --- |
|
|
11
|
-
| sub |
|
|
11
|
+
| sub | 普通被管理身份自己签署并以本人身份向 NS 提交 `agent.md`;现代 Group/Org 由实体主签、当前 owner token 上传。 |
|
|
12
12
|
| owner/新 owner | 自己签署并向本人 Storage 发布 `sub_aids/{sub_aid}/owner.md`。 |
|
|
13
13
|
| NS | 根据这两份当前权威文件验收并锁定关系;Storage 中的 sub 名片副本不参与验收。 |
|
|
14
14
|
|
|
15
|
-
owner 权限不包含 sub 私钥或代签、代上传能力。普通名片更新保留全部关系字段及原 CAS;关系无效或暂不可确认只影响依赖 owner 的授权,不阻断普通名片和通信。
|
|
15
|
+
普通主体的 owner 权限不包含 sub 私钥或代签、代上传能力。普通名片更新保留全部关系字段及原 CAS;关系无效或暂不可确认只影响依赖 owner 的授权,不阻断普通名片和通信。
|
|
16
16
|
|
|
17
|
-
本流程用于普通主体;human 可作为 owner,不能作为声明 owner 的 sub
|
|
17
|
+
本流程用于普通主体;human 可作为 owner,不能作为声明 owner 的 sub。现代 Group/Org 支持配对的 owner.md/agent.md 声明与通用共识;创建、绑定、解散和强制 rekey 转让仍由专属生命周期驱动,普通 bind/release/transfer 关系管理 Facade 对其返回 `not_applicable`。缺少 ownership 的历史实体名片保留读取兼容,NS 保留 `not_applicable` 标记,SDK 以实际返回 status 为准,不将 owner-only 视为共识。作为 owner 仍须遵守各入口的类型限制,local 编排的 owner 仅接受 human/agent。
|
|
18
18
|
|
|
19
19
|
SDK 不维护 Ownership 任务状态机、WAL 或后台恢复,不提交独立 decisions 回执。NS 以归属事实判断冲突;锁定后,新的 accept/reject 不能改变关系,须走释放或转移。
|
|
20
20
|
|
|
@@ -319,7 +319,7 @@ if (current.status === 'consensus' && current.owner_aid === 'owner.agentid.pub')
|
|
|
319
319
|
| `invalid` | 材料确定无效,不能授权。 |
|
|
320
320
|
| `unavailable` | 当前事实不可确认,保留保护并等待。 |
|
|
321
321
|
|
|
322
|
-
Group/Org
|
|
322
|
+
NS 对缺少 ownership 的历史 Group/Org 保留 `not_applicable` 标记,该状态不属于六态;现代实体声明参与双文件共识,SDK 以实际返回 status 为准。先判断 status,不能把占位版本 0/unlocked 当成无锁证据。无目标上下文的查询也不能枚举独立 owner 邀请。
|
|
323
323
|
|
|
324
324
|
普通下载的 `verification.ownership_status` 是 legacy 展示字段。普通 peer 名片展示可按 ETag 复用 Ownership 快照,不必轮询重检;`owner.md` 可独立变化,实际管理操作仍由 SDK/服务端回源核验当前归属、权限和文件 CAS。清理后可再次出现版本 1,版本号不是全局关系标识。
|
|
325
325
|
|
|
@@ -360,4 +360,4 @@ SDK 不保存未完成操作,不在 `connect()` 后扫描任务或补发通知
|
|
|
360
360
|
|
|
361
361
|
完整的新语义应配套发布 NS 与四 SDK。已有 2.1 NS 的普通绑定、本地绑定及目标 owner 文件先提交的本地转移,正常路径仍可能可用;sub 先同意的转移、Stage 与 owner 文件交错及相同归属重新签发,需要本轮 NS 修复。新 SDK 不调用 decisions,旧服务保留该接口不影响它;过渡版 SDK 若强依赖已移除接口,则需升级。Rust SDK 未随本轮改造,不能套用本文“无任务、无 WAL”的实现结论。
|
|
362
362
|
|
|
363
|
-
Group/Org 名片由实体主签、当前 owner token
|
|
363
|
+
现代 Group/Org 名片由实体主签、当前 owner token 上传,主签不含 signer_aid,也不要求旧 entity_cert_fingerprint;SDK 生命周期流程先写配对 owner.md,再发布实体声明并确认共识。失败稿保留完整多签原文、固定 owner/证书代际及原 CAS,应用显式重试;当前 owner 具备本地实体密钥或可恢复的群绑定材料时,每连接首次访问对应实体检查并按需补齐共识,不在重连时遍历全部实体 PUT。格式见 [协议 §2.5](../protocol/Ownership协议定义2.1.md#25-grouporg-名片的实体主签与-owner-上传)。
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
## 1. 实现边界与角色
|
|
6
6
|
|
|
7
|
-
关系事实来自 sub 在 NS 的 `agent.md` 和 owner 在本人 Storage 的 `owner.md`,由 NS
|
|
7
|
+
关系事实来自 sub 在 NS 的 `agent.md` 和 owner 在本人 Storage 的 `owner.md`,由 NS 验收并锁定。普通 sub 自签自传,owner 自签自传;owner 登录态不能代上传普通 sub 名片,现代 Group/Org 例外边界见下文。SDK 不维护 Ownership 持久任务、WAL、审批账本或后台恢复,也不调用 decisions 接口。
|
|
8
8
|
|
|
9
9
|
未锁定时,以最后成功上传的 sub 声明为准;NS 比较 owner、sub、关系版本和有效授权等归属事实,不以消息 ID、声明 UUID 或时间判断归属冲突。拒绝只通知对方,不删除或回滚候选。锁定后新的 accept/reject 不能改变归属,必须走释放或转移;锁定前不保证多设备决定只能作出一次。
|
|
10
10
|
|
|
11
11
|
普通名片解析、外层验签与关系验证分层。正文更新保留全部关系材料的存在性、类型和值及原 CAS,不以前置共识或 owner Storage 可用为条件;关系字段变更仍执行双文件授权。
|
|
12
12
|
|
|
13
|
-
Group/Org 作为 sub
|
|
13
|
+
现代 Group/Org 作为 sub 同样支持配对 owner.md/agent.md 声明与通用共识;创建、绑定、转让和解散仍由专属生命周期驱动,普通 bind/release/transfer 关系编排抛出 `not_applicable`。NS 仅对缺少 ownership 的历史实体保留该标记,SDK 以实际返回 status 为准,不将 owner-only 视为共识。作为 owner 仍须遵守各入口的类型限制,local 编排的 owner 仅接受 human/agent。SDK 先写 owner.md,再以实体私钥主签、当前 owner token 发布 agent.md 并确认共识;不再要求旧 entity_cert_fingerprint 或主签 signer_aid,可选 owner 附签且全部验证,详见协议 §2.5。
|
|
14
14
|
|
|
15
15
|
## 2. 分层与最小依赖接口
|
|
16
16
|
|
|
@@ -57,7 +57,7 @@ YAML frontmatter+可选 Markdown+连续尾签块。首签前 payload 最多
|
|
|
57
57
|
|
|
58
58
|
| 文件 | Schema 和身份 |
|
|
59
59
|
| --- | --- |
|
|
60
|
-
| `agent.md` | 基础字段 `aid/name/type/version`;owner 与 ownership 同时出现/省略,含完整 statement
|
|
60
|
+
| `agent.md` | 基础字段 `aid/name/type/version`;owner 与 ownership 同时出现/省略,含完整 statement;普通主体由 sub 主签并本人上传,现代 Group/Org 由实体主签、当前 owner token 上传。human 不得声明 owner;历史实体格式另按兼容规则读取。 |
|
|
61
61
|
| `owner.md` | 顶层恰为 `owner_aid/sub_aid/ownership`;路径 `owner_aid:/sub_aids/{sub_aid}/owner.md`;ownership 含 statement/action,仅 transfer_owner 另含 transfer。 |
|
|
62
62
|
|
|
63
63
|
statement 恰含 `version/declaration_id/owner_aid/sub_aid/relation_version/declared_at`。action 为 `declare/release/transfer_owner`;transfer 恰含 `new_owner_aid/target_relation_version/expires_at`,绑定 `v+1`。文件角色取自资源上下文,不取自签名 TAG;不为 owner.md 伪造名片字段。
|
|
@@ -78,7 +78,7 @@ ECDSA P-256/SHA-256;签名为严格标准 Base64 的 ASN.1 DER,不能直接
|
|
|
78
78
|
| 全文 SHA-256 | 包含全部签块的完整性与提交确认。 |
|
|
79
79
|
| NS 原 ETag | 原样用于 If-Match,不能用本地摘要替代。 |
|
|
80
80
|
|
|
81
|
-
agent/owner 默认 TAG 为 `AGENTMD-V2/OWNERSHIP-V2
|
|
81
|
+
agent/owner 默认 TAG 为 `AGENTMD-V2/OWNERSHIP-V2`,兼容标签以协议为准。普通 agent.md、owner.md 与现代实体 agent.md 主块均禁止 signer_aid;附签必填,历史实体主块按原格式兼容验证。已有附签全部验,数学失败不能降级成单签;末端删签不保证可检测。
|
|
82
82
|
|
|
83
83
|
`AIDStore.sign/verify`、agent.md 和 owner.md 复用唯一通用签验 core,业务 Schema/当前授权在外层校验。TS/JS 公共签验为 `Promise<Result>`;文件输入显式 `inputType: 'file'`,document 成功后才可原地写回。参数见 [API 手册](06-API手册.md#通用-sign--verify)。
|
|
84
84
|
|
|
@@ -376,7 +376,7 @@ await daemonClient.transferLocalSubaid(subClient, nextOwnerClient);
|
|
|
376
376
|
|
|
377
377
|
- 普通名片失败稿留本地;显式重试先检查保存的条件,再回源。缺条件不能因远端同字节而清待办;正文更新保留完整关系材料。重连不自动 PUT 普通 pending。
|
|
378
378
|
- 实体 pending 保存完整多签原文、原 CAS、固定 owner 和实体证书代际,应用显式重试;转移/rekey/解散后停止旧待办。现代上传取消额外 V2 授权,旧入口按协议 §2.5 隔离兼容;专属 create/transfer checkpoint 恢复不变。
|
|
379
|
-
- fresh 实体 GET 同时发 Check、no-cache、multi-v1
|
|
379
|
+
- fresh 实体 GET 同时发 Check、no-cache、multi-v1,验证全部签块及当前实体代际;现代实体参与双文件共识,NS 对缺少 ownership 的历史实体保留 not_applicable 标记,SDK 按实际返回状态处理。独立 AIDStore 的 Python/Go 实体上传需注入权威 owner resolver,TS/JS 默认经 fresh NS/PKI 核对。
|
|
380
380
|
- 普通 agent 注册 owner 可选;初始名片不写关系,有 owner 时注册当次使用专属短连接立即发起绑定并 finally close,不等后续 connect 恢复。部分 SDK 仍保留 registration_intent 元数据用于注册信息或兼容读取,不再据此恢复 Ownership 任务;注册成功不等于关系完成。
|
|
381
381
|
- 支持原 2.1 的旧 NS,普通首次绑定、local bind 和新 owner 文件先齐的 local transfer 正常路径仍可用。完整支持双方任意到达顺序、转移候选隔离、Stage 交错重试及同事实重签,需要本轮 NS;旧 NS 在 sub 先接受 transfer 时可能报错,或因 owner SHA 基线导致已齐文件持续 pending、同事实重签被拒绝。
|
|
382
382
|
- 新 SDK 不调用 decisions;仍依赖该接口的过渡 SDK 在接口删除后会遇到 404。旧 proof 或 metadata 不当作 unbound 或当前授权,不能借升级清空锁。不能把 Rust 的旧任务恢复或 Stage 限制当成本轮四 SDK 的行为。
|
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
|
|
9
9
|
## 1. 设计边界
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
自 SDK 0.5.31 起,现代 `group/org` 与其他非 human 主体统一使用配对的 `owner.md`/`agent.md`、`ownership.statement`、关系版本及双文件共识;生命周期 owner、active 状态和当前证书仍是实体授权约束,不另建 Ownership 事实账本。绑定、释放、转移仍由专属生命周期自动编排,普通管理 Facade 在副作用前返回 `not_applicable`、`retryable=false`,不自动转调用其它方法;该限制不适用于现代声明与共识查询。实体名片含当前 owner 及配对声明,清除旧 entity_cert_fingerprint,不带 signer_aid 的实体主签由当前 owner token 上传;owner.md 由 owner 本人签署发布。历史实体格式及旧客户端上传边界见 [协议 §2.5](../protocol/Ownership协议定义2.1.md#25-grouporg-名片的实体主签与-owner-上传)。
|
|
12
12
|
|
|
13
|
-
实体 fresh GET 同时携带 X-AUN-Ownership-Check: 1、Cache-Control: no-cache 和 X-AUN-Signature-Format: multi-v1,触发 NS 绕 LRU
|
|
13
|
+
实体 fresh GET 同时携带 X-AUN-Ownership-Check: 1、Cache-Control: no-cache 和 X-AUN-Signature-Format: multi-v1,触发 NS 绕 LRU 新鲜验证。现代声明进入通用双文件共识;仅缺少 ownership 的历史实体格式保留 not_applicable 及适用的实体响应头,不能用该兼容分支否定现代实体共识。GET/HEAD 按 multi-v1 协商完整/首签表示及对应 ETag;missing 为 404,权威依赖 unavailable 不伪装缺失。verified 下载全块验证历史证书及原始字节,历史成功不代表当前权限。Client 生命周期编排和访问补齐须另核对当前 owner、active 状态及本地实体签名材料;不能把独立 AIDStore 的注入方式等同于四端 Client 均自动调用实体服务,详见协议 §2.5。
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
旧实体文件按历史读取规则保留,owner-only 不构成双文件共识,不能覆盖或降级现代关系;旧 entity_cert_fingerprint/signer_aid 按相应历史格式校验,特定旧 Group 的无指纹豁免不适用于 Org。历史 relation/evidence/checkpoint 元数据不参与当前关系判定,也不是普通名片可用性的前置条件。当前实体上传按配对声明、权威类型、生命周期、当前证书及现代 Schema 验收。
|
|
16
16
|
|
|
17
|
-
Ownership 是 agent.md 之上的关系功能,不能因新增 Ownership 2.1 导致原有 agent.md 上传、下载、历史验签、展示或通信不可用。2.1
|
|
17
|
+
Ownership 是 agent.md 之上的关系功能,不能因新增 Ownership 2.1 导致原有 agent.md 上传、下载、历史验签、展示或通信不可用。2.1 关系声明由数据库中持久化的 sub_aid `agent.md` 与 owner_aid 自有 Storage 规范路径中的 `owner.md` 共同确认,Group/Org 授权还须核对当前生命周期及实体证书;数据库事务和 CAS 只负责完整 `agent.md` 的原子更新,不引入独立的第二份 2.1 关系事实。旧 SDK owner RPC 的 Auth JSONL 与 NS `ownership_proof` 是隔离的 legacy 兼容状态,不写 2.1 双文件,不构成 2.1 授权、lock/version/consensus,也不得覆盖已存现代声明。若数据库保留 owner_aid、关系版本或锁等索引列,它们只能服务于 `agent.md` 的 CAS 和查询,不能脱离两份文件单独判定 2.1 关系。只有需要当前 owner 关系的共识、授权和关系操作才执行 2.1 新鲜检查;关系缺失、legacy、stale 或关系依赖 unavailable 时,仅这些功能降级或拒绝授权,不能把普通读取兼容当作 current/consensus,也不能清空既有保护。
|
|
18
18
|
|
|
19
19
|
后续审查和验收必须同时覆盖下面的兼容矩阵;四 SDK 与 NS 按同一边界检查,不能只验收新增关系流程:
|
|
20
20
|
|
|
@@ -105,7 +105,7 @@ NS 下列路径以 [Go 服务根目录](../../../extensions/services/nameservice
|
|
|
105
105
|
| --- | --- | --- |
|
|
106
106
|
| `internal/httpserver/agentmd.go`:`get`、`put` | 有 LRU、writeGen 和名片 CAS;没有完整的 2.1 关系验收。get 会把部分 DB 故障映射为 404。 | 引入统一关系检查入口;新鲜 GET/HEAD 绕过缓存并先确认释放;PUT 无论有无检查头都执行基于 agent.md CAS 的保护。 |
|
|
107
107
|
| 同文件:`validateAgentMDUpload`、`enforceStoredOwner` | 完整文件验签已有;锁主要依据旧名片 owner/proof。 | 拆开本身份验签和关系验收;原 owner 从持久化 agent.md 的 ownership 字段及旧名片确定,不能取待上传目标。 |
|
|
108
|
-
| 同文件:`authorizeAgentMDUploader`、`verifyOwnerAgentMDAuthorization`、`verifyOwnershipProof` | 支持旧 proof、owner 授权头和群 owner 代理分支。 | 普通 2.1
|
|
108
|
+
| 同文件:`authorizeAgentMDUploader`、`verifyOwnerAgentMDAuthorization`、`verifyOwnershipProof` | 支持旧 proof、owner 授权头和群 owner 代理分支。 | 普通 2.1 本身份上传,旧分支不得覆盖已有关系。现代 Group/Org 进入通用声明/共识及 CAS,同时校验权威类型、当前生命周期、实体主签、完整签名链和 owner token;不另建关系事实账本,不允许自声明改类型绕锁。 |
|
|
109
109
|
| `internal/httpserver/agent_md_schema.go` | `aidParseTailStrictAt`、`validateStrictAgentMDMeta`、旧 ownership 校验。 | 复用严格解析,补 TAG、statement/action、文件角色和当前证书验证。 |
|
|
110
110
|
| `internal/repository/mysql.go`:`CompareAndSwapAgentMD` | CAS 范围只有名片内容、摘要和更新时间。 | 让 ownership 字段随完整 `agent.md` 一起原子提交;不增加独立关系事实表或证据表。 |
|
|
111
111
|
| `internal/httpserver/agentmd_cache.go` | 当前名片缓存。 | 继续供普通展示;不能作为最终授权依据。 |
|
|
@@ -184,7 +184,7 @@ TS/JS 的 [cert-utils.ts](../../ts/src/cert-utils.ts)、[JS 对应文件](../../
|
|
|
184
184
|
|
|
185
185
|
owner.md 不具备名片必填的 name/type/version,不能直接复用“必须是 agent.md”校验。复用底层签名容器,在各模块内分别实现两种角色 schema;NS 不依赖 SDK 的包。
|
|
186
186
|
|
|
187
|
-
当前证书材料通过既有权威查询获取,精确核对 AID、证书 DER 指纹、实际 `active_signing`、完整证书链及签名 OCSP。OCSP 绑定本次链选定的直接 issuer,核对 CertID serial、issuer name/key hash 与 ResponderID,只接受该 issuer 亲签及同一 issuer 内嵌证书,不接受委派 responder;链获取和 OCSP 接收后用当时当前时间检查新鲜度,末尾再次核对链有效期。未知签名身份类型时省略 `key_purpose`,不得将 owner.md 的签名者一律视为普通 signing
|
|
187
|
+
当前证书材料通过既有权威查询获取,精确核对 AID、证书 DER 指纹、实际 `active_signing`、完整证书链及签名 OCSP。OCSP 绑定本次链选定的直接 issuer,核对 CertID serial、issuer name/key hash 与 ResponderID,只接受该 issuer 亲签及同一 issuer 内嵌证书,不接受委派 responder;链获取和 OCSP 接收后用当时当前时间检查新鲜度,末尾再次核对链有效期。未知签名身份类型时省略 `key_purpose`,不得将 owner.md 的签名者一律视为普通 signing 身份。现代 Group/Org 主签证书属于实体,以尾签指纹核对当前证书代际,不要求旧 frontmatter 指纹;owner 可另附签,附签同样必须验证;已知群实体证书查询使用 `group_identity`。CA `observed_at` 与 OCSP `ThisUpdate` 距当前时间不得超过 30 秒,`ProducedAt` 不得超过 90 秒,三者未来偏差均不得超过 5 秒;`NextUpdate` 严格晚于当前时间和 `ThisUpdate`。CA 的 Go OCSP 签发器按分钟截断 `ProducedAt`,因此其窗口包含取整误差,其它当前状态窗口不变。NS 在最终提交前按当时的服务端时间重新核对;材料不可确认返回 unavailable,已知坏签名、无效链或吊销返回 invalid。
|
|
188
188
|
|
|
189
189
|
### 4.2 五个内部文件方法
|
|
190
190
|
|
|
@@ -321,11 +321,11 @@ Storage 当前完整原文复核与 NS 提交之间没有跨服务一致快照
|
|
|
321
321
|
|
|
322
322
|
内部编排器与消息处理器推进同一任务;sub-first 及 transfer 的历史 ready 通知不得再次创建绑定任务,owner-first 无需 owner.ready。普通名片更新仍使用现有名片 API,但必须完整保留锁定的关系字段。
|
|
323
323
|
|
|
324
|
-
普通 `agent` 注册的 owner 可选;指定 owner 时,owner 意图先与 SDK 生成的固定 operation_id 一起持久保存;初始名片不写 owner 或旧 proof,并以条件创建提交。连接后用该 ID 进入绑定编排,响应丢失或重连都读取原任务,不另建操作、不默认批准;未指定 owner 时只初始化普通名片,不创建关系任务。NS 不可用时保留已有意图;已有关系或未知旧待上传文件不能由初始化路径覆盖。Group/Org
|
|
324
|
+
普通 `agent` 注册的 owner 可选;指定 owner 时,owner 意图先与 SDK 生成的固定 operation_id 一起持久保存;初始名片不写 owner 或旧 proof,并以条件创建提交。连接后用该 ID 进入绑定编排,响应丢失或重连都读取原任务,不另建操作、不默认批准;未指定 owner 时只初始化普通名片,不创建关系任务。NS 不可用时保留已有意图;已有关系或未知旧待上传文件不能由初始化路径覆盖。Group/Org 身份准备不生成这类通用注册意图;其创建由当前 owner 先条件发布本人签名的 owner.md,再用实体私钥签署含配对 statement 的 agent.md、以 owner token 条件上传,最后强制确认 owner 和关系版本的共识。创建/转移检查点保留可接续阶段,历史首次补齐默认 v=1,同 owner 的匹配声明复用当前版本;转移须核对旧 owner 的有效目标授权并使用 v+1,不补造条件或跨 owner/rekey 代际重签旧稿。
|
|
325
325
|
|
|
326
326
|
普通显式上传与注册初始化分别保存待办。普通名片候选在本地 schema 和外层签名验证通过后、首次远端 preflight 前,先独立保存到既有元数据的私有 `local_draft_content`,不覆盖已确认的远端 content/ETag;自有且持有本地私钥的身份默认 resolve 优先返回该稿,标记 unverified、in_sync=false、source.agent_md_fetched=false。显式 download/forceRefresh 仍读取远端权威内容并保留草稿,只有服务端确认对应候选提交成功才清稿。重连不自动重传普通失败稿,普通注册 initial 失败稿同样需要应用显式重试;即使存在普通 pending 也不隐式 PUT。Ownership 2.1 任务及注册意图的既有恢复不能替代失败稿的显式重试。取得可靠 NS 原条件后,仍在 PUT 前持久保存完整签名字节、原 If-Match/If-None-Match 及关系快照;显式重试既有 pending 时先核原条件,缺失则保留原元数据及原错误,不因远端同字节而清除。2.1 正文更新核对原 owner、完整 statement、relation_version 和 lock。已有普通 legacy owner/proof 或 2.0 关系仅允许更新正文,完整保留 owner、ownership、ownership_proof、ownership_release 的存在性、类型和值;新 metadata 和外签执行当前规则,不自动迁入 2.1。该分支持久保存原全文、摘要、原 ETag 及完整关系快照,重试核对 base/candidate/remote 和原条件;全文及提交 ETag 均对应原提交时只观察确认,否则仅按仍成立的原条件重传原 blob,不刷新 CAS、不重签、不补造上下文。其它缺原上下文的旧待办仅允许版本 0 / unlocked 的初始关系;实际关系变更由对应 Ownership 任务恢复。
|
|
327
327
|
|
|
328
|
-
Group/Org 名片失败稿及 pending
|
|
328
|
+
Group/Org 名片失败稿及 pending 保留实体命名空间中的完整签名原文、原 CAS、固定 owner 和签名证书代际,由应用显式重试;重试核对完整原件及当前 owner、状态和证书,原条件完整且同代际原文/ETag 已确认提交时只观察完成。转移、rekey 或解散后不更换身份、证书或条件重签旧稿。生命周期 create/transfer 检查点恢复与访问补齐另行保留:按当前身份、成功连接代际和单实体合并一次检查,缺本地实体材料直接停止;可用的本地共识匹配 owner 时结束,否则确认 active 生命周期 owner 后查询共识,仅在具备本人及实体私钥时补齐缺失声明。失败不在同一连接自动反复重试,真实重连后可重查;不在启动时遍历所有群重传名片。现代上传不需额外 V2 授权,历史兼容入口仍按协议 §2.5 校验。
|
|
329
329
|
|
|
330
330
|
### 7.2 转移的默认编程顺序
|
|
331
331
|
|
|
@@ -417,7 +417,7 @@ sub 收到 release 通知时,只有在持久历史中找到本人明确 accept
|
|
|
417
417
|
|
|
418
418
|
共识检查从首次 NS GET 发出前开始计算整体 30 秒窗口,覆盖首读、证书/Storage 验证和末读;材料变化或超时返回可重试 unavailable。fresh HTTP 携带 no-cache 并禁止自动跟随重定向。收到 sub.cleaned 时,按任务固定上下文新鲜核对当前 NS 完整原文、ETag 和全文摘要;字段已清空时可记录当前 unbound/0 的清理观察。通知或观察进度不能证明本任务执行提交,也不能替代首次完成 release 所需的原件及原 CAS 关联核验。
|
|
419
419
|
|
|
420
|
-
Group/Org
|
|
420
|
+
Group/Org 的普通名片失败稿只按原字节和原 CAS 显式重试;生命周期 create/transfer 的检查点恢复以及首次访问的声明补齐是独立路径,不能笼统写为实体一律不恢复或重连自动重传旧稿。补齐先预筛本地实体材料,再按当前身份/连接代际共享单实体检查;已有可用共识匹配本人时跳过,否则确认 active 生命周期 owner 后查询并补齐。缺私钥、依赖 unavailable、关系 invalid 或其他 owner 冲突均不能按无主覆盖。具体顺序、版本复用和旧代际边界见第 7.1 节及协议 §2.5。
|
|
421
421
|
|
|
422
422
|
重连恢复先读取 NS/Storage,再考虑待发消息、写入和删除。一次持久保存的 step 不能证明远端副作用已经发生,远端的新版本也不能被旧 step 覆盖。
|
|
423
423
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# AUN Protocol - SDK 文档
|
|
2
2
|
|
|
3
|
+
本目录为四 SDK **0.5.34** 的现行主文档入口;带版本号的专题及 CHANGELOG 保留其历史版本语义,不能替代当前 API 手册。
|
|
4
|
+
|
|
3
5
|
AUN(Agent Union Network)定义 Agent 之间安全通信的标准接口,基于 WebSocket + JSON-RPC 2.0,涵盖身份、认证、消息、群组、存储、流式传输和端到端加密。
|
|
4
6
|
|
|
5
7
|
---
|
|
@@ -11,8 +13,9 @@ AUN(Agent Union Network)定义 Agent 之间安全通信的标准接口,基
|
|
|
11
13
|
- **Gateway 连接**:当前各语言 SDK 稳定支持 Gateway 接入;Peer / Relay 仍处于协议定义或未实现状态。
|
|
12
14
|
- **默认 E2EE**:P2P 和 Group V2 消息默认加密;普通明文消息需要显式关闭加密。
|
|
13
15
|
- **统一 RPC / 事件 / Notify**:业务方法通过 `client.call(method, params)` 调用,事件通过 `client.on(event, handler)` 订阅;在线轻量通知通过 `client.notify()` 发送,支持同域和跨域在线 federation,详见 `Notify通知方案.md`。
|
|
16
|
+
- **事件发布订阅**:四 SDK 的 `EventService` 支持同一 AID 在同一 Bus 上同时承担 bus/pub/sub;目录、订阅和待发布队列使用 SQLite/IndexedDB 持久化,`publications` / `subscriptions` 查询当前发布汇总与有效订阅,见 [API 手册](06-API手册.md#eventservice-事件发布订阅)。
|
|
14
17
|
- **当前 access token**:自行发起要求 AID Bearer 的 HTTP 数据面请求时,每次请求前使用 Python `get_access_token()`、TypeScript / JavaScript `getAccessToken()` 或 Go `GetAccessToken()` 读取后台刷新维护的缓存;不得长期复用 `authenticate()` 首次返回的字符串。
|
|
15
|
-
- **Service Proxy**:Python
|
|
18
|
+
- **Service Proxy**:Python、TypeScript、JavaScript 和 Go 均提供 `ServiceProxyClient`;provider 先向 Gateway 注册 `proxy.*` 控制面服务列表,再在每条 proxy-server 隧道认证后注册数据面服务列表。浏览器 JavaScript 需使用可承载 Authorization Bearer 的自定义 WebSocket factory。
|
|
16
19
|
|
|
17
20
|
---
|
|
18
21
|
|
|
@@ -33,16 +36,16 @@ BOB = f"bob-{random.randint(1000,9999)}.{DOMAIN}"
|
|
|
33
36
|
|
|
34
37
|
|
|
35
38
|
async def create_client(aid: str) -> AUNClient:
|
|
36
|
-
store = AIDStore(aun_path="~/.aun/myapp", encryption_seed="")
|
|
39
|
+
store = AIDStore(aun_path="~/.aun/myapp", encryption_seed="", slot_id="main")
|
|
37
40
|
loaded = store.load(aid)
|
|
38
41
|
if not loaded["ok"]:
|
|
39
|
-
registered = await store.register(aid)
|
|
42
|
+
registered = await store.register(aid, type="human")
|
|
40
43
|
if not registered["ok"]:
|
|
41
44
|
raise RuntimeError(registered["error"]["message"])
|
|
42
45
|
loaded = store.load(aid)
|
|
43
46
|
|
|
44
47
|
client = AUNClient(loaded["data"]["aid"])
|
|
45
|
-
await client.connect({"
|
|
48
|
+
await client.connect({"auto_reconnect": True})
|
|
46
49
|
return client
|
|
47
50
|
|
|
48
51
|
|
|
@@ -109,12 +112,14 @@ Layer 1: 安全层 TLS + AUN E2EE
|
|
|
109
112
|
| [03-核心概念](03-核心概念.md) | AID、AIDStore、AUNClient、九态状态机、E2EE |
|
|
110
113
|
| [04-连接与认证](04-连接与认证.md) | 注册、加载、认证、当前 access token getter、连接、Python Push 自动登记、事件、agent.md |
|
|
111
114
|
| [05-E2EE加密通信](05-E2EE加密通信.md) | E2EE 收发、ProtectedHeaders、密钥管理 |
|
|
112
|
-
| [06-API手册](06-API手册.md) | AIDStore / AID / AUNClient / 四 SDK access token getter / Python PushFacade / ServiceProxyClient / 事件 / RPC 索引 |
|
|
115
|
+
| [06-API手册](06-API手册.md) | AIDStore / AID / AUNClient / 四 SDK access token getter / EventService / Python PushFacade / ServiceProxyClient / 事件 / RPC 索引 |
|
|
113
116
|
| [07-错误处理](07-错误处理.md) | Result、异常层级、错误码、重试策略 |
|
|
114
117
|
| [08-最佳实践](08-最佳实践.md) | 幂等连接、多 AID、资源清理、测试数据保护 |
|
|
115
118
|
| [AUN Storage架构设计](<../aun-fs/AUN Storage架构设计.md>) | Storage SDK VFS、控制面/数据面分离、服务端分层、类 Linux 权限、mount/symlink 和关键时序 |
|
|
116
119
|
| [Notify通知方案](Notify通知方案.md) | `client.notify()` 在线轻量通知、跨域 federation 和可靠消息分工 |
|
|
117
|
-
| [
|
|
120
|
+
| [AUN事件发布订阅应用集成指南](AUN事件发布订阅应用集成指南.md) | Bus / Pub / Sub 调用顺序、多角色、持久化恢复与目录查询 |
|
|
121
|
+
| [AUN事件发布订阅开发移植指南](AUN事件发布订阅开发移植指南.md) | 四 SDK 的协议、队列、授权、持久化及实现边界 |
|
|
122
|
+
| [CHANGELOG-0.5.6](CHANGELOG-0.5.6.md) | **历史 0.5.6 更新日志**:验签缓存、消息窗口、显式 change-seed 与当时的四语言能力边界 |
|
|
118
123
|
|
|
119
124
|
RPC 专项手册:
|
|
120
125
|
|