@agentunion/fastaun-browser 0.5.16 → 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 +334 -258
- package/_packed_docs/CHANGELOG.md +334 -258
- package/_packed_docs/INDEX.md +36 -5
- package/_packed_docs/KITE_DOCS_GUIDE.md +13 -5
- package/_packed_docs/agent.md/SCHEMA.md +52 -33
- 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 +1170 -1164
- package/_packed_docs/aun/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md +1215 -1213
- 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/06-/346/234/215/345/212/241/345/215/217/350/256/256.md +58 -43
- 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/10-Group-/345/255/220/345/215/217/350/256/256.md +80 -17
- 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 +69 -10
- package/_packed_docs/sdk/07-/351/224/231/350/257/257/345/244/204/347/220/206.md +7 -4
- package/_packed_docs/sdk/09-group-rpc-manual.md +167 -35
- package/_packed_docs/sdk/09-message-rpc-manual.md +72 -42
- package/_packed_docs/sdk/09-storage-rpc-manual.md +48 -18
- package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +16 -12
- package/_packed_docs/sdk/INDEX.md +14 -13
- 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 +3 -1
- package/dist/agent-md.d.ts.map +1 -1
- package/dist/agent-md.js +13 -4
- 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 +2763 -1591
- 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 +19 -0
- package/dist/client/delivery.d.ts.map +1 -1
- package/dist/client/delivery.js +198 -12
- package/dist/client/delivery.js.map +1 -1
- package/dist/client/group-state.d.ts +4 -0
- package/dist/client/group-state.d.ts.map +1 -1
- package/dist/client/group-state.js +63 -0
- package/dist/client/group-state.js.map +1 -1
- package/dist/client/rpc-pipeline.d.ts.map +1 -1
- package/dist/client/rpc-pipeline.js +46 -5
- package/dist/client/rpc-pipeline.js.map +1 -1
- package/dist/client/v2-e2ee.d.ts +7 -1
- package/dist/client/v2-e2ee.d.ts.map +1 -1
- package/dist/client/v2-e2ee.js +918 -463
- package/dist/client/v2-e2ee.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +73 -14
- package/dist/client.js.map +1 -1
- package/dist/facades.d.ts +7 -0
- package/dist/facades.d.ts.map +1 -1
- package/dist/facades.js +21 -0
- package/dist/facades.js.map +1 -1
- package/dist/group-fs.d.ts.map +1 -1
- package/dist/group-fs.js +8 -5
- package/dist/group-fs.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/storage/vfs.d.ts +1 -0
- package/dist/storage/vfs.d.ts.map +1 -1
- package/dist/storage/vfs.js +68 -5
- package/dist/storage/vfs.js.map +1 -1
- package/dist/tools/cross-sdk-agent.js +34 -3
- package/dist/tools/cross-sdk-agent.js.map +1 -1
- package/dist/transport.js +34 -34
- package/dist/types.d.ts +16 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +13 -13
|
@@ -61,8 +61,10 @@ P2P `message.*` 的最终投递语义由连接阶段声明的 `delivery_mode`
|
|
|
61
61
|
"jsonrpc": "2.0",
|
|
62
62
|
"method": "message.send",
|
|
63
63
|
"params": {
|
|
64
|
-
"to": "bob.agentid.pub",
|
|
65
|
-
"
|
|
64
|
+
"to": "bob.agentid.pub",
|
|
65
|
+
"device_id": "bob-phone",
|
|
66
|
+
"ttl": 300,
|
|
67
|
+
"payload": {"type": "text", "text": "Hello!"},
|
|
66
68
|
"encrypted": false,
|
|
67
69
|
"message_id": "550e8400-e29b-41d4-a716-446655440000",
|
|
68
70
|
"timestamp": 1234567890000
|
|
@@ -75,16 +77,23 @@ P2P `message.*` 的最终投递语义由连接阶段声明的 `delivery_mode`
|
|
|
75
77
|
|
|
76
78
|
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
77
79
|
|------|------|------|--------|------|
|
|
78
|
-
| `to` | string | 是 | — | 接收方 AID |
|
|
79
|
-
| `
|
|
80
|
+
| `to` | string | 是 | — | 接收方 AID |
|
|
81
|
+
| `device_id` | string | 否 | — | 目标接收设备。非空时仅投递该设备;未指定时按接收方 AID 投递全部设备 |
|
|
82
|
+
| `to_device_id` | string | 否 | — | `device_id` 的兼容别名;两者均非空时以 `device_id` 为准 |
|
|
83
|
+
| `ttl` | integer | 否 | `0` | 秒。`ttl <= 0` 持久化;`ttl > 0` 钳制到 1–3600 秒并只保存在消息服务内存中 |
|
|
84
|
+
| `payload` | object | 是 | — | 消息内容(任意 JSON 对象) |
|
|
80
85
|
| `type` | string | 否 | — | 信封/封装类型,普通业务消息无需填写;SDK V2 加密发送时自动使用 `e2ee.p2p_encrypted` |
|
|
81
86
|
| `encrypted` | boolean | 否 | `false` | 底层 RPC 的 E2EE 标记。Python SDK 便捷层通常使用 `encrypt` 入参并由 SDK 自动填充此字段 |
|
|
82
87
|
| `message_id` | string | 否 | — | 幂等键(客户端提供或服务端生成 UUID) |
|
|
83
88
|
| `timestamp` | integer | 否 | — | 客户端时间戳(毫秒)。**服务端忽略此字段,始终使用服务端时间** |
|
|
84
89
|
| `protected_headers` / `headers` | object | 否 | — | SDK 加密前读取的 E2EE 信封元数据,类似 HTTP headers;推荐使用 `protected_headers`,`headers` 仅作为兼容别名;服务端不解释,接收端验 `_auth` 后在 `e2ee.protected_headers` 暴露 |
|
|
85
90
|
|
|
86
|
-
> 连接级 `delivery_mode` 在 `auth.connect` 阶段声明,结构见 `02-WebSocket协议.md`。Python SDK 的 P2P 消息发送会沿用当前连接的 `delivery_mode`,应用层发送时无需重复指定。
|
|
87
|
-
> `protected_headers` 只在 SDK 加密路径生效;裸 RPC 发送明文或已加密信封时,调用方需自行遵守 [05-E2EE加密通信](05-E2EE加密通信.md#protectedheaders-与可验证上下文) 的格式和校验规则。
|
|
91
|
+
> 连接级 `delivery_mode` 在 `auth.connect` 阶段声明,结构见 `02-WebSocket协议.md`。Python SDK 的 P2P 消息发送会沿用当前连接的 `delivery_mode`,应用层发送时无需重复指定。
|
|
92
|
+
> `protected_headers` 只在 SDK 加密路径生效;裸 RPC 发送明文或已加密信封时,调用方需自行遵守 [05-E2EE加密通信](05-E2EE加密通信.md#protectedheaders-与可验证上下文) 的格式和校验规则。
|
|
93
|
+
|
|
94
|
+
`message.send.device_id` 表示接收目标,不是发送方设备,也不同于 `message.pull` / `message.ack` 中表示当前消费实例的 `device_id`。指定目标设备时,SDK 的 V2 加密信封只选择该设备对应的 peer wrap(AID scope 使用对应 AID wrap),同时保留发送方 self-sync 和监管 audit wrap。目标设备不存在或不可用时发送失败,不会降级为 AID 全设备广播。
|
|
95
|
+
|
|
96
|
+
`ttl` 与连接级 `delivery_mode` 相互独立。正 TTL 消息不写数据库或 WAL、不分配持久 `seq`;跨域只转发剩余 TTL,目标域不会重新执行 1 秒下限钳制。
|
|
88
97
|
|
|
89
98
|
### Payload 参考约定
|
|
90
99
|
|
|
@@ -117,17 +126,24 @@ P2P `message.*` 的最终投递语义由连接阶段声明的 `delivery_mode`
|
|
|
117
126
|
|
|
118
127
|
| 字段 | 类型 | 说明 |
|
|
119
128
|
|------|------|------|
|
|
120
|
-
| `message_id` | string | 消息 ID |
|
|
121
|
-
| `
|
|
129
|
+
| `message_id` | string | 消息 ID |
|
|
130
|
+
| `storage` | string | `persistent` 或 `volatile`;旧服务端未返回时按 `persistent` 处理 |
|
|
131
|
+
| `seq` | integer | 持久消息的接收方收件箱序号;volatile 消息不返回 |
|
|
132
|
+
| `volatile_cursor` | string | volatile 消息的 opaque 游标;不得解析 |
|
|
133
|
+
| `volatile_cursors` | string[] | 未指定目标设备且投递多个设备时的 volatile 游标列表 |
|
|
134
|
+
| `created_at` | integer | volatile 消息的服务端创建时间(毫秒) |
|
|
135
|
+
| `expires_at` | integer | volatile 消息的服务端过期时间(毫秒) |
|
|
122
136
|
| `timestamp` | integer | 服务端时间戳(毫秒) |
|
|
123
|
-
| `status` | string | `"sent"` / `"delivered"` / `"duplicate"` |
|
|
137
|
+
| `status` | string | `"sent"` / `"delivered"` / `"accepted"` / `"duplicate"` |
|
|
124
138
|
| `delivery_mode` | string | 最终生效的连接级投递语义:`fanout` 或 `queue` |
|
|
125
139
|
| `envelope` | object | SDK 回填的发送结果信封,包含发送方、接收方、业务类型、时间戳、加密标志、protected headers 等可转发元数据 |
|
|
126
140
|
| `payload` | object | SDK 回填的应用层业务 payload;裸 RPC 或内部 `_skip_send_result_envelope` 路径可能没有该字段 |
|
|
127
141
|
| `cross_domain` | boolean | 仅跨域投递时出现,当前值为 `true` |
|
|
128
142
|
| `target_issuer` | string | 仅跨域投递时出现,表示目标 issuer |
|
|
129
143
|
|
|
130
|
-
> **duplicate 响应**:当 `message_id` 重复时,若服务端仍缓存首次结果,返回完整首次响应并附加 `"status": "duplicate"`;若缓存已过期,仅返回 `message_id`、`timestamp`、`status`,**不含** `seq` 和 `delivery_mode`。客户端收到 `"duplicate"` 状态时应视为幂等成功,无需重试。
|
|
144
|
+
> **duplicate 响应**:当 `message_id` 重复时,若服务端仍缓存首次结果,返回完整首次响应并附加 `"status": "duplicate"`;若缓存已过期,仅返回 `message_id`、`timestamp`、`status`,**不含** `seq` 和 `delivery_mode`。客户端收到 `"duplicate"` 状态时应视为幂等成功,无需重试。
|
|
145
|
+
|
|
146
|
+
volatile 成功响应以 `storage="volatile"`、`volatile_cursor`(多设备时还可含 `volatile_cursors`)、`created_at`、`expires_at` 和 `status="accepted"` 表示,不含 `seq`。到期或服务重启后消息允许丢失。
|
|
131
147
|
|
|
132
148
|
### 错误
|
|
133
149
|
|
|
@@ -136,16 +152,18 @@ P2P `message.*` 的最终投递语义由连接阶段声明的 `delivery_mode`
|
|
|
136
152
|
| -32002 | 服务暂不可用(如数据库未连接、服务证书未加载) |
|
|
137
153
|
| -32603 | 参数缺失(to 或 payload) |
|
|
138
154
|
| -32603 | payload 超过大小限制(默认 1 MB) |
|
|
139
|
-
| -32603 | 目标 AID 不存在 |
|
|
140
|
-
| -32603 |
|
|
155
|
+
| -32603 | 目标 AID 不存在 |
|
|
156
|
+
| -32603 | 指定的目标设备不存在、未注册或 V2 bootstrap 中不可用 |
|
|
157
|
+
| -32603 | 频率限制超限 |
|
|
141
158
|
|
|
142
159
|
### 示例
|
|
143
160
|
|
|
144
161
|
```python
|
|
145
|
-
result = await client.call("message.send", {
|
|
146
|
-
"to": "bob.agentid.pub",
|
|
147
|
-
"
|
|
148
|
-
}
|
|
162
|
+
result = await client.call("message.send", {
|
|
163
|
+
"to": "bob.agentid.pub",
|
|
164
|
+
"device_id": "bob-phone",
|
|
165
|
+
"payload": {"type": "text", "text": "Hello!"},
|
|
166
|
+
})
|
|
149
167
|
# result: {"message_id": "...", "seq": 42, "status": "delivered", ...}
|
|
150
168
|
```
|
|
151
169
|
|
|
@@ -278,7 +296,7 @@ result = await client.call("message.thought.get", {
|
|
|
278
296
|
|
|
279
297
|
## message.pull
|
|
280
298
|
|
|
281
|
-
|
|
299
|
+
按两个独立游标增量拉取持久消息和 volatile 消息。volatile 消息不进入持久 `seq` 空间。
|
|
282
300
|
|
|
283
301
|
### 请求
|
|
284
302
|
|
|
@@ -287,10 +305,10 @@ result = await client.call("message.thought.get", {
|
|
|
287
305
|
"jsonrpc": "2.0",
|
|
288
306
|
"method": "message.pull",
|
|
289
307
|
"params": {
|
|
290
|
-
"after_seq": 100,
|
|
291
|
-
"
|
|
292
|
-
"
|
|
293
|
-
"
|
|
308
|
+
"after_seq": 100,
|
|
309
|
+
"after_volatile_cursor": "v1:i1:7:20",
|
|
310
|
+
"limit": 50,
|
|
311
|
+
"device_id": "device-001"
|
|
294
312
|
},
|
|
295
313
|
"id": 2
|
|
296
314
|
}
|
|
@@ -300,12 +318,12 @@ result = await client.call("message.thought.get", {
|
|
|
300
318
|
|
|
301
319
|
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
302
320
|
|------|------|------|--------|------|
|
|
303
|
-
| `after_seq` | integer | 否 | 0 | 拉取 seq > after_seq 的消息 |
|
|
304
|
-
| `
|
|
305
|
-
| `
|
|
306
|
-
| `
|
|
307
|
-
|
|
308
|
-
> 四个 SDK
|
|
321
|
+
| `after_seq` | integer | 否 | 0 | 拉取 seq > after_seq 的消息 |
|
|
322
|
+
| `after_volatile_cursor` | string | 否 | SDK 当前游标 | 拉取该 opaque volatile 游标之后的消息;应用通常无需传入 |
|
|
323
|
+
| `limit` | integer | 否 | 50 | 单次返回上限(最大 50;`pull_max_limit` 配置只能在 1-50 内进一步收紧) |
|
|
324
|
+
| `device_id` | string | 否 | 当前连接实例 | 多实例消费上下文中的设备标识 |
|
|
325
|
+
|
|
326
|
+
> 四个 SDK 自动管理 `after_volatile_cursor`,并在传输层注入当前消费实例的内部 slot。slot 不属于应用参数,也不会出现在消息、响应或事件中。
|
|
309
327
|
|
|
310
328
|
### 响应
|
|
311
329
|
|
|
@@ -336,9 +354,13 @@ result = await client.call("message.thought.get", {
|
|
|
336
354
|
|
|
337
355
|
| 字段 | 类型 | 说明 |
|
|
338
356
|
|------|------|------|
|
|
339
|
-
| `messages` | array |
|
|
357
|
+
| `messages` | array | 持久与 volatile 消息按服务端时间合并;持久消息子序列仍按 `seq` 升序。消息对象含 `encrypted` 字段(仅 `encrypted=true` 时出现) |
|
|
340
358
|
| `count` | integer | 本次返回的消息数 |
|
|
341
|
-
| `latest_seq` | integer | 返回的最大 seq |
|
|
359
|
+
| `latest_seq` | integer | 返回的最大 seq |
|
|
360
|
+
| `latest_volatile_cursor` | string\|null | 本页最后一个 volatile 游标;不影响 `latest_seq` |
|
|
361
|
+
| `volatile_has_more` | boolean | 是否仍有未返回的 volatile 消息;SDK 在 volatile cursor 前进时据此继续分页 |
|
|
362
|
+
| `volatile_earliest_cursor` | string\|null | 当前 boot epoch 内仍可读取的最早 volatile 游标 |
|
|
363
|
+
| `volatile_dropped_count` | integer | 当前 boot epoch 内因过期或容量淘汰而不可读的累计数 |
|
|
342
364
|
| `server_ack_seq` | integer | 服务端已确认的 ack_seq(仅设备视图路径返回)。客户端用此值跳过 retention window 之外的空洞 |
|
|
343
365
|
| `retention_floor_seq` | integer | 持久化保留窗口的下界 seq;seq 小于等于此值的消息已过期不可再拉取 |
|
|
344
366
|
| `earliest_available_seq` | integer\|null | 当前可拉取的最小 seq(`retention_floor_seq + 1`);`retention_floor_seq=0` 时为 `null` |
|
|
@@ -347,6 +369,8 @@ result = await client.call("message.thought.get", {
|
|
|
347
369
|
|
|
348
370
|
`message.pull` 是公开的 Forward Pull。实时 A/T/H 最新页同步由 SDK 内部自动完成,不提供需要应用传入的模式参数。Forward 页通过结构校验后,本地 A 按原始页最大 seq 推进。页内缺号视为服务端永久空号;单条解密失败通过 `message.undecryptable` 报告,不阻塞后续水位。Forward 仍支持 Piggy ACK:存在待提交 ACK 时,即使当前页非满页也会再拉一页并携带 ACK,空页后停止。
|
|
349
371
|
|
|
372
|
+
四个 SDK 只让含正 `seq` 的持久消息进入 seq tracker。volatile push 与 pull 在进程内按发送方和 `message_id` 去重,成功交付后自动 ACK;epoch 不匹配时清空本地 volatile 游标并重试一次。`message.history` 永远不返回 volatile 消息。
|
|
373
|
+
|
|
350
374
|
`message.pull` 与 `message.history` 进入当前 `AUNClient` 的客户端级 Pull Gate。该 Gate 与 Group Message、Group Event Pull 共享,始终 single-inflight;相同请求 key 折叠并共享结果,不同 key 按前台 FIFO(Tail/History)优先于后台 FIFO(Forward/Gap Fill/Group Event)排队。不同 `AUNClient` 实例之间不共享 Gate,应用层无需自行实现并发控制。
|
|
351
375
|
|
|
352
376
|
解密当前消息时若缺少 sender IK,SDK 会把同发送端请求 single-flight 合并,最多同步等待 3 秒执行 bootstrap;获取成功立即重试当前消息,失败或超时才进入 pending。该补救不改变 Forward 按原始页推进 A 的规则。
|
|
@@ -395,7 +419,7 @@ while page.get("has_older"):
|
|
|
395
419
|
|
|
396
420
|
## message.ack
|
|
397
421
|
|
|
398
|
-
|
|
422
|
+
确认已收到消息。持久 ACK 与 volatile ACK 可以单独提交,也可以在同一请求中提交。
|
|
399
423
|
|
|
400
424
|
### 请求
|
|
401
425
|
|
|
@@ -404,9 +428,9 @@ while page.get("has_older"):
|
|
|
404
428
|
"jsonrpc": "2.0",
|
|
405
429
|
"method": "message.ack",
|
|
406
430
|
"params": {
|
|
407
|
-
"seq": 150,
|
|
408
|
-
"
|
|
409
|
-
"
|
|
431
|
+
"seq": 150,
|
|
432
|
+
"volatile_cursors": ["v1:i1:7:21"],
|
|
433
|
+
"device_id": "device-001"
|
|
410
434
|
},
|
|
411
435
|
"id": 3
|
|
412
436
|
}
|
|
@@ -416,11 +440,13 @@ while page.get("has_older"):
|
|
|
416
440
|
|
|
417
441
|
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
|
418
442
|
|------|------|------|--------|------|
|
|
419
|
-
| `seq` | integer |
|
|
420
|
-
| `
|
|
421
|
-
| `
|
|
422
|
-
|
|
423
|
-
|
|
443
|
+
| `seq` | integer | 否 | — | 确认 seq ≤ 此值的所有持久消息;未提交 volatile ACK 时必填 |
|
|
444
|
+
| `volatile_cursor` | string | 否 | — | 单个 volatile 游标的兼容形式 |
|
|
445
|
+
| `volatile_cursors` | string[] | 否 | — | 确认指定 volatile 游标;可独立于 `seq` 使用 |
|
|
446
|
+
| `volatile_ids` | string[] | 否 | — | 按 `message_id` 确认 volatile 消息 |
|
|
447
|
+
| `device_id` | string | 否 | 当前连接实例 | 多实例消费上下文中的设备标识 |
|
|
448
|
+
|
|
449
|
+
> 四个 SDK 在传输层注入当前消费实例的内部 slot;应用不传入或读取 slot。
|
|
424
450
|
|
|
425
451
|
### 响应
|
|
426
452
|
|
|
@@ -437,8 +463,9 @@ while page.get("has_older"):
|
|
|
437
463
|
|
|
438
464
|
| 字段 | 类型 | 说明 |
|
|
439
465
|
|------|------|------|
|
|
440
|
-
| `success` | boolean | 操作是否成功 |
|
|
441
|
-
| `ack_seq` | integer | 本次推进到的 ack_seq |
|
|
466
|
+
| `success` | boolean | 操作是否成功 |
|
|
467
|
+
| `ack_seq` | integer | 本次推进到的 ack_seq |
|
|
468
|
+
| `volatile_ack` | object | volatile ACK 的 `accepted`、`expired` 等幂等结果;只提交持久 ACK 时可省略 |
|
|
442
469
|
|
|
443
470
|
### 副作用
|
|
444
471
|
|
|
@@ -574,7 +601,8 @@ result = await client.call("message.ack", {"seq": 150})
|
|
|
574
601
|
"encrypted": false
|
|
575
602
|
},
|
|
576
603
|
"message_id": "uuid-1",
|
|
577
|
-
"from": "alice.agentid.pub",
|
|
604
|
+
"from": "alice.agentid.pub",
|
|
605
|
+
"sender_device_id": "alice-phone",
|
|
578
606
|
"to": "bob.agentid.pub",
|
|
579
607
|
"seq": 42,
|
|
580
608
|
"timestamp": 1234567890000,
|
|
@@ -594,7 +622,9 @@ result = await client.call("message.ack", {"seq": 150})
|
|
|
594
622
|
}
|
|
595
623
|
```
|
|
596
624
|
|
|
597
|
-
SDK 交付给应用层的 `payload` 是明文业务 JSON 对象;信封字段统一放在 `envelope`。`envelope` 只保留可转发的归一化元数据,`from` 由 `from_aid` / `sender_aid` 归一化而来,`timestamp` 由 `created_at` / `t_server` 归一化而来。0.5.x 当前仍保留顶层 `message_id` / `from` / `to` / `seq` / `timestamp` 等兼容别名;新代码应优先通过 `msg["envelope"]["from"]`、`msg["envelope"]["timestamp"]` 等路径访问。`envelope.agent_md.sender` / `envelope.agent_md.group` 是 agent.md 云端版本提示,SDK 会自动观察并写入本地 `remote_etag`。Gateway 可能附加 `proximity` 及 `same_device` / `same_egress_ip` / `same_network`,表示由 Gateway 基于连接上下文判断的近端关系提示,不参与 E2EE AAD 或业务鉴权。
|
|
625
|
+
SDK 交付给应用层的 `payload` 是明文业务 JSON 对象;信封字段统一放在 `envelope`。`sender_device_id` 是发送方设备标识,四个 SDK 均会保留给应用层,可用于把回复定向到原发送设备。`envelope` 只保留可转发的归一化元数据,`from` 由 `from_aid` / `sender_aid` 归一化而来,`timestamp` 由 `created_at` / `t_server` 归一化而来。0.5.x 当前仍保留顶层 `message_id` / `from` / `to` / `seq` / `timestamp` 等兼容别名;新代码应优先通过 `msg["envelope"]["from"]`、`msg["envelope"]["timestamp"]` 等路径访问。`envelope.agent_md.sender` / `envelope.agent_md.group` 是 agent.md 云端版本提示,SDK 会自动观察并写入本地 `remote_etag`。Gateway 可能附加 `proximity` 及 `same_device` / `same_egress_ip` / `same_network`,表示由 Gateway 基于连接上下文判断的近端关系提示,不参与 E2EE AAD 或业务鉴权。
|
|
626
|
+
|
|
627
|
+
volatile 事件额外包含 `storage="volatile"`、`volatile_cursor`、`created_at` 和 `expires_at`,不含持久 `seq`。四个 SDK 保留这些字段、自动去重和 ACK,并确保应用可见对象不含内部 slot。
|
|
598
628
|
|
|
599
629
|
### 订阅
|
|
600
630
|
|
|
@@ -12,9 +12,12 @@
|
|
|
12
12
|
| [storage.delete_object](#storagedelete_object) | 删除对象 |
|
|
13
13
|
| [storage.list_objects](#storagelist_objects) | 列举对象 |
|
|
14
14
|
| [storage.list_prefixes](#storagelist_prefixes) | 列举子目录 |
|
|
15
|
-
| [storage.get_quota](#storageget_quota) | 查询配额 |
|
|
16
|
-
| [storage.get_limits](#storageget_limits) | 查询上传限制 |
|
|
17
|
-
| [storage.check_upload](#storagecheck_upload) | 上传预检(秒传检测 + 超限检测) |
|
|
15
|
+
| [storage.get_quota](#storageget_quota) | 查询配额 |
|
|
16
|
+
| [storage.get_limits](#storageget_limits) | 查询上传限制 |
|
|
17
|
+
| [storage.check_upload](#storagecheck_upload) | 上传预检(秒传检测 + 超限检测) |
|
|
18
|
+
| [storage.relation_backup_provision](#storagerelation_backup_provision) | Auth 内部创建关系备份命名空间 |
|
|
19
|
+
| [storage.relation_backup_revoke](#storagerelation_backup_revoke) | Auth 内部撤销关系 ACL、保留数据 |
|
|
20
|
+
| [storage.relation_backup_status](#storagerelation_backup_status) | 查询关系备份命名空间状态 |
|
|
18
21
|
|
|
19
22
|
### 目录树方法
|
|
20
23
|
|
|
@@ -118,9 +121,31 @@
|
|
|
118
121
|
|
|
119
122
|
> `object_key` 当前仅支持 ASCII 安全字符集合 `[A-Za-z0-9._/-]`,且不允许空路径段、`..`、反斜杠转义后的非法段。
|
|
120
123
|
|
|
121
|
-
## SDK 封装状态
|
|
124
|
+
## SDK 封装状态
|
|
122
125
|
|
|
123
|
-
Python / Go / TypeScript / JavaScript SDK 均提供 storage low-level 与 VFS 门面。普通应用优先使用 SDK VFS:`write_bytes` / `upload_file` 会先 `check_upload`,小对象走 `put_object`,大对象走 `create_upload_session` → HTTP PUT → `complete_upload`,秒传路径用 `complete_upload(skip_blob=true)`;`read_bytes` / `download_file` 优先尝试 inline `get_object`,超限时回退 `create_download_ticket`;`touch` 直接封装 `storage.fs.touch`。需要精确控制 ACL、token、软链、卷、批量操作或 URL 字段时,再直接调用本手册中的 `storage.*` RPC。
|
|
126
|
+
Python / Go / TypeScript / JavaScript SDK 均提供 storage low-level 与 VFS 门面。普通应用优先使用 SDK VFS:`write_bytes` / `upload_file` 会先 `check_upload`,小对象走 `put_object`,大对象走 `create_upload_session` → HTTP PUT → `complete_upload`,秒传路径用 `complete_upload(skip_blob=true)`;`read_bytes` / `download_file` 优先尝试 inline `get_object`,超限时回退 `create_download_ticket`;`touch` 直接封装 `storage.fs.touch`。需要精确控制 ACL、token、软链、卷、批量操作或 URL 字段时,再直接调用本手册中的 `storage.*` RPC。
|
|
127
|
+
|
|
128
|
+
四个 SDK 的 VFS 会优先按实际字节识别 PNG、JPEG、GIF、BMP、WebP、PDF、gzip、ZIP、MP4、JSON、HTML 和 UTF-8 文本,再回退文件扩展名及 `application/octet-stream`。大文件上传时,`create_upload_session`、HTTP PUT 和 `complete_upload` 使用同一个 `Content-Type`;如果 session 响应额外提供 `headers`,SDK 会保留其它 header 并以实际识别结果替换其中的 Content-Type。OSS 预签名 PUT 会把 Content-Type 纳入签名校验,缺失或不一致时可直接返回 403。
|
|
129
|
+
|
|
130
|
+
直接调用底层 RPC 的高级客户端必须自行完成相同编排:先确定内容类型,再把同一个值传给 session 和 complete,并在 PUT 请求中发送一致的 `Content-Type`。绕过 VFS 后未遵守该约束属于调用方式错误。
|
|
131
|
+
|
|
132
|
+
## 关系备份命名空间(`relation_backup_*`)
|
|
133
|
+
|
|
134
|
+
这三个 RPC 是 owner relation 与 Storage 的内部接口。`relation_backup_provision` 和 `relation_backup_revoke` 只接受 Auth 服务调用(`_caller_id="auth"`);应用不应直接调用。`relation_backup_status` 允许当前 owner 或 subject 查询元数据。
|
|
135
|
+
|
|
136
|
+
### storage.relation_backup_provision
|
|
137
|
+
|
|
138
|
+
参数:`owner_aid`、`subject_aid`、`proof_id`、`relation_version`(均必填,external owner 与 subject 必须不同)。服务端在 owner 的 `default` bucket 创建或复用 `.aun/subjects/<lowercase_subject_aid>`,给 subject 授予 `rw` ACL。
|
|
139
|
+
|
|
140
|
+
响应字段:`schema`、`owner_aid`、`subject_aid`、`proof_id`、`relation_version`、`bucket`、`path`、`acl_source`(固定 `ownership_relation`)、`acl_generation`、`status`(`ready`)、`on_revoke`(`retain_data_revoke_acl`)、`data_retained`。首次 generation 为 1;同一 proof/version 重复调用幂等。
|
|
141
|
+
|
|
142
|
+
### storage.relation_backup_revoke
|
|
143
|
+
|
|
144
|
+
参数:`owner_aid`、`subject_aid`,可选 `expected_relation_version`。只撤销 subject 的关系 ACL,保留目录和数据;成功返回 `status=retained`、`data_retained=true`,`acl_generation` 递增。记录不存在返回 `-32008`,非 Auth 调用返回 `-32004`。
|
|
145
|
+
|
|
146
|
+
### storage.relation_backup_status
|
|
147
|
+
|
|
148
|
+
参数:`subject_aid` 必填,`owner_aid` 可选;调用者必须是 owner 或 subject。响应与 provision 相同,未创建记录返回 `status=pending`、`acl_generation=0`、`data_retained=false`。`path` 的 RPC 返回值为 `.aun/subjects/<lowercase_subject_aid>`(SDK VFS 可用带前导 `/` 的等价路径)。subject 只能访问自己的 ready 关系目录的后代;不能列举 `.aun/subjects/` 根或其它 subject,不能删除 subject 根,也不能修改 ACL、visibility、token、share、mount。
|
|
124
149
|
|
|
125
150
|
## storage.put_object
|
|
126
151
|
|
|
@@ -561,22 +586,27 @@ for obj in result["items"]:
|
|
|
561
586
|
|
|
562
587
|
### 响应
|
|
563
588
|
|
|
564
|
-
| 字段 | 类型 | 说明 |
|
|
565
|
-
|------|------|------|
|
|
566
|
-
| `upload_url` | string | 上传用 presigned URL |
|
|
567
|
-
| `
|
|
568
|
-
| `
|
|
569
|
-
| `
|
|
570
|
-
| `
|
|
571
|
-
| `
|
|
572
|
-
| `
|
|
573
|
-
| `
|
|
574
|
-
|
|
575
|
-
|
|
589
|
+
| 字段 | 类型 | 说明 |
|
|
590
|
+
|------|------|------|
|
|
591
|
+
| `upload_url` | string | 上传用 presigned URL |
|
|
592
|
+
| `expire_at` | integer | URL 过期时间戳 |
|
|
593
|
+
| `owner_aid` | string | 所有者 AID |
|
|
594
|
+
| `bucket` | string | 存储桶 |
|
|
595
|
+
| `object_key` | string | 对象路径 |
|
|
596
|
+
| `name` | string | 对象名称 |
|
|
597
|
+
| `path` | string | 对象路径 |
|
|
598
|
+
| `path_url` | string | Storage path URL |
|
|
599
|
+
| `url` / `download_url` | string | AID 风格对象 URL |
|
|
600
|
+
| `logical_url` | string | Storage 直链 URL |
|
|
601
|
+
| `content_type` | string | MIME 类型 |
|
|
602
|
+
| `size_bytes` | integer | 声明的文件大小 |
|
|
603
|
+
| `overwrite` | boolean | 是否覆盖已有对象 |
|
|
604
|
+
|
|
605
|
+
客户端获得 `upload_url` 后,通过 HTTP PUT 上传文件数据。当前服务响应不包含 `blob_key`、`session_id` 或 `headers`;调用方不得依赖这些字段。
|
|
576
606
|
|
|
577
607
|
> 当前实现会对 BlobStore 返回的 loopback URL 做对外地址规范化:优先使用 `KITE_STORAGE_EXTERNAL_URL`,否则按 `storage.{issuer}` 形式改写。对外地址不可使用 `127.0.0.1` 或 `localhost`。
|
|
578
608
|
|
|
579
|
-
>
|
|
609
|
+
> 当前实现会在 `create_upload_session` 阶段按声明的 `size_bytes` 校验最大文件限制;实际 blob 大小、SHA-256 和配额在 `storage.complete_upload` 阶段校验。
|
|
580
610
|
|
|
581
611
|
---
|
|
582
612
|
|
|
@@ -12,10 +12,10 @@ AUN SDK 文档位于 `docs/sdk/`,索引文件 `docs/sdk/INDEX.md` 分三层:
|
|
|
12
12
|
- `PushFacade`:Python SDK 的当前安装推送登记、注销和 Push Server 批次 ACK。
|
|
13
13
|
- `ServiceProxyClient`:Python SDK 的 Service Proxy provider 侧客户端,负责 Gateway 控制面注册和 proxy-server 数据面隧道注册。
|
|
14
14
|
|
|
15
|
-
业务 RPC 的底层参数见 `09-*-rpc-manual.md`。Agent.md Schema、签名和上传前校验见 `../agent.md/SCHEMA.md` 与 `04-连接与认证.md`。A/T/H、SDK 内部自动最新页同步、Forward 调度和每个 AUNClient 一个 Pull Gate(始终 single-inflight、相同 key 折叠、不同 key 排队、前台 FIFO 优先)见 `03-核心概念.md`;`message.history` / `group.history` 与 Piggy ACK 见 Message/Group RPC Manual。
|
|
15
|
+
业务 RPC 的底层参数见 `09-*-rpc-manual.md`。P2P device 定向发送、TTL volatile 消息、独立游标和 ACK 见 `09-message-rpc-manual.md`。Agent.md Schema、签名和上传前校验见 `../agent.md/SCHEMA.md` 与 `04-连接与认证.md`。A/T/H、SDK 内部自动最新页同步、Forward 调度和每个 AUNClient 一个 Pull Gate(始终 single-inflight、相同 key 折叠、不同 key 排队、前台 FIFO 优先)见 `03-核心概念.md`;`message.history` / `group.history` 与 Piggy ACK 见 Message/Group RPC Manual。
|
|
16
16
|
|
|
17
|
-
Storage 的 SDK VFS
|
|
18
|
-
Group FS 的 `group.fs.*` RPC
|
|
17
|
+
Storage 的 SDK VFS、实际字节 MIME 识别、session/PUT/complete Content-Type 一致性、OSS 403、direct backend 上传下载和 ticket / AID Bearer 边界见 `09-storage-rpc-manual.md` 与 `AUN Storage架构设计.md`。
|
|
18
|
+
Group 的成员 block/status、暂停群权限和两阶段群主转让,以及 Group FS 的 `group.fs.*` RPC、角色 ACL、`parents` 语义和 memberdata 映射见 `09-group-rpc-manual.md`。Collab 的 `gc`、`reflog`、`revert`、`clone` 及版本化文档/标签语义见 `09-collab-rpc-manual.md`。
|
|
19
19
|
|
|
20
20
|
## 渐进式查阅流程
|
|
21
21
|
|
|
@@ -33,13 +33,14 @@ Group FS 的 `group.fs.*` RPC、`client.group.fs.*` 门面、`aun group fs` CLI
|
|
|
33
33
|
- RPC 与事件:`client.call()`、`client.on()`、`client.notify()`、RPC 手册
|
|
34
34
|
- 离线推送:Python `connect()` 的 `push_notify_aid/push_token`、`client.push.register/unregister`、Push Server ACK
|
|
35
35
|
- 消息同步:A/T/H、Tail、Forward、History、页内唯一有序发布、应用层跨页幂等排序、每个 AUNClient 一个 Pull Gate(P2P Message/Group Message/Group Event Pull 共享,始终单飞、相同 key 折叠、不同 key 排队、前台 FIFO 优先)、`source` 来源、`sync.started/progress/stopped` 生命周期、缺 sender IK 有界同步 bootstrap、永久页内 Gap、坏密文推进
|
|
36
|
-
-
|
|
37
|
-
-
|
|
36
|
+
- P2P TTL 消息:`message.send.ttl` 秒级钳制、按 device 内存收件箱、volatile 双游标、自动 ACK/去重、服务 epoch 与重启语义
|
|
37
|
+
- Storage:SDK VFS、实际字节 MIME 识别、session/PUT/complete Content-Type 一致性、OSS 403、下载 ticket / AID Bearer 边界、`storage.*` low-level RPC
|
|
38
|
+
- Group RPC:成员 block/status、暂停群权限、两阶段群主转让、`group_aid` / `group_id` 兼容、`group.index` 签名索引与 CAS(见 `09-group-rpc-manual.md`、`06-API手册.md`)
|
|
38
39
|
- 群文件系统:`group.fs.*`、`client.group.fs.*`、`aun group fs`、`cp/mv` 上传下载、群自有区角色 ACL 与 `group_aid` 签名、`parents`、JS string 差异和 memberdata 服务端映射(见 `09-group-rpc-manual.md`)
|
|
39
40
|
- 协作(collab):`collab.*` 版本化文档、乐观锁 CAS commit、三方合并、标签、GC、reflog、revert(见 `09-collab-rpc-manual.md`)
|
|
40
41
|
- Service Proxy:`ServiceProxyClient`、`proxy.register_services`、proxy-server `register_services`
|
|
41
42
|
- agent.md:Schema/frontmatter、尾部签名、4 KiB/2048 字节限制、`AIDStore.register()` 默认自动上传、上传前完整校验、`agent_md_validation_v1`、`uploader_aid` / `uploaderAid`、`AIDStore.upload_agent_md()` / `download_agent_md()` / `check_agent_md()`、Gateway `_meta.agent_md_etags` 被动观察、`requester` / `peer` / `group` 角色
|
|
42
|
-
- 错误处理:Result
|
|
43
|
+
- 错误处理:Result、Python `ErrorInfo.cause`、异常、错误码、重试
|
|
43
44
|
|
|
44
45
|
### Step 3:读 Layer 3 摘要
|
|
45
46
|
|
|
@@ -56,9 +57,9 @@ Group FS 的 `group.fs.*` RPC、`client.group.fs.*` 门面、`aun group fs` CLI
|
|
|
56
57
|
| 04 | [连接与认证](04-连接与认证.md) | AIDStore、默认 agent.md 自动上传、连接生命周期并发/取消、当前 access token getter、网关发现、事件、agent.md 校验和自动观察 |
|
|
57
58
|
| 05 | [E2EE加密通信](05-E2EE加密通信.md) | E2EE V2、ProtectedHeaders、agent.md 版本提示、recipient wrap |
|
|
58
59
|
| 06 | [API手册](06-API手册.md) | AIDStore / Agent.md 校验签名 / AID / AUNClient 生命周期并发 / 四 SDK access token getter / 群组高层身份编排 / History 门面 / 消息来源与 Pull 同步生命周期 / 事件 / RPC |
|
|
59
|
-
| 07 | [错误处理](07-错误处理.md) | Result
|
|
60
|
+
| 07 | [错误处理](07-错误处理.md) | Result、Python `ErrorInfo.cause`、异常、错误码、重试 |
|
|
60
61
|
| 08 | [最佳实践](08-最佳实践.md) | 幂等、消息同步/History、AUNClient 级 Pull Gate(始终单飞)、测试数据 |
|
|
61
|
-
| - | [Storage RPC 手册](09-storage-rpc-manual.md) | Storage RPC
|
|
62
|
+
| - | [Storage RPC 手册](09-storage-rpc-manual.md) | Storage RPC、实际字节 MIME、三阶段 Content-Type、OSS 403、HTTP 下载与凭据边界 |
|
|
62
63
|
| - | [AUN Storage架构设计](<../aun-fs/AUN Storage架构设计.md>) | Storage SDK VFS、控制面/数据面分离、类 Linux 权限、mount/symlink、服务端分层 |
|
|
63
64
|
| 09 | `09-*-rpc-manual.md` | 各服务 RPC 参数和响应 |
|
|
64
65
|
| 09 | [Service Proxy RPC手册](09-proxy-rpc-manual.md) | `proxy.*` 控制面和 proxy-server 数据面注册 |
|
|
@@ -78,20 +79,23 @@ Group FS 的 `group.fs.*` RPC、`client.group.fs.*` 门面、`aun group fs` CLI
|
|
|
78
79
|
| 查 Capabilities 能力声明、实时推送优化 | [02-WebSocket协议](02-WebSocket协议.md)、[CHANGELOG-0.5.6](CHANGELOG-0.5.6.md) |
|
|
79
80
|
| 登记、更新或注销 `push_notify_aid` | [04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)、`docs/protocol/15-离线推送通知协议.md` |
|
|
80
81
|
| 查方法签名、群组高层 facade 和 `aid_store` / `aidStore` | [06-API手册](06-API手册.md) |
|
|
81
|
-
| 查消息或群组 RPC、群提及过滤 `mention_mode` | 对应 `09-*-rpc-manual.md`;`mention_mode` 详见 [09-group-rpc-manual.md](09-group-rpc-manual.md) |
|
|
82
|
+
| 查消息或群组 RPC、群提及过滤 `mention_mode` | 对应 `09-*-rpc-manual.md`;`mention_mode` 详见 [09-group-rpc-manual.md](09-group-rpc-manual.md) |
|
|
83
|
+
| 查 P2P device 定向发送或 TTL volatile 消息 | [06-API手册](06-API手册.md)、[09-message-rpc-manual.md](09-message-rpc-manual.md) |
|
|
82
84
|
| 查 A/T/H、SDK 自动最新页同步与 AUNClient 级 Pull Gate | [03-核心概念.md](03-核心概念.md)、[08-最佳实践.md](08-最佳实践.md)、[09-message-rpc-manual.md](09-message-rpc-manual.md)、[09-group-rpc-manual.md](09-group-rpc-manual.md) |
|
|
83
85
|
| 查消息事件 `source`、`sync.started/progress/stopped` 和 `delivery.changed` | [06-API手册](06-API手册.md) |
|
|
84
86
|
| 查 History、Forward、Pull Gate、Group 成员可见性 floor 与 Piggy ACK | [09-message-rpc-manual.md](09-message-rpc-manual.md)、[09-group-rpc-manual.md](09-group-rpc-manual.md) |
|
|
85
|
-
| 查群组标识 `group_aid` / `group_id` 兼容规范 | [09-group-rpc-manual.md](09-group-rpc-manual.md) |
|
|
87
|
+
| 查群组标识 `group_aid` / `group_id` 兼容规范 | [09-group-rpc-manual.md](09-group-rpc-manual.md) |
|
|
88
|
+
| 查成员 block/status、暂停群发言权限或两阶段群主转让 | [09-group-rpc-manual.md](09-group-rpc-manual.md)、[06-API手册](06-API手册.md) |
|
|
86
89
|
| 查 group.index 签名索引、版本观察、不同步判断、CAS 更新和 facade | [03-核心概念.md](03-核心概念.md)、[06-API手册.md](06-API手册.md)、[09-group-rpc-manual.md](09-group-rpc-manual.md)、[08-最佳实践.md](08-最佳实践.md) |
|
|
87
90
|
| 查群文件系统 RPC / SDK / CLI 入口、群自有区角色 ACL 授权/撤销/查询、`parents` 和 JS string 差异 | [09-group-rpc-manual.md](09-group-rpc-manual.md)、[06-API手册](06-API手册.md) |
|
|
88
91
|
| 查 Storage 架构、SDK VFS、权限模型和 mount/symlink | [AUN Storage架构设计.md](<../aun-fs/AUN Storage架构设计.md>) |
|
|
89
|
-
| 查 Storage
|
|
92
|
+
| 查 Storage MIME 识别、session/PUT/complete Content-Type、OSS 403 或底层 RPC 调用责任 | [09-storage-rpc-manual.md](09-storage-rpc-manual.md)、[06-API手册](06-API手册.md) |
|
|
93
|
+
| 查 Storage 数据面 HTTP 下载流程和 ticket / AID Bearer 边界 | [09-storage-rpc-manual.md](09-storage-rpc-manual.md) |
|
|
90
94
|
| 查协作(版本化文档/乐观锁/标签/GC/reflog/revert)RPC | [09-collab-rpc-manual.md](09-collab-rpc-manual.md) |
|
|
91
95
|
| 查 notify 在线轻量通知 / 跨域 federation | [Notify通知方案.md](Notify通知方案.md) |
|
|
92
96
|
| 查 Service Proxy 服务注册和路由 | [06-API手册](06-API手册.md)、[09-proxy-rpc-manual.md](09-proxy-rpc-manual.md) |
|
|
93
97
|
| 查 payload 格式 | [09-payload-reference.md](09-payload-reference.md) |
|
|
94
|
-
|
|
|
98
|
+
| 排查错误或读取 Python 本地原始异常 `cause` | [07-错误处理](07-错误处理.md) |
|
|
95
99
|
| 写测试或 demo | [08-最佳实践](08-最佳实践.md) |
|
|
96
100
|
|
|
97
101
|
|
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
| [04-连接与认证](04-连接与认证.md) | 注册加载 · 认证连接 · 当前 access token getter · Python Push 自动登记 · 网关发现 · 事件 · agent.md 自动观察 |
|
|
16
16
|
| [05-E2EE加密通信](05-E2EE加密通信.md) | E2EE V2 消息 · ProtectedHeaders · agent.md 版本提示 · recipient wrap |
|
|
17
17
|
| [E2EE_V2消息通信时序图](E2EE_V2消息通信时序图.md) | V2 P2P/GROUP 明文与加密主链路 |
|
|
18
|
-
| [06-API手册](06-API手册.md) | AIDStore · AID · AUNClient · 四 SDK access token getter · Python PushFacade · Message/Group History 门面 · 消息来源与 Pull 同步生命周期 · 事件 · E2EE 高级 API · RPC 索引 |
|
|
19
|
-
| [07-错误处理](07-错误处理.md) | Result · 错误类层级 · 错误码 · 重试 |
|
|
18
|
+
| [06-API手册](06-API手册.md) | AIDStore · AID · AUNClient · 四 SDK access token getter · Python PushFacade · P2P TTL volatile 消息 · Message/Group History 门面 · 消息来源与 Pull 同步生命周期 · 事件 · E2EE 高级 API · RPC 索引 |
|
|
19
|
+
| [07-错误处理](07-错误处理.md) | Result · Python `ErrorInfo.cause` · 错误类层级 · 错误码 · 重试 |
|
|
20
20
|
| [08-最佳实践](08-最佳实践.md) | 幂等连接 · 消息同步/History · AUNClient 级 Pull Gate(始终单飞)· group.index · 测试数据保护 |
|
|
21
21
|
| [09-payload-reference](09-payload-reference.md) | message / group / thought payload 格式 |
|
|
22
|
-
| [09-message-rpc-manual](09-message-rpc-manual.md) | P2P 消息 RPC(含 Forward Pull、`message.history`、Piggy ACK、实时推送内联载荷) |
|
|
23
|
-
| [09-group-rpc-manual](09-group-rpc-manual.md) | 群组 RPC
|
|
24
|
-
| [09-storage-rpc-manual](09-storage-rpc-manual.md) | 存储 RPC
|
|
22
|
+
| [09-message-rpc-manual](09-message-rpc-manual.md) | P2P 消息 RPC(含 device 定向发送、TTL volatile 消息、双游标/ACK、Forward Pull、`message.history`、Piggy ACK、实时推送内联载荷) |
|
|
23
|
+
| [09-group-rpc-manual](09-group-rpc-manual.md) | 群组 RPC(含成员 block/status、两阶段群主转让、Group Forward、`group.history`、`group.index`、Group FS MIME/Content-Type 与角色 ACL) |
|
|
24
|
+
| [09-storage-rpc-manual](09-storage-rpc-manual.md) | 存储 RPC(含实际字节 MIME 识别、session/PUT/complete Content-Type 一致性、OSS 403、POSIX VFS / ACL / token) |
|
|
25
25
|
| [09-collab-rpc-manual](09-collab-rpc-manual.md) | 协作 RPC(版本化文档 / 乐观锁 / 三方合并 / 标签 / GC / reflog / revert) |
|
|
26
26
|
| [group.fs POSIX 化详细设计](../aun-fs/group-fs/group.fs-POSIX化详细设计.md) | `client.group.fs.*` / `aun group fs` / `group.fs.*` 群文件系统设计,含群自有区角色 ACL、`parents` 和 JS string 语义 |
|
|
27
27
|
| [group.fs POSIX 化分阶段实施计划](../aun-fs/group-fs/group.fs-POSIX化分阶段实施计划.md) | group.fs 重构的 IPO、Step-by-step、用例集、Checklist、验收和回滚 |
|
|
@@ -39,7 +39,8 @@
|
|
|
39
39
|
### 身份与认证
|
|
40
40
|
|
|
41
41
|
- AID 格式、证书、不可变值对象 → [03-核心概念](03-核心概念.md)
|
|
42
|
-
- `AIDStore.register()` / `load()` / `exists()` / `resolve()` → [04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)
|
|
42
|
+
- `AIDStore.register()` / `load()` / `exists()` / `resolve()` → [04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)
|
|
43
|
+
- 新 AID 的 `register({aid, type, owner?})`、legacy/unbound AID 的 `bind_aid`/`bindAid`、`change_owner`、ownership proof 与 relation operation 恢复 → [06-API手册](06-API手册.md)、[04-连接与认证](04-连接与认证.md)、[../protocol/01-身份与凭证协议-auth.md](../protocol/01-身份与凭证协议-auth.md)
|
|
43
44
|
- agent.md 上传/下载/检查、`remote_etag` / `last_modified` 自动观察、`requester` / `peer` / `group` 角色 → [04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)、[远程 agent.md 缓存与 ETag 透传方案](../agent.md/远程agent.md缓存与etag透传方案.md)
|
|
44
45
|
- AID 构造约束与多语言入口 → [01-快速开始](01-快速开始.md)、[06-API手册](06-API手册.md)
|
|
45
46
|
- 认证链路、后台刷新和当前 token getter(`get_access_token()` / `getAccessToken()` / `GetAccessToken()`)→ [03-核心概念](03-核心概念.md)、[04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)
|
|
@@ -68,11 +69,11 @@
|
|
|
68
69
|
- Python `connect()` 携带 `push_notify_aid/push_token` 自动登记,以及 `client.push.register/unregister` 运行期变更 → [04-连接与认证](04-连接与认证.md)、[06-API手册](06-API手册.md)、`docs/protocol/15-离线推送通知协议.md`
|
|
69
70
|
- `client.notify()` 在线轻量通知、跨域 federation、在线/离线边界 → [Notify通知方案](Notify通知方案.md)
|
|
70
71
|
- A/T/H 实时窗口、页内唯一有序发布、应用层跨页幂等排序、每个 AUNClient 一个 Pull Gate(始终 single-inflight、相同 key 折叠、不同 key 排队、前台 FIFO 优先)、缺 sender IK 有界同步 bootstrap、永久页内 Gap、坏密文推进 → [03-核心概念](03-核心概念.md)、[05-E2EE加密通信](05-E2EE加密通信.md)、[08-最佳实践](08-最佳实践.md)
|
|
71
|
-
-
|
|
72
|
-
- Group Forward/History
|
|
72
|
+
- P2P device 定向发送、TTL volatile 消息、双游标/ACK、Forward/History/Piggy ACK → [09-message-rpc-manual](09-message-rpc-manual.md)
|
|
73
|
+
- Group 成员 block/status、暂停群权限、两阶段群主转让、Forward/History、`group.index`、Group FS MIME/Content-Type 和角色 ACL → [09-group-rpc-manual](09-group-rpc-manual.md)
|
|
73
74
|
- 下一版群文件系统 `group.fs.*`、`client.group.fs.*`、`aun group fs`、`cp/mv` POSIX 化语义和 JS string 差异 → [group.fs POSIX 化详细设计](../aun-fs/group-fs/group.fs-POSIX化详细设计.md)、[分阶段实施计划](../aun-fs/group-fs/group.fs-POSIX化分阶段实施计划.md)
|
|
74
75
|
- Storage 架构、SDK VFS、控制面/数据面分离、下载 ticket / AID Bearer 边界、类 Linux 权限和 mount/symlink → [AUN Storage架构设计](<../aun-fs/AUN Storage架构设计.md>)
|
|
75
|
-
- Storage RPC
|
|
76
|
+
- Storage RPC、实际字节 MIME 识别、三阶段 Content-Type 一致性与 OSS 403、`storage.fs.*` / ACL / token、`relation_backup_*` → [09-storage-rpc-manual](09-storage-rpc-manual.md)、[../protocol/11-Storage-子协议.md](../protocol/11-Storage-子协议.md)
|
|
76
77
|
- Collab RPC(`collab.*` 版本化文档、乐观锁、标签、GC、reflog、revert)→ [09-collab-rpc-manual](09-collab-rpc-manual.md)
|
|
77
78
|
- Meta RPC → [09-meta-rpc-manual](09-meta-rpc-manual.md)
|
|
78
79
|
- Stream RPC → [09-stream-rpc-manual](09-stream-rpc-manual.md)
|
|
@@ -81,7 +82,7 @@
|
|
|
81
82
|
|
|
82
83
|
### 错误与测试
|
|
83
84
|
|
|
84
|
-
- Result 与异常层级 → [07-错误处理](07-错误处理.md)
|
|
85
|
+
- Result、Python `ErrorInfo.cause` 与异常层级 → [07-错误处理](07-错误处理.md)
|
|
85
86
|
- 重试策略 → [07-错误处理](07-错误处理.md)
|
|
86
87
|
- 幂等连接、多 AID、资源清理 → [08-最佳实践](08-最佳实践.md)
|
|
87
88
|
- 集成 / E2E 运行顺序 → [../aun测试运行指南.md](../aun测试运行指南.md);分布式 worktree 测试 → [../aun分布式测试运行指南.md](../aun分布式测试运行指南.md)
|
|
@@ -116,11 +117,11 @@
|
|
|
116
117
|
|
|
117
118
|
### 06-API手册
|
|
118
119
|
|
|
119
|
-
列出 AIDStore、AID、AUNClient(含四 SDK 当前 access token getter)、Python PushFacade、Message/Group History 门面、事件、agent.md、ServiceProxyClient、E2EE 高级 API、Group Index facade 和 RPC 手册索引。
|
|
120
|
+
列出 AIDStore、AID、AUNClient(含四 SDK 当前 access token getter)、Python PushFacade、P2P TTL volatile 消息、Message/Group History 门面、事件、agent.md、ServiceProxyClient、E2EE 高级 API、Group Index facade 和 RPC 手册索引。
|
|
120
121
|
|
|
121
122
|
### 07-错误处理
|
|
122
123
|
|
|
123
|
-
说明 Result 字典、AUNError 异常层级、错误码映射、重试策略、`group.index etag conflict` CAS 冲突处理和常见错误场景。
|
|
124
|
+
说明 Result 字典、Python 本地原始异常 `ErrorInfo.cause`、AUNError 异常层级、错误码映射、重试策略、`group.index etag conflict` CAS 冲突处理和常见错误场景。
|
|
124
125
|
|
|
125
126
|
### 08-最佳实践
|
|
126
127
|
|
|
@@ -128,7 +129,7 @@
|
|
|
128
129
|
|
|
129
130
|
### 09-*-rpc-manual
|
|
130
131
|
|
|
131
|
-
各业务服务的 RPC 参数、响应和错误语义。Message
|
|
132
|
+
各业务服务的 RPC 参数、响应和错误语义。Message RPC 覆盖 device 定向发送、TTL volatile 双游标/ACK;Group RPC 覆盖成员 block/status、暂停群权限、两阶段群主转让、Group Event 独立游标和 Group FS MIME/Content-Type;Storage RPC 覆盖实际字节 MIME 识别、session/PUT/complete Content-Type 一致性和 OSS 403。
|
|
132
133
|
|
|
133
134
|
### AUN Storage架构设计
|
|
134
135
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-md-schema.d.ts","sourceRoot":"","sources":["../src/agent-md-schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-md-schema.d.ts","sourceRoot":"","sources":["../src/agent-md-schema.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAqBjD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO;;;;EAmC/J;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO5H;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,GAAG,CAAC,EAAE,MAAM,EACZ,sBAAsB,UAAO,GAC5B,IAAI,CASN"}
|
package/dist/agent-md-schema.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ValidationError } from './errors.js';
|
|
2
2
|
import { parseAgentMdTailSignature, parseCertMetadata, verifySignatureWithCert, certFingerprint, publicKeyMatchesFingerprint, isStrictBase64 } from './cert-utils.js';
|
|
3
3
|
import { parseDocument } from 'yaml';
|
|
4
|
+
import { validateOwnershipFrontmatter } from './ownership-proof.js';
|
|
4
5
|
const AID_RE = /^[A-Za-z0-9_][A-Za-z0-9_-]*(?:\.[A-Za-z0-9_][A-Za-z0-9_-]*)+$/;
|
|
5
6
|
const SEMVER_RE = /^\d+\.\d+\.\d+$/;
|
|
6
7
|
export const AGENT_MD_MAX_SIGNATURE_BYTES = 2048;
|
|
@@ -67,6 +68,7 @@ export function validateAgentMdDocument(content, opts = {}) {
|
|
|
67
68
|
}
|
|
68
69
|
if (meta.tags !== undefined && (!Array.isArray(meta.tags) || meta.tags.some((item) => typeof item !== 'string')))
|
|
69
70
|
throw new ValidationError('agent.md tags must be an array of strings');
|
|
71
|
+
validateOwnershipFrontmatter(meta, opts.expectedAid);
|
|
70
72
|
const fields = parsed.fields;
|
|
71
73
|
if (fields) {
|
|
72
74
|
if (Object.keys(fields).some((key) => !['cert_fingerprint', 'public_key_fingerprint', 'timestamp', 'signature'].includes(key)))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-md-schema.js","sourceRoot":"","sources":["../src/agent-md-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,eAAe,EAAE,2BAA2B,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtK,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-md-schema.js","sourceRoot":"","sources":["../src/agent-md-schema.ts"],"names":[],"mappings":"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"}
|
package/dist/agent-md.d.ts
CHANGED
|
@@ -44,6 +44,7 @@ export interface AgentMdManagerOptions {
|
|
|
44
44
|
aunPath: string;
|
|
45
45
|
tokenStore?: TokenStore;
|
|
46
46
|
logger?: ModuleLogger | null;
|
|
47
|
+
onChanged?: (aid: string) => void;
|
|
47
48
|
uploadViaGatewayHost?: boolean;
|
|
48
49
|
ownerAidGetter?: () => string | null | undefined;
|
|
49
50
|
currentAidGetter?: () => AID | null | undefined;
|
|
@@ -58,6 +59,7 @@ export declare class AgentMdManager {
|
|
|
58
59
|
private _uploadViaGatewayHost;
|
|
59
60
|
private _tokenStore?;
|
|
60
61
|
private _log;
|
|
62
|
+
private _onChanged?;
|
|
61
63
|
private _ownerAidGetter?;
|
|
62
64
|
private _currentAidGetter?;
|
|
63
65
|
private _gatewayResolver?;
|
|
@@ -74,7 +76,7 @@ export declare class AgentMdManager {
|
|
|
74
76
|
get root(): string;
|
|
75
77
|
setAunPath(aunPath: string): void;
|
|
76
78
|
setRoot(root?: string | null): string;
|
|
77
|
-
upload(content?: string | null): Promise<Record<string, unknown>>;
|
|
79
|
+
upload(content?: string | null, ownerOperationId?: string | null): Promise<Record<string, unknown>>;
|
|
78
80
|
download(aid?: string | null, timeoutMs?: number): Promise<AgentMdDownloadResult>;
|
|
79
81
|
check(aid?: string | null, ttlDays?: number): Promise<AgentMdCheckResult>;
|
|
80
82
|
observeMeta(aid: string, etag?: string, lastModified?: string, source?: string): Promise<void>;
|
package/dist/agent-md.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-md.d.ts","sourceRoot":"","sources":["../src/agent-md.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent-md.d.ts","sourceRoot":"","sources":["../src/agent-md.ts"],"names":[],"mappings":"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"}
|