@agentunion/fastaun 0.4.13 → 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 (149) hide show
  1. package/CHANGELOG.md +488 -393
  2. package/_packed_docs/CHANGELOG.md +488 -393
  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 -443
  68. package/_packed_docs/sdk/09-message-rpc-manual.md +2 -0
  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.js +80 -0
  81. package/dist/aid-store.js.map +1 -1
  82. package/dist/client/delivery.d.ts +2 -0
  83. package/dist/client/delivery.js +51 -1
  84. package/dist/client/delivery.js.map +1 -1
  85. package/dist/client/rpc-pipeline.js +51 -26
  86. package/dist/client/rpc-pipeline.js.map +1 -1
  87. package/dist/client.d.ts +29 -0
  88. package/dist/client.js +270 -19
  89. package/dist/client.js.map +1 -1
  90. package/dist/collab/client.d.ts +38 -0
  91. package/dist/collab/client.js +124 -0
  92. package/dist/collab/client.js.map +1 -0
  93. package/dist/collab/errors.d.ts +15 -0
  94. package/dist/collab/errors.js +60 -0
  95. package/dist/collab/errors.js.map +1 -0
  96. package/dist/collab/index.d.ts +3 -0
  97. package/dist/collab/index.js +4 -0
  98. package/dist/collab/index.js.map +1 -0
  99. package/dist/collab/types.d.ts +110 -0
  100. package/dist/collab/types.js +2 -0
  101. package/dist/collab/types.js.map +1 -0
  102. package/dist/crypto.d.ts +2 -0
  103. package/dist/crypto.js +6 -0
  104. package/dist/crypto.js.map +1 -1
  105. package/dist/errors.d.ts +8 -0
  106. package/dist/errors.js +30 -1
  107. package/dist/errors.js.map +1 -1
  108. package/dist/facades.d.ts +89 -0
  109. package/dist/facades.js +133 -0
  110. package/dist/facades.js.map +1 -0
  111. package/dist/group-fs.d.ts +105 -0
  112. package/dist/group-fs.js +467 -0
  113. package/dist/group-fs.js.map +1 -0
  114. package/dist/group-resources.d.ts +31 -0
  115. package/dist/group-resources.js +84 -0
  116. package/dist/group-resources.js.map +1 -0
  117. package/dist/index.d.ts +6 -2
  118. package/dist/index.js +8 -1
  119. package/dist/index.js.map +1 -1
  120. package/dist/register-flow.d.ts +1 -0
  121. package/dist/register-flow.js +3 -0
  122. package/dist/register-flow.js.map +1 -1
  123. package/dist/service-proxy.d.ts +1 -0
  124. package/dist/service-proxy.js +17 -4
  125. package/dist/service-proxy.js.map +1 -1
  126. package/dist/storage/errors.d.ts +27 -0
  127. package/dist/storage/errors.js +65 -0
  128. package/dist/storage/errors.js.map +1 -0
  129. package/dist/storage/index.d.ts +1 -0
  130. package/dist/storage/index.js +2 -0
  131. package/dist/storage/index.js.map +1 -0
  132. package/dist/storage/lowlevel.d.ts +313 -0
  133. package/dist/storage/lowlevel.js +464 -0
  134. package/dist/storage/lowlevel.js.map +1 -0
  135. package/dist/storage/types.d.ts +58 -0
  136. package/dist/storage/types.js +116 -0
  137. package/dist/storage/types.js.map +1 -0
  138. package/dist/storage/vfs.d.ts +147 -0
  139. package/dist/storage/vfs.js +489 -0
  140. package/dist/storage/vfs.js.map +1 -0
  141. package/dist/tools/cross-sdk-agent.js +421 -1
  142. package/dist/tools/cross-sdk-agent.js.map +1 -1
  143. package/dist/transport.d.ts +3 -0
  144. package/dist/transport.js +76 -22
  145. package/dist/transport.js.map +1 -1
  146. package/dist/version.d.ts +1 -1
  147. package/dist/version.js +1 -1
  148. package/dist/version.js.map +1 -1
  149. package/package.json +1 -1
