@agentunion/fastaun-browser 0.5.0 → 0.5.2

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 (140) hide show
  1. package/CHANGELOG.md +550 -464
  2. package/_packed_docs/CHANGELOG-validators.md +147 -0
  3. package/_packed_docs/CHANGELOG.md +550 -464
  4. package/_packed_docs/INDEX.md +201 -177
  5. package/_packed_docs/KITE_DOCS_GUIDE.md +38 -32
  6. package/_packed_docs/agent.md//350/277/234/347/250/213agent.md/347/274/223/345/255/230/344/270/216etag/351/200/217/344/274/240/346/226/271/346/241/210.md +169 -116
  7. package/_packed_docs/aun-perf-audit-critical-bugs.md +315 -0
  8. package/_packed_docs/cli/AUN-CLI/350/256/276/350/256/241/346/226/207/346/241/243.md +263 -260
  9. package/_packed_docs/cli/CLI/346/211/213/345/206/214.md +331 -0
  10. package/_packed_docs/protocol/00-/346/200/273/350/247/210/344/270/216/345/210/206/345/261/202.md +2 -2
  11. package/_packed_docs/protocol/00A-/350/256/276/350/256/241/345/216/237/345/210/231-/344/270/272Agent/350/200/214/347/224/237.md +1 -1
  12. 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 +39 -16
  13. package/_packed_docs/protocol/03-Gateway-/350/277/236/346/216/245/346/250/241/345/274/217.md +8 -5
  14. package/_packed_docs/protocol/06-/346/234/215/345/212/241/345/215/217/350/256/256.md +18 -19
  15. 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 +1 -1
  16. package/_packed_docs/protocol/08-AUN-E2EE-Group.md +139 -746
  17. package/_packed_docs/protocol/08-AUN-E2EE.md +12 -10
  18. package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +117 -171
  19. package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +6 -0
  20. package/_packed_docs/protocol/15-/347/246/273/347/272/277/346/216/250/351/200/201/351/200/232/347/237/245/345/215/217/350/256/256.md +1 -1
  21. package/_packed_docs/protocol/16-/347/263/273/347/273/237/347/233/256/345/275/225/344/277/235/346/212/244/346/226/271/346/241/210.md +177 -0
  22. package/_packed_docs/protocol/README.md +5 -4
  23. package/_packed_docs/protocol/aun-docs-guide.md +2 -2
  24. package/_packed_docs/protocol/index.md +12 -7
  25. package/_packed_docs/protocol//350/215/211/346/241/210-/346/213/222/347/273/235/344/277/241/345/217/267/345/215/217/350/256/256.md +1 -1
  26. package/_packed_docs/protocol//351/231/204/345/275/225A-/346/234/257/350/257/255/350/241/250.md +13 -13
  27. package/_packed_docs/protocol//351/231/204/345/275/225L-E2EE/345/256/236/347/216/260/346/214/207/345/215/227.md +9 -9
  28. package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +15 -13
  29. package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +26 -18
  30. package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +35 -284
  31. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +473 -442
  32. package/_packed_docs/sdk/07-/351/224/231/350/257/257/345/244/204/347/220/206.md +11 -7
  33. package/_packed_docs/sdk/09-collab-rpc-manual.md +581 -550
  34. package/_packed_docs/sdk/09-group-rpc-manual.md +367 -433
  35. package/_packed_docs/sdk/09-message-rpc-manual.md +50 -28
  36. package/_packed_docs/sdk/09-payload-reference.md +3 -3
  37. package/_packed_docs/sdk/09-storage-rpc-manual.md +57 -20
  38. package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +18 -17
  39. package/_packed_docs/sdk/E2EE_V2/346/266/210/346/201/257/351/200/232/344/277/241/346/227/266/345/272/217/345/233/276.md +3 -2
  40. package/_packed_docs/sdk/INDEX.md +25 -24
  41. package/_packed_docs/sdk/Notify/351/200/232/347/237/245/346/226/271/346/241/210.md +6 -2
  42. package/dist/agent-md.d.ts.map +1 -1
  43. package/dist/agent-md.js +18 -9
  44. package/dist/agent-md.js.map +1 -1
  45. package/dist/bundle.js +1661 -1180
  46. package/dist/client/delivery.d.ts +13 -2
  47. package/dist/client/delivery.d.ts.map +1 -1
  48. package/dist/client/delivery.js +251 -46
  49. package/dist/client/delivery.js.map +1 -1
  50. package/dist/client/group-state.d.ts.map +1 -1
  51. package/dist/client/group-state.js +36 -14
  52. package/dist/client/group-state.js.map +1 -1
  53. package/dist/client/lifecycle.js +2 -2
  54. package/dist/client/lifecycle.js.map +1 -1
  55. package/dist/client/rpc-pipeline.d.ts +1 -0
  56. package/dist/client/rpc-pipeline.d.ts.map +1 -1
  57. package/dist/client/rpc-pipeline.js +166 -50
  58. package/dist/client/rpc-pipeline.js.map +1 -1
  59. package/dist/client/v2-e2ee.d.ts +14 -1
  60. package/dist/client/v2-e2ee.d.ts.map +1 -1
  61. package/dist/client/v2-e2ee.js +376 -126
  62. package/dist/client/v2-e2ee.js.map +1 -1
  63. package/dist/client.d.ts +5 -4
  64. package/dist/client.d.ts.map +1 -1
  65. package/dist/client.js +187 -46
  66. package/dist/client.js.map +1 -1
  67. package/dist/collab/client.d.ts +8 -0
  68. package/dist/collab/client.d.ts.map +1 -1
  69. package/dist/collab/client.js +12 -0
  70. package/dist/collab/client.js.map +1 -1
  71. package/dist/errors.d.ts +0 -20
  72. package/dist/errors.d.ts.map +1 -1
  73. package/dist/errors.js +8 -51
  74. package/dist/errors.js.map +1 -1
  75. package/dist/facades.d.ts +9 -4
  76. package/dist/facades.d.ts.map +1 -1
  77. package/dist/facades.js +192 -31
  78. package/dist/facades.js.map +1 -1
  79. package/dist/group-fs.d.ts +17 -0
  80. package/dist/group-fs.d.ts.map +1 -1
  81. package/dist/group-fs.js +54 -11
  82. package/dist/group-fs.js.map +1 -1
  83. package/dist/group-id.d.ts +9 -12
  84. package/dist/group-id.d.ts.map +1 -1
  85. package/dist/group-id.js +41 -63
  86. package/dist/group-id.js.map +1 -1
  87. package/dist/index.d.ts +4 -2
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +4 -1
  90. package/dist/index.js.map +1 -1
  91. package/dist/keystore/index.d.ts +2 -54
  92. package/dist/keystore/index.d.ts.map +1 -1
  93. package/dist/keystore/indexeddb-identity-store.d.ts +3 -0
  94. package/dist/keystore/indexeddb-identity-store.d.ts.map +1 -1
  95. package/dist/keystore/indexeddb-identity-store.js +65 -0
  96. package/dist/keystore/indexeddb-identity-store.js.map +1 -1
  97. package/dist/keystore/indexeddb-shared.d.ts +3 -17
  98. package/dist/keystore/indexeddb-shared.d.ts.map +1 -1
  99. package/dist/keystore/indexeddb-shared.js +4 -47
  100. package/dist/keystore/indexeddb-shared.js.map +1 -1
  101. package/dist/keystore/indexeddb-token-store.d.ts +1 -64
  102. package/dist/keystore/indexeddb-token-store.d.ts.map +1 -1
  103. package/dist/keystore/indexeddb-token-store.js +45 -774
  104. package/dist/keystore/indexeddb-token-store.js.map +1 -1
  105. package/dist/logger.d.ts +2 -0
  106. package/dist/logger.d.ts.map +1 -1
  107. package/dist/logger.js +4 -0
  108. package/dist/logger.js.map +1 -1
  109. package/dist/storage/lowlevel.d.ts +9 -1
  110. package/dist/storage/lowlevel.d.ts.map +1 -1
  111. package/dist/storage/lowlevel.js +12 -1
  112. package/dist/storage/lowlevel.js.map +1 -1
  113. package/dist/storage/vfs.d.ts +22 -0
  114. package/dist/storage/vfs.d.ts.map +1 -1
  115. package/dist/storage/vfs.js +54 -0
  116. package/dist/storage/vfs.js.map +1 -1
  117. package/dist/tools/cross-sdk-agent.js +336 -49
  118. package/dist/tools/cross-sdk-agent.js.map +1 -1
  119. package/dist/transport.d.ts +2 -0
  120. package/dist/transport.d.ts.map +1 -1
  121. package/dist/transport.js +96 -3
  122. package/dist/transport.js.map +1 -1
  123. package/dist/types.d.ts +39 -56
  124. package/dist/types.d.ts.map +1 -1
  125. package/dist/v2/session/session.d.ts +2 -0
  126. package/dist/v2/session/session.d.ts.map +1 -1
  127. package/dist/v2/session/session.js +58 -22
  128. package/dist/v2/session/session.js.map +1 -1
  129. package/dist/v2/state/commitment.d.ts +1 -1
  130. package/dist/v2/state/commitment.d.ts.map +1 -1
  131. package/dist/v2/state/commitment.js +5 -3
  132. package/dist/v2/state/commitment.js.map +1 -1
  133. package/dist/validators.d.ts +35 -0
  134. package/dist/validators.d.ts.map +1 -0
  135. package/dist/validators.js +127 -0
  136. package/dist/validators.js.map +1 -0
  137. package/dist/version.d.ts +1 -1
  138. package/dist/version.js +1 -1
  139. package/package.json +1 -1
  140. package/_packed_docs/collab-gateway-boundary-test-report.md +0 -164
