@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,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 contentTypeForPath(path) {
97
+ const ext = extname(path).toLowerCase();
98
+ const known = {
99
+ '.txt': 'text/plain',
100
+ '.json': 'application/json',
101
+ '.md': 'text/markdown',
102
+ '.html': 'text/html',
103
+ '.csv': 'text/csv',
104
+ '.png': 'image/png',
105
+ '.jpg': 'image/jpeg',
106
+ '.jpeg': 'image/jpeg',
107
+ '.gif': 'image/gif',
108
+ '.webp': 'image/webp',
109
+ '.pdf': 'application/pdf',
110
+ };
111
+ return known[ext] ?? 'application/octet-stream';
112
+ }
113
+ function filenameFromGroupPath(path) {
114
+ const cleaned = String(path || '').replace(/\\/g, '/').replace(/\/+$/g, '');
115
+ const last = cleaned.split('/').pop();
116
+ return last && !last.includes(':') ? last : 'download';
117
+ }
118
+ async function bytesFromSource(source) {
119
+ const localPath = stripLocalPathPrefix(source);
120
+ const info = await stat(localPath);
121
+ if (info.isDirectory()) {
122
+ throw new StorageIsADirectoryError('directory upload is not supported by group.fs.cp yet', 'EISDIR', localPath);
123
+ }
124
+ return { data: new Uint8Array(await readFile(localPath)), localPath };
125
+ }
126
+ async function statOrNull(path) {
127
+ try {
128
+ return await stat(path);
129
+ }
130
+ catch (exc) {
131
+ if (exc?.code === 'ENOENT')
132
+ return null;
133
+ throw exc;
134
+ }
135
+ }
136
+ function callbackFromOptions(options) {
137
+ return options.progress ?? options.onProgress ?? options.on_progress;
138
+ }
139
+ function remainingCopyOptions(options) {
140
+ 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, groupAid: _groupAid, group_id: _group_id, group_aid: _group_aid, srcGroupId: _srcGroupId, srcGroupAid: _srcGroupAid, src_group_id: _src_group_id, src_group_aid: _src_group_aid, dstGroupId: _dstGroupId, dstGroupAid: _dstGroupAid, dst_group_id: _dst_group_id, dst_group_aid: _dst_group_aid, ...rest } = options;
141
+ return rest;
142
+ }
143
+ export class GroupFSVFS {
144
+ lowlevel;
145
+ client;
146
+ constructor(client, options = {}) {
147
+ this.client = client;
148
+ this.lowlevel = options.lowlevel ?? new StorageLowLevel(client);
149
+ }
150
+ async call(method, params, path = '') {
151
+ try {
152
+ return await this.client.call(method, await this.prepareParams(params ?? {}));
153
+ }
154
+ catch (exc) {
155
+ throw mapStorageError(exc, path);
156
+ }
157
+ }
158
+ async prepareParams(params) {
159
+ const next = { ...params };
160
+ const signAs = stringValue(next.sign_as ?? next.signAs);
161
+ const aidStore = (next.aid_store ?? next.aidStore);
162
+ delete next.sign_as;
163
+ delete next.signAs;
164
+ delete next.aid_store;
165
+ delete next.aidStore;
166
+ if (signAs) {
167
+ const currentAid = stringValue(this.client.aid ?? this.client._aid);
168
+ if (currentAid.toLowerCase() !== signAs.toLowerCase()) {
169
+ if (!aidStore) {
170
+ throw new Error(`group.fs operation requires aidStore to sign as ${signAs}`);
171
+ }
172
+ next._client_signature_identity = await loadSigningAID(aidStore, signAs);
173
+ }
174
+ }
175
+ return stripNil(next);
176
+ }
177
+ ls(path, options = {}) {
178
+ return this.call('group.fs.ls', { ...options, path }, path);
179
+ }
180
+ find(path, options = {}) {
181
+ return this.call('group.fs.find', { ...options, path }, path);
182
+ }
183
+ stat(path, options = {}) {
184
+ return this.call('group.fs.stat', { ...options, path }, path);
185
+ }
186
+ lstat(path, options = {}) {
187
+ return this.call('group.fs.lstat', { ...options, path }, path);
188
+ }
189
+ mkdir(path, options = {}) {
190
+ return this.call('group.fs.mkdir', { ...options, path, parents: options.parents ?? false }, path);
191
+ }
192
+ setAcl(path, options = {}) {
193
+ const grantee = options.grantee_aid ?? options.granteeAid ?? 'role:admin';
194
+ const { granteeAid: _granteeAid, ...rest } = options;
195
+ return this.call('group.fs.set_acl', { ...rest, path, grantee_aid: grantee, perms: options.perms ?? 'rwx' }, path);
196
+ }
197
+ removeAcl(path, options = {}) {
198
+ const grantee = options.grantee_aid ?? options.granteeAid ?? 'role:admin';
199
+ const { granteeAid: _granteeAid, ...rest } = options;
200
+ return this.call('group.fs.remove_acl', { ...rest, path, grantee_aid: grantee }, path);
201
+ }
202
+ getAcl(path, options = {}) {
203
+ return this.call('group.fs.get_acl', { ...options, path }, path);
204
+ }
205
+ listAcl(path, options = {}) {
206
+ return this.call('group.fs.list_acl', { ...options, path }, path);
207
+ }
208
+ rm(path, options = {}) {
209
+ return this.call('group.fs.rm', {
210
+ ...options,
211
+ path,
212
+ recursive: options.recursive ?? false,
213
+ force: options.force ?? false,
214
+ }, path);
215
+ }
216
+ async cp(src, dst, options = {}) {
217
+ const sharedGroupAid = stringValue(options.group_aid ?? options.groupAid);
218
+ const sharedGroupId = stringValue(options.group_id ?? options.groupId);
219
+ const srcGroupAid = stringValue(options.src_group_aid ?? options.srcGroupAid);
220
+ const srcGroupId = stringValue(options.src_group_id ?? options.srcGroupId);
221
+ const dstGroupAid = stringValue(options.dst_group_aid ?? options.dstGroupAid);
222
+ const dstGroupId = stringValue(options.dst_group_id ?? options.dstGroupId);
223
+ const sharedGroupRef = sharedGroupAid || sharedGroupId;
224
+ const srcGroupRef = srcGroupAid || srcGroupId;
225
+ const dstGroupRef = dstGroupAid || dstGroupId;
226
+ const force = Boolean(options.force ?? options.overwrite ?? false);
227
+ const srcRemote = isGroupRemoteCopyPath(src, srcGroupRef, sharedGroupRef);
228
+ const dstRemote = isGroupRemoteCopyPath(dst, dstGroupRef, sharedGroupRef);
229
+ const rest = remainingCopyOptions(options);
230
+ if (srcRemote && dstRemote) {
231
+ const params = { ...rest, src, dst };
232
+ if (sharedGroupAid)
233
+ params.group_aid = sharedGroupAid;
234
+ else if (sharedGroupId)
235
+ params.group_id = sharedGroupId;
236
+ if (srcGroupAid)
237
+ params.src_group_aid = srcGroupAid;
238
+ else if (srcGroupId)
239
+ params.src_group_id = srcGroupId;
240
+ if (dstGroupAid)
241
+ params.dst_group_aid = dstGroupAid;
242
+ else if (dstGroupId)
243
+ params.dst_group_id = dstGroupId;
244
+ if (force)
245
+ params.force = true;
246
+ if (options.recursive)
247
+ params.recursive = true;
248
+ const follow = options.follow_symlinks ?? options.followSymlinks;
249
+ if (follow !== undefined && follow !== null)
250
+ params.follow_symlinks = Boolean(follow);
251
+ return this.call('group.fs.cp', params, src);
252
+ }
253
+ if (!srcRemote && dstRemote) {
254
+ return this.uploadSource(src, dst, {
255
+ ...rest,
256
+ group_aid: dstGroupAid || sharedGroupAid || undefined,
257
+ group_id: (!dstGroupAid && !sharedGroupAid) ? (dstGroupId || sharedGroupId || undefined) : undefined,
258
+ force,
259
+ parents: options.parents ?? true,
260
+ content_type: options.content_type ?? options.contentType,
261
+ metadata: options.metadata,
262
+ expected_version: options.expected_version ?? options.expectedVersion,
263
+ onProgress: callbackFromOptions(options),
264
+ });
265
+ }
266
+ if (srcRemote && !dstRemote) {
267
+ return this.downloadRemote(src, dst, {
268
+ ...rest,
269
+ group_aid: srcGroupAid || sharedGroupAid || undefined,
270
+ group_id: (!srcGroupAid && !sharedGroupAid) ? (srcGroupId || sharedGroupId || undefined) : 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', src);
277
+ }
278
+ async mv(src, dst, options = {}) {
279
+ const sharedGroupAid = stringValue(options.group_aid ?? options.groupAid);
280
+ const sharedGroupId = stringValue(options.group_id ?? options.groupId);
281
+ const srcGroupAid = stringValue(options.src_group_aid ?? options.srcGroupAid);
282
+ const srcGroupId = stringValue(options.src_group_id ?? options.srcGroupId);
283
+ const dstGroupAid = stringValue(options.dst_group_aid ?? options.dstGroupAid);
284
+ const dstGroupId = stringValue(options.dst_group_id ?? options.dstGroupId);
285
+ const sharedGroupRef = sharedGroupAid || sharedGroupId;
286
+ const srcGroupRef = srcGroupAid || srcGroupId;
287
+ const dstGroupRef = dstGroupAid || dstGroupId;
288
+ const force = Boolean(options.force ?? options.overwrite ?? false);
289
+ const srcRemote = isGroupRemoteCopyPath(src, srcGroupRef, sharedGroupRef);
290
+ const dstRemote = isGroupRemoteCopyPath(dst, dstGroupRef, sharedGroupRef);
291
+ if (!srcRemote || !dstRemote) {
292
+ throw new StorageError('group.fs.mv only supports group remote paths', 'EINVAL', src);
293
+ }
294
+ const rest = remainingCopyOptions(options);
295
+ const params = { ...rest, src, dst };
296
+ if (sharedGroupAid)
297
+ params.group_aid = sharedGroupAid;
298
+ else if (sharedGroupId)
299
+ params.group_id = sharedGroupId;
300
+ if (srcGroupAid)
301
+ params.src_group_aid = srcGroupAid;
302
+ else if (srcGroupId)
303
+ params.src_group_id = srcGroupId;
304
+ if (dstGroupAid)
305
+ params.dst_group_aid = dstGroupAid;
306
+ else if (dstGroupId)
307
+ params.dst_group_id = dstGroupId;
308
+ if (force)
309
+ params.force = true;
310
+ return this.call('group.fs.mv', params, src);
311
+ }
312
+ df(pathOrGroup, options = {}) {
313
+ const params = stripNil(options);
314
+ if (pathOrGroup !== undefined && pathOrGroup !== null)
315
+ params.path = pathOrGroup;
316
+ return this.call('group.fs.df', params, pathOrGroup ?? '');
317
+ }
318
+ mount(path, options = {}) {
319
+ return this.call('group.fs.mount', { ...options, path }, path);
320
+ }
321
+ umount(path, options = {}) {
322
+ return this.call('group.fs.umount', { ...options, path }, path);
323
+ }
324
+ async uploadSource(source, groupPath, options) {
325
+ const { data, contentType: sourceContentType, localPath } = await bytesFromSource(source);
326
+ const digest = sha256Hex(data);
327
+ const contentType = stringValue(options.content_type)
328
+ || sourceContentType
329
+ || (localPath ? contentTypeForPath(localPath) : 'application/octet-stream');
330
+ const baseParams = stripNil({
331
+ ...options,
332
+ path: groupPath,
333
+ size_bytes: data.byteLength,
334
+ sha256: digest,
335
+ content_type: contentType,
336
+ force: options.force,
337
+ parents: options.parents,
338
+ metadata: options.metadata,
339
+ expected_version: options.expected_version,
340
+ onProgress: undefined,
341
+ });
342
+ const check = await this.call('group.fs.check_upload', { ...baseParams }, groupPath);
343
+ if (isRecord(check)) {
344
+ if (check.within_limit === false) {
345
+ throw new StorageError('file size exceeds group fs upload limit', 'E2BIG', groupPath, check);
346
+ }
347
+ if (check.target_exists && !options.force && options.expected_version === undefined) {
348
+ throw new StorageExistsError('group fs target already exists', 'EEXIST', groupPath, check.target);
349
+ }
350
+ if (boolValue(check.instant) || boolValue(check.dedup_hit) || boolValue(check.skip_upload)) {
351
+ const completeParams = { ...baseParams, skip_blob: true };
352
+ const sessionId = check.session_id;
353
+ if (sessionId !== undefined && sessionId !== null)
354
+ completeParams.session_id = sessionId;
355
+ return this.call('group.fs.complete_upload', completeParams, groupPath);
356
+ }
357
+ }
358
+ const session = await this.call('group.fs.create_upload_session', { ...baseParams }, groupPath);
359
+ if (!isRecord(session)) {
360
+ throw new StorageError(`group.fs.create_upload_session returned invalid response`, 'ESTORAGE', groupPath, session);
361
+ }
362
+ const uploadUrl = stringValue(session.upload_url ?? session.url);
363
+ if (!uploadUrl) {
364
+ throw new StorageError('group.fs.create_upload_session did not return upload_url', 'ESTORAGE', groupPath, session);
365
+ }
366
+ const headers = {};
367
+ if (isRecord(session.headers)) {
368
+ for (const [key, value] of Object.entries(session.headers)) {
369
+ if (value !== undefined && value !== null)
370
+ headers[key] = String(value);
371
+ }
372
+ }
373
+ if (!Object.keys(headers).some((key) => key.toLowerCase() === 'content-type')) {
374
+ headers['Content-Type'] = contentType;
375
+ }
376
+ await this.lowlevel.httpPut(uploadUrl, data, headers);
377
+ options.onProgress?.(data.byteLength, data.byteLength);
378
+ const completeParams = { ...baseParams };
379
+ const sessionId = session.session_id ?? session.id;
380
+ if (sessionId !== undefined && sessionId !== null)
381
+ completeParams.session_id = sessionId;
382
+ return this.call('group.fs.complete_upload', completeParams, groupPath);
383
+ }
384
+ async downloadRemote(groupPath, localPath, options) {
385
+ const initialTargetPath = stripLocalPathPrefix(localPath);
386
+ const existing = await statOrNull(initialTargetPath);
387
+ if (existing && !existing.isDirectory() && !options.force) {
388
+ throw new StorageExistsError(`local path already exists: ${initialTargetPath}`, 'EEXIST', initialTargetPath);
389
+ }
390
+ const ticketParams = stripNil({
391
+ ...options,
392
+ path: groupPath,
393
+ force: undefined,
394
+ verify_hash: undefined,
395
+ onProgress: undefined,
396
+ });
397
+ const ticket = await this.call('group.fs.create_download_ticket', ticketParams, groupPath);
398
+ if (!isRecord(ticket)) {
399
+ throw new StorageError('group.fs.create_download_ticket returned invalid response', 'ESTORAGE', groupPath, ticket);
400
+ }
401
+ const downloadUrl = stringValue(ticket.download_url ?? ticket.url);
402
+ if (!downloadUrl) {
403
+ throw new StorageError('group.fs.create_download_ticket did not return download_url', 'ESTORAGE', groupPath, ticket);
404
+ }
405
+ let targetPath = initialTargetPath;
406
+ const targetInfo = await statOrNull(targetPath);
407
+ if (targetInfo?.isDirectory()) {
408
+ const fileName = stringValue(ticket.file_name ?? ticket.name) || filenameFromGroupPath(groupPath);
409
+ targetPath = join(targetPath, fileName);
410
+ const fileInfo = await statOrNull(targetPath);
411
+ if (fileInfo && !options.force) {
412
+ throw new StorageExistsError(`local path already exists: ${targetPath}`, 'EEXIST', targetPath);
413
+ }
414
+ }
415
+ const data = await this.lowlevel.httpGet(downloadUrl, bearerHeaders(this.client));
416
+ options.onProgress?.(data.byteLength, data.byteLength);
417
+ const expectedSha = stringValue(ticket.sha256);
418
+ const actualSha = sha256Hex(data);
419
+ const verified = !options.verify_hash || !expectedSha || actualSha.toLowerCase() === expectedSha.toLowerCase();
420
+ if (options.verify_hash && !verified) {
421
+ throw new StorageConflictError('download hash verification failed', 'ECONFLICT', groupPath, ticket);
422
+ }
423
+ await mkdir(dirname(targetPath), { recursive: true });
424
+ if (options.force) {
425
+ const tempPath = join(dirname(targetPath), `.${basename(targetPath)}.${Date.now()}.${Math.random().toString(16).slice(2)}.tmp`);
426
+ try {
427
+ await writeFile(tempPath, data);
428
+ try {
429
+ await unlink(targetPath);
430
+ }
431
+ catch (exc) {
432
+ if (exc?.code !== 'ENOENT')
433
+ throw exc;
434
+ }
435
+ await rename(tempPath, targetPath);
436
+ }
437
+ finally {
438
+ try {
439
+ await unlink(tempPath);
440
+ }
441
+ catch (exc) {
442
+ if (exc?.code !== 'ENOENT')
443
+ throw exc;
444
+ }
445
+ }
446
+ }
447
+ else {
448
+ try {
449
+ await writeFile(targetPath, data, { flag: 'wx' });
450
+ }
451
+ catch (exc) {
452
+ if (exc?.code === 'EEXIST') {
453
+ throw new StorageExistsError(`local path already exists: ${targetPath}`, 'EEXIST', targetPath);
454
+ }
455
+ throw exc;
456
+ }
457
+ }
458
+ return {
459
+ path: groupPath,
460
+ localPath: targetPath,
461
+ size: data.byteLength,
462
+ sha256: expectedSha || actualSha,
463
+ verified,
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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"}
@@ -1,18 +1,15 @@
1
1
  /**
2
- * group_id 归一化工具。
2
+ * group_id/group_aid 兼容转换工具。
3
3
  *
4
- * AUN 协议规定的 canonical 格式为 `group.{domain}/{base}`。
5
- *
6
- * 历史上出现过四种老/脏格式:
7
- * 1. {base}.{domain} 例如 g-xxx.agentid.pub / 10086.agentid.pub
8
- * 2. g-{slug}.{domain} (属于 1 的一种)
9
- * 3. {base}@{domain} 例如 g-xxx@agentid.pub
10
- * 4. group.{A}/{base}@{B} 旧版服务端迁移脚本未识别 @ 导致的污染数据
11
- * 真实语义:group.{B}.{A}/{base}
12
- *
13
- * 与 Python SDK aun_core.group_id 和服务端
14
- * extensions/services/group/service._split_group_id_domain 保持等价,零代码共享。
4
+ * 目标态群组主标识是 group_aid,格式为 `{base}.{issuer}`。
5
+ * 历史 group_id 字段名继续保留,但旧函数名也返回 group_aid。
15
6
  */
7
+ export declare function convertToGroupAid(raw: unknown, opts?: {
8
+ localIssuer?: string;
9
+ }): string;
10
+ export declare function normalizeGroupAid(raw: unknown, opts?: {
11
+ localIssuer?: string;
12
+ }): string;
16
13
  export declare function normalizeGroupId(raw: unknown, opts?: {
17
14
  localIssuer?: string;
18
15
  }): string;