@@ -0,0 +1,467 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { mkdir, readFile, rename, stat, unlink, writeFile } from 'node:fs/promises';
3
+ import { basename, dirname, extname, join } from 'node:path';
4
+ import { mapStorageError, StorageConflictError, StorageError, StorageExistsError, StorageIsADirectoryError } from './storage/errors.js';
5
+ import { StorageLowLevel } from './storage/lowlevel.js';
6
+ const WINDOWS_DRIVE_RE = /^[A-Za-z]:[\\/]/;
7
+ const GROUP_REF_RE = /^[^:/\\][^:]*:\//;
8
+ const LOCAL_PREFIX = 'local:';
9
+ function isExplicitLocalPath(value) {
10
+ return String(value || '').trim().toLowerCase().startsWith(LOCAL_PREFIX);
11
+ }
12
+ function stripLocalPathPrefix(value) {
13
+ const text = String(value || '').trim();
14
+ return text.toLowerCase().startsWith(LOCAL_PREFIX) ? text.slice(LOCAL_PREFIX.length) : text;
15
+ }
16
+ function isGroupRemoteCopyPath(value, ...groupHints) {
17
+ if (isExplicitLocalPath(value))
18
+ return false;
19
+ return isGroupRemotePath(value) || groupHints.some(Boolean);
20
+ }
21
+ export function isGroupRemotePath(value) {
22
+ const text = String(value || '').trim();
23
+ if (!text)
24
+ return false;
25
+ if (isExplicitLocalPath(text))
26
+ return false;
27
+ if (WINDOWS_DRIVE_RE.test(text))
28
+ return false;
29
+ if (text.startsWith('http://') || text.startsWith('https://'))
30
+ return true;
31
+ return GROUP_REF_RE.test(text);
32
+ }
33
+ function stripNil(params = {}) {
34
+ const out = {};
35
+ for (const [key, value] of Object.entries(params)) {
36
+ if (value !== undefined && value !== null)
37
+ out[key] = value;
38
+ }
39
+ return out;
40
+ }
41
+ async function loadSigningAID(store, signAs) {
42
+ const loaded = store.load
43
+ ? await store.load(signAs)
44
+ : store.loadAsync
45
+ ? await store.loadAsync(signAs)
46
+ : null;
47
+ if (!loaded?.ok || !loaded.data?.aid) {
48
+ throw new Error(loaded?.error?.message || `signer identity not found: ${signAs}`);
49
+ }
50
+ if (!loaded.data.aid.privateKeyPem) {
51
+ throw new Error(`signer identity missing private key: ${signAs}`);
52
+ }
53
+ return loaded.data.aid;
54
+ }
55
+ function isRecord(value) {
56
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
57
+ }
58
+ function stringValue(value) {
59
+ if (value === undefined || value === null)
60
+ return '';
61
+ return String(value).trim();
62
+ }
63
+ function accessTokenFromClient(client) {
64
+ const authClient = client;
65
+ if (typeof authClient.getAccessToken === 'function') {
66
+ const token = stringValue(authClient.getAccessToken());
67
+ if (token)
68
+ return token;
69
+ }
70
+ const directToken = stringValue(authClient.accessToken ?? authClient.access_token);
71
+ if (directToken)
72
+ return directToken;
73
+ const identityToken = stringValue(authClient._identity?.access_token);
74
+ if (identityToken)
75
+ return identityToken;
76
+ return stringValue(authClient._sessionParams?.access_token);
77
+ }
78
+ function bearerHeaders(client) {
79
+ const token = accessTokenFromClient(client);
80
+ return token ? { Authorization: `Bearer ${token}` } : undefined;
81
+ }
82
+ function boolValue(value, fallback = false) {
83
+ if (value === undefined || value === null)
84
+ return fallback;
85
+ return Boolean(value);
86
+ }
87
+ function intValue(value) {
88
+ if (value === undefined || value === null)
89
+ return undefined;
90
+ const parsed = Number(value);
91
+ return Number.isFinite(parsed) ? Math.trunc(parsed) : undefined;
92
+ }
93
+ function sha256Hex(data) {
94
+ return createHash('sha256').update(data).digest('hex');
95
+ }
96
+ function toArrayBuffer(data) {
97
+ const copy = new Uint8Array(data.byteLength);
98
+ copy.set(data);
99
+ return copy.buffer;
100
+ }
101
+ function contentTypeForPath(path) {
102
+ const ext = extname(path).toLowerCase();
103
+ const known = {
104
+ '.txt': 'text/plain',
105
+ '.json': 'application/json',
106
+ '.md': 'text/markdown',
107
+ '.html': 'text/html',
108
+ '.csv': 'text/csv',
109
+ '.png': 'image/png',
110
+ '.jpg': 'image/jpeg',
111
+ '.jpeg': 'image/jpeg',
112
+ '.gif': 'image/gif',
113
+ '.webp': 'image/webp',
114
+ '.pdf': 'application/pdf',
115
+ };
116
+ return known[ext] ?? 'application/octet-stream';
117
+ }
118
+ function filenameFromGroupPath(path) {
119
+ const cleaned = String(path || '').replace(/\\/g, '/').replace(/\/+$/g, '');
120
+ const last = cleaned.split('/').pop();
121
+ return last && !last.includes(':') ? last : 'download';
122
+ }
123
+ function isBlobLike(value) {
124
+ return typeof Blob !== 'undefined' && value instanceof Blob;
125
+ }
126
+ function isByteSource(value) {
127
+ return value instanceof Uint8Array || value instanceof ArrayBuffer || isBlobLike(value);
128
+ }
129
+ function isBlobTarget(value) {
130
+ return isRecord(value) && value.kind === 'blob';
131
+ }
132
+ async function bytesFromSource(source) {
133
+ if (typeof source === 'string') {
134
+ const localPath = stripLocalPathPrefix(source);
135
+ const info = await stat(localPath);
136
+ if (info.isDirectory()) {
137
+ throw new StorageIsADirectoryError('directory upload is not supported by group.fs.cp yet', 'EISDIR', localPath);
138
+ }
139
+ return { data: new Uint8Array(await readFile(localPath)), localPath };
140
+ }
141
+ if (source instanceof Uint8Array)
142
+ return { data: new Uint8Array(source), contentType: 'application/octet-stream' };
143
+ if (source instanceof ArrayBuffer)
144
+ return { data: new Uint8Array(source), contentType: 'application/octet-stream' };
145
+ if (isBlobLike(source)) {
146
+ return {
147
+ data: new Uint8Array(await source.arrayBuffer()),
148
+ contentType: source.type || 'application/octet-stream',
149
+ };
150
+ }
151
+ throw new StorageError('unsupported group.fs.cp source', 'EINVAL');
152
+ }
153
+ async function statOrNull(path) {
154
+ try {
155
+ return await stat(path);
156
+ }
157
+ catch (exc) {
158
+ if (exc?.code === 'ENOENT')
159
+ return null;
160
+ throw exc;
161
+ }
162
+ }
163
+ function callbackFromOptions(options) {
164
+ return options.progress ?? options.onProgress ?? options.on_progress;
165
+ }
166
+ function remainingCopyOptions(options) {
167
+ const { force: _force, overwrite: _overwrite, recursive: _recursive, parents: _parents, followSymlinks: _followSymlinks, follow_symlinks: _follow_symlinks, contentType: _contentType, content_type: _content_type, metadata: _metadata, expectedVersion: _expectedVersion, expected_version: _expected_version, verifyHash: _verifyHash, verify_hash: _verify_hash, progress: _progress, onProgress: _onProgress, on_progress: _on_progress, groupId: _groupId, group_id: _group_id, srcGroupId: _srcGroupId, src_group_id: _src_group_id, dstGroupId: _dstGroupId, dst_group_id: _dst_group_id, ...rest } = options;
168
+ return rest;
169
+ }
170
+ export class GroupFSVFS {
171
+ lowlevel;
172
+ client;
173
+ constructor(client, options = {}) {
174
+ this.client = client;
175
+ this.lowlevel = options.lowlevel ?? new StorageLowLevel(client);
176
+ }
177
+ async call(method, params, path = '') {
178
+ try {
179
+ return await this.client.call(method, await this.prepareParams(params ?? {}));
180
+ }
181
+ catch (exc) {
182
+ throw mapStorageError(exc, path);
183
+ }
184
+ }
185
+ async prepareParams(params) {
186
+ const next = { ...params };
187
+ const signAs = stringValue(next.sign_as ?? next.signAs);
188
+ const aidStore = (next.aid_store ?? next.aidStore);
189
+ delete next.sign_as;
190
+ delete next.signAs;
191
+ delete next.aid_store;
192
+ delete next.aidStore;
193
+ if (signAs) {
194
+ const currentAid = stringValue(this.client.aid ?? this.client._aid);
195
+ if (currentAid.toLowerCase() !== signAs.toLowerCase()) {
196
+ if (!aidStore) {
197
+ throw new Error(`group.fs operation requires aidStore to sign as ${signAs}`);
198
+ }
199
+ next._client_signature_identity = await loadSigningAID(aidStore, signAs);
200
+ }
201
+ }
202
+ return stripNil(next);
203
+ }
204
+ ls(path, options = {}) {
205
+ return this.call('group.fs.ls', { ...options, path }, path);
206
+ }
207
+ find(path, options = {}) {
208
+ return this.call('group.fs.find', { ...options, path }, path);
209
+ }
210
+ stat(path, options = {}) {
211
+ return this.call('group.fs.stat', { ...options, path }, path);
212
+ }
213
+ lstat(path, options = {}) {
214
+ return this.call('group.fs.lstat', { ...options, path }, path);
215
+ }
216
+ mkdir(path, options = {}) {
217
+ return this.call('group.fs.mkdir', { ...options, path, parents: options.parents ?? false }, path);
218
+ }
219
+ rm(path, options = {}) {
220
+ return this.call('group.fs.rm', {
221
+ ...options,
222
+ path,
223
+ recursive: options.recursive ?? false,
224
+ force: options.force ?? false,
225
+ }, path);
226
+ }
227
+ async cp(src, dst, options = {}) {
228
+ const sharedGroupId = stringValue(options.group_id ?? options.groupId);
229
+ const srcGroupId = stringValue(options.src_group_id ?? options.srcGroupId);
230
+ const dstGroupId = stringValue(options.dst_group_id ?? options.dstGroupId);
231
+ const force = Boolean(options.force ?? options.overwrite ?? false);
232
+ const srcRemote = typeof src === 'string' && isGroupRemoteCopyPath(src, srcGroupId, sharedGroupId);
233
+ const dstRemote = typeof dst === 'string' && isGroupRemoteCopyPath(dst, dstGroupId, sharedGroupId);
234
+ const rest = remainingCopyOptions(options);
235
+ if (srcRemote && dstRemote && typeof src === 'string' && typeof dst === 'string') {
236
+ const params = { ...rest, src, dst };
237
+ if (sharedGroupId)
238
+ params.group_id = sharedGroupId;
239
+ if (srcGroupId)
240
+ params.src_group_id = srcGroupId;
241
+ if (dstGroupId)
242
+ params.dst_group_id = dstGroupId;
243
+ if (force)
244
+ params.force = true;
245
+ if (options.recursive)
246
+ params.recursive = true;
247
+ const follow = options.follow_symlinks ?? options.followSymlinks;
248
+ if (follow !== undefined && follow !== null)
249
+ params.follow_symlinks = Boolean(follow);
250
+ return this.call('group.fs.cp', params, src);
251
+ }
252
+ if (!srcRemote && dstRemote && typeof dst === 'string') {
253
+ if (!isByteSource(src) && typeof src !== 'string') {
254
+ throw new StorageError('unsupported group.fs.cp source', 'EINVAL');
255
+ }
256
+ return this.uploadSource(src, dst, {
257
+ ...rest,
258
+ group_id: dstGroupId || sharedGroupId || undefined,
259
+ force,
260
+ parents: options.parents ?? true,
261
+ content_type: options.content_type ?? options.contentType,
262
+ metadata: options.metadata,
263
+ expected_version: options.expected_version ?? options.expectedVersion,
264
+ onProgress: callbackFromOptions(options),
265
+ });
266
+ }
267
+ if (srcRemote && typeof src === 'string' && (!dstRemote || isBlobTarget(dst))) {
268
+ return this.downloadRemote(src, dst, {
269
+ ...rest,
270
+ group_id: srcGroupId || sharedGroupId || undefined,
271
+ force,
272
+ verify_hash: options.verify_hash ?? options.verifyHash ?? true,
273
+ onProgress: callbackFromOptions(options),
274
+ });
275
+ }
276
+ throw new StorageError('local-to-local copy is not handled by group.fs', 'EINVAL', typeof src === 'string' ? src : '');
277
+ }
278
+ async mv(src, dst, options = {}) {
279
+ const sharedGroupId = stringValue(options.group_id ?? options.groupId);
280
+ const srcGroupId = stringValue(options.src_group_id ?? options.srcGroupId);
281
+ const dstGroupId = stringValue(options.dst_group_id ?? options.dstGroupId);
282
+ const force = Boolean(options.force ?? options.overwrite ?? false);
283
+ const srcRemote = isGroupRemoteCopyPath(src, srcGroupId, sharedGroupId);
284
+ const dstRemote = isGroupRemoteCopyPath(dst, dstGroupId, sharedGroupId);
285
+ if (!srcRemote || !dstRemote) {
286
+ throw new StorageError('group.fs.mv only supports group remote paths', 'EINVAL', src);
287
+ }
288
+ const rest = remainingCopyOptions(options);
289
+ const params = { ...rest, src, dst };
290
+ if (sharedGroupId)
291
+ params.group_id = sharedGroupId;
292
+ if (srcGroupId)
293
+ params.src_group_id = srcGroupId;
294
+ if (dstGroupId)
295
+ params.dst_group_id = dstGroupId;
296
+ if (force)
297
+ params.force = true;
298
+ return this.call('group.fs.mv', params, src);
299
+ }
300
+ df(pathOrGroup, options = {}) {
301
+ const params = stripNil(options);
302
+ if (pathOrGroup !== undefined && pathOrGroup !== null)
303
+ params.path = pathOrGroup;
304
+ return this.call('group.fs.df', params, pathOrGroup ?? '');
305
+ }
306
+ mount(path, options = {}) {
307
+ return this.call('group.fs.mount', { ...options, path }, path);
308
+ }
309
+ umount(path, options = {}) {
310
+ return this.call('group.fs.umount', { ...options, path }, path);
311
+ }
312
+ async uploadSource(source, groupPath, options) {
313
+ const { data, contentType: sourceContentType, localPath } = await bytesFromSource(source);
314
+ const digest = sha256Hex(data);
315
+ const contentType = stringValue(options.content_type)
316
+ || sourceContentType
317
+ || (localPath ? contentTypeForPath(localPath) : 'application/octet-stream');
318
+ const baseParams = stripNil({
319
+ ...options,
320
+ path: groupPath,
321
+ size_bytes: data.byteLength,
322
+ sha256: digest,
323
+ content_type: contentType,
324
+ force: options.force,
325
+ parents: options.parents,
326
+ metadata: options.metadata,
327
+ expected_version: options.expected_version,
328
+ onProgress: undefined,
329
+ });
330
+ const check = await this.call('group.fs.check_upload', { ...baseParams }, groupPath);
331
+ if (isRecord(check)) {
332
+ if (check.within_limit === false) {
333
+ throw new StorageError('file size exceeds group fs upload limit', 'E2BIG', groupPath, check);
334
+ }
335
+ if (check.target_exists && !options.force && options.expected_version === undefined) {
336
+ throw new StorageExistsError('group fs target already exists', 'EEXIST', groupPath, check.target);
337
+ }
338
+ if (boolValue(check.instant) || boolValue(check.dedup_hit) || boolValue(check.skip_upload)) {
339
+ const completeParams = { ...baseParams, skip_blob: true };
340
+ const sessionId = check.session_id;
341
+ if (sessionId !== undefined && sessionId !== null)
342
+ completeParams.session_id = sessionId;
343
+ return this.call('group.fs.complete_upload', completeParams, groupPath);
344
+ }
345
+ }
346
+ const session = await this.call('group.fs.create_upload_session', { ...baseParams }, groupPath);
347
+ if (!isRecord(session)) {
348
+ throw new StorageError(`group.fs.create_upload_session returned invalid response`, 'ESTORAGE', groupPath, session);
349
+ }
350
+ const uploadUrl = stringValue(session.upload_url ?? session.url);
351
+ if (!uploadUrl) {
352
+ throw new StorageError('group.fs.create_upload_session did not return upload_url', 'ESTORAGE', groupPath, session);
353
+ }
354
+ const headers = {};
355
+ if (isRecord(session.headers)) {
356
+ for (const [key, value] of Object.entries(session.headers)) {
357
+ if (value !== undefined && value !== null)
358
+ headers[key] = String(value);
359
+ }
360
+ }
361
+ if (!Object.keys(headers).some((key) => key.toLowerCase() === 'content-type')) {
362
+ headers['Content-Type'] = contentType;
363
+ }
364
+ await this.lowlevel.httpPut(uploadUrl, data, headers);
365
+ options.onProgress?.(data.byteLength, data.byteLength);
366
+ const completeParams = { ...baseParams };
367
+ const sessionId = session.session_id ?? session.id;
368
+ if (sessionId !== undefined && sessionId !== null)
369
+ completeParams.session_id = sessionId;
370
+ return this.call('group.fs.complete_upload', completeParams, groupPath);
371
+ }
372
+ async downloadRemote(groupPath, localPathOrBlob, options) {
373
+ const localPath = typeof localPathOrBlob === 'string' ? stripLocalPathPrefix(localPathOrBlob) : localPathOrBlob;
374
+ if (typeof localPath === 'string') {
375
+ const existing = await statOrNull(localPath);
376
+ if (existing && !existing.isDirectory() && !options.force) {
377
+ throw new StorageExistsError(`local path already exists: ${localPath}`, 'EEXIST', localPath);
378
+ }
379
+ }
380
+ else if (!isBlobTarget(localPath)) {
381
+ throw new StorageError('unsupported group.fs.cp destination', 'EINVAL', groupPath);
382
+ }
383
+ const ticketParams = stripNil({
384
+ ...options,
385
+ path: groupPath,
386
+ force: undefined,
387
+ verify_hash: undefined,
388
+ onProgress: undefined,
389
+ });
390
+ const ticket = await this.call('group.fs.create_download_ticket', ticketParams, groupPath);
391
+ if (!isRecord(ticket)) {
392
+ throw new StorageError('group.fs.create_download_ticket returned invalid response', 'ESTORAGE', groupPath, ticket);
393
+ }
394
+ const downloadUrl = stringValue(ticket.download_url ?? ticket.url);
395
+ if (!downloadUrl) {
396
+ throw new StorageError('group.fs.create_download_ticket did not return download_url', 'ESTORAGE', groupPath, ticket);
397
+ }
398
+ let targetPath = typeof localPath === 'string' ? localPath : '';
399
+ if (targetPath) {
400
+ const targetInfo = await statOrNull(targetPath);
401
+ if (targetInfo?.isDirectory()) {
402
+ const fileName = stringValue(ticket.file_name ?? ticket.name) || filenameFromGroupPath(groupPath);
403
+ targetPath = join(targetPath, fileName);
404
+ const fileInfo = await statOrNull(targetPath);
405
+ if (fileInfo && !options.force) {
406
+ throw new StorageExistsError(`local path already exists: ${targetPath}`, 'EEXIST', targetPath);
407
+ }
408
+ }
409
+ }
410
+ const data = await this.lowlevel.httpGet(downloadUrl, bearerHeaders(this.client));
411
+ options.onProgress?.(data.byteLength, data.byteLength);
412
+ const expectedSha = stringValue(ticket.sha256);
413
+ const actualSha = sha256Hex(data);
414
+ const verified = !options.verify_hash || !expectedSha || actualSha.toLowerCase() === expectedSha.toLowerCase();
415
+ if (options.verify_hash && !verified) {
416
+ throw new StorageConflictError('download hash verification failed', 'ECONFLICT', groupPath, ticket);
417
+ }
418
+ if (!targetPath) {
419
+ const contentType = stringValue(ticket.content_type) || 'application/octet-stream';
420
+ return {
421
+ path: groupPath,
422
+ size: data.byteLength,
423
+ sha256: expectedSha || actualSha,
424
+ verified,
425
+ data,
426
+ blob: typeof Blob !== 'undefined' ? new Blob([toArrayBuffer(data)], { type: contentType }) : undefined,
427
+ };
428
+ }
429
+ await mkdir(dirname(targetPath), { recursive: true });
430
+ if (options.force) {
431
+ const tempPath = join(dirname(targetPath), `.${basename(targetPath)}.${Date.now()}.${Math.random().toString(16).slice(2)}.tmp`);
432
+ try {
433
+ await writeFile(tempPath, data);
434
+ await rename(tempPath, targetPath);
435
+ }
436
+ finally {
437
+ try {
438
+ await unlink(tempPath);
439
+ }
440
+ catch (exc) {
441
+ if (exc?.code !== 'ENOENT')
442
+ throw exc;
443
+ }
444
+ }
445
+ }
446
+ else {
447
+ try {
448
+ await writeFile(targetPath, data, { flag: 'wx' });
449
+ }
450
+ catch (exc) {
451
+ if (exc?.code === 'EEXIST') {
452
+ throw new StorageExistsError(`local path already exists: ${targetPath}`, 'EEXIST', targetPath);
453
+ }
454
+ throw exc;
455
+ }
456
+ }
457
+ return {
458
+ path: groupPath,
459
+ localPath: targetPath,
460
+ size: data.byteLength,
461
+ sha256: expectedSha || actualSha,
462
+ verified,
463
+ data,
464
+ };
465
+ }
466
+ }
467
+ //# 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,31 @@
1
+ export interface GroupResourcesRpcClient {
2
+ call(method: string, params?: Record<string, unknown>): Promise<unknown>;
3
+ }
4
+ export type GroupResourceParams = Record<string, unknown>;
5
+ export declare class GroupResources {
6
+ private readonly client;
7
+ constructor(client: GroupResourcesRpcClient);
8
+ private call;
9
+ put(params?: GroupResourceParams): Promise<unknown>;
10
+ createFolder(params?: GroupResourceParams): Promise<unknown>;
11
+ listChildren(params?: GroupResourceParams): Promise<unknown>;
12
+ rename(params?: GroupResourceParams): Promise<unknown>;
13
+ move(params?: GroupResourceParams): Promise<unknown>;
14
+ mountObject(params?: GroupResourceParams): Promise<unknown>;
15
+ unmount(params?: GroupResourceParams): Promise<unknown>;
16
+ resolvePath(params?: GroupResourceParams): Promise<unknown>;
17
+ listRefsByStorage(params?: GroupResourceParams): Promise<unknown>;
18
+ cleanupByStorageRef(params?: GroupResourceParams): Promise<unknown>;
19
+ requestMountObject(params?: GroupResourceParams): Promise<unknown>;
20
+ get(params?: GroupResourceParams): Promise<unknown>;
21
+ list(params?: GroupResourceParams): Promise<unknown>;
22
+ update(params?: GroupResourceParams): Promise<unknown>;
23
+ getAccess(params?: GroupResourceParams): Promise<unknown>;
24
+ resolveAccessTicket(params?: GroupResourceParams): Promise<unknown>;
25
+ delete(params?: GroupResourceParams): Promise<unknown>;
26
+ requestAdd(params?: GroupResourceParams): Promise<unknown>;
27
+ directAdd(params?: GroupResourceParams): Promise<unknown>;
28
+ listPending(params?: GroupResourceParams): Promise<unknown>;
29
+ approveRequest(params?: GroupResourceParams): Promise<unknown>;
30
+ rejectRequest(params?: GroupResourceParams): Promise<unknown>;
31
+ }
@@ -0,0 +1,84 @@
1
+ function stripNil(params = {}) {
2
+ const out = {};
3
+ for (const [key, value] of Object.entries(params)) {
4
+ if (value !== undefined && value !== null)
5
+ out[key] = value;
6
+ }
7
+ return out;
8
+ }
9
+ export class GroupResources {
10
+ client;
11
+ constructor(client) {
12
+ this.client = client;
13
+ }
14
+ call(name, params) {
15
+ return this.client.call(`group.resources.${name}`, stripNil(params));
16
+ }
17
+ put(params) {
18
+ return this.call('put', params);
19
+ }
20
+ createFolder(params) {
21
+ return this.call('create_folder', params);
22
+ }
23
+ listChildren(params) {
24
+ return this.call('list_children', params);
25
+ }
26
+ rename(params) {
27
+ return this.call('rename', params);
28
+ }
29
+ move(params) {
30
+ return this.call('move', params);
31
+ }
32
+ mountObject(params) {
33
+ return this.call('mount_object', params);
34
+ }
35
+ unmount(params) {
36
+ return this.call('unmount', params);
37
+ }
38
+ resolvePath(params) {
39
+ return this.call('resolve_path', params);
40
+ }
41
+ listRefsByStorage(params) {
42
+ return this.call('list_refs_by_storage', params);
43
+ }
44
+ cleanupByStorageRef(params) {
45
+ return this.call('cleanup_by_storage_ref', params);
46
+ }
47
+ requestMountObject(params) {
48
+ return this.call('request_mount_object', params);
49
+ }
50
+ get(params) {
51
+ return this.call('get', params);
52
+ }
53
+ list(params) {
54
+ return this.call('list', params);
55
+ }
56
+ update(params) {
57
+ return this.call('update', params);
58
+ }
59
+ getAccess(params) {
60
+ return this.call('get_access', params);
61
+ }
62
+ resolveAccessTicket(params) {
63
+ return this.call('resolve_access_ticket', params);
64
+ }
65
+ delete(params) {
66
+ return this.call('delete', params);
67
+ }
68
+ requestAdd(params) {
69
+ return this.call('request_add', params);
70
+ }
71
+ directAdd(params) {
72
+ return this.call('direct_add', params);
73
+ }
74
+ listPending(params) {
75
+ return this.call('list_pending', params);
76
+ }
77
+ approveRequest(params) {
78
+ return this.call('approve_request', params);
79
+ }
80
+ rejectRequest(params) {
81
+ return this.call('reject_request', params);
82
+ }
83
+ }
84
+ //# sourceMappingURL=group-resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-resources.js","sourceRoot":"","sources":["../src/group-resources.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,10 +6,10 @@
6
6
  export { VERSION } from './version.js';