@@ -0,0 +1,331 @@
1
+ # AUN CLI 手册
2
+
3
+ ## 位置与入口
4
+
5
+ AUN CLI 是 Python SDK 的命令行工具,源码位于:
6
+
7
+ ```text
8
+ D:\modelunion\kite\aun-sdk-core\python\src\aun_cli
9
+ ```
10
+
11
+ 仓库内相对路径为 `python/src/aun_cli`。安装入口在 `python/pyproject.toml`:
12
+
13
+ ```toml
14
+ [project.scripts]
15
+ aun = "aun_cli.main:app"
16
+ ```
17
+
18
+ 开发环境可直接运行:
19
+
20
+ ```powershell
21
+ cd D:\modelunion\kite\aun-sdk-core\python
22
+ pip install -e .
23
+ aun --help
24
+ ```
25
+
26
+ 也可以不安装包,直接指定 `PYTHONPATH`:
27
+
28
+ ```powershell
29
+ $env:PYTHONPATH="D:\modelunion\kite\aun-sdk-core\python\src"
30
+ python -m aun_cli --help
31
+ ```
32
+
33
+ ## 全局用法
34
+
35
+ ```text
36
+ aun [全局选项] <command> [参数]
37
+ ```
38
+
39
+ 全局选项:
40
+
41
+ | 选项 | 说明 |
42
+ |------|------|
43
+ | `--profile, -p` | 仅本次命令使用指定 profile |
44
+ | `--json` | 输出 JSON,适合脚本 |
45
+ | `--debug` | 启用 debug 日志 |
46
+ | `--no-color` | 禁用彩色输出 |
47
+ | `--timeout, -t` | 操作超时秒数,默认 30 |
48
+ | `--version, -V` | 显示版本 |
49
+ | `--install-completion` | 安装当前 shell 的补全脚本,Typer 自动提供 |
50
+ | `--show-completion` | 输出补全脚本,Typer 自动提供 |
51
+ | `--help` | 显示帮助 |
52
+
53
+ CLI 不提供 `--gateway` 选项;Gateway 发现由 SDK 处理。
54
+
55
+ 非 JSON 模式会先打印当前 `profile`、`aid`、`active_group` 和 `trace`,命令结束时可能输出 RPC summary。脚本里建议使用 `--json`。
56
+
57
+ ## 配置与 Profile
58
+
59
+ 默认配置文件为 `~/.aun/cli.toml`。常用命令:
60
+
61
+ ```powershell
62
+ aun profile create dev --aid alice.agentid.pub
63
+ aun profile switch dev
64
+ aun profile current
65
+ aun profile list
66
+
67
+ aun config set timeout 60
68
+ aun config get timeout
69
+ aun config list
70
+ ```
71
+
72
+ `profile` 也挂在 `config` 下,`aun config profile list/current/create/switch` 与根级 `aun profile ...` 使用同一套实现。
73
+
74
+ 当前 profile 的核心字段:
75
+
76
+ | 字段 | 说明 |
77
+ |------|------|
78
+ | `aid` | 默认操作身份 |
79
+ | `aun_path` | 本地身份、密钥、日志等数据目录 |
80
+ | `active_group` | 默认群组;值使用目标态 `group_aid`,省略 `group_id` 兼容参数时使用 |
81
+ | `debug` / `trace` / `timeout` | 调试、trace 和超时配置 |
82
+
83
+ 有效 profile 选择顺序:
84
+
85
+ ```text
86
+ --profile > AUN_PROFILE > 当前终端标签页状态 > default.profile
87
+ ```
88
+
89
+ ## 身份命令
90
+
91
+ | 命令 | 用法 |
92
+ |------|------|
93
+ | `aun register <aid>` | 注册新 AID,并写入当前 profile |
94
+ | `aun login [aid]` | 加载本地身份、认证并连接一次 |
95
+ | `aun whoami` | 查看当前 profile / AID / 数据目录 |
96
+ | `aun identity list` | 列出本地身份 |
97
+ | `aun identity check <aid>` | 检查本地身份材料和远端注册状态 |
98
+
99
+ 示例:
100
+
101
+ ```powershell
102
+ aun register alice.agentid.pub
103
+ aun login alice.agentid.pub
104
+ aun whoami
105
+ aun identity check alice.agentid.pub
106
+ ```
107
+
108
+ ## P2P 消息命令
109
+
110
+ | 命令 | 用法 |
111
+ |------|------|
112
+ | `aun send <target-aid> <message>` | 发送 P2P 消息,默认加密 |
113
+ | `aun send <target-aid> -` | 从 stdin 读取消息 |
114
+ | `aun pull [--from aid] [--limit N] [--after-seq N]` | 拉取离线消息 |
115
+ | `aun ack <sender-aid> --seq N` | 确认消息 seq |
116
+ | `aun listen [--from aid] [--group group_id]` | 实时监听 P2P 和群消息;`group_id` 是兼容参数名,值使用 `group_aid` |
117
+
118
+ 示例:
119
+
120
+ ```powershell
121
+ aun send bob.agentid.pub "hello"
122
+ Get-Content .\msg.txt | aun send bob.agentid.pub -
123
+ aun pull --limit 20
124
+ aun listen --from bob.agentid.pub
125
+ ```
126
+
127
+ ## 群组命令
128
+
129
+ | 命令 | 用法 |
130
+ |------|------|
131
+ | `aun group create <name> [--members a,b] [--group-name name]` | 创建群;成功后自动设为 active group |
132
+ | `aun group use <group-id>` | 设置当前 active group |
133
+ | `aun group current` | 查看当前 active group |
134
+ | `aun group send [group-id] <message>` | 发送群消息;省略 group-id 时使用 active group |
135
+ | `aun group list` | 列出已加入群 |
136
+ | `aun group info [group-id]` | 查看群详情 |
137
+ | `aun group members [group-id]` | 查看成员 |
138
+ | `aun group invite [group-id] <aid...>` | 邀请成员 |
139
+ | `aun group add-member [group-id] <aid> [--role member|admin]` | 直接添加成员 |
140
+ | `aun group kick [group-id] <aid>` | 移除成员 |
141
+ | `aun group leave [group-id]` | 退出群 |
142
+ | `aun group dissolve [group-id]` | 解散群 |
143
+ | `aun group bind [group-id] [--group-name name]` | 为匿名群补齐 group_aid;`bind-aid` 是公开别名 |
144
+ | `aun group transfer [group-id] <new-owner>` | 转移群主 |
145
+ | `aun group complete-transfer [group-id]` | 完成转让后的 group.fs rekey |
146
+
147
+ `aun group add_member` 是 `aun group add-member` 的公开兼容别名。
148
+
149
+ 示例:
150
+
151
+ ```powershell
152
+ aun group create "项目讨论组" --members bob.agentid.pub,carol.agentid.pub
153
+ aun group current
154
+ aun group send "大家好"
155
+ aun group members
156
+ aun group add-member dave.agentid.pub --role member
157
+ ```
158
+
159
+ ## 群文件系统命令
160
+
161
+ `aun group fs` 对应 `group.fs.*` 和 SDK `client.group.fs`。裸路径使用当前 active group;完整 group path 也可直接传入。
162
+
163
+ | 命令 | 用法 |
164
+ |------|------|
165
+ | `aun group fs ls [path] [-l]` | 列出目录 |
166
+ | `aun group fs find [path] [--name "*.md"] [--type f]` | 查找节点 |
167
+ | `aun group fs stat <path>` | 查看节点 |
168
+ | `aun group fs lstat <path>` | 查看链接本身 |
169
+ | `aun group fs mkdir <path> [-p]` | 创建目录 |
170
+ | `aun group fs rm <path> [-r] [--force]` | 删除节点 |
171
+ | `aun group fs cp <src> <dst> [-r] [--force]` | 上传、下载或远程复制 |
172
+ | `aun group fs mv <src> <dst> [--force]` | 远程移动 |
173
+ | `aun group fs df [path]` | 查看用量 |
174
+ | `aun group fs setfacl <path> -m role:admin:<perms>` | 群主授予群自有区 admin 角色 ACL |
175
+ | `aun group fs setfacl <path> -x role:admin` | 群主撤销群自有区 admin 角色 ACL |
176
+ | `aun group fs getfacl <path>` | 查看群自有区角色 ACL |
177
+ | `aun group fs mount <path> [--readonly/--readwrite]` | 挂载成员数据区 |
178
+ | `aun group fs umount <path>` | 卸载成员数据区 |
179
+
180
+ 示例:
181
+
182
+ ```powershell
183
+ aun group fs mkdir /docs -p
184
+ aun group fs cp .\README.md /docs/README.md
185
+ aun group fs ls /docs -l
186
+ aun group fs setfacl /docs -m role:admin:rwx
187
+ aun group fs getfacl /docs
188
+ aun group fs cp /docs/README.md .\downloaded.md
189
+ ```
190
+
191
+ 群自有区写入需要使用当前 `group_identity` 对应的 `group_aid` 身份签名时,可通过 `--as <group-aid>` 指定操作者。`setfacl/getfacl` 只允许当前 group owner 调用;当前只支持 `role:admin` 角色 ACL,权限位对外显示为 POSIX 视图 `rwx`。
192
+
193
+ ## Storage VFS 命令
194
+
195
+ `aun fs` 是普通 Storage VFS 入口,路径格式为 `<AID>:/path`。裸路径自动使用当前 profile AID。
196
+
197
+ | 命令 | 用法 |
198
+ |------|------|
199
+ | `aun fs ls <path> [-l]` | 列目录 |
200
+ | `aun fs stat <path> [-L]` | 查看节点,`-L` 跟随链接 |
201
+ | `aun fs cat <path>` | 输出文件内容 |
202
+ | `aun fs cp <src> <dst>` | 本地/远程上传下载或远程复制 |
203
+ | `aun fs mv <src> <dst>` | 同 AID 内原子移动 |
204
+ | `aun fs rm <path> [-r]` | 删除 |
205
+ | `aun fs ln -s <target> <link-path>` | 创建软链 |
206
+ | `aun fs mkdir <path> [-p]` | 创建目录 |
207
+ | `aun fs touch <path> [-p] [--no-create] [--mtime TS]` | 创建空文件或更新时间戳 |
208
+ | `aun fs df <aid:>` | 查看用量 |
209
+ | `aun fs quota [aid:]` | 查看配额 |
210
+ | `aun fs du <path> [-h] [--max-depth N]` | 汇总路径占用 |
211
+ | `aun fs find <path> [--name PATTERN] [--type f|d|l]` | 查找 |
212
+ | `aun fs chmod +r <path>` / `aun fs chmod o-r <path>` | 设置 public/private |
213
+ | `aun fs setfacl <path> -m aid:<AID>:<perms>` / `-x aid:<AID>` | 设置或移除 ACL |
214
+ | `aun fs getfacl <path>` | 查看 ACL |
215
+ | `aun fs mount/approve/reject/umount ...` | 挂载生命周期 |
216
+ | `aun fs token issue/revoke/ls ...` | 访问 token 管理 |
217
+
218
+ 示例:
219
+
220
+ ```powershell
221
+ aun fs mkdir alice.agentid.pub:/docs -p
222
+ aun fs touch alice.agentid.pub:/docs/empty.txt --mtime 1700000000
223
+ aun fs cp .\a.txt alice.agentid.pub:/docs/a.txt
224
+ aun fs cat alice.agentid.pub:/docs/a.txt
225
+ aun fs token issue alice.agentid.pub:/docs/a.txt
226
+ ```
227
+
228
+ ## 对象存储兼容命令
229
+
230
+ `aun storage` 是对象级快捷入口,适合低层调试和兼容旧用法:
231
+
232
+ ```powershell
233
+ aun storage ls docs/
234
+ aun storage info docs/a.txt
235
+ aun storage upload .\a.txt --name docs/a.txt --force
236
+ aun storage download docs/a.txt -o .\a.txt --force
237
+ aun storage delete docs/a.txt
238
+ ```
239
+
240
+ 新应用优先使用 `aun fs`。
241
+
242
+ ## Collab 命令
243
+
244
+ `aun collab` 操作版本化协作目录:
245
+
246
+ | 命令 | 用法 |
247
+ |------|------|
248
+ | `aun collab ls-files <collab-root>` | 列出文档 |
249
+ | `aun collab create <root> <doc> <source>` | 创建文档 |
250
+ | `aun collab show <root> <doc> [--rev N] [-o file]` | 查看版本 |
251
+ | `aun collab commit <root> <doc> <source> --onto N` | 提交版本 |
252
+ | `aun collab merge <root> <doc> <source> --onto N` | 三方合并 |
253
+ | `aun collab log <root> <doc>` | 历史 |
254
+ | `aun collab diff <root> <doc> --from A --to B` | 差异 |
255
+ | `aun collab revert <root> <doc> --rev N` | 回退 |
256
+ | `aun collab clone <src> <dest> [--reroot]` | 克隆 |
257
+ | `aun collab prune/gc/reflog ...` | 清理和审计 |
258
+ | `aun collab ls-remote <group-aid>` | 列群内协作目录 |
259
+ | `aun collab unregister <group-aid> <root>` | 取消群注册 |
260
+ | `aun collab tag create/list/show/diff/restore/rm/prune ...` | 目录级标签 |
261
+
262
+ 示例:
263
+
264
+ ```powershell
265
+ aun collab create alice.agentid.pub:/repo notes.md .\notes.md
266
+ aun collab show alice.agentid.pub:/repo notes.md -o .\notes.md
267
+ aun collab commit alice.agentid.pub:/repo notes.md .\notes.md --onto 1 --message "update"
268
+ ```
269
+
270
+ ## agent.md、密钥、诊断和压测
271
+
272
+ agent.md:
273
+
274
+ ```powershell
275
+ aun agentmd upload
276
+ aun agentmd download bob.agentid.pub
277
+ aun agentmd check bob.agentid.pub --max-unsynced-days 1
278
+ ```
279
+
280
+ `upload_agent_md`、`download_agent_md`、`check_agent_md` 是 `upload`、`download`、`check` 的公开兼容别名。
281
+
282
+ 密钥:
283
+
284
+ ```powershell
285
+ aun keys list
286
+ aun keys rotate --type spk
287
+ aun keys change-seed --old-seed .seed --new-seed "new-seed"
288
+ ```
289
+
290
+ 诊断:
291
+
292
+ ```powershell
293
+ aun status
294
+ aun ping bob.agentid.pub --count 3
295
+ aun doctor
296
+ aun logs --tail 100
297
+ aun logs --follow
298
+ ```
299
+
300
+ 压测:
301
+
302
+ ```powershell
303
+ aun bench send bob.agentid.pub --count 100 --concurrency 4
304
+ aun bench group-send 10042.agentid.pub --count 100 --concurrency 4
305
+ aun bench group send --count 100
306
+ ```
307
+
308
+ `aun bench group_send` 是 `aun bench group-send` 的公开兼容别名。
309
+
310
+ ## 退出码
311
+
312
+ | 退出码 | 含义 |
313
+ |--------|------|
314
+ | 0 | 成功 |
315
+ | 1 | 通用错误 |
316
+ | 2 | 参数错误 |
317
+ | 3 | 认证失败 |
318
+ | 4 | 连接失败 |
319
+ | 5 | 超时 |
320
+ | 6 | 权限不足 |
321
+ | 7 | 目标不存在 |
322
+
323
+ ## 相关实现文件
324
+
325
+ | 文件 | 说明 |
326
+ |------|------|
327
+ | `python/src/aun_cli/main.py` | 根应用和命令注册 |
328
+ | `python/src/aun_cli/config.py` | CLI 配置、profile、标签页状态 |
329
+ | `python/src/aun_cli/adapter.py` | SDK 会话桥接、错误映射、RPC summary |
330
+ | `python/src/aun_cli/output.py` | 输出格式 |
331
+ | `python/src/aun_cli/commands/*.py` | 各命令组实现 |
@@ -17,7 +17,7 @@
17
17
  4. **`relay.*` 是中继传输子协议**:通过 Relay 节点转发消息,认证仍由 `peer.*` 完成
