@claude-flow/cli 3.5.24 → 3.5.26
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/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +2 -0
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/mcp-tools/browser-tools.js +2 -2
- package/dist/src/mcp-tools/browser-tools.js.map +1 -1
- package/dist/src/mcp-tools/config-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/config-tools.js +10 -1
- package/dist/src/mcp-tools/config-tools.js.map +1 -1
- package/dist/src/mcp-tools/index.d.ts +2 -0
- package/dist/src/mcp-tools/index.d.ts.map +1 -1
- package/dist/src/mcp-tools/index.js +2 -0
- package/dist/src/mcp-tools/index.js.map +1 -1
- package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +2 -0
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/mcp-tools/ruvllm-tools.d.ts +9 -0
- package/dist/src/mcp-tools/ruvllm-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/ruvllm-tools.js +283 -0
- package/dist/src/mcp-tools/ruvllm-tools.js.map +1 -0
- package/dist/src/mcp-tools/swarm-tools.d.ts +2 -1
- package/dist/src/mcp-tools/swarm-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/swarm-tools.js +216 -30
- package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
- package/dist/src/mcp-tools/wasm-agent-tools.d.ts +9 -0
- package/dist/src/mcp-tools/wasm-agent-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/wasm-agent-tools.js +230 -0
- package/dist/src/mcp-tools/wasm-agent-tools.js.map +1 -0
- package/dist/src/memory/memory-initializer.d.ts.map +1 -1
- package/dist/src/memory/memory-initializer.js +65 -6
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/ruvector/agent-wasm.d.ts +182 -0
- package/dist/src/ruvector/agent-wasm.d.ts.map +1 -0
- package/dist/src/ruvector/agent-wasm.js +316 -0
- package/dist/src/ruvector/agent-wasm.js.map +1 -0
- package/dist/src/ruvector/index.d.ts +2 -0
- package/dist/src/ruvector/index.d.ts.map +1 -1
- package/dist/src/ruvector/index.js +4 -0
- package/dist/src/ruvector/index.js.map +1 -1
- package/dist/src/ruvector/ruvllm-wasm.d.ts +179 -0
- package/dist/src/ruvector/ruvllm-wasm.d.ts.map +1 -0
- package/dist/src/ruvector/ruvllm-wasm.js +363 -0
- package/dist/src/ruvector/ruvllm-wasm.js.map +1 -0
- package/dist/src/transfer/storage/gcs.d.ts.map +1 -1
- package/dist/src/transfer/storage/gcs.js +22 -6
- package/dist/src/transfer/storage/gcs.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -3
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RuVector LLM WASM Integration
|
|
3
|
+
*
|
|
4
|
+
* Wraps @ruvector/ruvllm-wasm for browser-native LLM inference utilities.
|
|
5
|
+
* Provides HNSW routing, SONA instant adaptation, MicroLoRA fine-tuning,
|
|
6
|
+
* chat template formatting, KV cache management, and inference arena.
|
|
7
|
+
*
|
|
8
|
+
* Published API (v2.0.2): RuvLLMWasm, ChatTemplateWasm, ChatMessageWasm,
|
|
9
|
+
* GenerateConfig, HnswRouterWasm, SonaInstantWasm, MicroLoraWasm,
|
|
10
|
+
* KvCacheWasm, BufferPoolWasm, InferenceArenaWasm.
|
|
11
|
+
*
|
|
12
|
+
* v2.0.2 fixes:
|
|
13
|
+
* - HNSW supports 1000+ patterns (fixed connect_node ordering)
|
|
14
|
+
* - MicroLoRA adapt() now takes (input: Float32Array, feedback: AdaptFeedbackWasm)
|
|
15
|
+
*
|
|
16
|
+
* Remaining quirks:
|
|
17
|
+
* - Stats objects return WASM pointers — use .toJson() or named accessors
|
|
18
|
+
* - GenerateConfig float precision loss (f32 roundtrip)
|
|
19
|
+
* - MicroLoRA apply() hardcoded to 768 dims regardless of config
|
|
20
|
+
*
|
|
21
|
+
* @module @claude-flow/cli/ruvector/ruvllm-wasm
|
|
22
|
+
*/
|
|
23
|
+
import { readFileSync } from 'node:fs';
|
|
24
|
+
import { createRequire } from 'node:module';
|
|
25
|
+
// ── WASM Module Detection & Init ─────────────────────────────
|
|
26
|
+
let _wasmReady = false;
|
|
27
|
+
/**
|
|
28
|
+
* Check if @ruvector/ruvllm-wasm is installed and loadable.
|
|
29
|
+
*/
|
|
30
|
+
export async function isRuvllmWasmAvailable() {
|
|
31
|
+
try {
|
|
32
|
+
const mod = await import('@ruvector/ruvllm-wasm');
|
|
33
|
+
return typeof mod.RuvLLMWasm === 'function';
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Initialize the WASM module for Node.js. Safe to call multiple times.
|
|
41
|
+
* Uses initSync with object form: { module: bytes } (raw bytes deprecated).
|
|
42
|
+
*/
|
|
43
|
+
export async function initRuvllmWasm() {
|
|
44
|
+
if (_wasmReady)
|
|
45
|
+
return;
|
|
46
|
+
try {
|
|
47
|
+
const mod = await import('@ruvector/ruvllm-wasm');
|
|
48
|
+
const require_ = createRequire(import.meta.url);
|
|
49
|
+
const wasmPath = require_.resolve('@ruvector/ruvllm-wasm/ruvllm_wasm_bg.wasm');
|
|
50
|
+
const wasmBytes = readFileSync(wasmPath);
|
|
51
|
+
// MUST use object form — initSync(bytes) is deprecated
|
|
52
|
+
mod.initSync({ module: wasmBytes });
|
|
53
|
+
_wasmReady = true;
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
throw new Error(`Failed to initialize @ruvector/ruvllm-wasm: ${err}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get ruvllm-wasm status.
|
|
61
|
+
*/
|
|
62
|
+
export async function getRuvllmStatus() {
|
|
63
|
+
const available = await isRuvllmWasmAvailable();
|
|
64
|
+
if (!available) {
|
|
65
|
+
return { available: false, initialized: false, version: null };
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
const mod = await import('@ruvector/ruvllm-wasm');
|
|
69
|
+
// version is a standalone function, not on RuvLLMWasm class
|
|
70
|
+
const version = typeof mod.getVersion === 'function' ? mod.getVersion() : null;
|
|
71
|
+
return { available: true, initialized: _wasmReady, version };
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return { available: true, initialized: _wasmReady, version: null };
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// ── HNSW Router ──────────────────────────────────────────────
|
|
78
|
+
/**
|
|
79
|
+
* Maximum safe pattern count for HNSW router.
|
|
80
|
+
* v2.0.2 supports 1000+ patterns (fixed connect_node ordering).
|
|
81
|
+
*/
|
|
82
|
+
export const HNSW_MAX_SAFE_PATTERNS = 1024;
|
|
83
|
+
/**
|
|
84
|
+
* Create a WASM HNSW router for semantic routing.
|
|
85
|
+
* Returns an object with add/route/clear methods.
|
|
86
|
+
*
|
|
87
|
+
* Enforces HNSW_MAX_SAFE_PATTERNS limit (1024 in v2.0.2).
|
|
88
|
+
*/
|
|
89
|
+
export async function createHnswRouter(config) {
|
|
90
|
+
await initRuvllmWasm();
|
|
91
|
+
const mod = await import('@ruvector/ruvllm-wasm');
|
|
92
|
+
const router = new mod.HnswRouterWasm(config.dimensions, config.maxPatterns);
|
|
93
|
+
if (config.efSearch) {
|
|
94
|
+
router.setEfSearch(config.efSearch);
|
|
95
|
+
}
|
|
96
|
+
let count = 0;
|
|
97
|
+
return {
|
|
98
|
+
addPattern(pattern) {
|
|
99
|
+
if (count >= HNSW_MAX_SAFE_PATTERNS) {
|
|
100
|
+
throw new Error(`HNSW pattern limit reached (${HNSW_MAX_SAFE_PATTERNS}).`);
|
|
101
|
+
}
|
|
102
|
+
const metadataJson = JSON.stringify(pattern.metadata ?? {});
|
|
103
|
+
// addPattern requires 3 args: (embedding, name, metadata_json)
|
|
104
|
+
const ok = router.addPattern(pattern.embedding, pattern.name, metadataJson);
|
|
105
|
+
if (ok)
|
|
106
|
+
count++;
|
|
107
|
+
return ok;
|
|
108
|
+
},
|
|
109
|
+
route(query, k = 3) {
|
|
110
|
+
return router.route(query, k);
|
|
111
|
+
},
|
|
112
|
+
clear() {
|
|
113
|
+
router.clear();
|
|
114
|
+
count = 0;
|
|
115
|
+
},
|
|
116
|
+
patternCount() {
|
|
117
|
+
return count;
|
|
118
|
+
},
|
|
119
|
+
toJson() {
|
|
120
|
+
return router.toJson();
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
// ── SONA Instant Adaptation ──────────────────────────────────
|
|
125
|
+
/**
|
|
126
|
+
* Create a SONA instant adaptation loop (<1ms adaptation).
|
|
127
|
+
* v2.0.1: requires SonaConfigWasm object, not raw number.
|
|
128
|
+
*/
|
|
129
|
+
export async function createSonaInstant(config = {}) {
|
|
130
|
+
await initRuvllmWasm();
|
|
131
|
+
const mod = await import('@ruvector/ruvllm-wasm');
|
|
132
|
+
const sonaConfig = new mod.SonaConfigWasm();
|
|
133
|
+
if (config.hiddenDim !== undefined)
|
|
134
|
+
sonaConfig.hiddenDim = config.hiddenDim;
|
|
135
|
+
if (config.learningRate !== undefined)
|
|
136
|
+
sonaConfig.learningRate = config.learningRate;
|
|
137
|
+
if (config.emaDecay !== undefined)
|
|
138
|
+
sonaConfig.emaDecay = config.emaDecay;
|
|
139
|
+
if (config.ewcLambda !== undefined)
|
|
140
|
+
sonaConfig.ewcLambda = config.ewcLambda;
|
|
141
|
+
if (config.microLoraRank !== undefined)
|
|
142
|
+
sonaConfig.microLoraRank = config.microLoraRank;
|
|
143
|
+
if (config.patternCapacity !== undefined)
|
|
144
|
+
sonaConfig.patternCapacity = config.patternCapacity;
|
|
145
|
+
const sona = new mod.SonaInstantWasm(sonaConfig);
|
|
146
|
+
return {
|
|
147
|
+
adapt(quality) {
|
|
148
|
+
sona.instantAdapt(quality);
|
|
149
|
+
},
|
|
150
|
+
recordPattern(embedding, success) {
|
|
151
|
+
sona.recordPattern(embedding, success);
|
|
152
|
+
},
|
|
153
|
+
suggestAction(context) {
|
|
154
|
+
return sona.suggestAction(context);
|
|
155
|
+
},
|
|
156
|
+
stats() {
|
|
157
|
+
return sona.toJson();
|
|
158
|
+
},
|
|
159
|
+
reset() {
|
|
160
|
+
sona.reset();
|
|
161
|
+
},
|
|
162
|
+
toJson() {
|
|
163
|
+
return sona.toJson();
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
// ── MicroLoRA ────────────────────────────────────────────────
|
|
168
|
+
/**
|
|
169
|
+
* Create a MicroLoRA adapter (ultra-lightweight LoRA, ranks 1-4).
|
|
170
|
+
* v2.0.2: .adapt(input, feedback) takes Float32Array + AdaptFeedbackWasm.
|
|
171
|
+
*/
|
|
172
|
+
export async function createMicroLora(config) {
|
|
173
|
+
await initRuvllmWasm();
|
|
174
|
+
const mod = await import('@ruvector/ruvllm-wasm');
|
|
175
|
+
const loraConfig = new mod.MicroLoraConfigWasm();
|
|
176
|
+
loraConfig.inputDim = config.inputDim;
|
|
177
|
+
loraConfig.outputDim = config.outputDim;
|
|
178
|
+
loraConfig.rank = config.rank ?? 2;
|
|
179
|
+
loraConfig.alpha = config.alpha ?? 1.0;
|
|
180
|
+
const lora = new mod.MicroLoraWasm(loraConfig);
|
|
181
|
+
return {
|
|
182
|
+
apply(input) {
|
|
183
|
+
return lora.apply(input);
|
|
184
|
+
},
|
|
185
|
+
adapt(quality, learningRate = 0.01, success = true) {
|
|
186
|
+
// v2.0.2: adapt(input, feedback) — two args
|
|
187
|
+
const feedback = new mod.AdaptFeedbackWasm();
|
|
188
|
+
feedback.quality = quality;
|
|
189
|
+
feedback.learningRate = learningRate;
|
|
190
|
+
// Note: feedback.success not on prototype in v2.0.2, set via property
|
|
191
|
+
try {
|
|
192
|
+
feedback.success = success;
|
|
193
|
+
}
|
|
194
|
+
catch { /* v2.0.2 quirk */ }
|
|
195
|
+
// Create a dummy input vector matching the configured inputDim
|
|
196
|
+
const input = new Float32Array(config.inputDim);
|
|
197
|
+
lora.adapt(input, feedback);
|
|
198
|
+
},
|
|
199
|
+
applyUpdates(gradients) {
|
|
200
|
+
lora.applyUpdates(gradients);
|
|
201
|
+
},
|
|
202
|
+
stats() {
|
|
203
|
+
return lora.toJson();
|
|
204
|
+
},
|
|
205
|
+
reset() {
|
|
206
|
+
lora.reset();
|
|
207
|
+
},
|
|
208
|
+
toJson() {
|
|
209
|
+
return lora.toJson();
|
|
210
|
+
},
|
|
211
|
+
pendingUpdates() {
|
|
212
|
+
return lora.pendingUpdates();
|
|
213
|
+
},
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Format chat messages using a chat template.
|
|
218
|
+
* Supports presets (llama3, mistral, chatml, phi, gemma) and auto-detection.
|
|
219
|
+
*/
|
|
220
|
+
export async function formatChat(messages, template) {
|
|
221
|
+
await initRuvllmWasm();
|
|
222
|
+
const mod = await import('@ruvector/ruvllm-wasm');
|
|
223
|
+
// Build template
|
|
224
|
+
let tmpl;
|
|
225
|
+
if (typeof template === 'string') {
|
|
226
|
+
const presets = {
|
|
227
|
+
llama3: () => mod.ChatTemplateWasm.llama3(),
|
|
228
|
+
mistral: () => mod.ChatTemplateWasm.mistral(),
|
|
229
|
+
chatml: () => mod.ChatTemplateWasm.chatml(),
|
|
230
|
+
phi: () => mod.ChatTemplateWasm.phi(),
|
|
231
|
+
gemma: () => mod.ChatTemplateWasm.gemma(),
|
|
232
|
+
};
|
|
233
|
+
const factory = presets[template];
|
|
234
|
+
if (!factory)
|
|
235
|
+
throw new Error(`Unknown template preset: ${template}. Use: ${Object.keys(presets).join(', ')}`);
|
|
236
|
+
tmpl = factory();
|
|
237
|
+
}
|
|
238
|
+
else if ('custom' in template) {
|
|
239
|
+
tmpl = mod.ChatTemplateWasm.custom(template.custom);
|
|
240
|
+
}
|
|
241
|
+
else if ('modelId' in template) {
|
|
242
|
+
tmpl = mod.ChatTemplateWasm.detectFromModelId(template.modelId);
|
|
243
|
+
}
|
|
244
|
+
// Build messages
|
|
245
|
+
const wasmMessages = messages.map(m => {
|
|
246
|
+
switch (m.role) {
|
|
247
|
+
case 'system': return mod.ChatMessageWasm.system(m.content);
|
|
248
|
+
case 'user': return mod.ChatMessageWasm.user(m.content);
|
|
249
|
+
case 'assistant': return mod.ChatMessageWasm.assistant(m.content);
|
|
250
|
+
default: throw new Error(`Unknown role: ${m.role}`);
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
return tmpl.format(wasmMessages);
|
|
254
|
+
}
|
|
255
|
+
// ── KV Cache ─────────────────────────────────────────────────
|
|
256
|
+
/**
|
|
257
|
+
* Create a KV cache for token management.
|
|
258
|
+
*/
|
|
259
|
+
export async function createKvCache(opts) {
|
|
260
|
+
await initRuvllmWasm();
|
|
261
|
+
const mod = await import('@ruvector/ruvllm-wasm');
|
|
262
|
+
let cache;
|
|
263
|
+
if (opts) {
|
|
264
|
+
const config = new mod.KvCacheConfigWasm();
|
|
265
|
+
if (opts.tailLength !== undefined)
|
|
266
|
+
config.tailLength = opts.tailLength;
|
|
267
|
+
if (opts.maxTokens !== undefined)
|
|
268
|
+
config.maxTokens = opts.maxTokens;
|
|
269
|
+
if (opts.numKvHeads !== undefined)
|
|
270
|
+
config.numKvHeads = opts.numKvHeads;
|
|
271
|
+
if (opts.headDim !== undefined)
|
|
272
|
+
config.headDim = opts.headDim;
|
|
273
|
+
cache = new mod.KvCacheWasm(config);
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
cache = mod.KvCacheWasm.withDefaults();
|
|
277
|
+
}
|
|
278
|
+
return {
|
|
279
|
+
append(keys, values) {
|
|
280
|
+
cache.append(keys, values);
|
|
281
|
+
},
|
|
282
|
+
stats() {
|
|
283
|
+
// Use toJson if available, otherwise stringify
|
|
284
|
+
try {
|
|
285
|
+
return JSON.stringify(cache.stats());
|
|
286
|
+
}
|
|
287
|
+
catch {
|
|
288
|
+
return '{}';
|
|
289
|
+
}
|
|
290
|
+
},
|
|
291
|
+
clear() {
|
|
292
|
+
cache.clear();
|
|
293
|
+
},
|
|
294
|
+
tokenCount() {
|
|
295
|
+
return cache.tokenCount;
|
|
296
|
+
},
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
// ── Generate Config ──────────────────────────────────────────
|
|
300
|
+
/**
|
|
301
|
+
* Create a generation config object.
|
|
302
|
+
* Note: f32 precision loss is expected (0.7 → 0.699999...).
|
|
303
|
+
*/
|
|
304
|
+
export async function createGenerateConfig(opts = {}) {
|
|
305
|
+
await initRuvllmWasm();
|
|
306
|
+
const mod = await import('@ruvector/ruvllm-wasm');
|
|
307
|
+
const config = new mod.GenerateConfig();
|
|
308
|
+
if (opts.maxTokens !== undefined)
|
|
309
|
+
config.maxTokens = opts.maxTokens;
|
|
310
|
+
if (opts.temperature !== undefined)
|
|
311
|
+
config.temperature = opts.temperature;
|
|
312
|
+
if (opts.topP !== undefined)
|
|
313
|
+
config.topP = opts.topP;
|
|
314
|
+
if (opts.topK !== undefined)
|
|
315
|
+
config.topK = opts.topK;
|
|
316
|
+
if (opts.repetitionPenalty !== undefined)
|
|
317
|
+
config.repetitionPenalty = opts.repetitionPenalty;
|
|
318
|
+
for (const seq of opts.stopSequences ?? []) {
|
|
319
|
+
config.addStopSequence(seq);
|
|
320
|
+
}
|
|
321
|
+
return config.toJson();
|
|
322
|
+
}
|
|
323
|
+
// ── Buffer Pool ──────────────────────────────────────────────
|
|
324
|
+
/**
|
|
325
|
+
* Create a buffer pool for inference memory management.
|
|
326
|
+
*/
|
|
327
|
+
export async function createBufferPool(capacity) {
|
|
328
|
+
await initRuvllmWasm();
|
|
329
|
+
const mod = await import('@ruvector/ruvllm-wasm');
|
|
330
|
+
const pool = mod.BufferPoolWasm.withCapacity(capacity);
|
|
331
|
+
return {
|
|
332
|
+
prewarm(count) {
|
|
333
|
+
pool.prewarmAll(count);
|
|
334
|
+
},
|
|
335
|
+
stats() {
|
|
336
|
+
return pool.statsJson();
|
|
337
|
+
},
|
|
338
|
+
hitRate() {
|
|
339
|
+
return pool.hitRate;
|
|
340
|
+
},
|
|
341
|
+
clear() {
|
|
342
|
+
pool.clear();
|
|
343
|
+
},
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
// ── Inference Arena ──────────────────────────────────────────
|
|
347
|
+
/**
|
|
348
|
+
* Create an inference arena for model memory allocation.
|
|
349
|
+
*/
|
|
350
|
+
export async function createInferenceArena(opts) {
|
|
351
|
+
await initRuvllmWasm();
|
|
352
|
+
const mod = await import('@ruvector/ruvllm-wasm');
|
|
353
|
+
const arena = 'capacity' in opts
|
|
354
|
+
? new mod.InferenceArenaWasm(opts.capacity)
|
|
355
|
+
: mod.InferenceArenaWasm.forModel(opts.hiddenDim, opts.vocabSize, opts.batchSize);
|
|
356
|
+
return {
|
|
357
|
+
reset() { arena.reset(); },
|
|
358
|
+
used() { return arena.used; },
|
|
359
|
+
capacity() { return arena.capacity; },
|
|
360
|
+
remaining() { return arena.remaining; },
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
//# sourceMappingURL=ruvllm-wasm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruvllm-wasm.js","sourceRoot":"","sources":["../../../src/ruvector/ruvllm-wasm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA0D5C,gEAAgE;AAEhE,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAClD,OAAO,OAAO,GAAG,CAAC,UAAU,KAAK,UAAU,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,UAAU;QAAE,OAAO;IACvB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC;QAC/E,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzC,uDAAuD;QACvD,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACpC,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,GAAG,EAAE,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,SAAS,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAChD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAClD,4DAA4D;QAC5D,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/E,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACrE,CAAC;AACH,CAAC;AAED,gEAAgE;AAEhE;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAwB;IAO7D,MAAM,cAAc,EAAE,CAAC;IACvB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7E,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO;QACL,UAAU,CAAC,OAAoB;YAC7B,IAAI,KAAK,IAAI,sBAAsB,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CACb,+BAA+B,sBAAsB,IAAI,CAC1D,CAAC;YACJ,CAAC;YACD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YAC5D,+DAA+D;YAC/D,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAC5E,IAAI,EAAE;gBAAE,KAAK,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,KAAK,CAAC,KAAmB,EAAE,CAAC,GAAG,CAAC;YAC9B,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,KAAK;YACH,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;QACD,YAAY;YACV,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM;YACJ,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,gEAAgE;AAEhE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAAqB,EAAE;IAQ7D,MAAM,cAAc,EAAE,CAAC;IACvB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAElD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;IAC5C,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;QAAE,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAC5E,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS;QAAE,UAAU,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IACrF,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;QAAE,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACzE,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;QAAE,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAC5E,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS;QAAE,UAAU,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IACxF,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS;QAAE,UAAU,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IAE9F,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IAEjD,OAAO;QACL,KAAK,CAAC,OAAe;YACnB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QACD,aAAa,CAAC,SAAmB,EAAE,OAAgB;YACjD,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;QACD,aAAa,CAAC,OAAe;YAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QACD,KAAK;YACH,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;QACD,KAAK;YACH,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;QACD,MAAM;YACJ,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,gEAAgE;AAEhE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAuB;IAS3D,MAAM,cAAc,EAAE,CAAC;IACvB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAElD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,mBAAmB,EAAE,CAAC;IACjD,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACtC,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACxC,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;IACnC,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC;IAEvC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAE/C,OAAO;QACL,KAAK,CAAC,KAAmB;YACvB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QACD,KAAK,CAAC,OAAe,EAAE,YAAY,GAAG,IAAI,EAAE,OAAO,GAAG,IAAI;YACxD,4CAA4C;YAC5C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC;YAC7C,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;YAC3B,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAC;YACrC,sEAAsE;YACtE,IAAI,CAAC;gBAAE,QAAgB,CAAC,OAAO,GAAG,OAAO,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;YACzE,+DAA+D;YAC/D,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC9B,CAAC;QACD,YAAY,CAAC,SAAuB;YAClC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;QACD,KAAK;YACH,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;QACD,KAAK;YACH,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;QACD,MAAM;YACJ,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;QACD,cAAc;YACZ,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC;AAMD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,QAAuB,EACvB,QAAmE;IAEnE,MAAM,cAAc,EAAE,CAAC;IACvB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAElD,iBAAiB;IACjB,IAAI,IAAS,CAAC;IACd,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,OAAO,GAA8B;YACzC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAC3C,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE;YAC7C,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAC3C,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,EAAE;YACrC,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE;SAC1C,CAAC;QACF,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,UAAU,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/G,IAAI,GAAG,OAAO,EAAE,CAAC;IACnB,CAAC;SAAM,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAChC,IAAI,GAAG,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;SAAM,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;QACjC,IAAI,GAAG,GAAG,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,iBAAiB;IACjB,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACpC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC5D,KAAK,MAAM,CAAC,CAAC,OAAO,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACxD,KAAK,WAAW,CAAC,CAAC,OAAO,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAClE,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACnC,CAAC;AAED,gEAAgE;AAEhE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAKnC;IAMC,MAAM,cAAc,EAAE,CAAC;IACvB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAElD,IAAI,KAAU,CAAC;IACf,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACvE,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACpE,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACvE,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9D,KAAK,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAED,OAAO;QACL,MAAM,CAAC,IAAkB,EAAE,MAAoB;YAC7C,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK;YACH,+CAA+C;YAC/C,IAAI,CAAC;gBAAC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,IAAI,CAAC;YAAC,CAAC;QACtE,CAAC;QACD,KAAK;YACH,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QACD,UAAU;YACR,OAAO,KAAK,CAAC,UAAU,CAAC;QAC1B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,gEAAgE;AAEhE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAwB,EAAE;IACnE,MAAM,cAAc,EAAE,CAAC;IACvB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;IACxC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;QAAE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACpE,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;QAAE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IAC1E,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACrD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACrD,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS;QAAE,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;IAC5F,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;AACzB,CAAC;AAED,gEAAgE;AAEhE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IAMrD,MAAM,cAAc,EAAE,CAAC;IACvB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAElD,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAEvD,OAAO;QACL,OAAO,CAAC,KAAa;YACnB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,KAAK;YACH,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1B,CAAC;QACD,OAAO;YACL,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QACD,KAAK;YACH,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC;AAED,gEAAgE;AAEhE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAwF;IAOxF,MAAM,cAAc,EAAE,CAAC;IACvB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAElD,MAAM,KAAK,GAAG,UAAU,IAAI,IAAI;QAC9B,CAAC,CAAC,IAAI,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC3C,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAEpF,OAAO;QACL,KAAK,KAAW,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAChC,IAAI,KAAa,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACrC,QAAQ,KAAa,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7C,SAAS,KAAa,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;KAChD,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gcs.d.ts","sourceRoot":"","sources":["../../../../src/transfer/storage/gcs.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,GAAG,IAAI,CAU/C;AAgBD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAO3C;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAO9D;AAUD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B,GACL,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"gcs.d.ts","sourceRoot":"","sources":["../../../../src/transfer/storage/gcs.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,GAAG,IAAI,CAU/C;AAgBD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAO3C;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAO9D;AAUD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B,GACL,OAAO,CAAC,eAAe,CAAC,CAqF1B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkCxB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAqBjE;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CA0BA;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C"}
|
|
@@ -78,6 +78,10 @@ export async function uploadToGCS(content, options = {}) {
|
|
|
78
78
|
const contentId = generateContentId(content);
|
|
79
79
|
const checksum = crypto.createHash('sha256').update(content).digest('hex');
|
|
80
80
|
const fileName = options.name || `${contentId}.cfp.json`;
|
|
81
|
+
// Validate filename to prevent path traversal
|
|
82
|
+
if (!/^[a-zA-Z0-9._\-]+$/.test(fileName) || fileName.includes('..')) {
|
|
83
|
+
throw new Error(`Invalid filename: ${fileName}`);
|
|
84
|
+
}
|
|
81
85
|
const objectPath = config.prefix ? `${config.prefix}/${fileName}` : fileName;
|
|
82
86
|
// S-1: Validate bucket name and object path to prevent command injection
|
|
83
87
|
if (!isValidBucketName(config.bucket)) {
|
|
@@ -111,8 +115,11 @@ export async function uploadToGCS(content, options = {}) {
|
|
|
111
115
|
// Metadata update failed, but upload succeeded
|
|
112
116
|
}
|
|
113
117
|
}
|
|
114
|
-
// Clean up temp file
|
|
115
|
-
|
|
118
|
+
// Clean up temp file (validate path is within temp dir)
|
|
119
|
+
const resolvedTemp = path.resolve(tempFile);
|
|
120
|
+
if (resolvedTemp.startsWith(path.resolve(tempDir))) {
|
|
121
|
+
fs.unlinkSync(tempFile);
|
|
122
|
+
}
|
|
116
123
|
const uri = `gs://${config.bucket}/${objectPath}`;
|
|
117
124
|
const publicUrl = `https://storage.googleapis.com/${config.bucket}/${objectPath}`;
|
|
118
125
|
console.log(`[GCS] Upload complete: ${uri}`);
|
|
@@ -126,9 +133,12 @@ export async function uploadToGCS(content, options = {}) {
|
|
|
126
133
|
};
|
|
127
134
|
}
|
|
128
135
|
catch (error) {
|
|
129
|
-
// Clean up temp file on error
|
|
136
|
+
// Clean up temp file on error (validate path is within temp dir)
|
|
130
137
|
try {
|
|
131
|
-
|
|
138
|
+
const resolvedTemp = path.resolve(tempFile);
|
|
139
|
+
if (resolvedTemp.startsWith(path.resolve(tempDir))) {
|
|
140
|
+
fs.unlinkSync(tempFile);
|
|
141
|
+
}
|
|
132
142
|
}
|
|
133
143
|
catch { /* ignore */ }
|
|
134
144
|
throw new Error(`GCS upload failed: ${error}`);
|
|
@@ -150,13 +160,19 @@ export async function downloadFromGCS(uri, config) {
|
|
|
150
160
|
downloadArgs.push(`--project=${cfg.projectId}`);
|
|
151
161
|
execFileSync('gcloud', downloadArgs, { encoding: 'utf-8', stdio: 'pipe' });
|
|
152
162
|
const content = fs.readFileSync(tempFile);
|
|
153
|
-
|
|
163
|
+
const resolvedTemp = path.resolve(tempFile);
|
|
164
|
+
if (resolvedTemp.startsWith(path.resolve(tempDir))) {
|
|
165
|
+
fs.unlinkSync(tempFile);
|
|
166
|
+
}
|
|
154
167
|
console.log(`[GCS] Downloaded ${content.length} bytes`);
|
|
155
168
|
return content;
|
|
156
169
|
}
|
|
157
170
|
catch (error) {
|
|
158
171
|
try {
|
|
159
|
-
|
|
172
|
+
const resolvedTemp = path.resolve(tempFile);
|
|
173
|
+
if (resolvedTemp.startsWith(path.resolve(tempDir))) {
|
|
174
|
+
fs.unlinkSync(tempFile);
|
|
175
|
+
}
|
|
160
176
|
}
|
|
161
177
|
catch { /* ignore */ }
|
|
162
178
|
console.error(`[GCS] Download failed: ${error}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gcs.js","sourceRoot":"","sources":["../../../../src/transfer/storage/gcs.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAwB7C;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACzE,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,OAAO;QACL,MAAM;QACN,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB;QACzE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B;QACnD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,sBAAsB;KACzD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,MAAc;IACvC,OAAO,sCAAsC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,UAAkB;IAC3C,OAAO,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,YAAY,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,IAAI,CAAC;QACH,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,OAAe;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAe,EACf,UAKI,EAAE;IAEN,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC;IAChD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,4DAA4D;YAC5D,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,IAAI,GAAG,SAAS,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"gcs.js","sourceRoot":"","sources":["../../../../src/transfer/storage/gcs.ts"],"names":[],"mappings":"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"}
|