@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.
- package/CHANGELOG.md +547 -393
- package/_packed_docs/CHANGELOG-validators.md +144 -0
- package/_packed_docs/CHANGELOG.md +547 -393
- package/_packed_docs/INDEX.md +159 -84
- package/_packed_docs/KITE_DOCS_GUIDE.md +48 -31
- package/_packed_docs/agent.md/SCHEMA.md +2 -0
- package/_packed_docs/agent.md/examples/codeagent-claudecode.md +2 -0
- package/_packed_docs/agent.md/examples/human-developer.md +2 -0
- package/_packed_docs/agent.md/examples/openclaw-lobster.md +2 -0
- package/_packed_docs/agent.md/examples/signed-openclaw-lobster.md +2 -0
- 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
- package/_packed_docs/cli/AUN-CLI/350/256/276/350/256/241/346/226/207/346/241/243.md +266 -686
- package/_packed_docs/cli/CLI/346/211/213/345/206/214.md +331 -0
- package/_packed_docs/design/2026-05-22-aun-rpc-trace-enhancement.md +2 -0
- 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
- 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
- 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
- package/_packed_docs/protocol/00-/346/200/273/350/247/210/344/270/216/345/210/206/345/261/202.md +2 -0
- 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
- 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
- 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
- package/_packed_docs/protocol/03-Gateway-/350/277/236/346/216/245/346/250/241/345/274/217.md +2 -0
- package/_packed_docs/protocol/04-Peer-/345/255/220/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/protocol/05-Relay-/345/255/220/345/215/217/350/256/256.md +2 -0
- 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
- package/_packed_docs/protocol/08-AUN-E2EE-Group.md +296 -900
- package/_packed_docs/protocol/08-AUN-E2EE.md +2 -0
- package/_packed_docs/protocol/09-/345/256/211/345/205/250/350/200/203/350/231/221.md +2 -0
- package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +66 -173
- package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +55 -0
- package/_packed_docs/protocol/12-Stream-/345/255/220/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/protocol/13-Agent/350/241/214/344/270/272/350/247/204/350/214/203.md +2 -0
- 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
- 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
- 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
- package/_packed_docs/protocol/README.md +4 -1
- package/_packed_docs/protocol/agent.md/SCHEMA.md +2 -0
- package/_packed_docs/protocol/agent.md/examples/codeagent-claudecode.md +2 -0
- package/_packed_docs/protocol/agent.md/examples/human-developer.md +2 -0
- package/_packed_docs/protocol/agent.md/examples/openclaw-lobster.md +2 -0
- package/_packed_docs/protocol/aun-docs-guide.md +2 -0
- package/_packed_docs/protocol/index.md +10 -3
- 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
- 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
- package/_packed_docs/protocol//351/231/204/345/275/225A-/346/234/257/350/257/255/350/241/250.md +2 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +2 -0
- package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +2 -0
- package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +2 -0
- package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +2 -0
- package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +6 -252
- package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +219 -177
- package/_packed_docs/sdk/07-/351/224/231/350/257/257/345/244/204/347/220/206.md +4 -1
- package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +2 -0
- package/_packed_docs/sdk/09-collab-rpc-manual.md +581 -0
- package/_packed_docs/sdk/09-custody-api-manual.md +2 -0
- package/_packed_docs/sdk/09-group-rpc-manual.md +301 -634
- package/_packed_docs/sdk/09-message-rpc-manual.md +2 -0
- package/_packed_docs/sdk/09-meta-rpc-manual.md +2 -0
- package/_packed_docs/sdk/09-payload-reference.md +2 -0
- package/_packed_docs/sdk/09-proxy-rpc-manual.md +2 -0
- package/_packed_docs/sdk/09-storage-rpc-manual.md +984 -274
- package/_packed_docs/sdk/09-stream-rpc-manual.md +2 -0
- package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +36 -23
- 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
- package/_packed_docs/sdk/INDEX.md +47 -30
- package/_packed_docs/sdk/Notify/351/200/232/347/237/245/346/226/271/346/241/210.md +2 -0
- package/_packed_docs/sdk/README.md +17 -15
- package/dist/aid-store.d.ts +25 -0
- package/dist/aid-store.js +80 -0
- package/dist/aid-store.js.map +1 -1
- package/dist/client/delivery.d.ts +11 -0
- package/dist/client/delivery.js +208 -25
- package/dist/client/delivery.js.map +1 -1
- package/dist/client/group-state.js +33 -11
- package/dist/client/group-state.js.map +1 -1
- package/dist/client/rpc-pipeline.d.ts +1 -0
- package/dist/client/rpc-pipeline.js +177 -65
- package/dist/client/rpc-pipeline.js.map +1 -1
- package/dist/client/v2-e2ee.d.ts +6 -1
- package/dist/client/v2-e2ee.js +199 -130
- package/dist/client/v2-e2ee.js.map +1 -1
- package/dist/client.d.ts +37 -1
- package/dist/client.js +491 -44
- package/dist/client.js.map +1 -1
- package/dist/collab/client.d.ts +46 -0
- package/dist/collab/client.js +136 -0
- package/dist/collab/client.js.map +1 -0
- package/dist/collab/errors.d.ts +15 -0
- package/dist/collab/errors.js +60 -0
- package/dist/collab/errors.js.map +1 -0
- package/dist/collab/index.d.ts +3 -0
- package/dist/collab/index.js +4 -0
- package/dist/collab/index.js.map +1 -0
- package/dist/collab/types.d.ts +110 -0
- package/dist/collab/types.js +2 -0
- package/dist/collab/types.js.map +1 -0
- package/dist/crypto.d.ts +2 -0
- package/dist/crypto.js +6 -0
- package/dist/crypto.js.map +1 -1
- package/dist/errors.d.ts +0 -12
- package/dist/errors.js +9 -25
- package/dist/errors.js.map +1 -1
- package/dist/facades.d.ts +94 -0
- package/dist/facades.js +255 -0
- package/dist/facades.js.map +1 -0
- package/dist/group-fs.d.ts +122 -0
- package/dist/group-fs.js +467 -0
- package/dist/group-fs.js.map +1 -0
- package/dist/group-id.d.ts +9 -12
- package/dist/group-id.js +41 -63
- package/dist/group-id.js.map +1 -1
- package/dist/group-resources.d.ts +31 -0
- package/dist/group-resources.js +84 -0
- package/dist/group-resources.js.map +1 -0
- package/dist/index.d.ts +9 -3
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/keystore/aid-db.d.ts +1 -0
- package/dist/keystore/aid-db.js +43 -43
- package/dist/keystore/aid-db.js.map +1 -1
- package/dist/keystore/local-identity-store.d.ts +16 -0
- package/dist/keystore/local-identity-store.js +190 -18
- package/dist/keystore/local-identity-store.js.map +1 -1
- package/dist/keystore/local-token-store.d.ts +0 -13
- package/dist/keystore/local-token-store.js +0 -105
- package/dist/keystore/local-token-store.js.map +1 -1
- package/dist/logger.d.ts +2 -0
- package/dist/logger.js +4 -0
- package/dist/logger.js.map +1 -1
- package/dist/register-flow.d.ts +1 -0
- package/dist/register-flow.js +3 -0
- package/dist/register-flow.js.map +1 -1
- package/dist/service-proxy.d.ts +1 -0
- package/dist/service-proxy.js +17 -4
- package/dist/service-proxy.js.map +1 -1
- package/dist/storage/errors.d.ts +27 -0
- package/dist/storage/errors.js +65 -0
- package/dist/storage/errors.js.map +1 -0
- package/dist/storage/index.d.ts +1 -0
- package/dist/storage/index.js +2 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/lowlevel.d.ts +321 -0
- package/dist/storage/lowlevel.js +475 -0
- package/dist/storage/lowlevel.js.map +1 -0
- package/dist/storage/types.d.ts +57 -0
- package/dist/storage/types.js +116 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/storage/vfs.d.ts +166 -0
- package/dist/storage/vfs.js +524 -0
- package/dist/storage/vfs.js.map +1 -0
- package/dist/tools/cross-sdk-agent.js +708 -1
- package/dist/tools/cross-sdk-agent.js.map +1 -1
- package/dist/transport.d.ts +5 -0
- package/dist/transport.js +124 -21
- package/dist/transport.js.map +1 -1
- package/dist/types.d.ts +38 -0
- package/dist/v2/session/session.d.ts +2 -0
- package/dist/v2/session/session.js +53 -23
- package/dist/v2/session/session.js.map +1 -1
- package/dist/v2/state/commitment.d.ts +1 -1
- package/dist/v2/state/commitment.js +4 -2
- package/dist/v2/state/commitment.js.map +1 -1
- package/dist/validators.d.ts +32 -0
- package/dist/validators.js +128 -0
- package/dist/validators.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
package/dist/group-fs.js
ADDED
|
@@ -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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"}
|
package/dist/group-id.d.ts
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* group_id
|
|
2
|
+
* group_id/group_aid 兼容转换工具。
|
|
3
3
|
*
|
|
4
|
-
*
|
|
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;
|