18
18
  5. **`auth.connect` 是 Gateway 模式会话初始化入口**,用于绑定认证凭证、协议版本、设备上下文和连接能力。Peer/Relay 模式走各自子协议流程
19
19
  6. **业务层方法拓扑无关**:`message.*`、`meta.*` 等业务方法在三种模式下接口一致,应用层无需感知底层连接方式
20
- 7. **AUN-E2EE 是独立安全层**,可叠加于 gateway / peer / relay 任意模式之上,详见 [08-AUN-E2EE.md](08-AUN-E2EE.md)
20
+ 7. **AUN-E2EE 是独立安全层**,可叠加于 gateway / peer / relay 任意模式之上;当前主路径见 [E2EE_V2消息通信时序图](../sdk/E2EE_V2消息通信时序图.md) 和 [08-AUN-E2EE-Group.md](08-AUN-E2EE-Group.md),旧 P2P 信封见 [08-AUN-E2EE.md](08-AUN-E2EE.md)
21
21
  8. **自主模式是 AUN 的原生语义**:`message.*` / `group.*` 等消息协议的设计前提是「接收方对收到的消息**没有响应义务**」。Agent 自主决定是否、何时、如何回应。响应模式(收到必回)**仅作为对照概念存在**,用于凸显自主模式与传统 RPC / chatbot 的差异,**不是 AUN 的实现模式**。详见 [13-Agent行为规范.md](13-Agent行为规范.md)
