@agentunion/fastaun-browser 0.4.12 → 0.5.0
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 +480 -359
- package/_packed_docs/CHANGELOG.md +480 -359
- package/_packed_docs/INDEX.md +111 -53
- package/_packed_docs/KITE_DOCS_GUIDE.md +43 -29
- package/_packed_docs/agent.md/SCHEMA.md +2 -0
- package/_packed_docs/agent.md/examples/codeagent-claudecode.md +2 -0
- package/_packed_docs/agent.md/examples/human-developer.md +2 -0
- package/_packed_docs/agent.md/examples/openclaw-lobster.md +2 -0
- package/_packed_docs/agent.md/examples/signed-openclaw-lobster.md +2 -0
- 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 +2 -0
- package/_packed_docs/cli/AUN-CLI/350/256/276/350/256/241/346/226/207/346/241/243.md +265 -686
- package/_packed_docs/collab-gateway-boundary-test-report.md +164 -0
- package/_packed_docs/design/2026-05-22-aun-rpc-trace-enhancement.md +2 -0
- package/_packed_docs/design/AUNClient/346/213/206/345/210/206/351/207/215/346/236/204/346/211/247/350/241/214/346/226/271/346/241/210.md +2 -0
- 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 +2 -0
- 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 +2 -0
- package/_packed_docs/protocol/00-/346/200/273/350/247/210/344/270/216/345/210/206/345/261/202.md +2 -0
- 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 +2 -0
- 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 -0
- package/_packed_docs/protocol/02-/350/257/201/344/271/246/344/270/216/344/277/241/344/273/273/344/275/223/347/263/273.md +2 -0
- package/_packed_docs/protocol/03-Gateway-/350/277/236/346/216/245/346/250/241/345/274/217.md +2 -0
- package/_packed_docs/protocol/04-Peer-/345/255/220/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/protocol/05-Relay-/345/255/220/345/215/217/350/256/256.md +2 -0
- 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 +2 -0
- package/_packed_docs/protocol/08-AUN-E2EE-Group.md +2 -0
- package/_packed_docs/protocol/08-AUN-E2EE.md +2 -0
- package/_packed_docs/protocol/09-/345/256/211/345/205/250/350/200/203/350/231/221.md +2 -0
- package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +28 -85
- package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +49 -0
- package/_packed_docs/protocol/12-Stream-/345/255/220/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/protocol/13-Agent/350/241/214/344/270/272/350/247/204/350/214/203.md +2 -0
- 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 +2 -0
- 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 +2 -0
- package/_packed_docs/protocol/README.md +2 -0
- package/_packed_docs/protocol/agent.md/SCHEMA.md +2 -0
- package/_packed_docs/protocol/agent.md/examples/codeagent-claudecode.md +2 -0
- package/_packed_docs/protocol/agent.md/examples/human-developer.md +2 -0
- package/_packed_docs/protocol/agent.md/examples/openclaw-lobster.md +2 -0
- package/_packed_docs/protocol/aun-docs-guide.md +2 -0
- package/_packed_docs/protocol/index.md +3 -1
- package/_packed_docs/protocol//350/215/211/346/241/210-agent.md/347/255/276/345/220/215/345/215/217/350/256/256.md +2 -0
- 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 +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225A-/346/234/257/350/257/255/350/241/250.md +2 -0
- 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 +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225C-/347/247/201/351/222/245/347/256/241/347/220/206/344/270/216/350/272/253/344/273/275/346/201/242/345/244/215.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225D-Root_CA_/346/262/273/347/220/206/346/234/272/345/210/266.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225E-Root_CA_/345/207/206/345/205/245/346/265/201/347/250/213.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225F-Issuer_CA_/347/224/263/350/257/267/346/265/201/347/250/213.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225G-AID_/345/255/244/345/204/277/351/242/204/351/230/262/344/270/216/346/225/221/346/217/264/346/234/272/345/210/266.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225H-Identity/346/234/215/345/212/241/345/256/236/347/216/260/346/214/207/345/215/227.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225I-/350/267/250/345/237/237/346/266/210/346/201/257/350/267/257/347/224/261/345/256/236/347/216/260/346/214/207/345/215/227.md +2 -0
- 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 +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225K-Agent_Web/345/217/221/347/216/260/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/protocol//351/231/204/345/275/225L-E2EE/345/256/236/347/216/260/346/214/207/345/215/227.md +2 -0
- 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 +2 -0
- 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 +2 -0
- package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +2 -0
- package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +2 -0
- package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +2 -0
- package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +2 -0
- package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +283 -267
- package/_packed_docs/sdk/07-/351/224/231/350/257/257/345/244/204/347/220/206.md +4 -1
- package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +2 -0
- package/_packed_docs/sdk/09-collab-rpc-manual.md +550 -0
- package/_packed_docs/sdk/09-custody-api-manual.md +2 -0
- package/_packed_docs/sdk/09-group-rpc-manual.md +197 -445
- package/_packed_docs/sdk/09-message-rpc-manual.md +8 -7
- package/_packed_docs/sdk/09-meta-rpc-manual.md +2 -0
- package/_packed_docs/sdk/09-payload-reference.md +2 -0
- package/_packed_docs/sdk/09-proxy-rpc-manual.md +2 -0
- package/_packed_docs/sdk/09-storage-rpc-manual.md +952 -279
- package/_packed_docs/sdk/09-stream-rpc-manual.md +2 -0
- package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +33 -20
- 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 +2 -0
- package/_packed_docs/sdk/INDEX.md +46 -29
- package/_packed_docs/sdk/Notify/351/200/232/347/237/245/346/226/271/346/241/210.md +2 -0
- package/_packed_docs/sdk/README.md +17 -15
- package/dist/aid-store.d.ts +25 -0
- package/dist/aid-store.d.ts.map +1 -1
- package/dist/aid-store.js +89 -8
- package/dist/aid-store.js.map +1 -1
- package/dist/auth.d.ts +2 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +98 -9
- package/dist/auth.js.map +1 -1
- package/dist/bundle.js +19156 -16554
- package/dist/client/delivery.d.ts +5 -0
- package/dist/client/delivery.d.ts.map +1 -1
- package/dist/client/delivery.js +169 -15
- package/dist/client/delivery.js.map +1 -1
- package/dist/client/rpc-pipeline.d.ts +1 -0
- package/dist/client/rpc-pipeline.d.ts.map +1 -1
- package/dist/client/rpc-pipeline.js +76 -34
- package/dist/client/rpc-pipeline.js.map +1 -1
- package/dist/client/v2-e2ee.d.ts.map +1 -1
- package/dist/client/v2-e2ee.js +67 -8
- package/dist/client/v2-e2ee.js.map +1 -1
- package/dist/client.d.ts +31 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +313 -23
- package/dist/client.js.map +1 -1
- package/dist/collab/client.d.ts +39 -0
- package/dist/collab/client.d.ts.map +1 -0
- package/dist/collab/client.js +124 -0
- package/dist/collab/client.js.map +1 -0
- package/dist/collab/errors.d.ts +16 -0
- package/dist/collab/errors.d.ts.map +1 -0
- package/dist/collab/errors.js +60 -0
- package/dist/collab/errors.js.map +1 -0
- package/dist/collab/index.d.ts +4 -0
- package/dist/collab/index.d.ts.map +1 -0
- package/dist/collab/index.js +4 -0
- package/dist/collab/index.js.map +1 -0
- package/dist/collab/types.d.ts +111 -0
- package/dist/collab/types.d.ts.map +1 -0
- package/dist/collab/types.js +2 -0
- package/dist/collab/types.js.map +1 -0
- package/dist/crypto.d.ts +6 -0
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +6 -0
- package/dist/crypto.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +16 -1
- package/dist/errors.js.map +1 -1
- package/dist/facades.d.ts +89 -0
- package/dist/facades.d.ts.map +1 -0
- package/dist/facades.js +228 -0
- package/dist/facades.js.map +1 -0
- package/dist/group-fs.d.ts +103 -0
- package/dist/group-fs.d.ts.map +1 -0
- package/dist/group-fs.js +496 -0
- package/dist/group-fs.js.map +1 -0
- package/dist/group-resources.d.ts +98 -0
- package/dist/group-resources.d.ts.map +1 -0
- package/dist/group-resources.js +635 -0
- package/dist/group-resources.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/register-flow.d.ts +1 -0
- package/dist/register-flow.d.ts.map +1 -1
- package/dist/register-flow.js +3 -0
- package/dist/register-flow.js.map +1 -1
- package/dist/service-proxy.d.ts +1 -0
- package/dist/service-proxy.d.ts.map +1 -1
- package/dist/service-proxy.js +15 -3
- package/dist/service-proxy.js.map +1 -1
- package/dist/storage/errors.d.ts +28 -0
- package/dist/storage/errors.d.ts.map +1 -0
- package/dist/storage/errors.js +65 -0
- package/dist/storage/errors.js.map +1 -0
- package/dist/storage/index.d.ts +2 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +2 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/lowlevel.d.ts +314 -0
- package/dist/storage/lowlevel.d.ts.map +1 -0
- package/dist/storage/lowlevel.js +460 -0
- package/dist/storage/lowlevel.js.map +1 -0
- package/dist/storage/types.d.ts +59 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +113 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/storage/vfs.d.ts +144 -0
- package/dist/storage/vfs.d.ts.map +1 -0
- package/dist/storage/vfs.js +403 -0
- package/dist/storage/vfs.js.map +1 -0
- package/dist/tools/cross-sdk-agent.d.ts +3 -0
- package/dist/tools/cross-sdk-agent.d.ts.map +1 -0
- package/dist/tools/cross-sdk-agent.js +1089 -0
- package/dist/tools/cross-sdk-agent.js.map +1 -0
- package/dist/transport.d.ts +3 -0
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +33 -13
- package/dist/transport.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +44 -44
|
@@ -61,7 +61,8 @@ except AUNError as e:
|
|
|
61
61
|
| -32009 | 版本冲突 | `VersionConflictError` |
|
|
62
62
|
| -32010 / -32011 / -32013 | 会话错误 | `SessionError` |
|
|
63
63
|
| -32051 | 客户端签名验证失败 | `ClientSignatureError`(继承自 `ValidationError`) |
|
|
64
|
-
| -32029 |
|
|
64
|
+
| -32029 | 请求限流(目标/联邦维度) | `RateLimitError` |
|
|
65
|
+
| -32429 | 请求限流(Gateway 入口背压,排队超时) | `RateLimitError` |
|
|
65
66
|
| -32600 / -32601 / -32602 | JSON-RPC 参数错误 | `ValidationError` |
|
|
66
67
|
| -32040 ~ -32044 | E2EE 群组错误 | `E2EEError` 子类 |
|
|
67
68
|
| 4090 | 身份冲突 | `IdentityConflictError` |
|
|
@@ -149,3 +150,5 @@ if not client.can_send:
|
|
|
149
150
|
### E2EE 解密失败
|
|
150
151
|
|
|
151
152
|
P2P 或群消息解密失败通常由 prekey 不匹配、AAD 篡改、密文损坏或群 epoch 不一致引起。SDK 会发布 `message.undecryptable` / `group.message_undecryptable` 事件,应用可记录并继续处理其他消息。
|
|
153
|
+
|
|
154
|
+
|
|
@@ -0,0 +1,550 @@
|
|
|
1
|
+
# 协作 — RPC Manual
|
|
2
|
+
|
|
3
|
+
> collab 层是「锚定在某块存储上的自包含版本化目录」。每个协作文档有独立版本线(`<doc>@current` 软链 + 台账),整目录有标签线(公开 API 为 `collab.tag.*`;内部仍使用 `@snapshot` 软链和 `.collab-snapshots/` manifest)。
|
|
4
|
+
>
|
|
5
|
+
> **服务端编排**:collab 编排已并入 storage 服务进程,`collab.*` RPC handler 与 `storage.*` 并列注册。collab handler 以调用者身份(Gateway 注入的 `_auth.aid`)直调 storage 原语,无特权通道。
|
|
6
|
+
>
|
|
7
|
+
> **授权 = 存储 ACL**:谁能 `commit` = 谁对 `collab_root` 有写权限(`storage.set_acl`)。无独立发起人特权。
|
|
8
|
+
>
|
|
9
|
+
> SDK 侧通过 `client.collab` 访问(`CollabClient`),每个命令 1:1 映射一条 `collab.*` RPC。
|
|
10
|
+
|
|
11
|
+
## 方法索引
|
|
12
|
+
|
|
13
|
+
### 文档版本线
|
|
14
|
+
|
|
15
|
+
| 方法 | 说明 |
|
|
16
|
+
|------|------|
|
|
17
|
+
| [collab.ls-files](#collabls-files) | 列出协作根下所有文档 |
|
|
18
|
+
| [collab.create](#collabcreate) | 创建协作文档(首版本) |
|
|
19
|
+
| [collab.show](#collabshow) | 读当前或指定版本内容 |
|
|
20
|
+
| [collab.commit](#collabcommit) | 提交新版本(乐观锁 CAS) |
|
|
21
|
+
| [collab.merge](#collabmerge) | 三方合并(服务端 diff3) |
|
|
22
|
+
| [collab.log](#collablog) | 查版本台账 |
|
|
23
|
+
| [collab.diff](#collabdiff) | 比较两版本 |
|
|
24
|
+
| [collab.revert](#collabrevert) | 以历史版本内容提交一个新版本 |
|
|
25
|
+
| [collab.prune](#collabprune) | 清理某文档的历史版本文件 |
|
|
26
|
+
|
|
27
|
+
### 运维、备份与迁移
|
|
28
|
+
|
|
29
|
+
| 方法 | 说明 |
|
|
30
|
+
|------|------|
|
|
31
|
+
| [collab.gc](#collabgc) | 扫描不可达版本文件并可选删除 |
|
|
32
|
+
| [collab.reflog](#collabreflog) | 查看协作审计日志 |
|
|
33
|
+
| [collab.clone](#collabclone) | 深拷贝整个协作到新位置(可选 reroot) |
|
|
34
|
+
|
|
35
|
+
### 目录级标签(Tag)
|
|
36
|
+
|
|
37
|
+
| 方法 | 说明 |
|
|
38
|
+
|------|------|
|
|
39
|
+
| [collab.tag.create](#collabtag.create) | 打目录标签(语义化版本) |
|
|
40
|
+
| [collab.tag.list](#collabtag.list) | 列出标签 |
|
|
41
|
+
| [collab.tag.show](#collabtag.show) | 查看标签详情 |
|
|
42
|
+
| [collab.tag.diff](#collabtag.diff) | 比较两标签 |
|
|
43
|
+
| [collab.tag.restore](#collabtag.restore) | 回滚到某标签(forward-only) |
|
|
44
|
+
| [collab.tag.rm](#collabtag.rm) | 删除单个标签 |
|
|
45
|
+
| [collab.tag.prune](#collabtag.prune) | 批量清理旧标签 |
|
|
46
|
+
|
|
47
|
+
### 群内发现
|
|
48
|
+
|
|
49
|
+
| 方法 | 说明 |
|
|
50
|
+
|------|------|
|
|
51
|
+
| [collab.ls-remote](#collabls-remote) | 列出群内已登记的协作根 |
|
|
52
|
+
| [collab.unregister](#collabunregister) | 注销注册表中的协作根条目 |
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 核心概念
|
|
57
|
+
|
|
58
|
+
### 协作根目录结构
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
<aid>:<collab_root>/
|
|
62
|
+
├── .collab ← 发现锚点(YAML frontmatter: name/authority/root)
|
|
63
|
+
├── <doc>@current ← 软链 → .collab-versions/<doc>/<author>/vN
|
|
64
|
+
├── <doc>@ledger ← 版本台账
|
|
65
|
+
├── @snapshot ← 标签头软链 → .collab-snapshots/<semver>.json
|
|
66
|
+
├── .collab-versions/<doc>/<author>/v1…vN ← 不可变版本文件(write-once)
|
|
67
|
+
└── .collab-snapshots/<semver>.json ← 不可变标签 manifest
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
- **`collab_root` 参数格式**:`<aid>:<path>`(如 `alice.aid.pub:/projects/myapp`),来自 `.collab` 文件的 `root` 字段或上层响应。
|
|
71
|
+
- **响应一律回吐相对 `collab_root` 的内部 target 拼成的绝对 `<aid>:<path>`**——agent 原样用于下一条命令,无需拼接。
|
|
72
|
+
|
|
73
|
+
### 乐观锁(commit)
|
|
74
|
+
|
|
75
|
+
1. `put_object`(写新版本文件,永不失败,数据先存下)。
|
|
76
|
+
2. 同一事务:`atomic_repoint(<doc>@current, new_target, expected_version=onto)` + 台账追加。
|
|
77
|
+
3. CAS 成功 → version+1;CAS 失败 → 整事务回滚,返回 `{ok:false, current_version, hint}`。
|
|
78
|
+
|
|
79
|
+
`onto` 来源:`collab.show` 响应的 `version` 字段;merge 后用 commit 失败响应的 `current_version`。
|
|
80
|
+
|
|
81
|
+
### 数据不变量
|
|
82
|
+
|
|
83
|
+
- 版本文件写一次永不覆盖;删指针不删数据。
|
|
84
|
+
- 回滚是 **forward-only**:restore 不回退 version 计数器,而是以旧内容写新版本,保证 version 单调递增。
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## collab.ls-files
|
|
89
|
+
|
|
90
|
+
列出协作根下所有协作文档(含当前 version)。
|
|
91
|
+
|
|
92
|
+
### 参数
|
|
93
|
+
|
|
94
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
95
|
+
|------|------|------|------|
|
|
96
|
+
| `collab_root` | string | 是 | 协作根 `<aid>:<path>` |
|
|
97
|
+
|
|
98
|
+
### 响应
|
|
99
|
+
|
|
100
|
+
返回文档数组,每项:
|
|
101
|
+
|
|
102
|
+
| 字段 | 类型 | 说明 |
|
|
103
|
+
|------|------|------|
|
|
104
|
+
| `doc` | string | 文档当前显示名 |
|
|
105
|
+
| `version` | integer | 当前版本号 |
|
|
106
|
+
| `author` | string | 最新版本作者 AID |
|
|
107
|
+
| `current_target` | string | 当前版本文件绝对路径 `<aid>:<path>` |
|
|
108
|
+
|
|
109
|
+
### 示例
|
|
110
|
+
|
|
111
|
+
```python
|
|
112
|
+
docs = await client.collab.ls_files("alice.aid.pub:/projects/myapp")
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## collab.create
|
|
118
|
+
|
|
119
|
+
创建协作文档,写入首版本(version=1)。
|
|
120
|
+
|
|
121
|
+
### 参数
|
|
122
|
+
|
|
123
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
124
|
+
|------|------|------|------|
|
|
125
|
+
| `collab_root` | string | 是 | 协作根 `<aid>:<path>` |
|
|
126
|
+
| `doc` | string | 是 | 文档名 |
|
|
127
|
+
| `source` | string | 是 | 初始内容:本地文件路径或 `<aid>:<path>` |
|
|
128
|
+
|
|
129
|
+
### 响应
|
|
130
|
+
|
|
131
|
+
| 字段 | 类型 | 说明 |
|
|
132
|
+
|------|------|------|
|
|
133
|
+
| `version` | integer | 固定为 `1` |
|
|
134
|
+
| `current_target` | string | 版本文件绝对路径 |
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## collab.show
|
|
139
|
+
|
|
140
|
+
读取文档当前内容或指定历史版本内容。`rev` 为空时返回当前版本;`rev` 有值时返回该历史版本。
|
|
141
|
+
|
|
142
|
+
### 参数
|
|
143
|
+
|
|
144
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
145
|
+
|------|------|------|------|
|
|
146
|
+
| `collab_root` | string | 是 | 协作根 `<aid>:<path>` |
|
|
147
|
+
| `doc` | string | 是 | 文档名 |
|
|
148
|
+
| `rev` | integer | 否 | 指定历史版本号;不传则读取当前版本 |
|
|
149
|
+
|
|
150
|
+
### 响应
|
|
151
|
+
|
|
152
|
+
| 字段 | 类型 | 说明 |
|
|
153
|
+
|------|------|------|
|
|
154
|
+
| `content` | string | base64 编码的当前内容 |
|
|
155
|
+
| `version` | integer | 当前或指定版本号(**commit 的 onto 来源**) |
|
|
156
|
+
| `author` | string | 当前版本作者 AID |
|
|
157
|
+
| `anchor` | string | 台账锚点(读取历史版本时返回) |
|
|
158
|
+
| `current_target` | string | 当前版本文件绝对路径(读取当前版本时返回) |
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## collab.commit
|
|
163
|
+
|
|
164
|
+
提交新版本,乐观锁 CAS 切换 `@current`。
|
|
165
|
+
|
|
166
|
+
### 参数
|
|
167
|
+
|
|
168
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
169
|
+
|------|------|------|------|
|
|
170
|
+
| `collab_root` | string | 是 | 协作根 `<aid>:<path>` |
|
|
171
|
+
| `doc` | string | 是 | 文档名 |
|
|
172
|
+
| `source` | string | 是 | 新内容:本地路径或 `<aid>:<path>` |
|
|
173
|
+
| `onto` | integer | 是 | 基线版本号(来自 `collab.show` 的 `version`) |
|
|
174
|
+
|
|
175
|
+
### 响应
|
|
176
|
+
|
|
177
|
+
**成功**:
|
|
178
|
+
|
|
179
|
+
| 字段 | 类型 | 说明 |
|
|
180
|
+
|------|------|------|
|
|
181
|
+
| `ok` | boolean | `true` |
|
|
182
|
+
| `version` | integer | 新版本号(onto+1) |
|
|
183
|
+
| `current_target` | string | 新版本文件绝对路径 |
|
|
184
|
+
|
|
185
|
+
**撞版本失败**(数据已安全保存,需 merge 后重提):
|
|
186
|
+
|
|
187
|
+
| 字段 | 类型 | 说明 |
|
|
188
|
+
|------|------|------|
|
|
189
|
+
| `ok` | boolean | `false` |
|
|
190
|
+
| `current_version` | integer | 当前权威版本号(**merge 后 commit 用此作新 onto**) |
|
|
191
|
+
| `current_target` | string | 当前权威版本文件绝对路径 |
|
|
192
|
+
| `hint` | string | 后端格式化好的下一步命令行字符串 |
|
|
193
|
+
|
|
194
|
+
### 示例
|
|
195
|
+
|
|
196
|
+
```python
|
|
197
|
+
cur = await client.collab.show(root, "design.md")
|
|
198
|
+
res = await client.collab.commit(root, "design.md", "./design.md", cur["version"])
|
|
199
|
+
if not res["ok"]:
|
|
200
|
+
await client.collab.merge(root, "design.md", "./design.md", cur["version"])
|
|
201
|
+
res = await client.collab.commit(root, "design.md", "./design.md", res["current_version"])
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## collab.merge
|
|
207
|
+
|
|
208
|
+
三方合并(服务端 diff3,四语言 SDK 不实现 diff3)。合并 base 版本、本地 source、当前 `@current` 三方内容。
|
|
209
|
+
|
|
210
|
+
### 参数
|
|
211
|
+
|
|
212
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
213
|
+
|------|------|------|------|
|
|
214
|
+
| `collab_root` | string | 是 | 协作根 `<aid>:<path>` |
|
|
215
|
+
| `doc` | string | 是 | 文档名 |
|
|
216
|
+
| `source` | string | 是 | 本地草稿内容(ours):本地路径或 `<aid>:<path>` |
|
|
217
|
+
| `onto` | integer | 是 | 共同祖先版本号 |
|
|
218
|
+
|
|
219
|
+
### 响应
|
|
220
|
+
|
|
221
|
+
| 字段 | 类型 | 说明 |
|
|
222
|
+
|------|------|------|
|
|
223
|
+
| `content` | string | base64 编码的合并结果 |
|
|
224
|
+
| `conflicts` | boolean | 是否含冲突标记(`<<<<<<<` / `=======` / `>>>>>>>`) |
|
|
225
|
+
|
|
226
|
+
`conflicts=true` 时需人工编辑消解冲突后再 commit。
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## collab.log
|
|
231
|
+
|
|
232
|
+
查文档版本台账。
|
|
233
|
+
|
|
234
|
+
### 参数
|
|
235
|
+
|
|
236
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
237
|
+
|------|------|------|------|
|
|
238
|
+
| `collab_root` | string | 是 | 协作根 `<aid>:<path>` |
|
|
239
|
+
| `doc` | string | 是 | 文档名(按物理目录名索引,改显示名后仍按原名查) |
|
|
240
|
+
|
|
241
|
+
### 响应
|
|
242
|
+
|
|
243
|
+
返回版本数组,每项 `{version, author, target, time}`,`target` 为完整 `<aid>:<path>`。
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## collab.diff
|
|
248
|
+
|
|
249
|
+
比较同一文档的两个版本,返回 unified diff 文本。
|
|
250
|
+
|
|
251
|
+
### 参数
|
|
252
|
+
|
|
253
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
254
|
+
|------|------|------|------|
|
|
255
|
+
| `collab_root` | string | 是 | 协作根 `<aid>:<path>` |
|
|
256
|
+
| `doc` | string | 是 | 文档名 |
|
|
257
|
+
| `from` | integer | 是 | 起始版本号(SDK 形参 `v_from`) |
|
|
258
|
+
| `to` | integer | 是 | 目标版本号(SDK 形参 `v_to`) |
|
|
259
|
+
|
|
260
|
+
### 响应
|
|
261
|
+
|
|
262
|
+
| 字段 | 类型 | 说明 |
|
|
263
|
+
|------|------|------|
|
|
264
|
+
| `diff` | string | unified diff 文本 |
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## collab.revert
|
|
269
|
+
|
|
270
|
+
以指定历史版本的内容提交一个新版本。revert 不回退版本号,也不直接改写历史文件;它读取目标版本内容,以当前版本为 `onto` 再走普通 `commit` 流程,因此仍保持 forward-only 不变量。
|
|
271
|
+
|
|
272
|
+
### 参数
|
|
273
|
+
|
|
274
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
275
|
+
|------|------|------|------|------|
|
|
276
|
+
| `collab_root` | string | 是 | — | 协作根 `<aid>:<path>` |
|
|
277
|
+
| `doc` | string | 是 | — | 文档名 |
|
|
278
|
+
| `rev` | integer | 是 | — | 要恢复内容的历史版本号 |
|
|
279
|
+
| `message` | string | 否 | `""` | 记录到台账/审计日志的说明 |
|
|
280
|
+
|
|
281
|
+
### 响应
|
|
282
|
+
|
|
283
|
+
返回普通 `collab.commit` 的响应字段;如果当前版本已经等于目标版本,返回包含 `no_change: true` 的结果。
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## collab.prune
|
|
288
|
+
|
|
289
|
+
清理某文档的历史版本文件(保留台账与当前版本,回收旧 blob)。
|
|
290
|
+
|
|
291
|
+
### 参数
|
|
292
|
+
|
|
293
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
294
|
+
|------|------|------|------|
|
|
295
|
+
| `collab_root` | string | 是 | 协作根 `<aid>:<path>` |
|
|
296
|
+
| `doc` | string | 是 | 文档名 |
|
|
297
|
+
|
|
298
|
+
### 响应
|
|
299
|
+
|
|
300
|
+
| 字段 | 类型 | 说明 |
|
|
301
|
+
|------|------|------|
|
|
302
|
+
| `pruned` | integer | 清理的版本文件数 |
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
## collab.gc
|
|
307
|
+
|
|
308
|
+
目录级垃圾扫描。服务端会扫描 `.collab-versions`,从台账、当前指针和标签 manifest 标记可达版本文件;未被引用的版本文件计为 garbage。默认 `dry_run=true` 只返回统计,不删除。
|
|
309
|
+
|
|
310
|
+
### 参数
|
|
311
|
+
|
|
312
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
313
|
+
|------|------|------|------|------|
|
|
314
|
+
| `collab_root` | string | 是 | — | 协作根 `<aid>:<path>` |
|
|
315
|
+
| `dry_run` | boolean | 否 | `true` | 只扫描不删除 |
|
|
316
|
+
|
|
317
|
+
### 响应
|
|
318
|
+
|
|
319
|
+
| 字段 | 类型 | 说明 |
|
|
320
|
+
|------|------|------|
|
|
321
|
+
| `scanned` | integer | 扫描到的版本文件数 |
|
|
322
|
+
| `reachable` | integer | 可达版本文件数 |
|
|
323
|
+
| `garbage` | integer | 不可达版本文件数 |
|
|
324
|
+
| `deleted` | integer | 实际删除数量;`dry_run=true` 时为 0 |
|
|
325
|
+
| `freed_bytes` | integer | 实际释放字节数 |
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## collab.reflog
|
|
330
|
+
|
|
331
|
+
读取协作审计日志,用于排查 commit/merge/revert/tag 等操作历史。可按文档过滤并限制条数。
|
|
332
|
+
|
|
333
|
+
### 参数
|
|
334
|
+
|
|
335
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
336
|
+
|------|------|------|------|------|
|
|
337
|
+
| `collab_root` | string | 是 | — | 协作根 `<aid>:<path>` |
|
|
338
|
+
| `doc` | string | 否 | — | 仅查看某个文档的日志 |
|
|
339
|
+
| `limit` | integer | 否 | `100` | 返回条数上限 |
|
|
340
|
+
|
|
341
|
+
### 响应
|
|
342
|
+
|
|
343
|
+
返回日志数组,每项包含 `seq`、`action`、`requester`、`doc`、`version`、`onto`、`target`、`status`、`error_code`、`error_msg`、`metadata`、`timestamp` 等字段。
|
|
344
|
+
|
|
345
|
+
---
|
|
346
|
+
|
|
347
|
+
## collab.clone
|
|
348
|
+
|
|
349
|
+
克隆整个协作到新位置。默认 `reroot=false` 时做纯子树拷贝(用于备份);`reroot=true` 时在目标根重建并让目标 owner 成为新授权方(用于迁移 / 换主理人)。
|
|
350
|
+
|
|
351
|
+
### 参数
|
|
352
|
+
|
|
353
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
354
|
+
|------|------|------|------|
|
|
355
|
+
| `src` | string | 是 | 源协作根 `<aid>:<path>` |
|
|
356
|
+
| `dest` | string | 是 | 目标路径 `<aid>:<path>` |
|
|
357
|
+
| `reroot` | boolean | 否 | 默认 `false`;`true` 表示重建 root 和授权方 |
|
|
358
|
+
|
|
359
|
+
### 响应
|
|
360
|
+
|
|
361
|
+
| 字段 | 类型 | 说明 |
|
|
362
|
+
|------|------|------|
|
|
363
|
+
| `ok` | boolean | `true` |
|
|
364
|
+
| `dest` | string | 目标路径 |
|
|
365
|
+
| `copied_objects` | integer | 拷贝的对象数 |
|
|
366
|
+
| `new_root` | string | `reroot=true` 时的新协作根 |
|
|
367
|
+
| `new_authority_aid` | string | `reroot=true` 时的新授权方 AID(= dest 存储 owner) |
|
|
368
|
+
|
|
369
|
+
> collabRoot 整体改名/迁移用 `collab.clone(..., reroot=true)`,不要用 `storage.fs.rename`:后者在对象存储上可能是 O(n) copy+delete,且会让 `.collab` 的 `root` 字段失效。
|
|
370
|
+
|
|
371
|
+
---
|
|
372
|
+
|
|
373
|
+
## collab.tag.create
|
|
374
|
+
|
|
375
|
+
打目录级标签。语义化版本自动判定:doc 集合变化 → minor;仅内容变化 → patch;`major=true` 强制 major;无变化 → 报错。
|
|
376
|
+
|
|
377
|
+
### 参数
|
|
378
|
+
|
|
379
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
380
|
+
|------|------|------|------|------|
|
|
381
|
+
| `collab_root` | string | 是 | — | 协作根 `<aid>:<path>` |
|
|
382
|
+
| `message` | string | 否 | `""` | 标签说明 |
|
|
383
|
+
| `major` | boolean | 否 | `false` | 强制 major bump |
|
|
384
|
+
|
|
385
|
+
### 响应
|
|
386
|
+
|
|
387
|
+
| 字段 | 类型 | 说明 |
|
|
388
|
+
|------|------|------|
|
|
389
|
+
| `version` | string | 新标签语义化版本(如 `2.3.1`) |
|
|
390
|
+
| `bump` | string | 本次 bump 级别(`major`/`minor`/`patch`) |
|
|
391
|
+
| `changed` | array | 变化的文档名列表 |
|
|
392
|
+
|
|
393
|
+
---
|
|
394
|
+
|
|
395
|
+
## collab.tag.list
|
|
396
|
+
|
|
397
|
+
列出所有标签。
|
|
398
|
+
|
|
399
|
+
### 参数
|
|
400
|
+
|
|
401
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
402
|
+
|------|------|------|------|
|
|
403
|
+
| `collab_root` | string | 是 | 协作根 `<aid>:<path>` |
|
|
404
|
+
|
|
405
|
+
### 响应
|
|
406
|
+
|
|
407
|
+
返回标签数组,每项 `{version, message, created_at, ...}`,按语义化版本升序。
|
|
408
|
+
|
|
409
|
+
---
|
|
410
|
+
|
|
411
|
+
## collab.tag.show
|
|
412
|
+
|
|
413
|
+
查看单个标签详情(含文档清单 entries)。
|
|
414
|
+
|
|
415
|
+
### 参数
|
|
416
|
+
|
|
417
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
418
|
+
|------|------|------|------|
|
|
419
|
+
| `collab_root` | string | 是 | 协作根 `<aid>:<path>` |
|
|
420
|
+
| `version` | string | 是 | 标签版本(如 `2.3.1`) |
|
|
421
|
+
|
|
422
|
+
### 响应
|
|
423
|
+
|
|
424
|
+
标签 manifest,含 `collab_root`、`version` 与 `entries`(每项含 `doc`/`version`/`current_target` 绝对路径)。
|
|
425
|
+
|
|
426
|
+
---
|
|
427
|
+
|
|
428
|
+
## collab.tag.diff
|
|
429
|
+
|
|
430
|
+
比较两标签的文档版本差异。
|
|
431
|
+
|
|
432
|
+
### 参数
|
|
433
|
+
|
|
434
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
435
|
+
|------|------|------|------|
|
|
436
|
+
| `collab_root` | string | 是 | 协作根 `<aid>:<path>` |
|
|
437
|
+
| `version_a` | string | 是 | 标签 A 版本 |
|
|
438
|
+
| `version_b` | string | 是 | 标签 B 版本 |
|
|
439
|
+
|
|
440
|
+
### 响应
|
|
441
|
+
|
|
442
|
+
返回新增/删除/版本变化的文档清单。
|
|
443
|
+
|
|
444
|
+
---
|
|
445
|
+
|
|
446
|
+
## collab.tag.restore
|
|
447
|
+
|
|
448
|
+
回滚到某标签。**forward-only**:不回退 version 计数器,而是对每个文档以标签中的旧内容写一个新版本(vN+1),最后以回滚后状态自动创建新标签。
|
|
449
|
+
|
|
450
|
+
### 参数
|
|
451
|
+
|
|
452
|
+
| 参数 | 类型 | 必填 | 默认 | 说明 |
|
|
453
|
+
|------|------|------|------|------|
|
|
454
|
+
| `collab_root` | string | 是 | — | 协作根 `<aid>:<path>` |
|
|
455
|
+
| `version` | string | 是 | — | 要回滚到的标签版本 |
|
|
456
|
+
| `message` | string | 否 | `""` | 回滚说明 |
|
|
457
|
+
|
|
458
|
+
### 响应
|
|
459
|
+
|
|
460
|
+
| 字段 | 类型 | 说明 |
|
|
461
|
+
|------|------|------|
|
|
462
|
+
| `restored_from` | string | 回滚来源标签版本 |
|
|
463
|
+
| `new_snapshot_version` | string | 回滚后自动创建的新标签版本(历史字段名保留为 `new_snapshot_version`) |
|
|
464
|
+
| `warnings` | array | 回滚过程中的告警(如某文档被他人并发提交而跳过) |
|
|
465
|
+
|
|
466
|
+
---
|
|
467
|
+
|
|
468
|
+
## collab.tag.rm
|
|
469
|
+
|
|
470
|
+
删除单个标签。
|
|
471
|
+
|
|
472
|
+
### 参数
|
|
473
|
+
|
|
474
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
475
|
+
|------|------|------|------|
|
|
476
|
+
| `collab_root` | string | 是 | 协作根 `<aid>:<path>` |
|
|
477
|
+
| `version` | string | 是 | 要删除的标签版本 |
|
|
478
|
+
|
|
479
|
+
### 响应
|
|
480
|
+
|
|
481
|
+
| 字段 | 类型 | 说明 |
|
|
482
|
+
|------|------|------|
|
|
483
|
+
| `ok` | boolean | `true` |
|
|
484
|
+
|
|
485
|
+
---
|
|
486
|
+
|
|
487
|
+
## collab.tag.prune
|
|
488
|
+
|
|
489
|
+
批量清理旧标签。
|
|
490
|
+
|
|
491
|
+
### 参数
|
|
492
|
+
|
|
493
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
494
|
+
|------|------|------|------|
|
|
495
|
+
| `collab_root` | string | 是 | 协作根 `<aid>:<path>` |
|
|
496
|
+
| `before` | integer\|string | 否 | 清理此时间点之前的标签 |
|
|
497
|
+
| `keep_last` | integer | 否 | 保留最近 N 个标签 |
|
|
498
|
+
|
|
499
|
+
### 响应
|
|
500
|
+
|
|
501
|
+
| 字段 | 类型 | 说明 |
|
|
502
|
+
|------|------|------|
|
|
503
|
+
| `pruned` | integer | 清理的标签数 |
|
|
504
|
+
|
|
505
|
+
---
|
|
506
|
+
|
|
507
|
+
## collab.ls-remote
|
|
508
|
+
|
|
509
|
+
列出群内已登记的协作根(群 owner 优先查 `collab_registry`,免 O(n) 全树扇出)。
|
|
510
|
+
|
|
511
|
+
### 参数
|
|
512
|
+
|
|
513
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
514
|
+
|------|------|------|------|
|
|
515
|
+
| `group_aid` | string | 是 | 群 AID |
|
|
516
|
+
|
|
517
|
+
### 响应
|
|
518
|
+
|
|
519
|
+
返回协作根数组,每项含 `collab_root` 等登记信息。
|
|
520
|
+
|
|
521
|
+
---
|
|
522
|
+
|
|
523
|
+
## collab.unregister
|
|
524
|
+
|
|
525
|
+
注销注册表中的协作根条目(不删数据,仅去登记)。
|
|
526
|
+
|
|
527
|
+
### 参数
|
|
528
|
+
|
|
529
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
530
|
+
|------|------|------|------|
|
|
531
|
+
| `group_aid` | string | 是 | 群 AID |
|
|
532
|
+
| `collab_root` | string | 是 | 要注销的协作根 `<aid>:<path>` |
|
|
533
|
+
|
|
534
|
+
### 响应
|
|
535
|
+
|
|
536
|
+
| 字段 | 类型 | 说明 |
|
|
537
|
+
|------|------|------|
|
|
538
|
+
| `ok` | boolean | `true` |
|
|
539
|
+
|
|
540
|
+
---
|
|
541
|
+
|
|
542
|
+
## 错误码
|
|
543
|
+
|
|
544
|
+
| code | 说明 |
|
|
545
|
+
|------|------|
|
|
546
|
+
| -32002 | 服务暂不可用(数据库未连接) |
|
|
547
|
+
| -32004 | 权限拒绝(requester 对 collab_root 无写权限) |
|
|
548
|
+
| -32008 | 协作文档 / 版本 / 标签不存在 |
|
|
549
|
+
| -32009 | 版本冲突(commit 撞版本,见 `ok:false` 响应;tag create 时标签头已移动) |
|
|
550
|
+
| -32000 | 通用错误(参数校验失败、源内容读取失败、无变更可打标签等) |
|