@agentunion/fastaun-browser 0.4.2 → 0.4.4

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 (61) hide show
  1. package/CHANGELOG.md +190 -164
  2. package/_packed_docs/0.4.0_/345/267/256/345/274/202/346/240/270/345/256/236/345/206/263/347/255/226/350/256/260/345/275/225.md +302 -0
  3. package/_packed_docs/AUN_SDK_0.4.0_/350/256/276/350/256/241/345/257/271/346/257/224/345/210/206/346/236/220.md +194 -0
  4. package/_packed_docs/AUN_SDK_/351/207/215/346/236/204/345/256/236/346/226/275/350/256/241/345/210/222.md +596 -596
  5. package/_packed_docs/AUN_SDK_/351/207/215/346/236/204/350/256/276/350/256/241/346/226/271/346/241/210_v3.md +1698 -1697
  6. package/_packed_docs/CHANGELOG.md +190 -164
  7. package/_packed_docs/INDEX.md +17 -17
  8. package/_packed_docs/KITE_DOCS_GUIDE.md +11 -11
  9. package/_packed_docs/agent.md/SCHEMA.md +49 -49
  10. package/_packed_docs/agent.md/examples/signed-openclaw-lobster.md +22 -22
  11. 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 +327 -327
  12. package/_packed_docs/cli/AUN-CLI/350/256/276/350/256/241/346/226/207/346/241/243.md +686 -686
  13. package/_packed_docs/design/2026-05-22-aun-rpc-trace-enhancement.md +542 -542
  14. package/_packed_docs/design/E2EE_V2/347/256/200/345/214/226/344/270/2721DH/345/212/240Per-AID_Wrap/346/226/271/346/241/210.md +124 -124
  15. package/_packed_docs/design//350/267/250/350/257/255/350/250/200/345/256/271/345/231/250E2E/346/265/213/350/257/225/346/226/271/346/241/210.md +665 -665
  16. 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 +2 -2
  17. package/_packed_docs/protocol/14-/344/272/244/344/272/222/346/234/272/345/210/266-/345/223/215/345/272/224/346/250/241/345/274/217/344/270/216/350/207/252/344/270/273/346/250/241/345/274/217.md +170 -170
  18. 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 +419 -419
  19. package/_packed_docs/protocol/README.md +1 -1
  20. package/_packed_docs/protocol/aun-docs-guide.md +1 -1
  21. package/_packed_docs/protocol//351/231/204/345/275/225A-/346/234/257/350/257/255/350/241/250.md +15 -15
  22. package/_packed_docs/protocol//351/231/204/345/275/225B-/346/211/251/345/261/225/346/200/247/346/214/207/345/215/227.md +4 -4
  23. package/_packed_docs/protocol//351/231/204/345/275/225J-/345/256/242/346/210/267/347/253/257/346/216/245/345/205/245/347/244/272/344/276/213.md +98 -98
  24. package/_packed_docs/protocol//351/231/204/345/275/225M-JWT/350/256/244/350/257/201/345/256/236/347/216/260/346/214/207/345/215/227.md +46 -46
  25. package/_packed_docs/protocol//351/231/204/345/275/225N-/345/210/206/345/270/203/345/274/217Trace/345/215/217/350/256/256.md +257 -257
  26. package/_packed_docs/python-sdk-v2-only-changelog.md +189 -189
  27. package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +7 -3
  28. package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +1 -1
  29. package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +3 -1
  30. package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +1 -1
  31. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +63 -15
  32. package/_packed_docs/sdk/09-payload-reference.md +13 -13
  33. 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 +171 -171
  34. package/_packed_docs/sdk/README.md +5 -5
  35. package/dist/aid-store.d.ts.map +1 -1
  36. package/dist/aid-store.js +5 -6
  37. package/dist/aid-store.js.map +1 -1
  38. package/dist/aid.d.ts +2 -1
  39. package/dist/aid.d.ts.map +1 -1
  40. package/dist/aid.js +7 -6
  41. package/dist/aid.js.map +1 -1
  42. package/dist/auth.d.ts.map +1 -1
  43. package/dist/auth.js +4 -0
  44. package/dist/auth.js.map +1 -1
  45. package/dist/bundle.js +292 -188
  46. package/dist/client.d.ts +13 -17
  47. package/dist/client.d.ts.map +1 -1
  48. package/dist/client.js +275 -190
  49. package/dist/client.js.map +1 -1
  50. package/dist/config.d.ts +4 -7
  51. package/dist/config.d.ts.map +1 -1
  52. package/dist/config.js +18 -1
  53. package/dist/config.js.map +1 -1
  54. package/dist/index.d.ts +1 -1
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js.map +1 -1
  57. package/dist/keystore/indexeddb.js +5 -5
  58. package/dist/keystore/indexeddb.js.map +1 -1
  59. package/dist/version.d.ts +1 -1
  60. package/dist/version.js +1 -1
  61. package/package.json +1 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  `message.send.params.payload`、`message.thought.put.params.payload`、`group.send.params.payload` 和 `group.thought.put.params.payload` 使用同一套业务负载约定。`payload` 是应用层 JSON 对象,服务端只做大小、JSON 可序列化、信封/封装类型和加密相关的必要检查;业务字段由发送端和接收端协商,服务端不按本文字段做强制校验。