22
22
 
23
23
  ### 0.3 协议分层
@@ -181,7 +181,7 @@ AUN 采用标准 X.509 v3 证书体系和 ECDSA 算法,通过**四级证书链
181
181
  | [05-Relay-子协议.md](05-Relay-子协议.md) | relay.* 中继注册转发、透明封装、职责边界 |
182
182
  | [06-服务协议.md](06-服务协议.md) | 业务层方法:message/meta/search/task + 跨域消息路由 |
183
183
  | [07-错误码与状态机.md](07-错误码与状态机.md) | 错误码分层、各模式状态机、重试分类 |
184
- | [08-AUN-E2EE.md](08-AUN-E2EE.md) | 端到端加密安全层(横跨三种连接模式) |
184
+ | [08-AUN-E2EE.md](08-AUN-E2EE.md) | Legacy P2P E2EE 信封说明;当前默认主路径见 SDK V2 多设备 wrap 文档 |
185
185
  | [09-安全考虑.md](09-安全考虑.md) | 威胁模型、防护措施、责任边界 |
186
186
  | [13-Agent行为规范.md](13-Agent行为规范.md) | Agent 自主模式行为规范、收发方义务、客户端 UI 建议 |
187
187
 
@@ -167,7 +167,7 @@ AUN **不**负责:
167
167
  | `agent.md/SCHEMA.md`(type 枚举含 human) | 原则二 |
