@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.
Files changed (182) hide show
  1. package/CHANGELOG.md +480 -359
  2. package/_packed_docs/CHANGELOG.md +480 -359
  3. package/_packed_docs/INDEX.md +111 -53
  4. package/_packed_docs/KITE_DOCS_GUIDE.md +43 -29
  5. package/_packed_docs/agent.md/SCHEMA.md +2 -0
  6. package/_packed_docs/agent.md/examples/codeagent-claudecode.md +2 -0
  7. package/_packed_docs/agent.md/examples/human-developer.md +2 -0
  8. package/_packed_docs/agent.md/examples/openclaw-lobster.md +2 -0
  9. package/_packed_docs/agent.md/examples/signed-openclaw-lobster.md +2 -0
  10. 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
  11. package/_packed_docs/cli/AUN-CLI/350/256/276/350/256/241/346/226/207/346/241/243.md +265 -686
  12. package/_packed_docs/collab-gateway-boundary-test-report.md +164 -0
  13. package/_packed_docs/design/2026-05-22-aun-rpc-trace-enhancement.md +2 -0
  14. 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
  15. 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
  16. 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
  17. package/_packed_docs/protocol/00-/346/200/273/350/247/210/344/270/216/345/210/206/345/261/202.md +2 -0
  18. 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
  19. 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
  20. 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
  21. package/_packed_docs/protocol/03-Gateway-/350/277/236/346/216/245/346/250/241/345/274/217.md +2 -0
  22. package/_packed_docs/protocol/04-Peer-/345/255/220/345/215/217/350/256/256.md +2 -0
  23. package/_packed_docs/protocol/05-Relay-/345/255/220/345/215/217/350/256/256.md +2 -0
  24. 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
  25. package/_packed_docs/protocol/08-AUN-E2EE-Group.md +2 -0
  26. package/_packed_docs/protocol/08-AUN-E2EE.md +2 -0
  27. package/_packed_docs/protocol/09-/345/256/211/345/205/250/350/200/203/350/231/221.md +2 -0
  28. package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +28 -85
  29. package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +49 -0
  30. package/_packed_docs/protocol/12-Stream-/345/255/220/345/215/217/350/256/256.md +2 -0
  31. package/_packed_docs/protocol/13-Agent/350/241/214/344/270/272/350/247/204/350/214/203.md +2 -0
  32. 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
  33. 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
  34. package/_packed_docs/protocol/README.md +2 -0
  35. package/_packed_docs/protocol/agent.md/SCHEMA.md +2 -0
  36. package/_packed_docs/protocol/agent.md/examples/codeagent-claudecode.md +2 -0
  37. package/_packed_docs/protocol/agent.md/examples/human-developer.md +2 -0
  38. package/_packed_docs/protocol/agent.md/examples/openclaw-lobster.md +2 -0
  39. package/_packed_docs/protocol/aun-docs-guide.md +2 -0
  40. package/_packed_docs/protocol/index.md +3 -1
  41. 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
  42. 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
  43. package/_packed_docs/protocol//351/231/204/345/275/225A-/346/234/257/350/257/255/350/241/250.md +2 -0
  44. 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
  45. 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
  46. 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
  47. 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
  48. 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
  49. 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
  50. 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
  51. 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
  52. 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
  53. 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
  54. 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
  55. 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
  56. 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
  57. package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +2 -0
  58. package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +2 -0
  59. package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +2 -0
  60. package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +2 -0
  61. package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +2 -0
  62. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +283 -267
  63. package/_packed_docs/sdk/07-/351/224/231/350/257/257/345/244/204/347/220/206.md +4 -1
  64. package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +2 -0
  65. package/_packed_docs/sdk/09-collab-rpc-manual.md +550 -0
  66. package/_packed_docs/sdk/09-custody-api-manual.md +2 -0
  67. package/_packed_docs/sdk/09-group-rpc-manual.md +197 -445
  68. package/_packed_docs/sdk/09-message-rpc-manual.md +8 -7
  69. package/_packed_docs/sdk/09-meta-rpc-manual.md +2 -0
  70. package/_packed_docs/sdk/09-payload-reference.md +2 -0
  71. package/_packed_docs/sdk/09-proxy-rpc-manual.md +2 -0
  72. package/_packed_docs/sdk/09-storage-rpc-manual.md +952 -279
  73. package/_packed_docs/sdk/09-stream-rpc-manual.md +2 -0
  74. package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +33 -20
  75. 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
  76. package/_packed_docs/sdk/INDEX.md +46 -29
  77. package/_packed_docs/sdk/Notify/351/200/232/347/237/245/346/226/271/346/241/210.md +2 -0
  78. package/_packed_docs/sdk/README.md +17 -15
  79. package/dist/aid-store.d.ts +25 -0
  80. package/dist/aid-store.d.ts.map +1 -1
  81. package/dist/aid-store.js +89 -8
  82. package/dist/aid-store.js.map +1 -1
  83. package/dist/auth.d.ts +2 -0
  84. package/dist/auth.d.ts.map +1 -1
  85. package/dist/auth.js +98 -9
  86. package/dist/auth.js.map +1 -1
  87. package/dist/bundle.js +19156 -16554
  88. package/dist/client/delivery.d.ts +5 -0
  89. package/dist/client/delivery.d.ts.map +1 -1
  90. package/dist/client/delivery.js +169 -15
  91. package/dist/client/delivery.js.map +1 -1
  92. package/dist/client/rpc-pipeline.d.ts +1 -0
  93. package/dist/client/rpc-pipeline.d.ts.map +1 -1
  94. package/dist/client/rpc-pipeline.js +76 -34
  95. package/dist/client/rpc-pipeline.js.map +1 -1
  96. package/dist/client/v2-e2ee.d.ts.map +1 -1
  97. package/dist/client/v2-e2ee.js +67 -8
  98. package/dist/client/v2-e2ee.js.map +1 -1
  99. package/dist/client.d.ts +31 -0
  100. package/dist/client.d.ts.map +1 -1
  101. package/dist/client.js +313 -23
  102. package/dist/client.js.map +1 -1
  103. package/dist/collab/client.d.ts +39 -0
  104. package/dist/collab/client.d.ts.map +1 -0
  105. package/dist/collab/client.js +124 -0
  106. package/dist/collab/client.js.map +1 -0
  107. package/dist/collab/errors.d.ts +16 -0
  108. package/dist/collab/errors.d.ts.map +1 -0
  109. package/dist/collab/errors.js +60 -0
  110. package/dist/collab/errors.js.map +1 -0
  111. package/dist/collab/index.d.ts +4 -0
  112. package/dist/collab/index.d.ts.map +1 -0
  113. package/dist/collab/index.js +4 -0
  114. package/dist/collab/index.js.map +1 -0
  115. package/dist/collab/types.d.ts +111 -0
  116. package/dist/collab/types.d.ts.map +1 -0
  117. package/dist/collab/types.js +2 -0
  118. package/dist/collab/types.js.map +1 -0
  119. package/dist/crypto.d.ts +6 -0
  120. package/dist/crypto.d.ts.map +1 -1
  121. package/dist/crypto.js +6 -0
  122. package/dist/crypto.js.map +1 -1
  123. package/dist/errors.d.ts.map +1 -1
  124. package/dist/errors.js +16 -1
  125. package/dist/errors.js.map +1 -1
  126. package/dist/facades.d.ts +89 -0
  127. package/dist/facades.d.ts.map +1 -0
  128. package/dist/facades.js +228 -0
  129. package/dist/facades.js.map +1 -0
  130. package/dist/group-fs.d.ts +103 -0
  131. package/dist/group-fs.d.ts.map +1 -0
  132. package/dist/group-fs.js +496 -0
  133. package/dist/group-fs.js.map +1 -0
  134. package/dist/group-resources.d.ts +98 -0
  135. package/dist/group-resources.d.ts.map +1 -0
  136. package/dist/group-resources.js +635 -0
  137. package/dist/group-resources.js.map +1 -0
  138. package/dist/index.d.ts +4 -1
  139. package/dist/index.d.ts.map +1 -1
  140. package/dist/index.js +6 -0
  141. package/dist/index.js.map +1 -1
  142. package/dist/register-flow.d.ts +1 -0
  143. package/dist/register-flow.d.ts.map +1 -1
  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.d.ts.map +1 -1
  148. package/dist/service-proxy.js +15 -3
  149. package/dist/service-proxy.js.map +1 -1
  150. package/dist/storage/errors.d.ts +28 -0
  151. package/dist/storage/errors.d.ts.map +1 -0
  152. package/dist/storage/errors.js +65 -0
  153. package/dist/storage/errors.js.map +1 -0
  154. package/dist/storage/index.d.ts +2 -0
  155. package/dist/storage/index.d.ts.map +1 -0
  156. package/dist/storage/index.js +2 -0
  157. package/dist/storage/index.js.map +1 -0
  158. package/dist/storage/lowlevel.d.ts +314 -0
  159. package/dist/storage/lowlevel.d.ts.map +1 -0
  160. package/dist/storage/lowlevel.js +460 -0
  161. package/dist/storage/lowlevel.js.map +1 -0
  162. package/dist/storage/types.d.ts +59 -0
  163. package/dist/storage/types.d.ts.map +1 -0
  164. package/dist/storage/types.js +113 -0
  165. package/dist/storage/types.js.map +1 -0
  166. package/dist/storage/vfs.d.ts +144 -0
  167. package/dist/storage/vfs.d.ts.map +1 -0
  168. package/dist/storage/vfs.js +403 -0
  169. package/dist/storage/vfs.js.map +1 -0
  170. package/dist/tools/cross-sdk-agent.d.ts +3 -0
  171. package/dist/tools/cross-sdk-agent.d.ts.map +1 -0
  172. package/dist/tools/cross-sdk-agent.js +1089 -0
  173. package/dist/tools/cross-sdk-agent.js.map +1 -0
  174. package/dist/transport.d.ts +3 -0
  175. package/dist/transport.d.ts.map +1 -1
  176. package/dist/transport.js +33 -13
  177. package/dist/transport.js.map +1 -1
  178. package/dist/version.d.ts +1 -1
  179. package/dist/version.d.ts.map +1 -1
  180. package/dist/version.js +1 -1
  181. package/dist/version.js.map +1 -1
  182. package/package.json +44 -44
