@agentunion/fastaun 0.4.13 → 0.5.1

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 (182) hide show
  1. package/CHANGELOG.md +547 -393
  2. package/_packed_docs/CHANGELOG-validators.md +144 -0
  3. package/_packed_docs/CHANGELOG.md +547 -393
  4. package/_packed_docs/INDEX.md +159 -84
  5. package/_packed_docs/KITE_DOCS_GUIDE.md +48 -31
  6. package/_packed_docs/agent.md/SCHEMA.md +2 -0
  7. package/_packed_docs/agent.md/examples/codeagent-claudecode.md +2 -0
  8. package/_packed_docs/agent.md/examples/human-developer.md +2 -0
  9. package/_packed_docs/agent.md/examples/openclaw-lobster.md +2 -0
  10. package/_packed_docs/agent.md/examples/signed-openclaw-lobster.md +2 -0
  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 +2 -0
  12. package/_packed_docs/cli/AUN-CLI/350/256/276/350/256/241/346/226/207/346/241/243.md +266 -686
  13. package/_packed_docs/cli/CLI/346/211/213/345/206/214.md +331 -0
  14. package/_packed_docs/design/2026-05-22-aun-rpc-trace-enhancement.md +2 -0
  15. 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
  16. 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
  17. 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
  18. package/_packed_docs/protocol/00-/346/200/273/350/247/210/344/270/216/345/210/206/345/261/202.md +2 -0
  19. 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
  20. 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
  21. 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
  22. package/_packed_docs/protocol/03-Gateway-/350/277/236/346/216/245/346/250/241/345/274/217.md +2 -0
  23. package/_packed_docs/protocol/04-Peer-/345/255/220/345/215/217/350/256/256.md +2 -0
  24. package/_packed_docs/protocol/05-Relay-/345/255/220/345/215/217/350/256/256.md +2 -0
  25. 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
  26. package/_packed_docs/protocol/08-AUN-E2EE-Group.md +296 -900
  27. package/_packed_docs/protocol/08-AUN-E2EE.md +2 -0
  28. package/_packed_docs/protocol/09-/345/256/211/345/205/250/350/200/203/350/231/221.md +2 -0
  29. package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +66 -173
  30. package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +55 -0
  31. package/_packed_docs/protocol/12-Stream-/345/255/220/345/215/217/350/256/256.md +2 -0
  32. package/_packed_docs/protocol/13-Agent/350/241/214/344/270/272/350/247/204/350/214/203.md +2 -0
  33. 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
  34. 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
  35. package/_packed_docs/protocol/16-/347/263/273/347/273/237/347/233/256/345/275/225/344/277/235/346/212/244/346/226/271/346/241/210.md +177 -0
  36. package/_packed_docs/protocol/README.md +4 -1
  37. package/_packed_docs/protocol/agent.md/SCHEMA.md +2 -0
  38. package/_packed_docs/protocol/agent.md/examples/codeagent-claudecode.md +2 -0
  39. package/_packed_docs/protocol/agent.md/examples/human-developer.md +2 -0
  40. package/_packed_docs/protocol/agent.md/examples/openclaw-lobster.md +2 -0
  41. package/_packed_docs/protocol/aun-docs-guide.md +2 -0
  42. package/_packed_docs/protocol/index.md +10 -3
  43. 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
  44. 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
  45. package/_packed_docs/protocol//351/231/204/345/275/225A-/346/234/257/350/257/255/350/241/250.md +2 -0
  46. 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
  47. 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
  48. 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
  49. 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
  50. 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
  51. 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
  52. 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
  53. 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
  54. 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
  55. 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
  56. 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
  57. 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
  58. 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
  59. package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +2 -0
  60. package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +2 -0
  61. package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +2 -0
  62. package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +2 -0
  63. package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +6 -252
  64. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +219 -177
  65. package/_packed_docs/sdk/07-/351/224/231/350/257/257/345/244/204/347/220/206.md +4 -1
  66. package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +2 -0
  67. package/_packed_docs/sdk/09-collab-rpc-manual.md +581 -0
  68. package/_packed_docs/sdk/09-custody-api-manual.md +2 -0
  69. package/_packed_docs/sdk/09-group-rpc-manual.md +301 -634
  70. package/_packed_docs/sdk/09-message-rpc-manual.md +2 -0
  71. package/_packed_docs/sdk/09-meta-rpc-manual.md +2 -0
  72. package/_packed_docs/sdk/09-payload-reference.md +2 -0
  73. package/_packed_docs/sdk/09-proxy-rpc-manual.md +2 -0
  74. package/_packed_docs/sdk/09-storage-rpc-manual.md +984 -274
  75. package/_packed_docs/sdk/09-stream-rpc-manual.md +2 -0
  76. package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +36 -23
  77. 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
  78. package/_packed_docs/sdk/INDEX.md +47 -30
  79. package/_packed_docs/sdk/Notify/351/200/232/347/237/245/346/226/271/346/241/210.md +2 -0
  80. package/_packed_docs/sdk/README.md +17 -15
  81. package/dist/aid-store.d.ts +25 -0
  82. package/dist/aid-store.js +80 -0
  83. package/dist/aid-store.js.map +1 -1
  84. package/dist/client/delivery.d.ts +11 -0
  85. package/dist/client/delivery.js +208 -25
  86. package/dist/client/delivery.js.map +1 -1
  87. package/dist/client/group-state.js +33 -11
  88. package/dist/client/group-state.js.map +1 -1
  89. package/dist/client/rpc-pipeline.d.ts +1 -0
  90. package/dist/client/rpc-pipeline.js +177 -65
  91. package/dist/client/rpc-pipeline.js.map +1 -1
  92. package/dist/client/v2-e2ee.d.ts +6 -1
  93. package/dist/client/v2-e2ee.js +199 -130
  94. package/dist/client/v2-e2ee.js.map +1 -1
  95. package/dist/client.d.ts +37 -1
  96. package/dist/client.js +491 -44
  97. package/dist/client.js.map +1 -1
  98. package/dist/collab/client.d.ts +46 -0
  99. package/dist/collab/client.js +136 -0
  100. package/dist/collab/client.js.map +1 -0
  101. package/dist/collab/errors.d.ts +15 -0
  102. package/dist/collab/errors.js +60 -0
  103. package/dist/collab/errors.js.map +1 -0
  104. package/dist/collab/index.d.ts +3 -0
  105. package/dist/collab/index.js +4 -0
  106. package/dist/collab/index.js.map +1 -0
  107. package/dist/collab/types.d.ts +110 -0
  108. package/dist/collab/types.js +2 -0
  109. package/dist/collab/types.js.map +1 -0
  110. package/dist/crypto.d.ts +2 -0
  111. package/dist/crypto.js +6 -0
  112. package/dist/crypto.js.map +1 -1
  113. package/dist/errors.d.ts +0 -12
  114. package/dist/errors.js +9 -25
  115. package/dist/errors.js.map +1 -1
  116. package/dist/facades.d.ts +94 -0
  117. package/dist/facades.js +255 -0
  118. package/dist/facades.js.map +1 -0
  119. package/dist/group-fs.d.ts +122 -0
  120. package/dist/group-fs.js +467 -0
  121. package/dist/group-fs.js.map +1 -0
  122. package/dist/group-id.d.ts +9 -12
  123. package/dist/group-id.js +41 -63
  124. package/dist/group-id.js.map +1 -1
  125. package/dist/group-resources.d.ts +31 -0
  126. package/dist/group-resources.js +84 -0
  127. package/dist/group-resources.js.map +1 -0
  128. package/dist/index.d.ts +9 -3
  129. package/dist/index.js +11 -1
  130. package/dist/index.js.map +1 -1
  131. package/dist/keystore/aid-db.d.ts +1 -0
  132. package/dist/keystore/aid-db.js +43 -43
  133. package/dist/keystore/aid-db.js.map +1 -1
  134. package/dist/keystore/local-identity-store.d.ts +16 -0
  135. package/dist/keystore/local-identity-store.js +190 -18
  136. package/dist/keystore/local-identity-store.js.map +1 -1
  137. package/dist/keystore/local-token-store.d.ts +0 -13
  138. package/dist/keystore/local-token-store.js +0 -105
  139. package/dist/keystore/local-token-store.js.map +1 -1
  140. package/dist/logger.d.ts +2 -0
  141. package/dist/logger.js +4 -0
  142. package/dist/logger.js.map +1 -1
  143. package/dist/register-flow.d.ts +1 -0
  144. package/dist/register-flow.js +3 -0
  145. package/dist/register-flow.js.map +1 -1
  146. package/dist/service-proxy.d.ts +1 -0
  147. package/dist/service-proxy.js +17 -4
  148. package/dist/service-proxy.js.map +1 -1
  149. package/dist/storage/errors.d.ts +27 -0
  150. package/dist/storage/errors.js +65 -0
  151. package/dist/storage/errors.js.map +1 -0
  152. package/dist/storage/index.d.ts +1 -0
  153. package/dist/storage/index.js +2 -0
  154. package/dist/storage/index.js.map +1 -0
  155. package/dist/storage/lowlevel.d.ts +321 -0
  156. package/dist/storage/lowlevel.js +475 -0
  157. package/dist/storage/lowlevel.js.map +1 -0
  158. package/dist/storage/types.d.ts +57 -0
  159. package/dist/storage/types.js +116 -0
  160. package/dist/storage/types.js.map +1 -0
  161. package/dist/storage/vfs.d.ts +166 -0
  162. package/dist/storage/vfs.js +524 -0
  163. package/dist/storage/vfs.js.map +1 -0
  164. package/dist/tools/cross-sdk-agent.js +708 -1
  165. package/dist/tools/cross-sdk-agent.js.map +1 -1
  166. package/dist/transport.d.ts +5 -0
  167. package/dist/transport.js +124 -21
  168. package/dist/transport.js.map +1 -1
  169. package/dist/types.d.ts +38 -0
  170. package/dist/v2/session/session.d.ts +2 -0
  171. package/dist/v2/session/session.js +53 -23
  172. package/dist/v2/session/session.js.map +1 -1
  173. package/dist/v2/state/commitment.d.ts +1 -1
  174. package/dist/v2/state/commitment.js +4 -2
  175. package/dist/v2/state/commitment.js.map +1 -1
  176. package/dist/validators.d.ts +32 -0
  177. package/dist/validators.js +128 -0
  178. package/dist/validators.js.map +1 -0
  179. package/dist/version.d.ts +1 -1
  180. package/dist/version.js +1 -1
  181. package/dist/version.js.map +1 -1
  182. package/package.json +1 -1