168
168
  | `13-Agent行为规范.md`(自主模式原生) | 原则三 |
169
169
  | `06-服务协议.md` 中的 `message.*`(无响应义务) | 原则三 |
170
- | `08-AUN-E2EE.md`(端到端加密,平台不可见内容) | 原则四(反平台管控) |
170
+ | `E2EE_V2消息通信时序图.md` / `08-AUN-E2EE-Group.md`(端到端加密,平台不可见内容) | 原则四(反平台管控) |
171
171
  | 三种连接模式(gateway/peer/relay 平级) | 原则四(不强制中心化路径) |
172
172
 
173
173
  **协议体系是自洽的**——每一条设计都能追溯到这四项原则。
@@ -269,25 +269,48 @@ signature = ECDSA_sign(private_key, SHA256(message))
269
269
  {
270
270
  "jsonrpc": "2.0",
271
271
  "id": 4,
272
- "result": {
273
- "success": true,
274
- "access_token": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9...",
275
- "refresh_token": "new_refresh_token...",
276
- "expires_in": 3600
277
- }
278
- }
279
- ```
272
+ "result": {
273
+ "success": true,
274
+ "access_token": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9...",
275
+ "refresh_token": "new_refresh_token...",
276
+ "expires_in": 3600,
277
+ "aid": "alice.agentid.pub",
278
+ "refresh_count": 12,
279
+ "relogin_required": false,
280
+ "retryable": false,
281
+ "diagnostic": {
282
+ "aid": "alice.agentid.pub",
283
+ "refresh_count": 12
284
+ }
285
+ }
286
+ }
287
+ ```
280
288
 
