@vertesia/client 0.56.0 → 0.58.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.
- package/lib/cjs/store/FilesApi.js +29 -19
- package/lib/cjs/store/FilesApi.js.map +1 -1
- package/lib/cjs/store/ObjectsApi.js +22 -20
- package/lib/cjs/store/ObjectsApi.js.map +1 -1
- package/lib/cjs/store/WorkflowsApi.js +82 -16
- package/lib/cjs/store/WorkflowsApi.js.map +1 -1
- package/lib/esm/store/FilesApi.js +29 -19
- package/lib/esm/store/FilesApi.js.map +1 -1
- package/lib/esm/store/ObjectsApi.js +22 -20
- package/lib/esm/store/ObjectsApi.js.map +1 -1
- package/lib/esm/store/WorkflowsApi.js +82 -16
- package/lib/esm/store/WorkflowsApi.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types/AccountApi.d.ts +1 -0
- package/lib/types/AccountsApi.d.ts +1 -0
- package/lib/types/AnalyticsApi.d.ts +1 -0
- package/lib/types/ApiKeysApi.d.ts +1 -0
- package/lib/types/CommandsApi.d.ts +1 -0
- package/lib/types/EnvironmentsApi.d.ts +1 -0
- package/lib/types/IamApi.d.ts +1 -0
- package/lib/types/InteractionBase.d.ts +1 -0
- package/lib/types/InteractionsApi.d.ts +1 -0
- package/lib/types/PluginsApi.d.ts +1 -0
- package/lib/types/ProjectsApi.d.ts +1 -0
- package/lib/types/PromptsApi.d.ts +1 -0
- package/lib/types/RefsApi.d.ts +1 -0
- package/lib/types/RunsApi.d.ts +1 -0
- package/lib/types/StreamSource.d.ts +1 -0
- package/lib/types/TrainingApi.d.ts +1 -0
- package/lib/types/UsersApi.d.ts +1 -0
- package/lib/types/client.d.ts +1 -0
- package/lib/types/execute.d.ts +1 -0
- package/lib/types/index.d.ts +1 -0
- package/lib/types/nodejs/NodeStreamSource.d.ts +1 -0
- package/lib/types/nodejs/index.d.ts +1 -0
- package/lib/types/store/AgentsApi.d.ts +1 -0
- package/lib/types/store/AnalyzeDocApi.d.ts +1 -0
- package/lib/types/store/CollectionsApi.d.ts +1 -0
- package/lib/types/store/CommandsApi.d.ts +1 -0
- package/lib/types/store/EmbeddingsApi.d.ts +1 -0
- package/lib/types/store/FilesApi.d.ts +2 -0
- package/lib/types/store/FilesApi.d.ts.map +1 -1
- package/lib/types/store/ObjectsApi.d.ts +2 -7
- package/lib/types/store/ObjectsApi.d.ts.map +1 -1
- package/lib/types/store/TypesApi.d.ts +1 -0
- package/lib/types/store/WorkflowsApi.d.ts +1 -0
- package/lib/types/store/WorkflowsApi.d.ts.map +1 -1
- package/lib/types/store/client.d.ts +1 -0
- package/lib/types/store/errors.d.ts +1 -0
- package/lib/types/store/index.d.ts +1 -0
- package/lib/vertesia-client.js +1 -1
- package/lib/vertesia-client.js.map +1 -1
- package/package.json +4 -4
- package/src/store/FilesApi.ts +83 -55
- package/src/store/ObjectsApi.ts +326 -313
- package/src/store/WorkflowsApi.ts +91 -17
|
@@ -4,7 +4,7 @@ exports.FilesApi = exports.MEMORIES_PREFIX = void 0;
|
|
|
4
4
|
exports.getMemoryFilePath = getMemoryFilePath;
|
|
5
5
|
const api_fetch_client_1 = require("@vertesia/api-fetch-client");
|
|
6
6
|
const StreamSource_js_1 = require("../StreamSource.js");
|
|
7
|
-
exports.MEMORIES_PREFIX =
|
|
7
|
+
exports.MEMORIES_PREFIX = "memories";
|
|
8
8
|
function getMemoryFilePath(name) {
|
|
9
9
|
const nameWithExt = name.endsWith(".tar.gz") ? name : name + ".tar.gz";
|
|
10
10
|
return `${exports.MEMORIES_PREFIX}/${nameWithExt}`;
|
|
@@ -13,6 +13,10 @@ class FilesApi extends api_fetch_client_1.ApiTopic {
|
|
|
13
13
|
constructor(parent) {
|
|
14
14
|
super(parent, "/api/v1/files");
|
|
15
15
|
}
|
|
16
|
+
async deleteFile(path, prefix) {
|
|
17
|
+
const res = await this.delete(`/${path}`, { query: { prefix } });
|
|
18
|
+
return res.count;
|
|
19
|
+
}
|
|
16
20
|
/**
|
|
17
21
|
* get the metadata of a blob given its URI. Supported URI are:
|
|
18
22
|
* starting with s3:// and gs://.
|
|
@@ -23,8 +27,8 @@ class FilesApi extends api_fetch_client_1.ApiTopic {
|
|
|
23
27
|
getMetadata(uri) {
|
|
24
28
|
return this.get("/metadata", {
|
|
25
29
|
query: {
|
|
26
|
-
file: uri
|
|
27
|
-
}
|
|
30
|
+
file: uri,
|
|
31
|
+
},
|
|
28
32
|
});
|
|
29
33
|
}
|
|
30
34
|
/**
|
|
@@ -33,18 +37,18 @@ class FilesApi extends api_fetch_client_1.ApiTopic {
|
|
|
33
37
|
* @returns
|
|
34
38
|
*/
|
|
35
39
|
getOrCreateBucket() {
|
|
36
|
-
return this.post(
|
|
40
|
+
return this.post("/bucket");
|
|
37
41
|
}
|
|
38
42
|
getUploadUrl(payload) {
|
|
39
|
-
return this.post(
|
|
40
|
-
payload
|
|
43
|
+
return this.post("/upload-url", {
|
|
44
|
+
payload,
|
|
41
45
|
});
|
|
42
46
|
}
|
|
43
47
|
getDownloadUrl(file) {
|
|
44
|
-
return this.post(
|
|
48
|
+
return this.post("/download-url", {
|
|
45
49
|
payload: {
|
|
46
|
-
file
|
|
47
|
-
}
|
|
50
|
+
file,
|
|
51
|
+
},
|
|
48
52
|
});
|
|
49
53
|
}
|
|
50
54
|
/**
|
|
@@ -56,14 +60,15 @@ class FilesApi extends api_fetch_client_1.ApiTopic {
|
|
|
56
60
|
const isStream = source instanceof StreamSource_js_1.StreamSource;
|
|
57
61
|
const { url, path } = await this.getUploadUrl(source);
|
|
58
62
|
await fetch(url, {
|
|
59
|
-
method:
|
|
63
|
+
method: "PUT",
|
|
60
64
|
body: isStream ? source.stream : source,
|
|
61
65
|
//@ts-ignore: duplex is not in the types. See https://github.com/node-fetch/node-fetch/issues/1769
|
|
62
66
|
duplex: isStream ? "half" : undefined,
|
|
63
67
|
headers: {
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
})
|
|
68
|
+
"Content-Type": source.type || "application/gzip",
|
|
69
|
+
},
|
|
70
|
+
})
|
|
71
|
+
.then((res) => {
|
|
67
72
|
if (res.ok) {
|
|
68
73
|
return res;
|
|
69
74
|
}
|
|
@@ -71,8 +76,9 @@ class FilesApi extends api_fetch_client_1.ApiTopic {
|
|
|
71
76
|
console.log(res);
|
|
72
77
|
throw new Error(`Failed to upload file: ${res.statusText}`);
|
|
73
78
|
}
|
|
74
|
-
})
|
|
75
|
-
|
|
79
|
+
})
|
|
80
|
+
.catch((err) => {
|
|
81
|
+
console.error("Failed to upload file", err);
|
|
76
82
|
throw err;
|
|
77
83
|
});
|
|
78
84
|
return path;
|
|
@@ -80,8 +86,9 @@ class FilesApi extends api_fetch_client_1.ApiTopic {
|
|
|
80
86
|
async downloadFile(name) {
|
|
81
87
|
const { url } = await this.getDownloadUrl(name);
|
|
82
88
|
const res = await fetch(url, {
|
|
83
|
-
method:
|
|
84
|
-
})
|
|
89
|
+
method: "GET",
|
|
90
|
+
})
|
|
91
|
+
.then((res) => {
|
|
85
92
|
if (res.ok) {
|
|
86
93
|
return res;
|
|
87
94
|
}
|
|
@@ -95,7 +102,8 @@ class FilesApi extends api_fetch_client_1.ApiTopic {
|
|
|
95
102
|
console.log(res);
|
|
96
103
|
throw new Error(`Failed to download file ${name}: ${res.statusText}`);
|
|
97
104
|
}
|
|
98
|
-
})
|
|
105
|
+
})
|
|
106
|
+
.catch((err) => {
|
|
99
107
|
console.error(`Failed to download file ${name}.`, err);
|
|
100
108
|
throw err;
|
|
101
109
|
});
|
|
@@ -106,7 +114,9 @@ class FilesApi extends api_fetch_client_1.ApiTopic {
|
|
|
106
114
|
}
|
|
107
115
|
async uploadMemoryPack(source) {
|
|
108
116
|
const fileId = getMemoryFilePath(source.name);
|
|
109
|
-
const nameWithExt = source.name.endsWith(".tar.gz")
|
|
117
|
+
const nameWithExt = source.name.endsWith(".tar.gz")
|
|
118
|
+
? source.name
|
|
119
|
+
: source.name + ".tar.gz";
|
|
110
120
|
if (source instanceof File) {
|
|
111
121
|
let file = source;
|
|
112
122
|
return this.uploadFile(new StreamSource_js_1.StreamSource(file.stream(), nameWithExt, file.type, fileId));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilesApi.js","sourceRoot":"","sources":["../../../src/store/FilesApi.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"FilesApi.js","sourceRoot":"","sources":["../../../src/store/FilesApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,14 +37,14 @@ class ObjectsApi extends api_fetch_client_1.ApiTopic {
|
|
|
37
37
|
const offset = payload.offset || 0;
|
|
38
38
|
const query = payload.query || {};
|
|
39
39
|
// Add revision filtering options
|
|
40
|
-
const showAllRevisions = payload.
|
|
40
|
+
const showAllRevisions = payload.all_revisions === true;
|
|
41
41
|
const revisionRoot = payload.from_root;
|
|
42
42
|
return this.get("/", {
|
|
43
43
|
query: {
|
|
44
44
|
limit,
|
|
45
45
|
offset,
|
|
46
46
|
...query,
|
|
47
|
-
|
|
47
|
+
all_revisions: showAllRevisions ? "true" : undefined,
|
|
48
48
|
from_root: revisionRoot,
|
|
49
49
|
},
|
|
50
50
|
});
|
|
@@ -93,24 +93,23 @@ class ObjectsApi extends api_fetch_client_1.ApiTopic {
|
|
|
93
93
|
name: source.name,
|
|
94
94
|
mime_type: source.type,
|
|
95
95
|
});
|
|
96
|
-
console.log(`Uploading content to ${url}`, { id, mime_type, isStream, source });
|
|
97
96
|
// upload the file content to the signed URL
|
|
98
97
|
/*const res = await this.fetch(url, {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
98
|
+
method: 'PUT',
|
|
99
|
+
//@ts-ignore: duplex is not in the types. See https://github.com/node-fetch/node-fetch/issues/1769
|
|
100
|
+
duplex: isStream ? "half" : undefined,
|
|
101
|
+
body: isStream ? source.stream : source,
|
|
102
|
+
headers: {
|
|
103
|
+
'Content-Type': mime_type || 'application/octet-stream'
|
|
104
|
+
}
|
|
105
|
+
}).then((res: Response) => {
|
|
106
|
+
if (res.ok) {
|
|
107
|
+
return res;
|
|
108
|
+
} else {
|
|
109
|
+
console.log(res);
|
|
110
|
+
throw new Error(`Failed to upload file: ${res.statusText}`);
|
|
111
|
+
}
|
|
112
|
+
});*/
|
|
114
113
|
const res = await fetch(url, {
|
|
115
114
|
method: "PUT",
|
|
116
115
|
body: isStream ? source.stream : source,
|
|
@@ -149,7 +148,8 @@ class ObjectsApi extends api_fetch_client_1.ApiTopic {
|
|
|
149
148
|
const createPayload = {
|
|
150
149
|
...payload,
|
|
151
150
|
};
|
|
152
|
-
if (payload.content instanceof StreamSource_js_1.StreamSource ||
|
|
151
|
+
if (payload.content instanceof StreamSource_js_1.StreamSource ||
|
|
152
|
+
payload.content instanceof File) {
|
|
153
153
|
createPayload.content = await this.upload(payload.content);
|
|
154
154
|
}
|
|
155
155
|
return await this.post("/", {
|
|
@@ -196,7 +196,8 @@ class ObjectsApi extends api_fetch_client_1.ApiTopic {
|
|
|
196
196
|
...payload,
|
|
197
197
|
};
|
|
198
198
|
// Handle file upload if content is provided as File or StreamSource
|
|
199
|
-
if (payload.content instanceof StreamSource_js_1.StreamSource ||
|
|
199
|
+
if (payload.content instanceof StreamSource_js_1.StreamSource ||
|
|
200
|
+
payload.content instanceof File) {
|
|
200
201
|
updatePayload.content = await this.upload(payload.content);
|
|
201
202
|
}
|
|
202
203
|
if (options?.createRevision) {
|
|
@@ -236,6 +237,7 @@ class ObjectsApi extends api_fetch_client_1.ApiTopic {
|
|
|
236
237
|
const query = {
|
|
237
238
|
max_hw: options.max_hw,
|
|
238
239
|
generate_if_missing: options.generate_if_missing,
|
|
240
|
+
as_signed_url: options.sign_url,
|
|
239
241
|
};
|
|
240
242
|
return this.get(`/${documentId}/renditions/${options.format}`, { query });
|
|
241
243
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectsApi.js","sourceRoot":"","sources":["../../../src/store/ObjectsApi.ts"],"names":[],"mappings":";;;AAAA,iEAAkE;
|
|
1
|
+
{"version":3,"file":"ObjectsApi.js","sourceRoot":"","sources":["../../../src/store/ObjectsApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,13 +46,40 @@ class WorkflowsApi extends api_fetch_client_1.ApiTopic {
|
|
|
46
46
|
}
|
|
47
47
|
async streamMessages(runId, onMessage, since) {
|
|
48
48
|
return new Promise((resolve, reject) => {
|
|
49
|
-
|
|
49
|
+
let reconnectAttempts = 0;
|
|
50
|
+
let lastMessageTimestamp = since || 0;
|
|
51
|
+
let isClosed = false;
|
|
52
|
+
let currentSse = null;
|
|
53
|
+
let interval = null;
|
|
54
|
+
const maxReconnectAttempts = 10;
|
|
55
|
+
const baseDelay = 1000; // 1 second base delay
|
|
56
|
+
const maxDelay = 30000; // 30 seconds max delay
|
|
57
|
+
const calculateBackoffDelay = (attempts) => {
|
|
58
|
+
const exponentialDelay = Math.min(baseDelay * Math.pow(2, attempts), maxDelay);
|
|
59
|
+
// Add jitter to prevent thundering herd
|
|
60
|
+
const jitter = Math.random() * 0.1 * exponentialDelay;
|
|
61
|
+
return exponentialDelay + jitter;
|
|
62
|
+
};
|
|
63
|
+
const cleanup = () => {
|
|
64
|
+
if (interval) {
|
|
65
|
+
clearInterval(interval);
|
|
66
|
+
interval = null;
|
|
67
|
+
}
|
|
68
|
+
if (currentSse) {
|
|
69
|
+
currentSse.close();
|
|
70
|
+
currentSse = null;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
const setupStream = async (isReconnect = false) => {
|
|
74
|
+
if (isClosed)
|
|
75
|
+
return;
|
|
50
76
|
try {
|
|
51
77
|
const EventSourceImpl = await (0, execute_js_1.EventSourceProvider)();
|
|
52
78
|
const client = this.client;
|
|
53
79
|
const streamUrl = new URL(client.workflows.baseUrl + "/runs/" + runId + "/stream");
|
|
54
|
-
|
|
55
|
-
|
|
80
|
+
// Use the timestamp of the last received message for reconnection
|
|
81
|
+
if (lastMessageTimestamp > 0) {
|
|
82
|
+
streamUrl.searchParams.set("since", lastMessageTimestamp.toString());
|
|
56
83
|
}
|
|
57
84
|
const bearerToken = client._auth ? await client._auth() : undefined;
|
|
58
85
|
if (!bearerToken) {
|
|
@@ -61,13 +88,19 @@ class WorkflowsApi extends api_fetch_client_1.ApiTopic {
|
|
|
61
88
|
}
|
|
62
89
|
const token = bearerToken.split(" ")[1];
|
|
63
90
|
streamUrl.searchParams.set("access_token", token);
|
|
91
|
+
if (isReconnect) {
|
|
92
|
+
console.log(`Reconnecting to SSE stream for run ${runId} (attempt ${reconnectAttempts + 1}/${maxReconnectAttempts})`);
|
|
93
|
+
}
|
|
64
94
|
const sse = new EventSourceImpl(streamUrl.href);
|
|
65
|
-
|
|
95
|
+
currentSse = sse;
|
|
66
96
|
// Prevent Node from exiting prematurely
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
97
|
+
interval = setInterval(() => { }, 1000);
|
|
98
|
+
sse.onopen = () => {
|
|
99
|
+
if (isReconnect) {
|
|
100
|
+
console.log(`Successfully reconnected to SSE stream for run ${runId}`);
|
|
101
|
+
}
|
|
102
|
+
// Reset reconnect attempts on successful connection
|
|
103
|
+
reconnectAttempts = 0;
|
|
71
104
|
};
|
|
72
105
|
sse.onmessage = (ev) => {
|
|
73
106
|
if (!ev.data || ev.data.startsWith(":")) {
|
|
@@ -76,6 +109,10 @@ class WorkflowsApi extends api_fetch_client_1.ApiTopic {
|
|
|
76
109
|
}
|
|
77
110
|
try {
|
|
78
111
|
const message = JSON.parse(ev.data);
|
|
112
|
+
// Update last message timestamp for reconnection
|
|
113
|
+
if (message.timestamp) {
|
|
114
|
+
lastMessageTimestamp = Math.max(lastMessageTimestamp, message.timestamp);
|
|
115
|
+
}
|
|
79
116
|
if (onMessage)
|
|
80
117
|
onMessage(message);
|
|
81
118
|
// Only close the stream when the main workstream completes
|
|
@@ -83,7 +120,6 @@ class WorkflowsApi extends api_fetch_client_1.ApiTopic {
|
|
|
83
120
|
console.log("Closing stream due to COMPLETE message from main workstream");
|
|
84
121
|
if (!isClosed) {
|
|
85
122
|
isClosed = true;
|
|
86
|
-
sse.close();
|
|
87
123
|
cleanup();
|
|
88
124
|
resolve();
|
|
89
125
|
}
|
|
@@ -97,21 +133,51 @@ class WorkflowsApi extends api_fetch_client_1.ApiTopic {
|
|
|
97
133
|
}
|
|
98
134
|
};
|
|
99
135
|
sse.onerror = (err) => {
|
|
100
|
-
if (
|
|
101
|
-
|
|
136
|
+
if (isClosed)
|
|
137
|
+
return;
|
|
138
|
+
console.warn(`SSE stream error for run ${runId}:`, err);
|
|
139
|
+
cleanup();
|
|
140
|
+
// Check if we should attempt reconnection
|
|
141
|
+
if (reconnectAttempts < maxReconnectAttempts) {
|
|
142
|
+
const delay = calculateBackoffDelay(reconnectAttempts);
|
|
143
|
+
console.log(`Attempting to reconnect in ${delay}ms (attempt ${reconnectAttempts + 1}/${maxReconnectAttempts})`);
|
|
144
|
+
reconnectAttempts++;
|
|
145
|
+
setTimeout(() => {
|
|
146
|
+
if (!isClosed) {
|
|
147
|
+
setupStream(true);
|
|
148
|
+
}
|
|
149
|
+
}, delay);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
console.error(`Failed to reconnect to SSE stream for run ${runId} after ${maxReconnectAttempts} attempts`);
|
|
102
153
|
isClosed = true;
|
|
103
|
-
|
|
104
|
-
cleanup();
|
|
105
|
-
reject(err);
|
|
154
|
+
reject(new Error(`SSE connection failed after ${maxReconnectAttempts} reconnection attempts`));
|
|
106
155
|
}
|
|
107
156
|
};
|
|
108
157
|
}
|
|
109
158
|
catch (err) {
|
|
110
|
-
|
|
159
|
+
console.error("Error setting up SSE stream:", err);
|
|
160
|
+
if (reconnectAttempts < maxReconnectAttempts) {
|
|
161
|
+
const delay = calculateBackoffDelay(reconnectAttempts);
|
|
162
|
+
reconnectAttempts++;
|
|
163
|
+
setTimeout(() => {
|
|
164
|
+
if (!isClosed) {
|
|
165
|
+
setupStream(true);
|
|
166
|
+
}
|
|
167
|
+
}, delay);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
reject(err);
|
|
171
|
+
}
|
|
111
172
|
}
|
|
112
173
|
};
|
|
113
174
|
// Start the async setup process
|
|
114
|
-
setupStream();
|
|
175
|
+
setupStream(false);
|
|
176
|
+
// Return cleanup function for external cancellation
|
|
177
|
+
return () => {
|
|
178
|
+
isClosed = true;
|
|
179
|
+
cleanup();
|
|
180
|
+
};
|
|
115
181
|
});
|
|
116
182
|
}
|
|
117
183
|
rules = new WorkflowsRulesApi(this);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowsApi.js","sourceRoot":"","sources":["../../../src/store/WorkflowsApi.ts"],"names":[],"mappings":";;;AAAA,iEAAkE;AAClE,6CAc0B;AAE1B,8CAAoD;AAEpD,MAAa,YAAa,SAAQ,2BAAQ;IACtC,YAAY,MAAkB;QAC1B,KAAK,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED,kBAAkB;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC;IAED,QAAQ,CAAC,UAAkB,EAAE,SAAiB,EAAE,MAAc;QAC1D,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,UAAU,CAAC,OAAgC;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,UAAU,CAAC,UAAkB,EAAE,KAAa,EAAE,MAAc,EAAE,OAAa;QACvE,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,UAAU,IAAI,KAAK,WAAW,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,aAAa,CAAC,KAAa,EAAE,UAAkB;QAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,UAAU,IAAI,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,SAAS,CAAC,UAAkB,EAAE,KAAa,EAAE,MAAe;QACxD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,UAAU,IAAI,KAAK,oBAAoB,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,CAAC,UAAkB,EAAE,KAAa,EAAE,MAAe;QACrD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,UAAU,IAAI,KAAK,iBAAiB,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED,OAAO,CACH,IAAY,EACZ,UAAkC,EAAE;QAEpC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,WAAW,CAAC,KAAa,EAAE,GAAiB;QACxC,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,UAAU,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,gBAAgB,CAAC,KAAa,EAAE,KAAc;QAC1C,MAAM,KAAK,GAAG;YACV,KAAK;SACR,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,KAAK,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAa,EAAE,SAA2C,EAAE,KAAc;QAC3F,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,
|
|
1
|
+
{"version":3,"file":"WorkflowsApi.js","sourceRoot":"","sources":["../../../src/store/WorkflowsApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ApiTopic } from "@vertesia/api-fetch-client";
|
|
2
2
|
import { StreamSource } from "../StreamSource.js";
|
|
3
|
-
export const MEMORIES_PREFIX =
|
|
3
|
+
export const MEMORIES_PREFIX = "memories";
|
|
4
4
|
export function getMemoryFilePath(name) {
|
|
5
5
|
const nameWithExt = name.endsWith(".tar.gz") ? name : name + ".tar.gz";
|
|
6
6
|
return `${MEMORIES_PREFIX}/${nameWithExt}`;
|
|
@@ -9,6 +9,10 @@ export class FilesApi extends ApiTopic {
|
|
|
9
9
|
constructor(parent) {
|
|
10
10
|
super(parent, "/api/v1/files");
|
|
11
11
|
}
|
|
12
|
+
async deleteFile(path, prefix) {
|
|
13
|
+
const res = await this.delete(`/${path}`, { query: { prefix } });
|
|
14
|
+
return res.count;
|
|
15
|
+
}
|
|
12
16
|
/**
|
|
13
17
|
* get the metadata of a blob given its URI. Supported URI are:
|
|
14
18
|
* starting with s3:// and gs://.
|
|
@@ -19,8 +23,8 @@ export class FilesApi extends ApiTopic {
|
|
|
19
23
|
getMetadata(uri) {
|
|
20
24
|
return this.get("/metadata", {
|
|
21
25
|
query: {
|
|
22
|
-
file: uri
|
|
23
|
-
}
|
|
26
|
+
file: uri,
|
|
27
|
+
},
|
|
24
28
|
});
|
|
25
29
|
}
|
|
26
30
|
/**
|
|
@@ -29,18 +33,18 @@ export class FilesApi extends ApiTopic {
|
|
|
29
33
|
* @returns
|
|
30
34
|
*/
|
|
31
35
|
getOrCreateBucket() {
|
|
32
|
-
return this.post(
|
|
36
|
+
return this.post("/bucket");
|
|
33
37
|
}
|
|
34
38
|
getUploadUrl(payload) {
|
|
35
|
-
return this.post(
|
|
36
|
-
payload
|
|
39
|
+
return this.post("/upload-url", {
|
|
40
|
+
payload,
|
|
37
41
|
});
|
|
38
42
|
}
|
|
39
43
|
getDownloadUrl(file) {
|
|
40
|
-
return this.post(
|
|
44
|
+
return this.post("/download-url", {
|
|
41
45
|
payload: {
|
|
42
|
-
file
|
|
43
|
-
}
|
|
46
|
+
file,
|
|
47
|
+
},
|
|
44
48
|
});
|
|
45
49
|
}
|
|
46
50
|
/**
|
|
@@ -52,14 +56,15 @@ export class FilesApi extends ApiTopic {
|
|
|
52
56
|
const isStream = source instanceof StreamSource;
|
|
53
57
|
const { url, path } = await this.getUploadUrl(source);
|
|
54
58
|
await fetch(url, {
|
|
55
|
-
method:
|
|
59
|
+
method: "PUT",
|
|
56
60
|
body: isStream ? source.stream : source,
|
|
57
61
|
//@ts-ignore: duplex is not in the types. See https://github.com/node-fetch/node-fetch/issues/1769
|
|
58
62
|
duplex: isStream ? "half" : undefined,
|
|
59
63
|
headers: {
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
})
|
|
64
|
+
"Content-Type": source.type || "application/gzip",
|
|
65
|
+
},
|
|
66
|
+
})
|
|
67
|
+
.then((res) => {
|
|
63
68
|
if (res.ok) {
|
|
64
69
|
return res;
|
|
65
70
|
}
|
|
@@ -67,8 +72,9 @@ export class FilesApi extends ApiTopic {
|
|
|
67
72
|
console.log(res);
|
|
68
73
|
throw new Error(`Failed to upload file: ${res.statusText}`);
|
|
69
74
|
}
|
|
70
|
-
})
|
|
71
|
-
|
|
75
|
+
})
|
|
76
|
+
.catch((err) => {
|
|
77
|
+
console.error("Failed to upload file", err);
|
|
72
78
|
throw err;
|
|
73
79
|
});
|
|
74
80
|
return path;
|
|
@@ -76,8 +82,9 @@ export class FilesApi extends ApiTopic {
|
|
|
76
82
|
async downloadFile(name) {
|
|
77
83
|
const { url } = await this.getDownloadUrl(name);
|
|
78
84
|
const res = await fetch(url, {
|
|
79
|
-
method:
|
|
80
|
-
})
|
|
85
|
+
method: "GET",
|
|
86
|
+
})
|
|
87
|
+
.then((res) => {
|
|
81
88
|
if (res.ok) {
|
|
82
89
|
return res;
|
|
83
90
|
}
|
|
@@ -91,7 +98,8 @@ export class FilesApi extends ApiTopic {
|
|
|
91
98
|
console.log(res);
|
|
92
99
|
throw new Error(`Failed to download file ${name}: ${res.statusText}`);
|
|
93
100
|
}
|
|
94
|
-
})
|
|
101
|
+
})
|
|
102
|
+
.catch((err) => {
|
|
95
103
|
console.error(`Failed to download file ${name}.`, err);
|
|
96
104
|
throw err;
|
|
97
105
|
});
|
|
@@ -102,7 +110,9 @@ export class FilesApi extends ApiTopic {
|
|
|
102
110
|
}
|
|
103
111
|
async uploadMemoryPack(source) {
|
|
104
112
|
const fileId = getMemoryFilePath(source.name);
|
|
105
|
-
const nameWithExt = source.name.endsWith(".tar.gz")
|
|
113
|
+
const nameWithExt = source.name.endsWith(".tar.gz")
|
|
114
|
+
? source.name
|
|
115
|
+
: source.name + ".tar.gz";
|
|
106
116
|
if (source instanceof File) {
|
|
107
117
|
let file = source;
|
|
108
118
|
return this.uploadFile(new StreamSource(file.stream(), nameWithExt, file.type, fileId));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilesApi.js","sourceRoot":"","sources":["../../../src/store/FilesApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAc,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"FilesApi.js","sourceRoot":"","sources":["../../../src/store/FilesApi.ts"],"names":[],"mappings":"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"}
|