4
4
 
5
- 示例展示的是 `payload` 片段:P2P 完整请求仍需要在同级传入 `to`;群消息完整请求仍需要在同级传入 `group_id`;思考内容需要在顶层通过 `context.type + context.id` 指定 selector。文本、图片、文件、思考内容等业务消息类型只能放在 `payload.type`;`message.send.params.type` / `message.thought.put.params.type` / `group.send.params.type` / `group.thought.put.params.type` 是信封或封装类型,例如 SDK 加密发送时自动填充的 `e2ee.encrypted` / `e2ee.group_encrypted`。
5
+ 示例展示的是 `payload` 片段:P2P 完整请求仍需要在同级传入 `to`;群消息完整请求仍需要在同级传入 `group_id`;思考内容需要在顶层通过 `context.type + context.id` 指定 selector。文本、图片、文件、思考内容等业务消息类型只能放在 `payload.type`;`message.send.params.type` / `message.thought.put.params.type` / `group.send.params.type` / `group.thought.put.params.type` 是信封或封装类型,例如 SDK 加密发送时自动填充的 `e2ee.encrypted` / `e2ee.group_encrypted`。
6
6
 
7
7
  ## 类型总览
8
8
 
@@ -10,7 +10,7 @@
10
10
  |----------|------|----------|
11
11
  | `text` | 纯文本或 Markdown 文本 | 普通对话、任务说明、通知正文 |
12
12
  | `quote` | 带引用摘要的回复 | 回复某条消息、保留上下文 |
13
- | `thought` | 思考过程片段 | Agent 针对某个 P2P 或群上下文的非广播思考内容 |
13
+ | `thought` | 思考过程片段 | Agent 针对某个 P2P 或群上下文的非广播思考内容 |
14
14
  | `voice` | 语音文件引用及转写信息 | 语音消息、语音备忘 |
15
15
  | `image` | 图片对象引用及展示信息 | 截图、流程图、图片分享 |
16
16
  | `video` | 视频对象引用及封面信息 | 录屏、演示视频 |
@@ -38,19 +38,19 @@
38
38
  | 字段 | 所在位置 | 说明 |
39
39
  |------|----------|------|
40
40
  | `to` | `message.send.params` | P2P 接收方 AID |
41
- | `group_id` | `group.send.params` 和群消息信封 | 群组 ID |
42
- | `context.type + context.id` | `message.thought.put/get.params` 和 `group.thought.put/get.params` | 思考内容 selector;必填,不要只放在 payload 内 |
43
- | `protected_headers` / `headers` | `message.send` / `message.thought.put` / `group.send` / `group.thought.put` 参数 | E2EE 信封元数据,类似 HTTP headers;SDK 验 `_auth` 后在 `e2ee.protected_headers` 暴露 |
44
- | `from` / `sender_aid` | 服务端生成的消息信封 | 发送方身份 |
41
+ | `group_id` | `group.send.params` 和群消息信封 | 群组 ID |
42
+ | `context.type + context.id` | `message.thought.put/get.params` 和 `group.thought.put/get.params` | 思考内容 selector;必填,不要只放在 payload 内 |
43
+ | `protected_headers` / `headers` | `message.send` / `message.thought.put` / `group.send` / `group.thought.put` 参数 | E2EE 信封元数据,类似 HTTP headers;SDK 验 `_auth` 后在 `e2ee.protected_headers` 暴露 |
44
+ | `from` / `sender_aid` | 服务端生成的消息信封 | 发送方身份 |
45
45
  | `message_id` / `seq` / `timestamp` / `created_at` | 服务端生成或发送参数 | 当前消息 ID、序号和服务端时间 |