281
289
  **说明**:
282
290
  - 调用时提交当前持有的 `refresh_token`
283
- - 服务端验证后吊销旧 `refresh_token`,签发新的 `access_token` 和 `refresh_token`
284
- - 旧 access_token 在其过期时间前仍然有效(JWT 标准行为),但客户端应立即切换到新 token
285
- - 建议在 access_token 过期前 60 秒刷新
286
-
287
- **刷新限制**:
288
- - 刷新链总时长不超过 30 天,或最多刷新 720 次
289
- - 达到限制后返回错误,客户端必须重新执行完整的两阶段认证
290
- - 具体限制值由服务端实现决定
291
+ - 服务端验证后吊销旧 `refresh_token`,签发新的 `access_token` 和 `refresh_token`
292
+ - 旧 access_token 在其过期时间前仍然有效(JWT 标准行为),但客户端应立即切换到新 token
293
+ - 建议在 access_token 过期前 60 秒刷新
294
+ - 响应包含结构化状态字段:`relogin_required=true` 表示客户端必须放弃本地 token 并重新登录;`retryable=true` 表示可退避重试;`diagnostic` 只包含脱敏诊断字段
295
+
296
+ **失败响应示例**:
297
+
298
+ ```json
299
+ {
300
+ "success": false,
301
+ "error": "invalid_or_expired_refresh_token",
302
+ "relogin_required": true,
303
+ "retryable": false,
304
+ "diagnostic": {
305
+ "refresh_token_hash_prefix": "sha256:abcd..."
306
+ }
307
+ }
308
+ ```
309
+
310
+ **刷新限制**:
311
+ - 刷新链总时长不超过 30 天,或最多刷新 720 次
312
+ - 达到限制后返回 `relogin_required=true`,客户端必须重新执行完整的两阶段认证
313
+ - 具体限制值由服务端实现决定
291
314
 