@@ -0,0 +1,496 @@
1
+ import { StorageConflictError, StorageError, StorageExistsError, mapStorageError } from './storage/errors.js';
2
+ import { StorageLowLevel } from './storage/lowlevel.js';
3
+ const WINDOWS_DRIVE_RE = /^[A-Za-z]:[\\/]/;
4
+ const GROUP_REF_RE = /^[^:/\\][^:]*:\//;
5
+ const LOCAL_PREFIX = 'local:';
6
+ function isExplicitLocalPath(value) {
7
+ return String(value || '').trim().toLowerCase().startsWith(LOCAL_PREFIX);
8
+ }
9
+ function stripLocalPathPrefix(value) {
10
+ const text = String(value || '').trim();
11
+ return text.toLowerCase().startsWith(LOCAL_PREFIX) ? text.slice(LOCAL_PREFIX.length) : text;
12
+ }
13
+ function isGroupRemoteCopyPath(value, ...groupHints) {
14
+ if (isExplicitLocalPath(value))
15
+ return false;
16
+ return isGroupRemotePath(value) || groupHints.some(Boolean);
17
+ }
18
+ export function isGroupRemotePath(value) {
19
+ const text = String(value || '').trim();
20
+ if (!text)
21
+ return false;
22
+ if (isExplicitLocalPath(text))
23
+ return false;
24
+ if (WINDOWS_DRIVE_RE.test(text))
25
+ return false;
26
+ if (text.startsWith('http://') || text.startsWith('https://'))
27
+ return true;
28
+ return GROUP_REF_RE.test(text);
29
+ }
30
+ function stripNil(params) {
31
+ const out = {};
32
+ for (const [key, value] of Object.entries(params ?? {})) {
33
+ if (value !== undefined && value !== null)
34
+ out[key] = value;
35
+ }
36
+ return out;
37
+ }
38
+ async function loadSigningAID(store, signAs) {
39
+ const loaded = store.load
40
+ ? await store.load(signAs)
41
+ : store.loadAsync
42
+ ? await store.loadAsync(signAs)
43
+ : null;
44
+ if (!loaded?.ok || !loaded.data?.aid) {
45
+ throw new Error(loaded?.error?.message || `signer identity not found: ${signAs}`);
46
+ }
47
+ if (!loaded.data.aid.privateKeyPem) {
48
+ throw new Error(`signer identity missing private key: ${signAs}`);
49
+ }
50
+ return loaded.data.aid;
51
+ }
52
+ function text(value) {
53
+ return value === undefined || value === null ? '' : String(value).trim();
54
+ }
55
+ function accessTokenFromClient(client) {
56
+ const authClient = client;
57
+ if (typeof authClient.getAccessToken === 'function') {
58
+ const token = text(authClient.getAccessToken());
59
+ if (token)
60
+ return token;
61
+ }
62
+ const directToken = text(authClient.accessToken ?? authClient.access_token);
63
+ if (directToken)
64
+ return directToken;
65
+ const identityToken = text(authClient._identity?.access_token);
66
+ if (identityToken)
67
+ return identityToken;
68
+ return text(authClient._sessionParams?.access_token);
69
+ }
70
+ function bearerHeaders(client) {
71
+ const token = accessTokenFromClient(client);
72
+ return token ? { Authorization: `Bearer ${token}` } : undefined;
73
+ }
74
+ function toExactArrayBuffer(bytes) {
75
+ return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
76
+ }
77
+ async function sha256Hex(data) {
78
+ const subtle = globalThis.crypto?.subtle;
79
+ if (!subtle?.digest)
80
+ throw new StorageError('SHA-256 unavailable', 'EUNSUPPORTED');
81
+ const digest = await subtle.digest('SHA-256', toExactArrayBuffer(data));
82
+ return Array.from(new Uint8Array(digest)).map((b) => b.toString(16).padStart(2, '0')).join('');
83
+ }
84
+ async function blobToBytes(blob) {
85
+ if (typeof blob.arrayBuffer === 'function') {
86
+ return new Uint8Array(await blob.arrayBuffer());
87
+ }
88
+ if (typeof blob.stream === 'function' && typeof Response !== 'undefined') {
89
+ return new Uint8Array(await new Response(blob).arrayBuffer());
90
+ }
91
+ if (typeof FileReader !== 'undefined') {
92
+ return await new Promise((resolve, reject) => {
93
+ const reader = new FileReader();
94
+ reader.onload = () => resolve(new Uint8Array(reader.result));
95
+ reader.onerror = () => reject(reader.error ?? new StorageError('Blob read failed', 'ESTORAGE'));
96
+ reader.readAsArrayBuffer(blob);
97
+ });
98
+ }
99
+ if (typeof blob.text === 'function') {
100
+ return new TextEncoder().encode(await blob.text());
101
+ }
102
+ throw new StorageError('Blob reads are unavailable in this JavaScript runtime', 'EUNSUPPORTED');
103
+ }
104
+ async function toBytes(source) {
105
+ if (typeof source === 'string')
106
+ return new TextEncoder().encode(source);
107
+ if (source instanceof Uint8Array)
108
+ return source;
109
+ if (source instanceof ArrayBuffer)
110
+ return new Uint8Array(source);
111
+ if (typeof Blob !== 'undefined' && source instanceof Blob) {
112
+ return blobToBytes(source);
113
+ }
114
+ if (ArrayBuffer.isView(source)) {
115
+ return new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
116
+ }
117
+ throw new StorageError('unsupported group fs upload source', 'EUNSUPPORTED');
118
+ }
119
+ async function importNodeModule(specifier) {
120
+ if (typeof document !== 'undefined')
121
+ return null;
122
+ const getBuiltinModule = globalThis.process?.getBuiltinModule;
123
+ if (typeof getBuiltinModule === 'function' && specifier.startsWith('node:')) {
124
+ try {
125
+ return getBuiltinModule(specifier.slice('node:'.length));
126
+ }
127
+ catch {
128
+ // 回退到动态 import。
129
+ }
130
+ }
131
+ try {
132
+ const requireFn = Function('return typeof require !== "undefined" ? require : undefined');
133
+ const requireModule = requireFn();
134
+ if (requireModule)
135
+ return requireModule(specifier);
136
+ }
137
+ catch {
138
+ // 回退到动态 import。
139
+ }
140
+ try {
141
+ const dynamicImport = Function(`return import(${JSON.stringify(specifier)})`);
142
+ return await dynamicImport();
143
+ }
144
+ catch {
145
+ return null;
146
+ }
147
+ }
148
+ async function readLocalFile(path) {
149
+ const fs = await importNodeModule('node:fs/promises');
150
+ if (!fs?.readFile)
151
+ throw new StorageError('local file reads are unavailable in this JavaScript runtime', 'EUNSUPPORTED', path);
152
+ return new Uint8Array(await fs.readFile(path));
153
+ }
154
+ async function writeLocalFile(path, data, force) {
155
+ const fs = await importNodeModule('node:fs/promises');
156
+ const pathMod = await importNodeModule('node:path');
157
+ if (!fs?.writeFile || !pathMod?.dirname)
158
+ return false;
159
+ await fs.mkdir(pathMod.dirname(path), { recursive: true });
160
+ try {
161
+ await fs.writeFile(path, data, force ? undefined : { flag: 'wx' });
162
+ return true;
163
+ }
164
+ catch (exc) {
165
+ const code = text(exc.code);
166
+ if (code === 'EEXIST')
167
+ throw new StorageExistsError(`local path already exists: ${path}`, 'EEXIST', path);
168
+ throw exc;
169
+ }
170
+ }
171
+ async function localFileStatus(path) {
172
+ const fs = await importNodeModule('node:fs/promises');
173
+ if (!fs?.stat)
174
+ return 'unavailable';
175
+ try {
176
+ const info = await fs.stat(path);
177
+ return info.isDirectory() ? 'dir' : 'file';
178
+ }
179
+ catch (exc) {
180
+ const code = text(exc.code);
181
+ if (code === 'ENOENT')
182
+ return 'missing';
183
+ throw exc;
184
+ }
185
+ }
186
+ function guessContentType(path) {
187
+ const lower = path.toLowerCase();
188
+ if (lower.endsWith('.md'))
189
+ return 'text/markdown';
190
+ if (lower.endsWith('.txt'))
191
+ return 'text/plain';
192
+ if (lower.endsWith('.json'))
193
+ return 'application/json';
194
+ if (lower.endsWith('.html') || lower.endsWith('.htm'))
195
+ return 'text/html';
196
+ if (lower.endsWith('.png'))
197
+ return 'image/png';
198
+ if (lower.endsWith('.jpg') || lower.endsWith('.jpeg'))
199
+ return 'image/jpeg';
200
+ return 'application/octet-stream';
201
+ }
202
+ function downloadTarget(dst) {
203
+ if (typeof dst === 'string') {
204
+ if (dst === 'blob:')
205
+ return { mode: 'blob' };
206
+ if (dst === 'bytes:')
207
+ return { mode: 'bytes' };
208
+ return { mode: 'local', localPath: stripLocalPathPrefix(dst) };
209
+ }
210
+ const mode = dst.type === 'blob' ? 'blob' : dst.type === 'bytes' ? 'bytes' : dst.path || dst.localPath ? 'local' : 'bytes';
211
+ const localPath = dst.path ?? dst.localPath;
212
+ return { mode, localPath: localPath ? stripLocalPathPrefix(localPath) : localPath };
213
+ }
214
+ export class GroupFSVFS {
215
+ lowlevel;
216
+ client;
217
+ constructor(client, options = {}) {
218
+ this.client = client;
219
+ this.lowlevel = options.lowlevel ?? new StorageLowLevel(client);
220
+ }
221
+ async call(method, params, path = '') {
222
+ try {
223
+ return await this.client.call(method, await this.prepareParams(params));
224
+ }
225
+ catch (exc) {
226
+ throw mapStorageError(exc, path);
227
+ }
228
+ }
229
+ async prepareParams(params) {
230
+ const next = { ...(params ?? {}) };
231
+ const signAs = text(next.sign_as ?? next.signAs);
232
+ const aidStore = (next.aid_store ?? next.aidStore);
233
+ delete next.sign_as;
234
+ delete next.signAs;
235
+ delete next.aid_store;
236
+ delete next.aidStore;
237
+ if (signAs) {
238
+ const currentAid = text(this.client.aid ?? this.client._aid);
239
+ if (currentAid.toLowerCase() !== signAs.toLowerCase()) {
240
+ if (!aidStore) {
241
+ throw new Error(`group.fs operation requires aidStore to sign as ${signAs}`);
242
+ }
243
+ next._client_signature_identity = await loadSigningAID(aidStore, signAs);
244
+ }
245
+ }
246
+ return stripNil(next);
247
+ }
248
+ ls(path, options = {}) {
249
+ return this.call('group.fs.ls', { path, ...options }, path);
250
+ }
251
+ find(path, options = {}) {
252
+ return this.call('group.fs.find', { path, ...options }, path);
253
+ }
254
+ stat(path, options = {}) {
255
+ return this.call('group.fs.stat', { path, ...options }, path);
256
+ }
257
+ lstat(path, options = {}) {
258
+ return this.call('group.fs.lstat', { path, ...options }, path);
259
+ }
260
+ mkdir(path, options = {}) {
261
+ return this.call('group.fs.mkdir', { path, parents: options.parents ?? false, ...options }, path);
262
+ }
263
+ rm(path, options = {}) {
264
+ return this.call('group.fs.rm', {
265
+ path,
266
+ recursive: options.recursive ?? false,
267
+ force: options.force ?? false,
268
+ ...options,
269
+ }, path);
270
+ }
271
+ async cp(src, dst, options = {}) {
272
+ const groupId = options.group_id ?? options.groupId;
273
+ const srcGroupId = options.src_group_id ?? options.srcGroupId;
274
+ const dstGroupId = options.dst_group_id ?? options.dstGroupId;
275
+ const srcRemote = typeof src === 'string' && isGroupRemoteCopyPath(src, srcGroupId, groupId);
276
+ const dstRemote = typeof dst === 'string' && isGroupRemoteCopyPath(dst, dstGroupId, groupId);
277
+ if (srcRemote && dstRemote)
278
+ return this.copyRemoteToRemote(src, dst, options);
279
+ if (!srcRemote && dstRemote)
280
+ return this.uploadToGroup(src, dst, options);
281
+ if (srcRemote && !dstRemote)
282
+ return this.downloadFromGroup(src, dst, options);
283
+ throw new StorageError('local-to-local copy is not handled by group.fs', 'EINVAL', typeof src === 'string' ? src : '');
284
+ }
285
+ async mv(src, dst, options = {}) {
286
+ const groupId = options.group_id ?? options.groupId;
287
+ const srcGroupId = options.src_group_id ?? options.srcGroupId;
288
+ const dstGroupId = options.dst_group_id ?? options.dstGroupId;
289
+ if (!isGroupRemoteCopyPath(src, srcGroupId, groupId) || !isGroupRemoteCopyPath(dst, dstGroupId, groupId)) {
290
+ throw new StorageError('group.fs.mv only supports group remote paths', 'EINVAL', src);
291
+ }
292
+ const params = this.remoteCopyParams(src, dst, options);
293
+ return this.call('group.fs.mv', params, src);
294
+ }
295
+ df(pathOrGroup, options = {}) {
296
+ const params = { ...options };
297
+ if (pathOrGroup !== undefined && pathOrGroup !== null)
298
+ params.path = pathOrGroup;
299
+ return this.call('group.fs.df', params, pathOrGroup ?? '');
300
+ }
301
+ mount(path, options = {}) {
302
+ return this.call('group.fs.mount', { path, ...options }, path);
303
+ }
304
+ umount(path, options = {}) {
305
+ return this.call('group.fs.umount', { path, ...options }, path);
306
+ }
307
+ remoteCopyParams(src, dst, options) {
308
+ const params = { ...options, src, dst };
309
+ delete params.contentType;
310
+ delete params.content_type;
311
+ delete params.metadata;
312
+ delete params.expectedVersion;
313
+ delete params.expected_version;
314
+ delete params.parents;
315
+ delete params.verifyHash;
316
+ delete params.verify_hash;
317
+ delete params.sourceType;
318
+ delete params.source_type;
319
+ delete params.localPath;
320
+ delete params.local_path;
321
+ if (options.groupId !== undefined)
322
+ params.group_id = options.groupId;
323
+ if (options.srcGroupId !== undefined)
324
+ params.src_group_id = options.srcGroupId;
325
+ if (options.dstGroupId !== undefined)
326
+ params.dst_group_id = options.dstGroupId;
327
+ if (options.followSymlinks !== undefined)
328
+ params.follow_symlinks = options.followSymlinks;
329
+ delete params.followSymlinks;
330
+ if (!options.force)
331
+ delete params.force;
332
+ if (!options.recursive)
333
+ delete params.recursive;
334
+ return stripNil(params);
335
+ }
336
+ copyRemoteToRemote(src, dst, options) {
337
+ return this.call('group.fs.cp', this.remoteCopyParams(src, dst, options), src);
338
+ }
339
+ async sourceBytes(src, options) {
340
+ if (typeof src === 'string') {
341
+ const sourceType = text(options.source_type ?? options.sourceType);
342
+ if (isExplicitLocalPath(src) || sourceType === 'path' || options.localPath === true || options.local_path === true) {
343
+ const localPath = stripLocalPathPrefix(src);
344
+ return { data: await readLocalFile(localPath), contentType: guessContentType(localPath) };
345
+ }
346
+ return { data: await toBytes(src), contentType: 'text/plain;charset=utf-8' };
347
+ }
348
+ const data = await toBytes(src);
349
+ const blobType = typeof Blob !== 'undefined' && src instanceof Blob ? text(src.type) : '';
350
+ const fileName = text(src.name);
351
+ return { data, contentType: blobType || (fileName ? guessContentType(fileName) : 'application/octet-stream') };
352
+ }
353
+ async uploadToGroup(src, dst, options) {
354
+ const { data, contentType } = await this.sourceBytes(src, options);
355
+ const digest = await sha256Hex(data);
356
+ const baseParams = stripNil({
357
+ ...options,
358
+ path: dst,
359
+ group_id: options.group_id ?? options.groupId ?? options.dst_group_id ?? options.dstGroupId,
360
+ size_bytes: data.byteLength,
361
+ sha256: digest,
362
+ content_type: options.content_type ?? options.contentType ?? contentType,
363
+ force: options.force ?? false,
364
+ parents: options.parents ?? true,
365
+ metadata: options.metadata,
366
+ expected_version: options.expected_version ?? options.expectedVersion,
367
+ });
368
+ delete baseParams.groupId;
369
+ delete baseParams.dstGroupId;
370
+ delete baseParams.dst_group_id;
371
+ delete baseParams.srcGroupId;
372
+ delete baseParams.src_group_id;
373
+ delete baseParams.contentType;
374
+ delete baseParams.expectedVersion;
375
+ delete baseParams.verifyHash;
376
+ delete baseParams.verify_hash;
377
+ delete baseParams.recursive;
378
+ delete baseParams.followSymlinks;
379
+ delete baseParams.follow_symlinks;
380
+ delete baseParams.sourceType;
381
+ delete baseParams.source_type;
382
+ delete baseParams.localPath;
383
+ delete baseParams.local_path;
384
+ const check = await this.call('group.fs.check_upload', baseParams, dst);
385
+ if (check && typeof check === 'object') {
386
+ const raw = check;
387
+ if (raw.within_limit === false)
388
+ throw new StorageError('file size exceeds group fs upload limit', 'E2BIG', dst, raw);
389
+ if (raw.target_exists && !options.force && options.expected_version === undefined && options.expectedVersion === undefined) {
390
+ throw new StorageExistsError('group fs target already exists', 'EEXIST', dst, raw.target);
391
+ }
392
+ if (raw.instant || raw.dedup_hit || raw.skip_upload) {
393
+ return this.call('group.fs.complete_upload', {
394
+ ...baseParams,
395
+ skip_blob: true,
396
+ session_id: raw.session_id,
397
+ }, dst);
398
+ }
399
+ }
400
+ const session = await this.call('group.fs.create_upload_session', baseParams, dst);
401
+ if (!session || typeof session !== 'object') {
402
+ throw new StorageError(`group.fs.create_upload_session returned invalid response`, 'ESTORAGE', dst, session);
403
+ }
404
+ const rawSession = session;
405
+ const uploadUrl = text(rawSession.upload_url ?? rawSession.url);
406
+ if (!uploadUrl)
407
+ throw new StorageError('group.fs.create_upload_session did not return upload_url', 'ESTORAGE', dst, session);
408
+ const headers = {};
409
+ if (rawSession.headers && typeof rawSession.headers === 'object' && !Array.isArray(rawSession.headers)) {
410
+ for (const [key, value] of Object.entries(rawSession.headers)) {
411
+ if (value !== undefined && value !== null)
412
+ headers[key] = String(value);
413
+ }
414
+ }
415
+ if (!Object.keys(headers).some((key) => key.toLowerCase() === 'content-type')) {
416
+ headers['Content-Type'] = text(baseParams.content_type) || 'application/octet-stream';
417
+ }
418
+ await this.lowlevel.httpPut(uploadUrl, data, headers);
419
+ return this.call('group.fs.complete_upload', {
420
+ ...baseParams,
421
+ session_id: rawSession.session_id ?? rawSession.id,
422
+ }, dst);
423
+ }
424
+ async downloadFromGroup(src, dst, options) {
425
+ const target = downloadTarget(dst);
426
+ if (target.mode === 'local' && target.localPath) {
427
+ const status = await localFileStatus(target.localPath);
428
+ if (status === 'file' && !options.force) {
429
+ throw new StorageExistsError(`local path already exists: ${target.localPath}`, 'EEXIST', target.localPath);
430
+ }
431
+ }
432
+ const params = stripNil({
433
+ ...options,
434
+ path: src,
435
+ group_id: options.group_id ?? options.groupId ?? options.src_group_id ?? options.srcGroupId,
436
+ });
437
+ delete params.groupId;
438
+ delete params.srcGroupId;
439
+ delete params.src_group_id;
440
+ delete params.dstGroupId;
441
+ delete params.dst_group_id;
442
+ delete params.force;
443
+ delete params.recursive;
444
+ delete params.parents;
445
+ delete params.contentType;
446
+ delete params.content_type;
447
+ delete params.expectedVersion;
448
+ delete params.expected_version;
449
+ delete params.verifyHash;
450
+ delete params.verify_hash;
451
+ delete params.sourceType;
452
+ delete params.source_type;
453
+ delete params.localPath;
454
+ delete params.local_path;
455
+ const ticket = await this.call('group.fs.create_download_ticket', params, src);
456
+ if (!ticket || typeof ticket !== 'object') {
457
+ throw new StorageError('group.fs.create_download_ticket returned invalid response', 'ESTORAGE', src, ticket);
458
+ }
459
+ const rawTicket = ticket;
460
+ const downloadUrl = text(rawTicket.download_url ?? rawTicket.url);
461
+ if (!downloadUrl)
462
+ throw new StorageError('group.fs.create_download_ticket did not return download_url', 'ESTORAGE', src, ticket);
463
+ const data = await this.lowlevel.httpGet(downloadUrl, bearerHeaders(this.client));
464
+ const expectedSha = text(rawTicket.sha256);
465
+ const verifyHash = options.verify_hash ?? options.verifyHash ?? true;
466
+ const verified = !verifyHash || !expectedSha || (await sha256Hex(data)) === expectedSha.toLowerCase();
467
+ if (verifyHash && !verified) {
468
+ throw new StorageConflictError('download hash verification failed', 'ECONFLICT', src, ticket);
469
+ }
470
+ if (target.mode === 'local' && target.localPath) {
471
+ const status = await localFileStatus(target.localPath);
472
+ if (status === 'dir') {
473
+ throw new StorageError('directory download target is not supported in this JavaScript runtime', 'EISDIR', target.localPath);
474
+ }
475
+ if (status === 'file' && !options.force) {
476
+ throw new StorageExistsError(`local path already exists: ${target.localPath}`, 'EEXIST', target.localPath);
477
+ }
478
+ }
479
+ const result = {
480
+ path: src,
481
+ localPath: target.localPath,
482
+ size: data.byteLength,
483
+ sha256: expectedSha,
484
+ verified,
485
+ data,
486
+ };
487
+ if (target.mode === 'blob' && typeof Blob !== 'undefined') {
488
+ result.blob = new Blob([toExactArrayBuffer(data)], { type: text(rawTicket.content_type) || 'application/octet-stream' });
489
+ }
490
+ if (target.mode === 'local' && target.localPath) {
491
+ result.wroteLocalFile = await writeLocalFile(target.localPath, data, Boolean(options.force));
492
+ }
493
+ return result;
494
+ }
495
+ }
496
+ //# sourceMappingURL=group-fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-fs.js","sourceRoot":"","sources":["../src/group-fs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import type { RpcParams, RpcResult } from './types.js';
2
+ export interface GroupResourcesRpcClient {
3
+ call(method: string, params?: RpcParams): Promise<RpcResult>;
4
+ }
5
+ export type GroupResourceParams = RpcParams;
6
+ interface GroupResourcesAidStore {
7
+ load(aid: string): unknown | Promise<unknown>;
8
+ }
9
+ type GroupResourcesSignerClient = GroupResourcesRpcClient & {
10
+ connect(options?: GroupResourceParams): Promise<void>;
11
+ close(): Promise<void> | void;
12
+ aid?: string | null;
13
+ currentAid?: {
14
+ aid?: string | null;
15
+ } | null;
16
+ };
17
+ type GroupResourcesClientFactory = (aid: unknown) => GroupResourcesSignerClient;
18
+ interface GroupResourcesOptions {
19
+ aidStore?: GroupResourcesAidStore;
20
+ aid_store?: GroupResourcesAidStore;
21
+ clientFactory?: GroupResourcesClientFactory;
22
+ client_factory?: GroupResourcesClientFactory;
23
+ connectOptions?: GroupResourceParams;
24
+ connect_options?: GroupResourceParams;
25
+ sign_as?: unknown;
26
+ signAs?: unknown;
27
+ uploadData?: unknown;
28
+ upload_data?: unknown;
29
+ httpPut?: unknown;
30
+ http_put?: unknown;
31
+ [key: string]: unknown;
32
+ }
33
+ export declare class GroupPendingOpsPartialFailure extends Error {
34
+ readonly failedIndex: number;
35
+ readonly failedOp: GroupResourceParams;
36
+ readonly storageResults: GroupResourceParams;
37
+ readonly opResults: RpcResult[];
38
+ readonly compensationResults: GroupResourceParams;
39
+ readonly compensationErrors: GroupResourceParams[];
40
+ constructor(message: string, details: {
41
+ failedIndex: number;
42
+ failedOp: GroupResourceParams;
43
+ storageResults: GroupResourceParams;
44
+ opResults: RpcResult[];
45
+ compensationResults: GroupResourceParams;
46
+ compensationErrors: GroupResourceParams[];
47
+ cause?: unknown;
48
+ });
49
+ toJSON(): GroupResourceParams;
50
+ }
51
+ /**
52
+ * @deprecated 兼容旧 group.resources 控制面;新群文件系统入口使用 client.group.fs。
53
+ */
54
+ export declare class GroupResourcesFacade {
55
+ private readonly client;
56
+ private readonly groupAidCache;
57
+ constructor(client: GroupResourcesRpcClient);
58
+ private createSignerClient;
59
+ private signerFor;
60
+ private httpPut;
61
+ private call;
62
+ /**
63
+ * 成员挂载区透明路由:memberdata/{self_aid}/{rest} → 成员自己 storage 空间。
64
+ *
65
+ * 协议约定(group-storage 设计 §4.4/§5.3):成员挂载区的源固定指向成员自己空间的
66
+ * {self_aid}/{group_aid}/{rest}。命中本人槽位时返回
67
+ * [owner_aid=self_aid, object_key={self_aid}/{group_aid}/{rest}];
68
+ * 他人槽位或群自有区返回 null(不路由,由调用方走原 group.resources.* 流程)。
69
+ * 服务端拒绝 memberdata 路径走 group_storage 模式,所以映射必须由 SDK 完成。
70
+ */
71
+ private memberdataNamespaceKey;
72
+ private resolveMemberdataTarget;
73
+ private isMemberdataSelfPath;
74
+ private resolveMemberdataTargetForParams;
75
+ private baselineDirs;
76
+ put(params?: GroupResourceParams | null): Promise<RpcResult>;
77
+ createFolder(params?: GroupResourceParams | null): Promise<RpcResult>;
78
+ listChildren(params?: GroupResourceParams | null): Promise<RpcResult>;
79
+ rename(params?: GroupResourceParams | null): Promise<RpcResult>;
80
+ move(params?: GroupResourceParams | null): Promise<RpcResult>;
81
+ mountObject(params?: GroupResourceParams | null): Promise<RpcResult>;
82
+ unmount(params?: GroupResourceParams | null): Promise<RpcResult>;
83
+ resolvePath(params?: GroupResourceParams | null): Promise<RpcResult>;
84
+ get(params?: GroupResourceParams | null): Promise<RpcResult>;
85
+ list(params?: GroupResourceParams | null): Promise<RpcResult>;
86
+ update(params?: GroupResourceParams | null): Promise<RpcResult>;
87
+ getAccess(params?: GroupResourceParams | null): Promise<RpcResult>;
88
+ resolveAccessTicket(params?: GroupResourceParams | null): Promise<RpcResult>;
89
+ delete(params?: GroupResourceParams | null): Promise<RpcResult>;
90
+ namespaceReady(params?: GroupResourceParams | null): Promise<RpcResult>;
91
+ confirm(params?: GroupResourceParams | null): Promise<RpcResult>;
92
+ confirmMount(params?: GroupResourceParams | null): Promise<RpcResult>;
93
+ getDf(params?: GroupResourceParams | null): Promise<RpcResult>;
94
+ initializeNamespace(params?: GroupResourceParams | null, options?: GroupResourcesOptions | null): Promise<RpcResult>;
95
+ executePendingOps(plan?: GroupResourceParams | null, options?: GroupResourcesOptions | null): Promise<RpcResult>;
96
+ }
97
+ export {};
98
+ //# sourceMappingURL=group-resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-resources.d.ts","sourceRoot":"","sources":["../src/group-resources.ts"],"names":[],"mappings":"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"}