46
46
  | `encrypted` / `delivery_mode` | 发送参数或连接上下文 | 加密和 P2P 投递语义 |
47
47
  | `dispatch_mode` | 群消息信封和 SDK 注入的群消息 payload | 群消息应用层分发模式标签:`broadcast` / `mention`;由群设置决定,不作为 `group.send` 单次入参 |
48
48
  | `type` / `message_type` | 发送参数或消息信封 | 信封/封装类型,如 `e2ee.encrypted` / `e2ee.group_encrypted` |
49
- | `dispatch` / `duty_state` / `message_dispatch` | `group.send` 响应和群消息事件 | 群消息运行时分发状态和值班分发结果 |
50
-
51
- `protected_headers` 用于可见但需防篡改的信封元数据,例如 `device_id`、`slot_id`、`sdk_version`。它不属于业务 payload,也不提供机密性;需要端到端保密的上下文仍应放在 `payload.client_context` 或其他 payload 字段内。
52
-
53
- ## 公共辅助字段
49
+ | `dispatch` / `duty_state` / `message_dispatch` | `group.send` 响应和群消息事件 | 群消息运行时分发状态和值班分发结果 |
50
+
51
+ `protected_headers` 用于可见但需防篡改的信封元数据,例如 `device_id`、`slot_id`、`sdk_version`。它不属于业务 payload,也不提供机密性;需要端到端保密的上下文仍应放在 `payload.client_context` 或其他 payload 字段内。
52
+
53
+ ## 公共辅助字段
54
54
 
55
55
  以下字段可出现在多数 payload 中;如无需要,不必携带。
56
56
 
@@ -128,7 +128,7 @@
128
128
 
129
129
  ### `thought`:思考内容
130
130
 
131
- `thought` 用于 Agent 暴露针对某个 P2P 或群上下文的思考过程片段。它只应通过 `message.thought.put` 或 `group.thought.put` 发送,不作为普通 `message.send` / `group.send` 消息广播;有兴趣的客户端通过对应的 `*.thought.get` 主动读取。
131
+ `thought` 用于 Agent 暴露针对某个 P2P 或群上下文的思考过程片段。它只应通过 `message.thought.put` 或 `group.thought.put` 发送,不作为普通 `message.send` / `group.send` 消息广播;有兴趣的客户端通过对应的 `*.thought.get` 主动读取。
132
132
 
133
133
  | 字段 | 类型 | 必填 | 说明 |
134
134
  |------|------|:----:|------|
@@ -146,7 +146,7 @@
146
146
  }