@@ -0,0 +1,524 @@
1
+ import { mapStorageError, StorageConflictError, StorageError, StorageExistsError } from './errors.js';
2
+ import { base64ToBytes, StorageLowLevel } from './lowlevel.js';
3
+ import { mkdir, readFile, stat, writeFile } from 'node:fs/promises';
4
+ import { basename, dirname, extname, join } from 'node:path';
5
+ import { nodeFromAny, pathToKey, unmountFromAny, usageFromAny, } from './types.js';
6
+ export { StorageLowLevel } from './lowlevel.js';
7
+ export * from './errors.js';
8
+ export * from './types.js';
9
+ async function sha256Hex(data) {
10
+ const copy = new Uint8Array(data.byteLength);
11
+ copy.set(data);
12
+ const subtle = globalThis.crypto?.subtle;
13
+ if (!subtle?.digest)
14
+ throw new StorageError('SHA-256 unavailable', 'EUNSUPPORTED');
15
+ const digest = await subtle.digest('SHA-256', copy.buffer);
16
+ return Array.from(new Uint8Array(digest)).map((b) => b.toString(16).padStart(2, '0')).join('');
17
+ }
18
+ function toBytes(data) {
19
+ if (typeof data === 'string')
20
+ return new TextEncoder().encode(data);
21
+ if (data instanceof Uint8Array)
22
+ return data;
23
+ return new Uint8Array(data);
24
+ }
25
+ function contentTypeForPath(path) {
26
+ const ext = extname(path).toLowerCase();
27
+ const known = {
28
+ '.txt': 'text/plain',
29
+ '.json': 'application/json',
30
+ '.md': 'text/markdown',
31
+ '.html': 'text/html',
32
+ '.csv': 'text/csv',
33
+ '.png': 'image/png',
34
+ '.jpg': 'image/jpeg',
35
+ '.jpeg': 'image/jpeg',
36
+ '.gif': 'image/gif',
37
+ '.webp': 'image/webp',
38
+ '.pdf': 'application/pdf',
39
+ };
40
+ return known[ext] ?? 'application/octet-stream';
41
+ }
42
+ function textValue(value) {
43
+ if (value === undefined || value === null)
44
+ return '';
45
+ return String(value).trim();
46
+ }
47
+ function isInlineFallbackError(error) {
48
+ const code = String(error.code).toUpperCase();
49
+ if (['EINLINE', 'EINLINE_LIMIT', 'ERR_INLINE_LIMIT', 'INLINE_LIMIT', '-32033'].includes(code))
50
+ return true;
51
+ // 当前服务端把 inline 过大映射为通用 -32602;只保留协议术语 inline 兜底,不再依赖中文文案。
52
+ return error.code === -32602 && error.message.toLowerCase().includes('inline');
53
+ }
54
+ async function statOrNull(path) {
55
+ try {
56
+ return await stat(path);
57
+ }
58
+ catch (exc) {
59
+ if (exc?.code === 'ENOENT')
60
+ return null;
61
+ throw exc;
62
+ }
63
+ }
64
+ function parsePathLike(input, fallbackOwner) {
65
+ if (typeof input !== 'string') {
66
+ return { owner: input.owner ?? fallbackOwner ?? null, path: input.path };
67
+ }
68
+ const match = input.match(/^([^:]+):(\/.*)$/);
69
+ if (match) {
70
+ return { owner: match[1], path: match[2] };
71
+ }
72
+ return { owner: fallbackOwner ?? null, path: input };
73
+ }
74
+ export class StorageVFS {
75
+ lowlevel;
76
+ useFsRpc;
77
+ client;
78
+ constructor(client, options = {}) {
79
+ this.client = client;
80
+ this.lowlevel = options.lowlevel ?? new StorageLowLevel(client);
81
+ this.useFsRpc = options.useFsRpc ?? true;
82
+ }
83
+ get defaultOwner() {
84
+ return this.client.aid ?? null;
85
+ }
86
+ owner(owner) {
87
+ return owner || this.defaultOwner;
88
+ }
89
+ async writeBytes(path, input, options = {}) {
90
+ const data = toBytes(input);
91
+ const owner = this.owner(options.owner);
92
+ const bucket = options.bucket ?? 'default';
93
+ const objectKey = pathToKey(path);
94
+ const sha256 = await sha256Hex(data);
95
+ const overwrite = options.overwrite ?? false;
96
+ try {
97
+ const check = await this.lowlevel.checkUpload({ owner, bucket, objectKey, size: data.length, sha256 });
98
+ if (check.within_limit === false) {
99
+ throw new StorageError(`file size exceeds max_file_size_bytes: ${data.length}`, 'E2BIG', path, check);
100
+ }
101
+ if (check.target_exists && !overwrite && options.expectedVersion === undefined) {
102
+ throw new StorageExistsError(`remote path already exists: ${path}`, 'EEXIST', path, check.target);
103
+ }
104
+ if (check.dedup_hit || check.skip_upload) {
105
+ const completed = await this.lowlevel.completeUpload({
106
+ owner,
107
+ bucket,
108
+ objectKey,
109
+ size: data.length,
110
+ sha256,
111
+ contentType: options.contentType ?? 'application/octet-stream',
112
+ metadata: options.metadata,
113
+ isPublic: options.public ?? false,
114
+ expectedVersion: options.expectedVersion,
115
+ skipBlob: true,
116
+ overwrite,
117
+ });
118
+ return nodeFromAny(completed);
119
+ }
120
+ if (check.inline === true) {
121
+ return nodeFromAny(await this.lowlevel.putObject({
122
+ owner,
123
+ bucket,
124
+ objectKey,
125
+ content: data,
126
+ contentType: options.contentType ?? 'application/octet-stream',
127
+ metadata: options.metadata,
128
+ isPublic: options.public ?? false,
129
+ expectedVersion: options.expectedVersion,
130
+ overwrite,
131
+ }));
132
+ }
133
+ const session = await this.lowlevel.createUploadSession({
134
+ owner,
135
+ bucket,
136
+ objectKey,
137
+ size: data.length,
138
+ contentType: options.contentType,
139
+ expectedVersion: options.expectedVersion,
140
+ overwrite,
141
+ });
142
+ const uploadUrl = String(session.upload_url ?? '');
143
+ if (!uploadUrl)
144
+ throw new StorageError(`create_upload_session did not return upload_url`, 'ESTORAGE', path);
145
+ await this.lowlevel.httpPut(uploadUrl, data, session.headers);
146
+ return nodeFromAny(await this.lowlevel.completeUpload({
147
+ owner,
148
+ bucket,
149
+ objectKey,
150
+ sessionId: String(session.session_id ?? ''),
151
+ size: data.length,
152
+ sha256,
153
+ contentType: options.contentType,
154
+ metadata: options.metadata,
155
+ isPublic: options.public ?? false,
156
+ expectedVersion: options.expectedVersion,
157
+ overwrite,
158
+ }));
159
+ }
160
+ catch (exc) {
161
+ throw mapStorageError(exc, path);
162
+ }
163
+ }
164
+ async uploadFile(localPath, remotePath, options = {}) {
165
+ const data = await readFile(localPath);
166
+ return this.writeBytes(remotePath, data, {
167
+ ...options,
168
+ contentType: options.contentType ?? contentTypeForPath(localPath),
169
+ });
170
+ }
171
+ async readBytes(path, options = {}) {
172
+ return (await this.readBytesWithMetadata(path, options)).data;
173
+ }
174
+ async readBytesWithMetadata(path, options = {}) {
175
+ const owner = this.owner(options.owner);
176
+ const bucket = options.bucket ?? 'default';
177
+ const objectKey = pathToKey(path);
178
+ try {
179
+ const result = await this.lowlevel.getObject({ owner, bucket, objectKey, token: options.token, offset: options.offset, limit: options.limit });
180
+ return {
181
+ data: base64ToBytes(String(result.content ?? '')),
182
+ sha256: textValue(result.sha256),
183
+ };
184
+ }
185
+ catch (exc) {
186
+ const mapped = mapStorageError(exc, path);
187
+ if (options.offset !== undefined || options.limit !== undefined)
188
+ throw mapped;
189
+ if (!isInlineFallbackError(mapped))
190
+ throw mapped;
191
+ }
192
+ const ticket = await this.lowlevel.createDownloadTicket({ owner, bucket, objectKey, token: options.token });
193
+ const downloadUrl = String(ticket.download_url ?? '');
194
+ if (!downloadUrl)
195
+ throw new StorageError(`create_download_ticket did not return download_url`, 'ESTORAGE', path);
196
+ return {
197
+ data: await this.lowlevel.httpGet(downloadUrl),
198
+ sha256: textValue(ticket.sha256),
199
+ };
200
+ }
201
+ async downloadFile(path, localPath, options = {}) {
202
+ const owner = this.owner(options.owner);
203
+ const bucket = options.bucket ?? 'default';
204
+ const objectKey = pathToKey(path);
205
+ const ticket = await this.lowlevel.createDownloadTicket({ owner, bucket, objectKey, token: options.token });
206
+ const downloadUrl = String(ticket.download_url ?? '');
207
+ if (!downloadUrl)
208
+ throw new StorageError(`create_download_ticket did not return download_url`, 'ESTORAGE', path);
209
+ let targetPath = localPath;
210
+ const localInfo = await statOrNull(targetPath);
211
+ if (localInfo?.isDirectory()) {
212
+ targetPath = join(targetPath, textValue(ticket.file_name) || basename(objectKey));
213
+ }
214
+ const targetInfo = await statOrNull(targetPath);
215
+ const overwrite = options.overwrite ?? false;
216
+ if (targetInfo) {
217
+ if (targetInfo.isDirectory())
218
+ throw new StorageError(`local path is a directory: ${targetPath}`, 'EISDIR', targetPath);
219
+ if (!overwrite)
220
+ throw new StorageExistsError(`local path already exists: ${targetPath}`, 'EEXIST', targetPath);
221
+ }
222
+ const data = await this.lowlevel.httpGet(downloadUrl);
223
+ const actualSha = await sha256Hex(data);
224
+ const expectedSha = textValue(ticket.sha256);
225
+ const expected = expectedSha.toLowerCase();
226
+ const verified = !expected || actualSha.toLowerCase() === expected;
227
+ if (!verified && (options.verifyHash ?? true)) {
228
+ throw new StorageError(`hash mismatch: expected=${expected} actual=${actualSha.toLowerCase()}`, 'EHASH', path);
229
+ }
230
+ await mkdir(dirname(targetPath), { recursive: true });
231
+ try {
232
+ await writeFile(targetPath, data, { flag: overwrite ? 'w' : 'wx' });
233
+ }
234
+ catch (exc) {
235
+ if (!overwrite && exc?.code === 'EEXIST') {
236
+ throw new StorageExistsError(`local path already exists: ${targetPath}`, 'EEXIST', targetPath);
237
+ }
238
+ throw exc;
239
+ }
240
+ return {
241
+ path,
242
+ localPath: targetPath,
243
+ size: data.length,
244
+ sha256: expectedSha || actualSha,
245
+ verified,
246
+ };
247
+ }
248
+ async list(path, options = {}) {
249
+ if (options.recursive) {
250
+ const result = [];
251
+ const pending = [path];
252
+ while (pending.length) {
253
+ const current = pending.shift();
254
+ const children = await this.list(current, { ...options, recursive: false });
255
+ result.push(...children);
256
+ pending.push(...children.filter((node) => node.type === 'dir').map((node) => node.path));
257
+ }
258
+ return result;
259
+ }
260
+ const owner = this.owner(options.owner);
261
+ const bucket = options.bucket ?? 'default';
262
+ const key = pathToKey(path);
263
+ const raw = await this.lowlevel.fsList({
264
+ owner,
265
+ bucket,
266
+ path: key,
267
+ page: options.page,
268
+ size: options.size,
269
+ marker: options.marker,
270
+ token: options.token,
271
+ });
272
+ const items = (raw.nodes ?? raw.items ?? []);
273
+ return items.map((item) => nodeFromAny(item));
274
+ }
275
+ async stat(path, options = {}) {
276
+ const owner = this.owner(options.owner);
277
+ const raw = await this.lowlevel.fsStat({ owner, bucket: options.bucket ?? 'default', path: pathToKey(path), token: options.token });
278
+ return nodeFromAny(raw);
279
+ }
280
+ async lstat(path, options = {}) {
281
+ const owner = this.owner(options.owner);
282
+ const raw = await this.lowlevel.fsLstat({ owner, bucket: options.bucket ?? 'default', path: pathToKey(path), token: options.token });
283
+ return nodeFromAny(raw);
284
+ }
285
+ async mkdir(path, options = {}) {
286
+ const raw = await this.lowlevel.fsMkdir({ owner: this.owner(options.owner), bucket: options.bucket ?? 'default', path: pathToKey(path), parents: options.parents });
287
+ return nodeFromAny(raw.node ?? raw);
288
+ }
289
+ async touch(path, options = {}) {
290
+ const raw = await this.lowlevel.fsTouch({
291
+ owner: this.owner(options.owner),
292
+ bucket: options.bucket ?? 'default',
293
+ path: pathToKey(path),
294
+ parents: options.parents,
295
+ noCreate: options.noCreate,
296
+ mtime: options.mtime,
297
+ followSymlinks: options.followSymlinks,
298
+ });
299
+ return nodeFromAny(raw.node ?? raw);
300
+ }
301
+ async remove(path, options = {}) {
302
+ const raw = await this.lowlevel.fsRemove({ owner: this.owner(options.owner), bucket: options.bucket ?? 'default', path: pathToKey(path), recursive: options.recursive });
303
+ return { path, removedCount: Number(raw.removed_count ?? raw.deleted_count ?? 0) };
304
+ }
305
+ async rename(src, dst, options = {}) {
306
+ const raw = await this.lowlevel.fsRename({ owner: this.owner(options.owner), bucket: options.bucket ?? 'default', src: pathToKey(src), dst: pathToKey(dst), overwrite: options.overwrite, expectedVersion: options.expectedVersion });
307
+ return nodeFromAny(raw.node ?? raw);
308
+ }
309
+ async copy(src, dst, options = {}) {
310
+ const raw = await this.lowlevel.fsCopy({
311
+ owner: this.owner(options.owner),
312
+ bucket: options.bucket ?? 'default',
313
+ src: pathToKey(src),
314
+ dst: pathToKey(dst),
315
+ overwrite: options.overwrite,
316
+ followSymlinks: options.followSymlinks,
317
+ recursive: options.recursive,
318
+ dstOwner: options.dstOwner,
319
+ dstBucket: options.dstBucket,
320
+ });
321
+ return nodeFromAny(raw.node ?? raw);
322
+ }
323
+ async find(path, options = {}) {
324
+ const raw = await this.lowlevel.fsFind({
325
+ owner: this.owner(options.owner),
326
+ bucket: options.bucket ?? 'default',
327
+ path: pathToKey(path),
328
+ name: options.name,
329
+ nodeType: options.nodeType,
330
+ size: options.size,
331
+ mtime: options.mtime,
332
+ page: options.page,
333
+ pageSize: options.pageSize,
334
+ token: options.token,
335
+ });
336
+ const items = (raw.nodes ?? raw.items ?? []);
337
+ return items.map((item) => nodeFromAny(item));
338
+ }
339
+ async df(options = {}) {
340
+ const owner = this.owner(options.owner);
341
+ const raw = await this.lowlevel.fsDf({ owner, bucket: options.bucket ?? 'default' });
342
+ return usageFromAny(raw, owner ?? undefined);
343
+ }
344
+ async du(path, options = {}) {
345
+ const nodes = await this.find(path, {
346
+ owner: options.owner,
347
+ bucket: options.bucket,
348
+ page: 1,
349
+ pageSize: options.pageSize ?? 1000,
350
+ token: options.token,
351
+ });
352
+ const rootParts = pathToKey(path).split('/').filter(Boolean);
353
+ let sizeBytes = 0;
354
+ let fileCount = 0;
355
+ let dirCount = 0;
356
+ let symlinkCount = 0;
357
+ let truncated = false;
358
+ for (const node of nodes) {
359
+ const nodeParts = pathToKey(node.path).split('/').filter(Boolean);
360
+ const depth = Math.max(0, nodeParts.length - rootParts.length);
361
+ if (options.maxDepth !== undefined && depth > options.maxDepth) {
362
+ truncated = true;
363
+ continue;
364
+ }
365
+ if (node.type === 'file') {
366
+ fileCount += 1;
367
+ sizeBytes += node.size;
368
+ }
369
+ else if (node.type === 'dir') {
370
+ dirCount += 1;
371
+ }
372
+ else if (node.type === 'symlink') {
373
+ symlinkCount += 1;
374
+ }
375
+ }
376
+ return {
377
+ path,
378
+ sizeBytes,
379
+ fileCount,
380
+ dirCount,
381
+ symlinkCount,
382
+ maxDepth: options.maxDepth,
383
+ truncated,
384
+ };
385
+ }
386
+ async mount(source, mountPath, options = {}) {
387
+ const owner = this.owner(options.owner);
388
+ const mountRef = parsePathLike(mountPath, owner);
389
+ const sourceRef = parsePathLike(source, options.sourceOwner ?? this.defaultOwner);
390
+ const raw = await this.lowlevel.fsMount({
391
+ owner: mountRef.owner,
392
+ bucket: options.bucket ?? 'default',
393
+ mountPath: pathToKey(mountRef.path),
394
+ sourceAid: String(sourceRef.owner ?? ''),
395
+ sourceBucket: options.sourceBucket,
396
+ sourcePath: pathToKey(sourceRef.path),
397
+ readonly: options.readonly,
398
+ expiresAt: options.expiresAt ?? options.expires,
399
+ requireApproval: options.requireApproval,
400
+ });
401
+ return nodeFromAny(raw.node ?? raw.mount ?? raw);
402
+ }
403
+ async mountVolume(volumeId, mountPath, options = {}) {
404
+ const owner = this.owner(options.owner);
405
+ const mountRef = parsePathLike(mountPath, owner);
406
+ const raw = await this.lowlevel.fsMount({
407
+ owner: mountRef.owner,
408
+ bucket: options.bucket ?? 'default',
409
+ mountPath: pathToKey(mountRef.path),
410
+ readonly: options.readonly,
411
+ expiresAt: options.expiresAt ?? options.expires,
412
+ requireApproval: options.requireApproval,
413
+ volumeId,
414
+ });
415
+ return nodeFromAny(raw.node ?? raw.mount ?? raw);
416
+ }
417
+ approveMount(mountPath, options = {}) {
418
+ const owner = this.owner(options.owner);
419
+ const mountRef = parsePathLike(mountPath, owner);
420
+ return this.lowlevel.fsApprove({
421
+ owner: mountRef.owner,
422
+ bucket: options.bucket ?? 'default',
423
+ mountPath: pathToKey(mountRef.path),
424
+ mountId: options.mountId,
425
+ requestId: options.requestId,
426
+ });
427
+ }
428
+ rejectMount(mountPath, options = {}) {
429
+ const owner = this.owner(options.owner);
430
+ const mountRef = parsePathLike(mountPath, owner);
431
+ return this.lowlevel.fsReject({
432
+ owner: mountRef.owner,
433
+ bucket: options.bucket ?? 'default',
434
+ mountPath: pathToKey(mountRef.path),
435
+ mountId: options.mountId,
436
+ requestId: options.requestId,
437
+ });
438
+ }
439
+ async unmount(mountPath, options = {}) {
440
+ const owner = this.owner(options.owner);
441
+ const mountRef = parsePathLike(mountPath, owner);
442
+ const raw = await this.lowlevel.fsUnmount({
443
+ owner: mountRef.owner,
444
+ bucket: options.bucket ?? 'default',
445
+ mountPath: pathToKey(mountRef.path),
446
+ });
447
+ return unmountFromAny(raw, {
448
+ owner: mountRef.owner,
449
+ bucket: options.bucket ?? 'default',
450
+ mountPath: pathToKey(mountRef.path),
451
+ });
452
+ }
453
+ async symlink(target, linkPath, options = {}) {
454
+ const raw = await this.lowlevel.createSymlink({ owner: this.owner(options.owner), bucket: options.bucket ?? 'default', path: pathToKey(linkPath), target, overwrite: options.overwrite });
455
+ return nodeFromAny(raw.symlink ?? raw);
456
+ }
457
+ async readlink(path, options = {}) {
458
+ const raw = await this.lowlevel.readlink({ owner: this.owner(options.owner), bucket: options.bucket ?? 'default', path: pathToKey(path) });
459
+ return nodeFromAny(raw.symlink ?? raw);
460
+ }
461
+ async repoint(path, newTarget, options = {}) {
462
+ const raw = await this.lowlevel.atomicRepoint({ owner: this.owner(options.owner), bucket: options.bucket ?? 'default', path: pathToKey(path), newTarget, expectedVersion: options.expectedVersion });
463
+ if (raw.ok === false)
464
+ throw new StorageConflictError('symlink version conflict', 'ECONFLICT', path, raw);
465
+ return nodeFromAny(raw.symlink ?? raw);
466
+ }
467
+ async renameSymlink(src, dst, options = {}) {
468
+ const raw = await this.lowlevel.renameSymlink({
469
+ owner: this.owner(options.owner),
470
+ bucket: options.bucket ?? 'default',
471
+ path: pathToKey(src),
472
+ newPath: pathToKey(dst),
473
+ overwrite: options.overwrite,
474
+ expectedVersion: options.expectedVersion,
475
+ });
476
+ if (raw.ok === false)
477
+ throw new StorageConflictError('symlink version conflict', 'ECONFLICT', src, raw);
478
+ return nodeFromAny(raw.symlink ?? raw);
479
+ }
480
+ setAcl(path, options) {
481
+ return this.lowlevel.setAcl({ owner: this.owner(options.owner), bucket: options.bucket ?? 'default', path: pathToKey(path), granteeAid: options.granteeAid, perms: options.perms, expiresAt: options.expiresAt, maxUses: options.maxUses });
482
+ }
483
+ removeAcl(path, options) {
484
+ return this.lowlevel.removeAcl({ owner: this.owner(options.owner), bucket: options.bucket ?? 'default', path: pathToKey(path), granteeAid: options.granteeAid });
485
+ }
486
+ listAcl(path, options = {}) {
487
+ return this.lowlevel.listAcl({ owner: this.owner(options.owner), bucket: options.bucket ?? 'default', path: pathToKey(path) });
488
+ }
489
+ async setVisibility(path, options) {
490
+ const raw = await this.lowlevel.setVisibility({
491
+ owner: this.owner(options.owner),
492
+ bucket: options.bucket ?? 'default',
493
+ path: pathToKey(path),
494
+ visibility: options.visibility,
495
+ allowRoles: options.allowRoles,
496
+ });
497
+ return nodeFromAny(raw.node ?? raw);
498
+ }
499
+ checkAccess(path, options = {}) {
500
+ return this.lowlevel.checkAccess({
501
+ owner: this.owner(options.owner),
502
+ bucket: options.bucket ?? 'default',
503
+ path: pathToKey(path),
504
+ operation: options.operation ?? 'read',
505
+ token: options.token,
506
+ followSymlinks: options.followSymlinks ?? true,
507
+ });
508
+ }
509
+ issueToken(path, options = {}) {
510
+ return this.lowlevel.issueToken({ owner: this.owner(options.owner), bucket: options.bucket ?? 'default', path: pathToKey(path), expiresAt: options.expiresAt, maxReads: options.maxReads });
511
+ }
512
+ revokeToken(path, options) {
513
+ return this.lowlevel.revokeToken({ owner: this.owner(options.owner), bucket: options.bucket ?? 'default', path: pathToKey(path), token: options.token });
514
+ }
515
+ listTokens(path, options = {}) {
516
+ return this.lowlevel.listTokens({ owner: this.owner(options.owner), bucket: options.bucket ?? 'default', path: pathToKey(path) });
517
+ }
518
+ async getUsage(options = {}) {
519
+ const owner = this.owner(options.owner);
520
+ const raw = await this.lowlevel.getQuota({ owner, bucket: options.bucket ?? 'default' });
521
+ return usageFromAny(raw, owner ?? '');
522
+ }
523
+ }
524
+ //# sourceMappingURL=vfs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vfs.js","sourceRoot":"","sources":["../../src/storage/vfs.ts"],"names":[],"mappings":"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"}