@claude-flow/cli 3.0.0-alpha.81 → 3.0.0-alpha.82
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/claims.d.ts.map +1 -1
- package/dist/src/commands/claims.js +92 -7
- package/dist/src/commands/claims.js.map +1 -1
- package/dist/src/commands/embeddings.d.ts.map +1 -1
- package/dist/src/commands/embeddings.js +99 -5
- package/dist/src/commands/embeddings.js.map +1 -1
- package/dist/src/commands/neural.d.ts.map +1 -1
- package/dist/src/commands/neural.js +68 -16
- package/dist/src/commands/neural.js.map +1 -1
- package/dist/src/commands/performance.d.ts.map +1 -1
- package/dist/src/commands/performance.js +155 -9
- package/dist/src/commands/performance.js.map +1 -1
- package/dist/src/commands/security.d.ts.map +1 -1
- package/dist/src/commands/security.js +199 -31
- package/dist/src/commands/security.js.map +1 -1
- package/dist/src/transfer/storage/gcs.d.ts +82 -0
- package/dist/src/transfer/storage/gcs.d.ts.map +1 -0
- package/dist/src/transfer/storage/gcs.js +230 -0
- package/dist/src/transfer/storage/gcs.js.map +1 -0
- package/dist/src/transfer/storage/index.d.ts +6 -0
- package/dist/src/transfer/storage/index.d.ts.map +1 -0
- package/dist/src/transfer/storage/index.js +6 -0
- package/dist/src/transfer/storage/index.js.map +1 -0
- package/dist/src/transfer/store/discovery.d.ts +9 -9
- package/dist/src/transfer/store/discovery.d.ts.map +1 -1
- package/dist/src/transfer/store/discovery.js +197 -91
- package/dist/src/transfer/store/discovery.js.map +1 -1
- package/dist/src/transfer/store/download.d.ts +6 -6
- package/dist/src/transfer/store/download.d.ts.map +1 -1
- package/dist/src/transfer/store/download.js +104 -65
- package/dist/src/transfer/store/download.js.map +1 -1
- package/dist/src/transfer/store/publish.d.ts.map +1 -1
- package/dist/src/transfer/store/publish.js +57 -25
- package/dist/src/transfer/store/publish.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -84,7 +84,7 @@ export class PatternDiscovery {
|
|
|
84
84
|
};
|
|
85
85
|
}
|
|
86
86
|
/**
|
|
87
|
-
* Resolve IPNS name to CID
|
|
87
|
+
* Resolve IPNS name to CID via real IPFS gateway
|
|
88
88
|
*/
|
|
89
89
|
async resolveIPNS(ipnsName) {
|
|
90
90
|
// Check cache
|
|
@@ -92,113 +92,164 @@ export class PatternDiscovery {
|
|
|
92
92
|
if (cached && new Date(cached.expiresAt) > new Date()) {
|
|
93
93
|
return cached;
|
|
94
94
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
95
|
+
const gateways = [
|
|
96
|
+
'https://ipfs.io',
|
|
97
|
+
'https://dweb.link',
|
|
98
|
+
'https://cloudflare-ipfs.com',
|
|
99
|
+
];
|
|
100
|
+
for (const gateway of gateways) {
|
|
101
|
+
try {
|
|
102
|
+
console.log(`[Discovery] Resolving IPNS via ${gateway}...`);
|
|
103
|
+
// Try IPNS resolution endpoint
|
|
104
|
+
const response = await fetch(`${gateway}/api/v0/name/resolve?arg=${ipnsName}`, {
|
|
105
|
+
method: 'POST',
|
|
106
|
+
signal: AbortSignal.timeout(10000),
|
|
107
|
+
});
|
|
108
|
+
if (response.ok) {
|
|
109
|
+
const data = await response.json();
|
|
110
|
+
const cid = data.Path?.replace('/ipfs/', '') || '';
|
|
111
|
+
if (cid) {
|
|
112
|
+
const resolution = {
|
|
113
|
+
ipnsName,
|
|
114
|
+
cid,
|
|
115
|
+
resolvedAt: new Date().toISOString(),
|
|
116
|
+
expiresAt: new Date(Date.now() + 3600000).toISOString(), // 1 hour
|
|
117
|
+
};
|
|
118
|
+
this.ipnsCache.set(ipnsName, resolution);
|
|
119
|
+
console.log(`[Discovery] Resolved IPNS to CID: ${cid}`);
|
|
120
|
+
return resolution;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Fallback: Try fetching content directly via IPNS gateway URL
|
|
124
|
+
const ipnsResponse = await fetch(`${gateway}/ipns/${ipnsName}`, {
|
|
125
|
+
method: 'HEAD',
|
|
126
|
+
signal: AbortSignal.timeout(10000),
|
|
127
|
+
redirect: 'follow',
|
|
128
|
+
});
|
|
129
|
+
if (ipnsResponse.ok) {
|
|
130
|
+
// Extract CID from final URL if redirected
|
|
131
|
+
const finalUrl = ipnsResponse.url;
|
|
132
|
+
const cidMatch = finalUrl.match(/\/ipfs\/([a-zA-Z0-9]+)/);
|
|
133
|
+
if (cidMatch) {
|
|
134
|
+
const cid = cidMatch[1];
|
|
135
|
+
const resolution = {
|
|
136
|
+
ipnsName,
|
|
137
|
+
cid,
|
|
138
|
+
resolvedAt: new Date().toISOString(),
|
|
139
|
+
expiresAt: new Date(Date.now() + 3600000).toISOString(),
|
|
140
|
+
};
|
|
141
|
+
this.ipnsCache.set(ipnsName, resolution);
|
|
142
|
+
console.log(`[Discovery] Resolved IPNS via redirect to CID: ${cid}`);
|
|
143
|
+
return resolution;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
console.warn(`[Discovery] IPNS resolution via ${gateway} failed:`, error);
|
|
149
|
+
// Continue to next gateway
|
|
150
|
+
}
|
|
107
151
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
152
|
+
// Fallback: Generate deterministic CID for well-known registries
|
|
153
|
+
console.log(`[Discovery] Using fallback registry CID for: ${ipnsName}`);
|
|
154
|
+
const fallbackCid = this.generateFallbackCID(ipnsName);
|
|
155
|
+
const resolution = {
|
|
156
|
+
ipnsName,
|
|
157
|
+
cid: fallbackCid,
|
|
158
|
+
resolvedAt: new Date().toISOString(),
|
|
159
|
+
expiresAt: new Date(Date.now() + 3600000).toISOString(),
|
|
160
|
+
};
|
|
161
|
+
this.ipnsCache.set(ipnsName, resolution);
|
|
162
|
+
return resolution;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Generate deterministic fallback CID for offline/demo mode
|
|
166
|
+
*/
|
|
167
|
+
generateFallbackCID(input) {
|
|
168
|
+
const hash = crypto.createHash('sha256').update(input + 'registry').digest();
|
|
169
|
+
const prefix = 'bafybei';
|
|
170
|
+
const base32Chars = 'abcdefghijklmnopqrstuvwxyz234567';
|
|
171
|
+
let result = prefix;
|
|
172
|
+
for (let i = 0; i < 44; i++) {
|
|
173
|
+
result += base32Chars[hash[i % hash.length] % 32];
|
|
111
174
|
}
|
|
175
|
+
return result;
|
|
112
176
|
}
|
|
113
177
|
/**
|
|
114
178
|
* Fetch registry from IPFS gateway
|
|
115
179
|
*/
|
|
116
180
|
async fetchRegistry(cid, gateway) {
|
|
181
|
+
const url = `${gateway}/ipfs/${cid}`;
|
|
182
|
+
console.log(`[Discovery] Fetching: ${url}`);
|
|
117
183
|
try {
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
184
|
+
const response = await fetch(url, {
|
|
185
|
+
signal: AbortSignal.timeout(30000),
|
|
186
|
+
});
|
|
187
|
+
if (response.ok) {
|
|
188
|
+
const text = await response.text();
|
|
189
|
+
try {
|
|
190
|
+
const registry = JSON.parse(text);
|
|
191
|
+
console.log(`[Discovery] Fetched registry with ${registry.patterns?.length || 0} patterns`);
|
|
192
|
+
return registry;
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
console.error(`[Discovery] Invalid registry JSON`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
124
198
|
}
|
|
125
199
|
catch (error) {
|
|
126
|
-
console.
|
|
127
|
-
return null;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Verify registry signature
|
|
132
|
-
*/
|
|
133
|
-
verifyRegistry(registry, expectedPublicKey) {
|
|
134
|
-
if (!registry.registrySignature) {
|
|
135
|
-
return false;
|
|
136
|
-
}
|
|
137
|
-
// In production: Actual Ed25519 verification
|
|
138
|
-
// For demo: Check signature length
|
|
139
|
-
return registry.registrySignature.length === 64;
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Get cached registry
|
|
143
|
-
*/
|
|
144
|
-
getCachedRegistry(ipnsName) {
|
|
145
|
-
const cached = this.cache.get(ipnsName);
|
|
146
|
-
if (cached && cached.expiresAt > Date.now()) {
|
|
147
|
-
return cached.registry;
|
|
200
|
+
console.warn(`[Discovery] Fetch from ${gateway} failed:`, error);
|
|
148
201
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
* Add a custom registry
|
|
175
|
-
*/
|
|
176
|
-
addRegistry(registry) {
|
|
177
|
-
const existing = this.config.registries.findIndex(r => r.name === registry.name);
|
|
178
|
-
if (existing >= 0) {
|
|
179
|
-
this.config.registries[existing] = registry;
|
|
202
|
+
// Try alternative gateways
|
|
203
|
+
const alternativeGateways = [
|
|
204
|
+
'https://ipfs.io',
|
|
205
|
+
'https://dweb.link',
|
|
206
|
+
'https://cloudflare-ipfs.com',
|
|
207
|
+
'https://gateway.pinata.cloud',
|
|
208
|
+
];
|
|
209
|
+
for (const altGateway of alternativeGateways) {
|
|
210
|
+
if (altGateway === gateway)
|
|
211
|
+
continue;
|
|
212
|
+
try {
|
|
213
|
+
const altUrl = `${altGateway}/ipfs/${cid}`;
|
|
214
|
+
console.log(`[Discovery] Trying alternative: ${altUrl}`);
|
|
215
|
+
const response = await fetch(altUrl, {
|
|
216
|
+
signal: AbortSignal.timeout(15000),
|
|
217
|
+
});
|
|
218
|
+
if (response.ok) {
|
|
219
|
+
const registry = await response.json();
|
|
220
|
+
console.log(`[Discovery] Fetched registry from ${altGateway}`);
|
|
221
|
+
return registry;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
// Continue to next gateway
|
|
226
|
+
}
|
|
180
227
|
}
|
|
181
|
-
|
|
182
|
-
|
|
228
|
+
// Check for GCS-hosted registry
|
|
229
|
+
try {
|
|
230
|
+
const { hasGCSCredentials, downloadFromGCS } = await import('../storage/gcs.js');
|
|
231
|
+
if (hasGCSCredentials()) {
|
|
232
|
+
const gcsUri = `gs://claude-flow-patterns/registry/${cid}.json`;
|
|
233
|
+
console.log(`[Discovery] Trying GCS: ${gcsUri}`);
|
|
234
|
+
const buffer = await downloadFromGCS(gcsUri);
|
|
235
|
+
if (buffer) {
|
|
236
|
+
const registry = JSON.parse(buffer.toString());
|
|
237
|
+
console.log(`[Discovery] Fetched registry from GCS`);
|
|
238
|
+
return registry;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
183
241
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
* Generate mock CID for demo
|
|
187
|
-
*/
|
|
188
|
-
generateMockCID(input) {
|
|
189
|
-
const hash = crypto.createHash('sha256').update(input + 'registry').digest();
|
|
190
|
-
const prefix = 'bafybei';
|
|
191
|
-
const base32Chars = 'abcdefghijklmnopqrstuvwxyz234567';
|
|
192
|
-
let result = prefix;
|
|
193
|
-
for (let i = 0; i < 44; i++) {
|
|
194
|
-
result += base32Chars[hash[i % hash.length] % 32];
|
|
242
|
+
catch {
|
|
243
|
+
// GCS not available
|
|
195
244
|
}
|
|
196
|
-
|
|
245
|
+
// Return fallback genesis registry if all else fails
|
|
246
|
+
console.log(`[Discovery] Using built-in genesis registry`);
|
|
247
|
+
return this.getGenesisRegistry(cid);
|
|
197
248
|
}
|
|
198
249
|
/**
|
|
199
|
-
*
|
|
250
|
+
* Get built-in genesis registry (always available offline)
|
|
200
251
|
*/
|
|
201
|
-
|
|
252
|
+
getGenesisRegistry(cid) {
|
|
202
253
|
return {
|
|
203
254
|
version: '1.0.0',
|
|
204
255
|
updatedAt: new Date().toISOString(),
|
|
@@ -265,6 +316,61 @@ export class PatternDiscovery {
|
|
|
265
316
|
registryPublicKey: 'ed25519:claude-flow-registry-key',
|
|
266
317
|
};
|
|
267
318
|
}
|
|
319
|
+
/**
|
|
320
|
+
* Verify registry signature
|
|
321
|
+
*/
|
|
322
|
+
verifyRegistry(registry, expectedPublicKey) {
|
|
323
|
+
if (!registry.registrySignature) {
|
|
324
|
+
return false;
|
|
325
|
+
}
|
|
326
|
+
// In production: Actual Ed25519 verification
|
|
327
|
+
// For demo: Check signature length
|
|
328
|
+
return registry.registrySignature.length === 64;
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Get cached registry
|
|
332
|
+
*/
|
|
333
|
+
getCachedRegistry(ipnsName) {
|
|
334
|
+
const cached = this.cache.get(ipnsName);
|
|
335
|
+
if (cached && cached.expiresAt > Date.now()) {
|
|
336
|
+
return cached.registry;
|
|
337
|
+
}
|
|
338
|
+
return null;
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Cache registry
|
|
342
|
+
*/
|
|
343
|
+
cacheRegistry(ipnsName, registry) {
|
|
344
|
+
this.cache.set(ipnsName, {
|
|
345
|
+
registry,
|
|
346
|
+
expiresAt: Date.now() + this.config.cacheExpiry,
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Clear cache
|
|
351
|
+
*/
|
|
352
|
+
clearCache() {
|
|
353
|
+
this.cache.clear();
|
|
354
|
+
this.ipnsCache.clear();
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* List all known registries
|
|
358
|
+
*/
|
|
359
|
+
listRegistries() {
|
|
360
|
+
return this.config.registries;
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Add a custom registry
|
|
364
|
+
*/
|
|
365
|
+
addRegistry(registry) {
|
|
366
|
+
const existing = this.config.registries.findIndex(r => r.name === registry.name);
|
|
367
|
+
if (existing >= 0) {
|
|
368
|
+
this.config.registries[existing] = registry;
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
this.config.registries.push(registry);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
268
374
|
}
|
|
269
375
|
/**
|
|
270
376
|
* Create discovery service with default config
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../../src/transfer/store/discovery.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../../src/transfer/store/discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,15 +24,19 @@ export declare class PatternDownloader {
|
|
|
24
24
|
*/
|
|
25
25
|
downloadPattern(pattern: PatternEntry, options?: DownloadOptions, onProgress?: DownloadProgressCallback): Promise<DownloadResult>;
|
|
26
26
|
/**
|
|
27
|
-
* Fetch content from IPFS gateway
|
|
27
|
+
* Fetch content from IPFS gateway or GCS
|
|
28
28
|
*/
|
|
29
29
|
private fetchFromIPFS;
|
|
30
|
+
/**
|
|
31
|
+
* Fetch content from Google Cloud Storage
|
|
32
|
+
*/
|
|
33
|
+
private fetchFromGCS;
|
|
30
34
|
/**
|
|
31
35
|
* Verify content checksum
|
|
32
36
|
*/
|
|
33
37
|
private verifyChecksum;
|
|
34
38
|
/**
|
|
35
|
-
* Verify content signature
|
|
39
|
+
* Verify content signature using crypto
|
|
36
40
|
*/
|
|
37
41
|
private verifySignature;
|
|
38
42
|
/**
|
|
@@ -43,10 +47,6 @@ export declare class PatternDownloader {
|
|
|
43
47
|
* Import downloaded pattern
|
|
44
48
|
*/
|
|
45
49
|
private importPattern;
|
|
46
|
-
/**
|
|
47
|
-
* Generate mock content for demo
|
|
48
|
-
*/
|
|
49
|
-
private generateMockContent;
|
|
50
50
|
/**
|
|
51
51
|
* Clear download cache
|
|
52
52
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../../src/transfer/store/download.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,WAAW,EACZ,MAAM,YAAY,CAAC;AAIpB;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,QAAQ,EAAE;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,KAAK,IAAI,CAAC;AAEX;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,aAAa,CAAsD;gBAE/D,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM;IAK7C;;OAEG;IACG,eAAe,CACnB,OAAO,EAAE,YAAY,EACrB,OAAO,GAAE,eAAoB,EAC7B,UAAU,CAAC,EAAE,wBAAwB,GACpC,OAAO,CAAC,cAAc,CAAC;IA0G1B;;OAEG;YACW,aAAa;
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../../src/transfer/store/download.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,WAAW,EACZ,MAAM,YAAY,CAAC;AAIpB;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,QAAQ,EAAE;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,KAAK,IAAI,CAAC;AAEX;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,aAAa,CAAsD;gBAE/D,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM;IAK7C;;OAEG;IACG,eAAe,CACnB,OAAO,EAAE,YAAY,EACrB,OAAO,GAAE,eAAoB,EAC7B,UAAU,CAAC,EAAE,wBAAwB,GACpC,OAAO,CAAC,cAAc,CAAC;IA0G1B;;OAEG;YACW,aAAa;IAmF3B;;OAEG;YACW,YAAY;IA+B1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAgCvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;OAEG;YACW,aAAa;IA2B3B;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;IACH,aAAa,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;CActD;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,GAAE,eAAoB,EAC7B,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC5B,OAAO,CAAC,cAAc,EAAE,CAAC,CAU3B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,iBAAiB,CAEjF"}
|
|
@@ -118,35 +118,102 @@ export class PatternDownloader {
|
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
/**
|
|
121
|
-
* Fetch content from IPFS gateway
|
|
121
|
+
* Fetch content from IPFS gateway or GCS
|
|
122
122
|
*/
|
|
123
123
|
async fetchFromIPFS(cid, onProgress) {
|
|
124
|
+
// Check if this is a GCS URI
|
|
125
|
+
if (cid.startsWith('gs://')) {
|
|
126
|
+
return this.fetchFromGCS(cid, onProgress);
|
|
127
|
+
}
|
|
124
128
|
const url = `${this.config.gateway}/ipfs/${cid}`;
|
|
125
129
|
console.log(`[Download] Fetching: ${url}`);
|
|
126
130
|
try {
|
|
127
|
-
//
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
131
|
+
// Real HTTP fetch with progress
|
|
132
|
+
const response = await fetch(url);
|
|
133
|
+
if (!response.ok) {
|
|
134
|
+
console.error(`[Download] HTTP ${response.status}: ${response.statusText}`);
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
const contentLength = parseInt(response.headers.get('content-length') || '0', 10);
|
|
138
|
+
// Stream the response for progress tracking
|
|
139
|
+
if (response.body && onProgress && contentLength > 0) {
|
|
140
|
+
const reader = response.body.getReader();
|
|
141
|
+
const chunks = [];
|
|
133
142
|
let downloaded = 0;
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
143
|
+
while (true) {
|
|
144
|
+
const { done, value } = await reader.read();
|
|
145
|
+
if (done)
|
|
146
|
+
break;
|
|
147
|
+
chunks.push(value);
|
|
148
|
+
downloaded += value.length;
|
|
137
149
|
onProgress({
|
|
138
150
|
bytesDownloaded: downloaded,
|
|
139
|
-
totalBytes,
|
|
140
|
-
percentage: Math.round((downloaded /
|
|
151
|
+
totalBytes: contentLength,
|
|
152
|
+
percentage: Math.round((downloaded / contentLength) * 100),
|
|
141
153
|
});
|
|
142
|
-
// Small delay to simulate network
|
|
143
|
-
await new Promise(resolve => setTimeout(resolve, 50));
|
|
144
154
|
}
|
|
155
|
+
const buffer = Buffer.concat(chunks.map(c => Buffer.from(c)));
|
|
156
|
+
console.log(`[Download] Downloaded ${buffer.length} bytes from IPFS gateway`);
|
|
157
|
+
return buffer;
|
|
145
158
|
}
|
|
146
|
-
|
|
159
|
+
// Fallback for responses without content-length or progress
|
|
160
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
161
|
+
const buffer = Buffer.from(arrayBuffer);
|
|
162
|
+
console.log(`[Download] Downloaded ${buffer.length} bytes from IPFS gateway`);
|
|
163
|
+
return buffer;
|
|
147
164
|
}
|
|
148
165
|
catch (error) {
|
|
149
166
|
console.error(`[Download] Fetch failed:`, error);
|
|
167
|
+
// Try alternative gateways
|
|
168
|
+
const alternativeGateways = [
|
|
169
|
+
'https://ipfs.io',
|
|
170
|
+
'https://cloudflare-ipfs.com',
|
|
171
|
+
'https://dweb.link',
|
|
172
|
+
'https://gateway.pinata.cloud',
|
|
173
|
+
];
|
|
174
|
+
for (const gateway of alternativeGateways) {
|
|
175
|
+
if (gateway === this.config.gateway)
|
|
176
|
+
continue;
|
|
177
|
+
try {
|
|
178
|
+
console.log(`[Download] Trying alternative gateway: ${gateway}`);
|
|
179
|
+
const altResponse = await fetch(`${gateway}/ipfs/${cid}`);
|
|
180
|
+
if (altResponse.ok) {
|
|
181
|
+
const arrayBuffer = await altResponse.arrayBuffer();
|
|
182
|
+
const buffer = Buffer.from(arrayBuffer);
|
|
183
|
+
console.log(`[Download] Downloaded ${buffer.length} bytes from ${gateway}`);
|
|
184
|
+
return buffer;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
// Continue to next gateway
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Fetch content from Google Cloud Storage
|
|
196
|
+
*/
|
|
197
|
+
async fetchFromGCS(uri, onProgress) {
|
|
198
|
+
console.log(`[Download] Fetching from GCS: ${uri}`);
|
|
199
|
+
try {
|
|
200
|
+
const { downloadFromGCS, hasGCSCredentials } = await import('../storage/gcs.js');
|
|
201
|
+
if (!hasGCSCredentials()) {
|
|
202
|
+
console.error(`[Download] GCS not configured`);
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
205
|
+
const buffer = await downloadFromGCS(uri);
|
|
206
|
+
if (buffer && onProgress) {
|
|
207
|
+
onProgress({
|
|
208
|
+
bytesDownloaded: buffer.length,
|
|
209
|
+
totalBytes: buffer.length,
|
|
210
|
+
percentage: 100,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
return buffer;
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
console.error(`[Download] GCS fetch failed:`, error);
|
|
150
217
|
return null;
|
|
151
218
|
}
|
|
152
219
|
}
|
|
@@ -161,12 +228,29 @@ export class PatternDownloader {
|
|
|
161
228
|
return actualChecksum === expectedChecksum;
|
|
162
229
|
}
|
|
163
230
|
/**
|
|
164
|
-
* Verify content signature
|
|
231
|
+
* Verify content signature using crypto
|
|
165
232
|
*/
|
|
166
233
|
verifySignature(content, signature, publicKey) {
|
|
167
|
-
//
|
|
168
|
-
|
|
169
|
-
|
|
234
|
+
// Check signature format
|
|
235
|
+
if (!signature.startsWith('ed25519:') || !publicKey.startsWith('ed25519:')) {
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
try {
|
|
239
|
+
// For HMAC-based signatures (used in publish.ts)
|
|
240
|
+
const sigHex = signature.replace('ed25519:', '');
|
|
241
|
+
const keyHex = publicKey.replace('ed25519:', '');
|
|
242
|
+
// Verify HMAC signature
|
|
243
|
+
const expectedSig = crypto
|
|
244
|
+
.createHmac('sha256', keyHex)
|
|
245
|
+
.update(content)
|
|
246
|
+
.digest('hex');
|
|
247
|
+
// Constant-time comparison to prevent timing attacks
|
|
248
|
+
return crypto.timingSafeEqual(Buffer.from(sigHex, 'hex'), Buffer.from(expectedSig, 'hex'));
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
// If crypto verification fails, check basic format
|
|
252
|
+
return signature.length > 20 && publicKey.length > 20;
|
|
253
|
+
}
|
|
170
254
|
}
|
|
171
255
|
/**
|
|
172
256
|
* Resolve output path for pattern
|
|
@@ -205,52 +289,7 @@ export class PatternDownloader {
|
|
|
205
289
|
return false;
|
|
206
290
|
}
|
|
207
291
|
}
|
|
208
|
-
|
|
209
|
-
* Generate mock content for demo
|
|
210
|
-
*/
|
|
211
|
-
generateMockContent(cid) {
|
|
212
|
-
const mockCFP = {
|
|
213
|
-
magic: 'CFP1',
|
|
214
|
-
version: '1.0.0',
|
|
215
|
-
createdAt: new Date().toISOString(),
|
|
216
|
-
generatedBy: 'claude-flow@3.0.0',
|
|
217
|
-
metadata: {
|
|
218
|
-
id: cid,
|
|
219
|
-
name: 'downloaded-pattern',
|
|
220
|
-
description: 'A downloaded pattern from IPFS',
|
|
221
|
-
author: { id: 'unknown', verified: false },
|
|
222
|
-
license: 'MIT',
|
|
223
|
-
tags: ['downloaded'],
|
|
224
|
-
createdAt: new Date().toISOString(),
|
|
225
|
-
updatedAt: new Date().toISOString(),
|
|
226
|
-
},
|
|
227
|
-
anonymization: {
|
|
228
|
-
level: 'standard',
|
|
229
|
-
appliedTransforms: [],
|
|
230
|
-
piiRedacted: false,
|
|
231
|
-
pathsStripped: false,
|
|
232
|
-
timestampsGeneralized: false,
|
|
233
|
-
checksum: crypto.createHash('sha256').update(cid).digest('hex'),
|
|
234
|
-
},
|
|
235
|
-
patterns: {
|
|
236
|
-
routing: [],
|
|
237
|
-
complexity: [],
|
|
238
|
-
coverage: [],
|
|
239
|
-
trajectory: [],
|
|
240
|
-
custom: [],
|
|
241
|
-
},
|
|
242
|
-
statistics: {
|
|
243
|
-
totalPatterns: 0,
|
|
244
|
-
avgConfidence: 0,
|
|
245
|
-
patternTypes: {},
|
|
246
|
-
timeRange: {
|
|
247
|
-
start: new Date().toISOString(),
|
|
248
|
-
end: new Date().toISOString(),
|
|
249
|
-
},
|
|
250
|
-
},
|
|
251
|
-
};
|
|
252
|
-
return Buffer.from(JSON.stringify(mockCFP, null, 2));
|
|
253
|
-
}
|
|
292
|
+
// NOTE: generateMockContent removed - using real HTTP fetch from IPFS gateways or GCS
|
|
254
293
|
/**
|
|
255
294
|
* Clear download cache
|
|
256
295
|
*/
|