147
147
  ```
148
148
 
149
- `message.thought.put` / `group.thought.put` 的顶层 selector 用于定位 thought head,只使用 `context.type + context.id`。`payload` 内如需展示引用摘要,可另行携带 `quote` 或 `client_context`,但不能替代顶层 selector。
149
+ `message.thought.put` / `group.thought.put` 的顶层 selector 用于定位 thought head,只使用 `context.type + context.id`。`payload` 内如需展示引用摘要,可另行携带 `quote` 或 `client_context`,但不能替代顶层 selector。
150
150
 
151
151
  ### `voice`:语音消息
152
152
 
@@ -1,171 +1,171 @@
1
- # E2EE V2 消息通信时序图
2
-
3
- 本文只描述当前 V2-only 链路下的主要时序:P2P/GROUP 明文消息、P2P/GROUP 加密消息,以及 V2 设备密钥注册前置流程。不包含 V1 E2EE、旧 group epoch secret 分发、thought 内容读写。
4
-
5
- ## 范围约定
6
-
7
- - SDK 默认 `message.send` / `group.send` 为 `encrypt=true`,由 SDK 本地构造 V2 加密 envelope。
8
- - 显式 `encrypt=false` 时走明文发送;V2 SDK 接收端仍通过 `message.v2.pull` / `group.v2.pull` 合并拉取明文历史行。
9
- - P2P 加密 envelope 类型为 `e2ee.p2p_encrypted`,通过 `message.send` 提交,服务端按 V2 分流处理。
10
- - GROUP 加密 envelope 类型为 `e2ee.group_encrypted`,通过 `group.v2.send` 提交。
11
- - 服务端只做认证、路由、结构校验、密文存储和事件通知,不持有明文 payload,也不执行端到端解密。
12
-
13
- ## V2 设备密钥注册
14
-
15
- ```mermaid
16
- sequenceDiagram
17
- participant SDK as 接收方 SDK
18
- participant Message as message 服务
19
- participant Group as group 服务
20
- participant CA as CA/Auth
21
-
22
- SDK->>SDK: 初始化 V2Session<br/>IK=AID 长期密钥,生成或加载 P2P SPK
23
- SDK->>Message: message.v2.put_peer_pk<br/>peer_device_prekey + SPK 签名
24
- Message->>CA: ca.get_cert / 校验 AID 公钥
25
- Message-->>SDK: ok
26
-
27
- opt 已加入某个群
28
- SDK->>SDK: ensure_group_spk(group_id)
29
- SDK->>Group: group.v2.put_group_pk<br/>group_device_prekey + SPK 签名
30
- Group->>CA: ca.get_cert / 校验 AID 公钥
31
- Group-->>SDK: ok
32
- end
33
- ```
34
-
35
- ## P2P 明文消息
36
-
37
- ```mermaid
38
- sequenceDiagram
39
- participant A as Sender SDK
40
- participant M as message 服务
41
- participant G as gateway
42
- participant B as Receiver SDK
43
-
44
- A->>M: message.send<br/>encrypt=false, payload=明文
45
- alt 目标跨域
46
- M->>G: gateway.forward_federation<br/>namespace=message, method=send
47
- G->>M: 转发到目标域 message 服务
48
- end
49
- M->>M: 按接收方 device 分配 seq<br/>写普通消息存储
50
- M->>G: dispatch_event(message.received)
51
- G-->>B: event/message.received 或通知
52
-
53
- B->>M: message.v2.pull(after_seq, limit)
54
- M-->>B: messages[]<br/>明文行 version=v1 / legacy_v1
55
- B->>B: 直接发布 message.received<br/>不做 E2EE 解密
56
- B->>M: message.v2.ack(up_to_seq)
57
- ```
58
-
59
- ## P2P 加密消息
60
-
61
- ```mermaid
62
- sequenceDiagram
63
- participant A as Sender SDK
64
- participant M as message 服务
65
- participant G as gateway
66
- participant B as Receiver SDK
67
-
68
- A->>M: message.v2.bootstrap(peer_aid=B)
69
- M-->>A: B active devices<br/>IK + peer_device_prekey SPK<br/>self_devices + audit_recipients
70
-
71
- A->>A: 构造 recipients<br/>peer + self_sync + audit
72
- A->>A: 生成 master_key / msg_nonce / sender_session_key
73
- A->>A: 3DH/1DH wrap master_key<br/>AES-GCM 加密 payload<br/>ECDSA 签名 ct+tag+AAD+recipients_digest
74
- A->>M: message.send<br/>payload.type=e2ee.p2p_encrypted, version=v2, encrypt=false
75
-
76
- alt 目标跨域
77
- M->>G: gateway.forward_federation<br/>namespace=message, method=send
78
- G->>M: 转发到目标域 message 服务
79
- end
80
-
81
- M->>M: 校验 AAD/from/to/device、t_send、recipients_digest、audit wrap
82
- M->>M: 写 v2_peer_messages 共享密文体
83
- M->>M: 按 device 写 v2_peer_wraps<br/>seq per owner_aid + device_id
84
- M->>G: dispatch_event(peer.v2.message_received)<br/>只含 seq/message_id/device_id
85
- G-->>B: peer.v2.message_received
86
-
87
- B->>M: message.v2.pull(after_seq, limit)
88
- M-->>B: per-device envelope_json<br/>recipient wrap + merkle_proof
89
- B->>B: 验 sender_signature / recipients proof
90
- B->>B: 用本地 IK/SPK 解 wrap_key -> master_key
91
- B->>B: AES-GCM 解密 payload
92
- B-->>B: 发布 message.received
93
- B->>M: message.v2.ack(up_to_seq)
94
- B->>B: 若消费当前 SPK,异步 rotate_spk()
95
- ```
96
-
97
- ## GROUP 明文消息
98
-
99
- ```mermaid
100
- sequenceDiagram
101
- participant A as Sender SDK
102
- participant Group as group 服务
103
- participant G as gateway
104
- participant B as Member SDK
105
-
106
- A->>Group: group.send<br/>encrypt=false, payload=明文
107
- Group->>Group: 校验成员/禁言/消息类型/epoch 边界
108
- Group->>Group: 写 group_messages + group_events<br/>递增 group.message_seq / event_seq
109
- Group->>G: dispatch_event(group.message_created)<br/>member_aids / dispatch 信息
110
- G-->>B: group.message_created 通知
111
-
112
- B->>Group: group.v2.pull(group_id, after_seq, limit)
113
- Group->>Group: 合并普通明文 group_messages
114
- Group-->>B: messages[]<br/>明文行 version=v1 + payload
115
- B->>B: 直接发布 group.message_created
116
- B->>Group: group.v2.ack(group_id, up_to_seq)
117
- ```
118
-
119
- ## GROUP 加密消息
120
-
121
- ```mermaid
122
- sequenceDiagram
123
- participant A as Sender SDK
124
- participant Group as group 服务
125
- participant Msg as message 服务
126
- participant G as gateway
127
- participant B as Member SDK
128
-
129
- A->>Group: group.v2.bootstrap(group_id)
130
- Group->>Group: 校验成员资格,读取 epoch/state_chain
131
- Group->>Group: 读取 v2_group_devices<br/>group_device_prekey
132
- Group->>Msg: message.v2.group_bootstrap(member_aids)
133
- Msg-->>Group: fallback P2P device prekeys + audit_recipients
134
- Group-->>A: devices + epoch + state_commitment<br/>pending/committed members + audit_recipients
135
-
136
- A->>A: 校验 group state 签名 / 分叉
137
- A->>A: 构造 targets<br/>member + self_sync + audit
138
- A->>A: 生成 e2ee.group_encrypted envelope<br/>AAD 含 group_id/epoch/state_commitment
139
- A->>Group: group.v2.send(group_id, envelope)
140
-
141
- alt 群在异域
142
- Group->>G: gateway.forward_federation<br/>namespace=group, method=v2.send
143
- G->>Group: 转发到群归属域 group 服务
144
- end
145
-
146
- Group->>Group: 校验成员、e2ee_version=v2、epoch 匹配
147
- Group->>Group: 校验 AAD/from/group_id/from_device/message_id
148
- Group->>Group: 校验 recipients 排序、digest、audit wrap
149
- Group->>Group: 写 v2_group_messages 共享密文体
150
- Group->>Group: 按 recipient 写 v2_group_wraps
151
- Group->>G: dispatch_event(group.v2.message_created)<br/>seq/message_id/sender/member_aids
152
- G-->>B: group.v2.message_created 通知
153
-
154
- B->>Group: group.v2.pull(group_id, after_seq, limit)
155
- Group-->>B: per-device envelope_json<br/>recipient wrap + merkle_proof
156
- B->>B: 选择 group_id 对应 group SPK<br/>fallback 到 P2P SPK 仅兼容旧 wrap
157
- B->>B: 验签 / 验 proof / 解 wrap / 解密 payload
158
- B-->>B: 发布 group.message_created
159
- B->>Group: group.v2.ack(group_id, up_to_seq)
160
- B->>B: 若消费 group_device_prekey,异步 rotate_group_spk()
161
- ```
162
-
163
- ## 核心差异
164
-
165
- | 场景 | 发送入口 | 服务端存储 | 接收入口 | 解密位置 |
166
- |------|----------|------------|----------|----------|
167
- | P2P 明文 | `message.send(encrypt=false)` | 普通 device message | `message.v2.pull` 合并明文行 | 不解密 |
168
- | P2P 加密 | `message.send` 承载 `e2ee.p2p_encrypted` | `v2_peer_messages` + `v2_peer_wraps` | `message.v2.pull` | 接收方 SDK |
169
- | GROUP 明文 | `group.send(encrypt=false)` | `group_messages` + `group_events` | `group.v2.pull` 合并明文行 | 不解密 |
170
- | GROUP 加密 | `group.v2.send` 承载 `e2ee.group_encrypted` | `v2_group_messages` + `v2_group_wraps` | `group.v2.pull` | 接收方 SDK |
171
-
1
+ # E2EE V2 消息通信时序图
2
+
3
+ 本文只描述当前 V2-only 链路下的主要时序:P2P/GROUP 明文消息、P2P/GROUP 加密消息,以及 V2 设备密钥注册前置流程。不包含 V1 E2EE、旧 group epoch secret 分发、thought 内容读写。
4
+
5
+ ## 范围约定
6
+
7
+ - SDK 默认 `message.send` / `group.send` 为 `encrypt=true`,由 SDK 本地构造 V2 加密 envelope。
8
+ - 显式 `encrypt=false` 时走明文发送;V2 SDK 接收端仍通过 `message.v2.pull` / `group.v2.pull` 合并拉取明文历史行。
9
+ - P2P 加密 envelope 类型为 `e2ee.p2p_encrypted`,通过 `message.send` 提交,服务端按 V2 分流处理。
10
+ - GROUP 加密 envelope 类型为 `e2ee.group_encrypted`,通过 `group.v2.send` 提交。
11
+ - 服务端只做认证、路由、结构校验、密文存储和事件通知,不持有明文 payload,也不执行端到端解密。
12
+
13
+ ## V2 设备密钥注册
14
+
15
+ ```mermaid
16
+ sequenceDiagram
17
+ participant SDK as 接收方 SDK
18
+ participant Message as message 服务
19
+ participant Group as group 服务
20
+ participant CA as CA/Auth
21
+
22
+ SDK->>SDK: 初始化 V2Session<br/>IK=AID 长期密钥,生成或加载 P2P SPK
23
+ SDK->>Message: message.v2.put_peer_pk<br/>peer_device_prekey + SPK 签名
24
+ Message->>CA: ca.get_cert / 校验 AID 公钥
25
+ Message-->>SDK: ok
26
+
27
+ opt 已加入某个群
28
+ SDK->>SDK: ensure_group_spk(group_id)
29
+ SDK->>Group: group.v2.put_group_pk<br/>group_device_prekey + SPK 签名
30
+ Group->>CA: ca.get_cert / 校验 AID 公钥
31
+ Group-->>SDK: ok
32
+ end
33
+ ```
34
+
35
+ ## P2P 明文消息
36
+
37
+ ```mermaid
38
+ sequenceDiagram
39
+ participant A as Sender SDK
40
+ participant M as message 服务
41
+ participant G as gateway
42
+ participant B as Receiver SDK
43
+
44
+ A->>M: message.send<br/>encrypt=false, payload=明文
45
+ alt 目标跨域
46
+ M->>G: gateway.forward_federation<br/>namespace=message, method=send
47
+ G->>M: 转发到目标域 message 服务
48
+ end
49
+ M->>M: 按接收方 device 分配 seq<br/>写普通消息存储
50
+ M->>G: dispatch_event(message.received)
51
+ G-->>B: event/message.received 或通知
52
+
53
+ B->>M: message.v2.pull(after_seq, limit)
54
+ M-->>B: messages[]<br/>明文行 version=v1 / legacy_v1
55
+ B->>B: 直接发布 message.received<br/>不做 E2EE 解密
56
+ B->>M: message.v2.ack(up_to_seq)
57
+ ```
58
+
59
+ ## P2P 加密消息
60
+
61
+ ```mermaid
62
+ sequenceDiagram
63
+ participant A as Sender SDK
64
+ participant M as message 服务
65
+ participant G as gateway
66
+ participant B as Receiver SDK
67
+
68
+ A->>M: message.v2.bootstrap(peer_aid=B)
69
+ M-->>A: B active devices<br/>IK + peer_device_prekey SPK<br/>self_devices + audit_recipients
70
+
71
+ A->>A: 构造 recipients<br/>peer + self_sync + audit
72
+ A->>A: 生成 master_key / msg_nonce / sender_session_key
73
+ A->>A: 3DH/1DH wrap master_key<br/>AES-GCM 加密 payload<br/>ECDSA 签名 ct+tag+AAD+recipients_digest
74
+ A->>M: message.send<br/>payload.type=e2ee.p2p_encrypted, version=v2, encrypt=false
75
+
76
+ alt 目标跨域
77
+ M->>G: gateway.forward_federation<br/>namespace=message, method=send
78
+ G->>M: 转发到目标域 message 服务
79
+ end
80
+
81
+ M->>M: 校验 AAD/from/to/device、t_send、recipients_digest、audit wrap
82
+ M->>M: 写 v2_peer_messages 共享密文体
83
+ M->>M: 按 device 写 v2_peer_wraps<br/>seq per owner_aid + device_id
84
+ M->>G: dispatch_event(peer.v2.message_received)<br/>只含 seq/message_id/device_id
85
+ G-->>B: peer.v2.message_received
86
+
87
+ B->>M: message.v2.pull(after_seq, limit)
88
+ M-->>B: per-device envelope_json<br/>recipient wrap + merkle_proof
89
+ B->>B: 验 sender_signature / recipients proof
90
+ B->>B: 用本地 IK/SPK 解 wrap_key -> master_key
91
+ B->>B: AES-GCM 解密 payload
92
+ B-->>B: 发布 message.received
93
+ B->>M: message.v2.ack(up_to_seq)
94
+ B->>B: 若消费当前 SPK,异步 rotate_spk()
95
+ ```
96
+
97
+ ## GROUP 明文消息
98
+
99
+ ```mermaid
100
+ sequenceDiagram
101
+ participant A as Sender SDK
102
+ participant Group as group 服务
103
+ participant G as gateway
104
+ participant B as Member SDK
105
+
106
+ A->>Group: group.send<br/>encrypt=false, payload=明文
107
+ Group->>Group: 校验成员/禁言/消息类型/epoch 边界
108
+ Group->>Group: 写 group_messages + group_events<br/>递增 group.message_seq / event_seq
109
+ Group->>G: dispatch_event(group.message_created)<br/>member_aids / dispatch 信息
110
+ G-->>B: group.message_created 通知
111
+
112
+ B->>Group: group.v2.pull(group_id, after_seq, limit)
113
+ Group->>Group: 合并普通明文 group_messages
114
+ Group-->>B: messages[]<br/>明文行 version=v1 + payload
115
+ B->>B: 直接发布 group.message_created
116
+ B->>Group: group.v2.ack(group_id, up_to_seq)
117
+ ```
118
+
119
+ ## GROUP 加密消息
120
+
121
+ ```mermaid
122
+ sequenceDiagram
123
+ participant A as Sender SDK
124
+ participant Group as group 服务
125
+ participant Msg as message 服务
126
+ participant G as gateway
127
+ participant B as Member SDK
128
+
129
+ A->>Group: group.v2.bootstrap(group_id)
130
+ Group->>Group: 校验成员资格,读取 epoch/state_chain
131
+ Group->>Group: 读取 v2_group_devices<br/>group_device_prekey
132
+ Group->>Msg: message.v2.group_bootstrap(member_aids)
133
+ Msg-->>Group: fallback P2P device prekeys + audit_recipients
134
+ Group-->>A: devices + epoch + state_commitment<br/>pending/committed members + audit_recipients
135
+
136
+ A->>A: 校验 group state 签名 / 分叉
137
+ A->>A: 构造 targets<br/>member + self_sync + audit
138
+ A->>A: 生成 e2ee.group_encrypted envelope<br/>AAD 含 group_id/epoch/state_commitment
139
+ A->>Group: group.v2.send(group_id, envelope)
140
+
141
+ alt 群在异域
142
+ Group->>G: gateway.forward_federation<br/>namespace=group, method=v2.send
143
+ G->>Group: 转发到群归属域 group 服务
144
+ end
145
+
146
+ Group->>Group: 校验成员、e2ee_version=v2、epoch 匹配
147
+ Group->>Group: 校验 AAD/from/group_id/from_device/message_id
148
+ Group->>Group: 校验 recipients 排序、digest、audit wrap
149
+ Group->>Group: 写 v2_group_messages 共享密文体
150
+ Group->>Group: 按 recipient 写 v2_group_wraps
151
+ Group->>G: dispatch_event(group.v2.message_created)<br/>seq/message_id/sender/member_aids
152
+ G-->>B: group.v2.message_created 通知
153
+
154
+ B->>Group: group.v2.pull(group_id, after_seq, limit)
155
+ Group-->>B: per-device envelope_json<br/>recipient wrap + merkle_proof
156
+ B->>B: 选择 group_id 对应 group SPK<br/>fallback 到 P2P SPK 仅兼容旧 wrap
157
+ B->>B: 验签 / 验 proof / 解 wrap / 解密 payload
158
+ B-->>B: 发布 group.message_created
159
+ B->>Group: group.v2.ack(group_id, up_to_seq)
160
+ B->>B: 若消费 group_device_prekey,异步 rotate_group_spk()
161
+ ```
162
+
163
+ ## 核心差异
164
+
165
+ | 场景 | 发送入口 | 服务端存储 | 接收入口 | 解密位置 |
166
+ |------|----------|------------|----------|----------|
167
+ | P2P 明文 | `message.send(encrypt=false)` | 普通 device message | `message.v2.pull` 合并明文行 | 不解密 |
168
+ | P2P 加密 | `message.send` 承载 `e2ee.p2p_encrypted` | `v2_peer_messages` + `v2_peer_wraps` | `message.v2.pull` | 接收方 SDK |
169
+ | GROUP 明文 | `group.send(encrypt=false)` | `group_messages` + `group_events` | `group.v2.pull` 合并明文行 | 不解密 |
170
+ | GROUP 加密 | `group.v2.send` 承载 `e2ee.group_encrypted` | `v2_group_messages` + `v2_group_wraps` | `group.v2.pull` | 接收方 SDK |
171
+
@@ -70,12 +70,12 @@ asyncio.run(main())
70
70
 
71
71
  | 语言 | options-only | AID + options |
72
72
  |------|--------------|---------------|
73
- | Python | `AUNClient(debug=True)` | `AUNClient(aid, debug=True)` |
74
- | TypeScript | `new AUNClient({ debug: true })` | `new AUNClient(aid, { debug: true })` |
75
- | JavaScript | `new AUNClient({ debug: true })` | `new AUNClient(aid, { debug: true })` |
76
- | Go | `aun.NewAUNClient(aun.AUNClientOptions{Debug: true})` | `aun.NewAUNClient(aid, aun.AUNClientOptions{Debug: true})` |
73
+ | Python | `AUNClient()` | `AUNClient(aid)` |
74
+ | TypeScript | `new AUNClient()` | `new AUNClient(aid)` |
75
+ | JavaScript | `new AUNClient()` | `new AUNClient(aid)` |
76
+ | Go | `aun.NewAUNClientEmpty()` | `aun.NewAUNClient(aid)` |
77
77
 
78
- `aid` 必须是 AID 对象,不是字符串。不要把 aid 放进 options,也不要使用旧的 `(config, debug)` 构造形态。
78
+ `aid` 必须是 AIDStore.load() 返回的 AID 对象,不是字符串。debug/verify_ssl/root_ca_path 等配置由 AID 携带,不再通过构造参数传入。
79
79
 
80
80
  ---
81
81
 
@@ -1 +1 @@
1
- {"version":3,"file":"aid-store.d.ts","sourceRoot":"","sources":["../src/aid-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aid-store.d.ts","sourceRoot":"","sources":["../src/aid-store.ts"],"names":[],"mappings":"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"}
package/dist/aid-store.js CHANGED
@@ -6,7 +6,7 @@ import { AuthFlow } from './auth.js';
6
6
  import { GatewayDiscovery } from './discovery.js';
7
7
  import { IdentityConflictError, ValidationError } from './errors.js';
8
8
  import { IndexedDBKeyStore } from './keystore/indexeddb.js';
9
- import { getDeviceId, normalizeInstanceId } from './config.js';
9
+ import { getDeviceId, normalizeInstanceId, normalizeSlotId } from './config.js';
10
10
  import { resultErr, resultOk } from './result.js';
11
11
  // ── 证书 DER 解析工具 ────────────────────────────────────────────
12
12
  function _derReadLength(data, offset) {
@@ -228,10 +228,6 @@ function parseCertCN(certPem) {
228
228
  return null;
229
229
  }
230
230
  }
231
- function normalizeSlotId(slotId) {
232
- const value = String(slotId ?? 'default').trim();
233
- return value || 'default';
234
- }
235
231
  function issuerFromAid(aid) {
236
232
  const target = String(aid ?? '').trim();
237
233
  const dotIdx = target.indexOf('.');
@@ -296,7 +292,10 @@ export class AIDStore {
296
292
  ? normalizeInstanceId(opts.deviceId, 'deviceId', { allowEmpty: true })
297
293
  : getDeviceId();
298
294
  this.slotId = normalizeSlotId(opts.slotId);
299
- this._verifySsl = opts.verifySsl ?? true;
295
+ if (opts.verifySsl === false) {
296
+ console.warn('[aun_core.config] verify_ssl=false 在浏览器环境中不受支持,SSL 证书验证将保持启用。');
297
+ }
298
+ this._verifySsl = opts.verifySsl === false ? true : (opts.verifySsl ?? true);
300
299
  this._keystore = new IndexedDBKeyStore({ encryptionSeed: this._encryptionSeed || undefined });
301
300
  this._crypto = new CryptoProvider();
302
301
  this._discovery = new GatewayDiscovery();