7
7
  export { AUNClient, type ConnectionOptions, type NotifyOptions } from './client.js';
8
8
  export { AID, type VerifyResult } from './aid.js';
9
- export { AIDStore, type AIDInfo, type ResolveOpts } from './aid-store.js';
9
+ export { AIDStore, type AIDInfo, type ResolveOpts, type ImportGroupIdentityOptions, type ImportGroupIdentityResult } from './aid-store.js';
10
10
  export { type Result, type ErrorInfo, resultOk, resultErr } from './result.js';
11
11
  export { getDeviceId, type AUNConfig, defaultConfig, configFromMap } from './config.js';
12
- export { AUNError, ConnectionError, TimeoutError, AuthError, PermissionError, ValidationError, NotFoundError, RateLimitError, StateError, SerializationError, SessionError, GroupError, GroupNotFoundError, GroupStateError, E2EEError, E2EEDecryptFailedError, E2EEGroupCommitmentInvalidError, E2EEGroupNotMemberError, E2EEGroupDecryptFailedError, CertificateRevokedError, E2EEDegradedError, ClientSignatureError, mapRemoteError, } from './errors.js';
12
+ export { AUNError, ConnectionError, TimeoutError, AuthError, PermissionError, ValidationError, NotFoundError, RateLimitError, StateError, SerializationError, SessionError, GroupError, GroupNotFoundError, GroupStateError, E2EEError, E2EEDecryptFailedError, E2EEGroupSecretMissingError, E2EEGroupEpochMismatchError, E2EEGroupCommitmentInvalidError, E2EEGroupNotMemberError, E2EEGroupDecryptFailedError, CertificateRevokedError, E2EEDegradedError, ClientSignatureError, mapRemoteError, } from './errors.js';
13
13
  export { EventDispatcher, Subscription, type EventHandler } from './events.js';
