@agentunion/fastaun-browser 0.4.10 → 0.4.12

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 (41) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/_packed_docs/CHANGELOG.md +50 -0
  3. package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +4 -2
  4. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +2 -2
  5. package/_packed_docs/sdk/07-/351/224/231/350/257/257/345/244/204/347/220/206.md +7 -4
  6. package/_packed_docs/sdk/09-group-rpc-manual.md +222 -38
  7. package/_packed_docs/sdk/09-message-rpc-manual.md +50 -26
  8. package/_packed_docs/sdk/09-payload-reference.md +1 -1
  9. package/_packed_docs/sdk/09-storage-rpc-manual.md +259 -37
  10. package/dist/bundle.js +320 -50
  11. package/dist/client/delivery.d.ts +10 -1
  12. package/dist/client/delivery.d.ts.map +1 -1
  13. package/dist/client/delivery.js +166 -20
  14. package/dist/client/delivery.js.map +1 -1
  15. package/dist/client/group-state.js +2 -2
  16. package/dist/client/group-state.js.map +1 -1
  17. package/dist/client/rpc-pipeline.d.ts.map +1 -1
  18. package/dist/client/rpc-pipeline.js +31 -5
  19. package/dist/client/rpc-pipeline.js.map +1 -1
  20. package/dist/client/v2-e2ee.d.ts.map +1 -1
  21. package/dist/client/v2-e2ee.js +9 -2
  22. package/dist/client/v2-e2ee.js.map +1 -1
  23. package/dist/client.d.ts +1 -0
  24. package/dist/client.d.ts.map +1 -1
  25. package/dist/client.js +55 -14
  26. package/dist/client.js.map +1 -1
  27. package/dist/service-proxy.d.ts.map +1 -1
  28. package/dist/service-proxy.js +17 -2
  29. package/dist/service-proxy.js.map +1 -1
  30. package/dist/v2/e2ee/encrypt-p2p.js +1 -1
  31. package/dist/v2/e2ee/encrypt-p2p.js.map +1 -1
  32. package/dist/v2/session/keystore.d.ts.map +1 -1
  33. package/dist/v2/session/keystore.js +8 -9
  34. package/dist/v2/session/keystore.js.map +1 -1
  35. package/dist/v2/session/session.d.ts +4 -2
  36. package/dist/v2/session/session.d.ts.map +1 -1
  37. package/dist/v2/session/session.js +20 -4
  38. package/dist/v2/session/session.js.map +1 -1
  39. package/dist/version.d.ts +1 -1
  40. package/dist/version.js +1 -1
  41. package/package.json +1 -1