292
315
  ## 1.6 证书生命周期方法
293
316
 
@@ -64,7 +64,7 @@ WebSocket 连接建立
64
64
  ← challenge(服务端推送 nonce)
65
65
  → auth.aid_login1 (可选,已有 token 时跳过)
66
66
  → auth.aid_login2 (可选)
67
- → auth.connect(nonce, auth, protocol, device, client, delivery_mode, capabilities)
67
+ → auth.connect(nonce, auth, protocol, device, client, delivery_mode, options, extra_info, capabilities)
68
68
  ← {status: "ok", protocol, identity, ...}
69
69
  → READY,进入 Gateway 业务态
70
70
  ```
@@ -93,10 +93,13 @@ WebSocket 连接建立
93
93
  | device.id | string | 推荐 | 设备唯一标识。SDK 默认从 `~/.aun/.device_id` 稳定读取 |
94
94
  | device.type | string | 推荐 | 设备类型(desktop/mobile/browser) |
95
95
  | client.slot_id | string | 否 | 同一 `device.id` 下的实例槽位。仅在 `device.id` 存在时可用 |
96
- | delivery_mode.mode | string | 否 | 连接级投递模式:`fanout` 或 `queue` |
97
- | delivery_mode.routing | string | 否 | 仅 `queue` 时有效:`round_robin` 或 `sender_affinity` |
98
- | delivery_mode.affinity_ttl_ms | integer | 否 | 仅 `queue + sender_affinity` 时有效,表示发送者粘性保持时长 |
99
- | capabilities | object | 否 | 客户端能力声明 |
96
+ | delivery_mode.mode | string | 否 | 连接级投递模式:`fanout` 或 `queue` |
97
+ | delivery_mode.routing | string | 否 | 仅 `queue` 时有效:`round_robin` 或 `sender_affinity` |
98
+ | delivery_mode.affinity_ttl_ms | integer | 否 | 仅 `queue + sender_affinity` 时有效,表示发送者粘性保持时长 |
99
+ | options.kind | string | 否 | 连接类型:`long`(默认)或 `short` |
100
+ | options.short_ttl_ms | integer | 否 | 短连接服务端兜底超时,仅 `kind="short"` 时有效 |
101
+ | extra_info | object | 否 | 应用层自定义连接信息;SDK 会过滤下划线开头的内部键 |
102
+ | capabilities | object | 否 | 客户端能力声明 |
100
103
  | client | object | 否 | 客户端信息(名称、版本等) |
101
104
 
102
105
  **当前实现补充**:
@@ -16,7 +16,7 @@
16
16
  |---------|------|------|---------|---------|
17
17
  | `auth.*` | 核心 | AID 注册、认证、令牌管理 | auth 服务 | WebSocket |
18
18
  | `ca.*` | 核心 | 证书签发、续期、吊销 | ca 服务 | WebSocket / HTTP |
19
- | `message.*` | 核心 | 点对点消息路由、E2EE prekey 管理 | message 服务 | WebSocket |
19
+ | `message.*` | 核心 | 点对点消息路由、E2EE V2 设备密钥/bootstrap | message 服务 | WebSocket |
20
20
  | `meta.*` | 核心 | 健康检查、状态查询、受信根证书 | meta 服务 | WebSocket |
21
21
  | `storage.*` | 扩展 | 对象存储、大文件上传下载(详见 [11-Storage-子协议.md](11-Storage-子协议.md)) | storage 服务 | WebSocket + HTTP |
22
22
  | `group.*` | 扩展 | 群组管理、群消息、资源共享(详见 [10-Group-子协议.md](10-Group-子协议.md)) | group 服务 | WebSocket |
@@ -290,7 +290,7 @@ proxy-server 处理 `https://proxy.{issuer}/{user_name}/{svc_name}/...` 或等
290
290
  |------|:----:|------|
291
291
  | `to` | ✅ | 接收者 AID |
292
292
  | `payload` | ✅ | 消息载荷,对协议层透明,由应用层定义 |
293
- | `type` | ❌ | 信封/封装类型,普通业务消息无需填写;SDK 加密发送时自动使用 `e2ee.encrypted` |
293
+ | `type` | ❌ | 信封/封装类型,普通业务消息无需填写;SDK V2 加密发送时自动使用 `e2ee.p2p_encrypted` |
294
294
  | `encrypted` | ❌ | E2EE 标记(默认 `false`) |
295
295
  | `message_id` | ❌ | 幂等键(客户端提供或服务端生成 UUID) |
296
296
  | `timestamp` | ❌ | 客户端时间戳(毫秒),服务端忽略此字段,始终使用服务端时间 |
@@ -370,7 +370,7 @@ proxy-server 处理 `https://proxy.{issuer}/{user_name}/{svc_name}/...` 或等
370
370
  "method": "message.pull",
371
371
  "params": {
372
372
  "after_seq": 0,
373
- "limit": 100,
373
+ "limit": 50,
374
374
  "device_id": "device-001",
375
375
  "slot_id": "slot-a"
376
376
  }