14
14
  export { ConnectionState, type JsonValue, type JsonObject, type RpcParams, type RpcResult, type RpcErrorObject, type RpcMessage, type GatewayEntry, type GatewayDiscoveryDocument, type KeyPairRecord, type MetadataRecord, type IdentityRecord, type SecretRecord, type Message, type SendResult, type AckResult, type PullResult, isJsonObject, } from './types.js';
15
15
  export { CryptoProvider, type IdentityKeyPair } from './crypto.js';
@@ -21,6 +21,10 @@ export { createDefaultSecretStore } from './secret-store/index.js';
21
21
  export { FileSecretStore, SeedMigrationError, type SeedChangeResult } from './secret-store/file-store.js';
22
22
  export { RPCTransport } from './transport.js';
23
23
  export { EmbeddedServiceRegistry, EndpointPolicy, ServiceProxyClient, ServiceRecord, type ServiceProxyClientOptions, type ServiceSummary, } from './service-proxy.js';
24
+ export { StorageVFS, StorageLowLevel, StorageError, StorageNotFoundError, StorageAccessDeniedError, StorageConflictError, StorageLoopError, StorageDanglingSymlinkError, type NodeView, type UsageView, type DownloadResult, type RemoveResult, type UnmountResult, } from './storage/index.js';
25
+ export { CollabClient, CollabTagClient, CollabError, CollabConflictError, mapCollabError, type CollabRaw, type CollabRpcClient, type CollabDocumentEntry, type CollabDocumentResult, type CollabHistoryEntry, type CollabDiffResult, type CollabRegistryEntry, type CollabTagEntry, type CollabTag, type CollabTagDiffResult, type CollabTagPruneOptions, type CollabTagRestoreResult, type CollabSnapshotEntry, type CollabSnapshot, type CollabSnapshotDiffResult, type CollabSnapshotPruneOptions, type CollabSnapshotRestoreResult, } from './collab/index.js';
26
+ export { MessageFacade, MessageThoughtFacade, GroupFacade, GroupThoughtFacade, StreamFacade, type FacadeParams, type FacadeRpcClient, } from './facades.js';
27
+ export { GroupFSVFS, isGroupRemotePath, type GroupFSCopyDestination, type GroupFSCopyOptions, type GroupFSCopySource, type GroupFSDownloadResult, type GroupFSRpcClient, } from './group-fs.js';
24
28
  export { GatewayDiscovery } from './discovery.js';
25
29
  export { AuthFlow } from './auth.js';
26
30
  export { RegisterFlow, type RegisterResult } from './register-flow.js';