@@ -12,13 +12,37 @@
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) | 上传预检(秒传检测 + 超限检测) |
18
-
19
- ### 数据面协调方法
20
-
21
- | 方法 | 说明 |
15
+ | [storage.get_quota](#storageget_quota) | 查询配额 |
16
+ | [storage.get_limits](#storageget_limits) | 查询上传限制 |
17
+ | [storage.check_upload](#storagecheck_upload) | 上传预检(秒传检测 + 超限检测) |
18
+
19
+ ### 目录树方法
20
+
21
+ | 方法 | 说明 |
22
+ |------|------|
23
+ | [storage.create_folder](#storagecreate_folder) | 创建目录 |
24
+ | [storage.get_folder](#storageget_folder) | 查询目录 |
25
+ | [storage.list_children](#storagelist_children) | 列出目录子节点 |
26
+ | [storage.rename_folder](#storagerename_folder) | 重命名目录 |
27
+ | [storage.move_folder](#storagemove_folder) | 移动目录 |
28
+ | [storage.delete_folder](#storagedelete_folder) | 删除目录 |
29
+ | [storage.resolve_path](#storageresolve_path) | 按路径解析节点 |
30
+
31
+ ### 对象管理方法
32
+
33
+ | 方法 | 说明 |
34
+ |------|------|
35
+ | [storage.move_object](#storagemove_object) | 移动或重命名对象 |
36
+ | [storage.copy_object](#storagecopy_object) | 复制对象 |
37
+ | [storage.batch_delete](#storagebatch_delete) | 批量删除对象/目录 |
38
+ | [storage.batch_head_object](#storagebatch_head_object) | 批量查询对象元数据 |
39
+ | [storage.set_object_meta](#storageset_object_meta) | 更新对象元数据 |
40
+ | [storage.get_object_url](#storageget_object_url) | 获取稳定对象 URL |
41
+ | [storage.append_object](#storageappend_object) | 追加写对象 |
42
+
43
+ ### 数据面协调方法
44
+
45
+ | 方法 | 说明 |
22
46
  |------|------|
23
47
  | [storage.create_upload_session](#storagecreate_upload_session) | 申请上传 URL |
24
48
  | [storage.complete_upload](#storagecomplete_upload) | 确认上传完成 |
@@ -28,9 +52,10 @@
28
52
 
29
53
  | 方法 | 说明 |
30
54
  |------|------|
31
- | [storage.create_share_link](#storagecreate_share_link) | 创建分享链接 |
32
- | [storage.list_share_links](#storagelist_share_links) | 列举分享链接 |
33
- | [storage.revoke_share_link](#storagerevoke_share_link) | 撤销分享链接 |
55
+ | [storage.create_share_link](#storagecreate_share_link) | 创建分享链接 |
56
+ | [storage.list_share_links](#storagelist_share_links) | 列举分享链接 |
57
+ | [storage.revoke_share_link](#storagerevoke_share_link) | 撤销分享链接 |
58
+ | [storage.get_by_share](#storageget_by_share) | 通过分享短码读取对象 |
34
59
 
35
60
  ---
36
61
 
@@ -256,9 +281,9 @@ for obj in result["items"]:
256
281
 
257
282
  ---
258
283
 
259
- ## storage.get_quota
260
-
261
- 查询存储配额。
284
+ ## storage.get_quota
285
+
286
+ 查询存储配额。
262
287
 
263
288
  ### 参数
264
289
 
@@ -273,13 +298,193 @@ for obj in result["items"]:
273
298
  | `owner_aid` | string | 所有者 AID |
274
299
  | `used_bytes` | integer | 已使用空间(字节) |
275
300
  | `object_count` | integer | 对象数量 |
276
- | `quota_bytes` | integer | 配额上限(字节),0 表示无限制 |
277
-
278
- ---
279
-
280
- ## storage.create_upload_session
281
-
282
- 获取上传用 presigned URL。
301
+ | `quota_bytes` | integer | 配额上限(字节),0 表示无限制 |
302
+
303
+ ---
304
+
305
+ ## storage.create_folder
306
+
307
+ 创建目录节点。目录和对象共用同一个 `bucket`,默认 bucket 为 `"default"`。
308
+
309
+ **参数**:
310
+
311
+ | 参数 | 类型 | 必填 | 说明 |
312
+ |------|------|------|------|
313
+ | `path` | string | 否 | 完整目录路径;提供时优先使用 |
314
+ | `name` | string | 否 | 目录名;未提供 `path` 时必填 |
315
+ | `parent_folder_id` | string | 否 | 父目录 ID |
316
+ | `parent_path` | string | 否 | 父目录路径,默认根目录 |
317
+ | `bucket` | string | 否 | 存储桶,默认 `"default"` |
318
+ | `owner_aid` | string | 否 | 所有者 AID,默认当前用户 |
319
+ | `mkdirs` | boolean | 否 | 是否递归创建父目录 |
320
+ | `metadata` | object | 否 | 目录元数据 |
321
+ | `conflict_policy` | string | 否 | `"reject"` / `"return_existing"` |
322
+
323
+ **响应**:返回 `folder`,同时在顶层展开 `folder_id`、`path`、`name`、`parent_folder_id`、`version` 等字段。
324
+
325
+ ---
326
+
327
+ ## storage.get_folder
328
+
329
+ 查询目录节点。
330
+
331
+ **参数**:`folder_id` 或 `path` 至少提供一个;可选 `bucket`、`owner_aid`。
332
+
333
+ **响应**:同 `storage.create_folder` 的 `folder` 视图。
334
+
335
+ ---
336
+
337
+ ## storage.list_children
338
+
339
+ 列出目录下的直接子目录和对象。
340
+
341
+ **参数**:
342
+
343
+ | 参数 | 类型 | 必填 | 说明 |
344
+ |------|------|------|------|
345
+ | `folder_id` / `path` | string | 否 | 目标目录;都不传表示根目录 |
346
+ | `type` | string | 否 | `"all"` / `"folder"` / `"object"`,默认 `"all"` |
347
+ | `bucket` | string | 否 | 存储桶,默认 `"default"` |
348
+ | `owner_aid` | string | 否 | 所有者 AID,默认当前用户 |
349
+ | `page` | integer | 否 | 页码,默认 1 |
350
+ | `size` | integer | 否 | 每页数量,最大受服务配置限制 |
351
+ | `order_by` | string | 否 | `"name"` / `"updated_at"` / `"size_bytes"` |
352
+ | `order` | string | 否 | `"asc"` / `"desc"` |
353
+ | `include_metadata` | boolean | 否 | 是否返回元数据,默认 `true` |
354
+ | `include_urls` | boolean | 否 | 是否返回 URL 字段,默认 `true` |
355
+
356
+ **响应**:`folder`、`items`、`total`、`page`、`size`、`next_marker`。`items[].node_type` 区分 `folder` / `object`。
357
+
358
+ ---
359
+
360
+ ## storage.rename_folder
361
+
362
+ 重命名目录。根目录不可改名。
363
+
364
+ **参数**:`folder_id` 或 `path`,`new_name` 必填;可选 `bucket`、`owner_aid`、`expected_version`。
365
+
366
+ **响应**:更新后的 `folder` 视图。
367
+
368
+ ---
369
+
370
+ ## storage.move_folder
371
+
372
+ 移动目录。不能移动到自身或自身子目录。
373
+
374
+ **参数**:`folder_id` 或 `path`,目标目录通过 `dst_parent_folder_id` 或 `dst_parent_path` 指定;可选 `new_name`、`bucket`、`owner_aid`、`expected_version`。
375
+
376
+ **响应**:更新后的 `folder` 视图。
377
+
378
+ ---
379
+
380
+ ## storage.delete_folder
381
+
382
+ 删除目录。
383
+
384
+ **参数**:
385
+
386
+ | 参数 | 类型 | 必填 | 说明 |
387
+ |------|------|------|------|
388
+ | `folder_id` / `path` | string | 是 | 待删除目录 |
389
+ | `recursive` | boolean | 否 | 非空目录必须传 `true` |
390
+ | `dry_run` | boolean | 否 | 只预览将删除的目录/对象 |
391
+ | `bucket` | string | 否 | 存储桶,默认 `"default"` |
392
+ | `owner_aid` | string | 否 | 所有者 AID,默认当前用户 |
393
+
394
+ **响应**:`deleted_folders`、`deleted_objects`、`deleted_object_items`、`errors`;`dry_run=true` 时返回预览列表。
395
+
396
+ ---
397
+
398
+ ## storage.resolve_path
399
+
400
+ 按路径解析目录或对象。
401
+
402
+ **参数**:`path` 必填;可选 `expected_type`(`"any"` / `"object"` / `"folder"`)、`bucket`、`owner_aid`。
403
+
404
+ **响应**:`type`、`folder_id` 或 `object_id`、`path`、`status`。
405
+
406
+ ---
407
+
408
+ ## storage.move_object
409
+
410
+ 移动或重命名对象。
411
+
412
+ **参数**:对象选择器(`object_id` / `object_key` / `path`),目标目录 `dst_parent_folder_id` 或 `dst_parent_path`;可选 `new_name`、`conflict_policy`(`"reject"` / `"replace"` / `"keep_both"`)、`expected_version`。
413
+
414
+ **响应**:返回 `object`,同时在顶层展开对象视图字段。
415
+
416
+ ---
417
+
418
+ ## storage.copy_object
419
+
420
+ 复制对象,底层内容按 CAS 引用计数复用。
421
+
422
+ **参数**:源对象选择器(`object_id` / `object_key` / `path`,也接受 `src_object_key` / `src_path`),目标 `dst_object_key` / `dst_path` 或目标父目录 + `new_name`;可选 `conflict_policy`、`copy_metadata`。
423
+
424
+ **响应**:新对象视图。
425
+
426
+ ---
427
+
428
+ ## storage.batch_delete
429
+
430
+ 批量删除对象或目录。
431
+
432
+ **参数**:
433
+
434
+ | 参数 | 类型 | 必填 | 说明 |
435
+ |------|------|------|------|
436
+ | `items` | array | 否 | 每项含 `type`、`object_id` / `object_key` / `path` / `folder_id` |
437
+ | `object_keys` | string[] | 否 | 兼容简写,转为对象删除 |
438
+ | `recursive` | boolean | 否 | 删除目录时是否递归 |
439
+ | `dry_run` | boolean | 否 | 只预览 |
440
+
441
+ **响应**:`deleted`、`errors`、`deleted_count`、`summary`。
442
+
443
+ ---
444
+
445
+ ## storage.batch_head_object
446
+
447
+ 批量查询对象元数据。
448
+
449
+ **参数**:`object_ids`、`paths` 至少提供一类;可选 `owner_aid`、`bucket`、`include_missing`、`include_metadata`、`include_urls`。
450
+
451
+ **响应**:`items` 和 `errors`。
452
+
453
+ ---
454
+
455
+ ## storage.set_object_meta
456
+
457
+ 更新对象元数据和可选 MIME 类型。
458
+
459
+ **参数**:对象选择器,`metadata`;可选 `merge`(默认 `true`)、`content_type`、`expected_version`。
460
+
461
+ **响应**:更新后的对象视图。
462
+
463
+ ---
464
+
465
+ ## storage.get_object_url
466
+
467
+ 获取稳定对象 URL。
468
+
469
+ **参数**:对象选择器;可选 `include_path_url`。
470
+
471
+ **响应**:`object_id`、`object_url`、`path_url`、`stable`。
472
+
473
+ ---
474
+
475
+ ## storage.append_object
476
+
477
+ 向对象尾部追加 base64 内容;对象不存在时创建。
478
+
479
+ **参数**:与 `storage.put_object` 类似,`content` 必填;可选 `object_key` / `path` / `name`、`bucket`、`owner_aid`、`content_type`、`metadata`、`expected_version`、`is_private`。
480
+
481
+ **响应**:对象视图。
482
+
483
+ ---
484
+
485
+ ## storage.create_upload_session
486
+
487
+ 获取上传用 presigned URL。
283
488
 
284
489
  ### 参数
285
490
 
@@ -329,7 +534,7 @@ for obj in result["items"]:
329
534
  | `content_type` | string | 否 | MIME 类型,默认 `"application/octet-stream"` |
330
535
  | `is_private` | boolean | 否 | 是否私有,默认 `true` |
331
536
  | `size_bytes` | integer | 否 | 预期文件大小(用于校验) |
332
- | `skip_blob` | boolean | 否 | 秒传模式,默认 `false`;为 `true` 时跳过 blob 上传,必须提供 `sha256` 且服务端已存在对应内容 |
537
+ | `skip_blob` | boolean | 否 | 秒传模式,默认 `false`;为 `true` 时跳过 blob 上传,必须提供 `sha256`,且当前 owner 已拥有相同内容 |
333
538
  | `expected_version` | integer | 否 | 乐观并发控制版本号 |
334
539
  | `expire_in_seconds` | integer | 否 | 过期时间(秒) |
335
540
  | `metadata` | object | 否 | 自定义元数据 |
@@ -445,22 +650,25 @@ print(f"配额: {limits['quota_used_bytes']}/{limits['quota_total_bytes']}")
445
650
 
446
651
  ## storage.check_upload
447
652
 
448
- 上传预检:一次调用同时回答"文件是否超限"和"是否可秒传"。客户端应在计算完文件 SHA-256 后、实际上传前调用。
653
+ 上传预检:一次调用同时回答"文件是否超限"和"当前 owner 是否可秒传"。客户端应在计算完文件 SHA-256 后、实际上传前调用。
654
+
655
+ > `check_upload` / `complete_upload(skip_blob=true)` 只允许复用当前 owner 已拥有的内容,避免跨 owner 暴露全局 CAS 存在性或跳过上传克隆他人私有内容。不同 owner 上传相同内容时,仍会在完成上传后归一到同一个 CAS blob,由服务端引用计数管理物理去重。
449
656
 
450
657
  ### 参数
451
658
 
452
- | 参数 | 类型 | 必填 | 说明 |
453
- |------|------|------|------|
454
- | `sha256` | string | 是 | 文件内容的 SHA-256 hex(64 字符) |
455
- | `size_bytes` | integer | 是 | 文件大小(字节) |
659
+ | 参数 | 类型 | 必填 | 说明 |
660
+ |------|------|------|------|
661
+ | `sha256` | string | 是 | 文件内容的 SHA-256 hex(64 字符) |
662
+ | `size_bytes` | integer | 是 | 文件大小(字节) |
663
+ | `owner_aid` | string | 否 | 检查指定 owner 是否可秒传,默认当前用户;必须等于当前登录 AID |
456
664
 
457
665
  ### 响应
458
666
 
459
667
  | 字段 | 类型 | 说明 |
460
668
  |------|------|------|
461
669
  | `within_limit` | boolean | 文件大小是否在限制内 |
462
- | `exists` | boolean | 服务端是否已有相同内容 |
463
- | `skip_upload` | boolean | 是否可跳过上传(秒传) |
670
+ | `exists` | boolean | 当前 owner 是否已拥有相同内容且 CAS blob 可用 |
671
+ | `skip_upload` | boolean | 是否可跳过上传(秒传) |
464
672
 
465
673
  ### 使用场景
466
674
 
@@ -478,7 +686,7 @@ check = await client.call("storage.check_upload", {
478
686
  if not check["within_limit"]:
479
687
  print("文件超限,无法上传")
480
688
  elif check["skip_upload"]:
481
- # 秒传:服务端已有相同内容,跳过上传直接 complete
689
+ # 秒传:当前 owner 已拥有相同内容,跳过上传直接 complete
482
690
  await client.call("storage.complete_upload", {
483
691
  "object_key": "my/file.bin",
484
692
  "sha256": sha256,
@@ -578,9 +786,9 @@ share_url = result["aid_share_url"]
578
786
 
579
787
  ---
580
788
 
581
- ## storage.revoke_share_link
582
-
583
- 撤销分享链接。
789
+ ## storage.revoke_share_link
790
+
791
+ 撤销分享链接。
584
792
 
585
793
  ### 参数
586
794
 
@@ -595,11 +803,25 @@ share_url = result["aid_share_url"]
595
803
  | `revoked` | boolean | 是否成功撤销 |
596
804
  | `share_id` | string | 被撤销的分享短码 |
597
805
 
598
- > 链接不存在或已撤销时返回通用错误(`-32000`)。
599
-
600
- ---
601
-
602
- ## 错误码
806
+ > 链接不存在或已撤销时返回通用错误(`-32000`)。
807
+
808
+ ---
809
+
810
+ ## storage.get_by_share
811
+
812
+ 通过分享短码读取对象。公开分享无需额外授权;私有白名单分享需要请求者 AID 在 `allowed_aids` 内。
813
+
814
+ **参数**:
815
+
816
+ | 参数 | 类型 | 必填 | 说明 |
817
+ |------|------|------|------|
818
+ | `share_id` | string | 是 | 分享短码 |
819
+
820
+ **响应**:小对象返回 `content`;大对象返回 `download_url`。同时返回 `object_id`、`object_key`、`path`、`size_bytes`、`content_type`、`sha256`。
821
+
822
+ ---
823
+
824
+ ## 错误码
603
825
 
604
826
  | code | 说明 |
605
827
  |------|------|