@@ -382,10 +382,9 @@ proxy-server 处理 `https://proxy.{issuer}/{user_name}/{svc_name}/...` 或等
382
382
  | 参数 | 必需 | 说明 |
383
383
  |------|:----:|------|
384
384
  | `after_seq` | ❌ | 起始序列号(默认 0),返回 `seq > after_seq` 的消息 |
385
- | `limit` | ❌ | 单次返回上限(默认 100,最大 200) |
386
- | `device_id` | ❌ | 多实例消费上下文中的设备标识;缺省时使用连接认证上下文 |
387
- | `slot_id` | ❌ | 同一设备下的消费槽位;空字符串表示设备单实例模式 |
388
- | `limit` | ❌ | 返回条数(默认 100,最大 200) |
385
+ | `limit` | ❌ | 单次返回上限(默认 50,最大 50;`pull_max_limit` 配置只能进一步收紧) |
386
+ | `device_id` | ❌ | 多实例消费上下文中的设备标识;缺省时使用连接认证上下文 |
387
+ | `slot_id` | ❌ | 同一设备下的消费槽位;空字符串表示设备单实例模式 |
389
388
 
390
389
  **响应**:
391
390
  ```json
@@ -1289,25 +1288,25 @@ event/task.delegated # 已创建子任务
1289
1288
 
1290
1289
  ### 6.7 端到端加密(E2EE)摘要
1291
1290
 
1292
- > 规范性定义见 [08-AUN-E2EE.md](08-AUN-E2EE.md)。本节仅保留摘要。
1291
+ > 当前 V2 主路径见 [E2EE_V2消息通信时序图](../sdk/E2EE_V2消息通信时序图.md)、[05-E2EE加密通信](../sdk/05-E2EE加密通信.md) 和 [08-AUN-E2EE-Group.md](08-AUN-E2EE-Group.md)。[08-AUN-E2EE.md](08-AUN-E2EE.md) 仅保留 legacy P2P 信封说明。本节仅保留摘要。
1293
1292
 
1294
1293
  **核心原则**:
1295
1294
 
1296
1295
  - E2EE 加解密**完全由客户端实现**,无需在线协商
1297
- - 服务端只做消息中转和 prekey 存储,对加密内容完全透明
1298
- - 加密消息通过 `message.send` `encrypted: true` 标志标识
1299
- - 两级降级:prekey_ecdh_v2(优先,四路 ECDH)→ long_term_key(降级)
1300
-
1301
- **服务端兼容性要求**:
1302
-
1303
- - 接受并转发 `encrypted: true` 的消息
1304
- - 在离线队列和历史消息中存储密文 payload
1305
- - 不对密文 payload 施加额外的语义解析要求
1306
- - 提供 `message.e2ee.put_prekey` / `message.e2ee.get_prekey` RPC
1296
+ - 服务端只做认证、路由、设备密钥/群状态查询、密文存储和事件通知,对明文内容完全透明
1297
+ - P2P 加密消息通过 `message.send` 承载 V2 `e2ee.p2p_encrypted` envelope;群加密消息通过 `group.v2.send` 承载 V2 `e2ee.group_encrypted` envelope
1298
+ - 当前主路径为 V2 多设备 wrap:每条消息一把 `master_key`,按 recipient 设备分别生成 `3DH` / `1DH` wrap,并由接收端验证 `sender_signature`、AAD 和 recipient proof / digest
1299
+
1300
+ **服务端兼容性要求**:
1301
+
1302
+ - 接受并转发 V2 E2EE envelope;兼容旧 `encrypted: true` 标志
1303
+ - 在离线队列和历史消息中存储密文 payload
1304
+ - 不对密文 payload 施加额外的语义解析要求
1305
+ - 提供 `message.v2.put_peer_pk`、`message.v2.bootstrap`、`group.v2.put_group_pk`、`group.v2.bootstrap` 等 V2 设备密钥和 bootstrap RPC
1307
1306
 
1308
1307
  **互操作要求**:
1309
1308
 
1310
- 跨语言、跨平台 SDK 的互操作必须以 [08-AUN-E2EE.md](08-AUN-E2EE.md) 中定义的算法套件、密文 payload 格式、AAD 字段、重放保护规则为准。
1309
+ 跨语言、跨平台 SDK 的当前互操作以 E2EE V2 多设备 wrap 为准:P2P 参见 SDK V2 时序和各语言 `v2/e2ee` 实现,群组参见 [08-AUN-E2EE-Group.md](08-AUN-E2EE-Group.md)。旧 `e2ee.encrypted` 信封互操作才查 [08-AUN-E2EE.md](08-AUN-E2EE.md)。
1311
1310
 
1312
1311
  **错误码**:
1313
1312
 
@@ -102,7 +102,7 @@
102
102
 
103
103
  | 错误码 | 说明 | 客户端处理 |
104
104
  |--------|------|-----------|
105
- | -33001 | Group not found | 检查 group_id |
105
+ | -33001 | Group not found | 检查规范化后的 `group_aid`(`group_id` 为兼容参数名) |
106
106
  | -33002 | Group state invalid(群状态不允许该操作) | 检查群状态 |
107
107
  | -33003 | Group suspended | 等待恢复或联系管理员 |
108
108
  | -33004 | Group member limit reached | 不重试 |