@claude-flow/cli 3.5.6 → 3.5.8
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 +5 -2
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +5 -2
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/init/helpers-generator.d.ts.map +1 -1
- package/dist/src/init/helpers-generator.js +32 -1
- package/dist/src/init/helpers-generator.js.map +1 -1
- package/dist/src/init/settings-generator.d.ts.map +1 -1
- package/dist/src/init/settings-generator.js +17 -36
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/mcp-server.d.ts.map +1 -1
- package/dist/src/mcp-server.js +11 -1
- package/dist/src/mcp-server.js.map +1 -1
- package/dist/src/mcp-tools/config-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/config-tools.js +11 -1
- package/dist/src/mcp-tools/config-tools.js.map +1 -1
- package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +17 -0
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/plugins/manager.d.ts.map +1 -1
- package/dist/src/plugins/manager.js +24 -7
- package/dist/src/plugins/manager.js.map +1 -1
- package/dist/src/production/error-handler.js +1 -1
- package/dist/src/production/error-handler.js.map +1 -1
- package/dist/src/transfer/ipfs/client.d.ts.map +1 -1
- package/dist/src/transfer/ipfs/client.js +8 -0
- package/dist/src/transfer/ipfs/client.js.map +1 -1
- package/dist/src/transfer/ipfs/upload.d.ts.map +1 -1
- package/dist/src/transfer/ipfs/upload.js +0 -2
- package/dist/src/transfer/ipfs/upload.js.map +1 -1
- package/dist/src/transfer/serialization/cfp.d.ts.map +1 -1
- package/dist/src/transfer/serialization/cfp.js +8 -5
- package/dist/src/transfer/serialization/cfp.js.map +1 -1
- package/dist/src/transfer/storage/gcs.d.ts.map +1 -1
- package/dist/src/transfer/storage/gcs.js +49 -23
- package/dist/src/transfer/storage/gcs.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import * as crypto from 'crypto';
|
|
9
9
|
import * as fs from 'fs';
|
|
10
10
|
import * as path from 'path';
|
|
11
|
-
import {
|
|
11
|
+
import { execFileSync } from 'child_process';
|
|
12
12
|
/**
|
|
13
13
|
* Get GCS configuration from environment
|
|
14
14
|
*/
|
|
@@ -23,12 +23,24 @@ export function getGCSConfig() {
|
|
|
23
23
|
prefix: process.env.GCS_PREFIX || 'claude-flow-patterns',
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Validate GCS bucket name (prevents command injection via bucket names)
|
|
28
|
+
*/
|
|
29
|
+
function isValidBucketName(bucket) {
|
|
30
|
+
return /^[a-z0-9][a-z0-9._-]{1,221}[a-z0-9]$/.test(bucket);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Validate GCS object path (no shell metacharacters)
|
|
34
|
+
*/
|
|
35
|
+
function isValidObjectPath(objectPath) {
|
|
36
|
+
return /^[a-zA-Z0-9_.\/\-]+$/.test(objectPath);
|
|
37
|
+
}
|
|
26
38
|
/**
|
|
27
39
|
* Check if gcloud CLI is available
|
|
28
40
|
*/
|
|
29
41
|
export function isGCloudAvailable() {
|
|
30
42
|
try {
|
|
31
|
-
|
|
43
|
+
execFileSync('gcloud', ['--version'], { stdio: 'pipe' });
|
|
32
44
|
return true;
|
|
33
45
|
}
|
|
34
46
|
catch {
|
|
@@ -40,7 +52,7 @@ export function isGCloudAvailable() {
|
|
|
40
52
|
*/
|
|
41
53
|
export async function isGCloudAuthenticated() {
|
|
42
54
|
try {
|
|
43
|
-
|
|
55
|
+
execFileSync('gcloud', ['auth', 'print-access-token'], { stdio: 'pipe' });
|
|
44
56
|
return true;
|
|
45
57
|
}
|
|
46
58
|
catch {
|
|
@@ -67,27 +79,33 @@ export async function uploadToGCS(content, options = {}) {
|
|
|
67
79
|
const checksum = crypto.createHash('sha256').update(content).digest('hex');
|
|
68
80
|
const fileName = options.name || `${contentId}.cfp.json`;
|
|
69
81
|
const objectPath = config.prefix ? `${config.prefix}/${fileName}` : fileName;
|
|
82
|
+
// S-1: Validate bucket name and object path to prevent command injection
|
|
83
|
+
if (!isValidBucketName(config.bucket)) {
|
|
84
|
+
throw new Error(`Invalid GCS bucket name: ${config.bucket}`);
|
|
85
|
+
}
|
|
86
|
+
if (!isValidObjectPath(objectPath)) {
|
|
87
|
+
throw new Error(`Invalid GCS object path: ${objectPath}`);
|
|
88
|
+
}
|
|
70
89
|
console.log(`[GCS] Uploading to gs://${config.bucket}/${objectPath}...`);
|
|
71
90
|
// Write content to temp file
|
|
72
91
|
const tempDir = process.env.TMPDIR || '/tmp';
|
|
73
92
|
const tempFile = path.join(tempDir, `claude-flow-upload-${Date.now()}.json`);
|
|
74
93
|
fs.writeFileSync(tempFile, content);
|
|
75
94
|
try {
|
|
76
|
-
// Build gcloud
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
const projectArg = config.projectId ? `--project=${config.projectId}` : '';
|
|
83
|
-
// Upload using gcloud storage cp
|
|
84
|
-
const cmd = `gcloud storage cp "${tempFile}" "gs://${config.bucket}/${objectPath}" ${projectArg} --content-type="${options.contentType || 'application/json'}" 2>&1`;
|
|
85
|
-
execSync(cmd, { encoding: 'utf-8' });
|
|
95
|
+
// Build gcloud args (array form prevents shell injection)
|
|
96
|
+
const uploadArgs = ['storage', 'cp', tempFile, `gs://${config.bucket}/${objectPath}`];
|
|
97
|
+
if (config.projectId)
|
|
98
|
+
uploadArgs.push(`--project=${config.projectId}`);
|
|
99
|
+
uploadArgs.push(`--content-type=${options.contentType || 'application/json'}`);
|
|
100
|
+
execFileSync('gcloud', uploadArgs, { encoding: 'utf-8', stdio: 'pipe' });
|
|
86
101
|
// Set metadata if provided
|
|
87
102
|
if (options.metadata && Object.keys(options.metadata).length > 0) {
|
|
88
103
|
const metadataJson = JSON.stringify(options.metadata);
|
|
89
104
|
try {
|
|
90
|
-
|
|
105
|
+
const metaArgs = ['storage', 'objects', 'update', `gs://${config.bucket}/${objectPath}`, `--custom-metadata=${metadataJson}`];
|
|
106
|
+
if (config.projectId)
|
|
107
|
+
metaArgs.push(`--project=${config.projectId}`);
|
|
108
|
+
execFileSync('gcloud', metaArgs, { encoding: 'utf-8', stdio: 'pipe' });
|
|
91
109
|
}
|
|
92
110
|
catch {
|
|
93
111
|
// Metadata update failed, but upload succeeded
|
|
@@ -121,14 +139,16 @@ export async function uploadToGCS(content, options = {}) {
|
|
|
121
139
|
*/
|
|
122
140
|
export async function downloadFromGCS(uri, config) {
|
|
123
141
|
const cfg = config || getGCSConfig();
|
|
124
|
-
const projectArg = cfg?.projectId ? `--project=${cfg.projectId}` : '';
|
|
125
142
|
console.log(`[GCS] Downloading from ${uri}...`);
|
|
126
143
|
// Write to temp file first
|
|
127
144
|
const tempDir = process.env.TMPDIR || '/tmp';
|
|
128
145
|
const tempFile = path.join(tempDir, `claude-flow-download-${Date.now()}.json`);
|
|
129
146
|
try {
|
|
130
|
-
// Download using gcloud storage cp
|
|
131
|
-
|
|
147
|
+
// Download using gcloud storage cp (array form prevents shell injection)
|
|
148
|
+
const downloadArgs = ['storage', 'cp', uri, tempFile];
|
|
149
|
+
if (cfg?.projectId)
|
|
150
|
+
downloadArgs.push(`--project=${cfg.projectId}`);
|
|
151
|
+
execFileSync('gcloud', downloadArgs, { encoding: 'utf-8', stdio: 'pipe' });
|
|
132
152
|
const content = fs.readFileSync(tempFile);
|
|
133
153
|
fs.unlinkSync(tempFile);
|
|
134
154
|
console.log(`[GCS] Downloaded ${content.length} bytes`);
|
|
@@ -148,9 +168,11 @@ export async function downloadFromGCS(uri, config) {
|
|
|
148
168
|
*/
|
|
149
169
|
export async function existsInGCS(uri, config) {
|
|
150
170
|
const cfg = config || getGCSConfig();
|
|
151
|
-
const projectArg = cfg?.projectId ? `--project=${cfg.projectId}` : '';
|
|
152
171
|
try {
|
|
153
|
-
|
|
172
|
+
const lsArgs = ['storage', 'ls', uri];
|
|
173
|
+
if (cfg?.projectId)
|
|
174
|
+
lsArgs.push(`--project=${cfg.projectId}`);
|
|
175
|
+
execFileSync('gcloud', lsArgs, { encoding: 'utf-8', stdio: 'pipe' });
|
|
154
176
|
return true;
|
|
155
177
|
}
|
|
156
178
|
catch {
|
|
@@ -165,10 +187,12 @@ export async function listGCSObjects(prefix, config) {
|
|
|
165
187
|
if (!cfg)
|
|
166
188
|
return [];
|
|
167
189
|
const objectPrefix = prefix || cfg.prefix || '';
|
|
168
|
-
const projectArg = cfg.projectId ? `--project=${cfg.projectId}` : '';
|
|
169
190
|
const uri = `gs://${cfg.bucket}/${objectPrefix}`;
|
|
170
191
|
try {
|
|
171
|
-
const
|
|
192
|
+
const listArgs = ['storage', 'ls', '-l', uri, '--format=json'];
|
|
193
|
+
if (cfg.projectId)
|
|
194
|
+
listArgs.push(`--project=${cfg.projectId}`);
|
|
195
|
+
const result = execFileSync('gcloud', listArgs, { encoding: 'utf-8', stdio: 'pipe' });
|
|
172
196
|
const objects = JSON.parse(result);
|
|
173
197
|
return objects.map((obj) => ({
|
|
174
198
|
name: obj.name,
|
|
@@ -185,9 +209,11 @@ export async function listGCSObjects(prefix, config) {
|
|
|
185
209
|
*/
|
|
186
210
|
export async function deleteFromGCS(uri, config) {
|
|
187
211
|
const cfg = config || getGCSConfig();
|
|
188
|
-
const projectArg = cfg?.projectId ? `--project=${cfg.projectId}` : '';
|
|
189
212
|
try {
|
|
190
|
-
|
|
213
|
+
const rmArgs = ['storage', 'rm', uri];
|
|
214
|
+
if (cfg?.projectId)
|
|
215
|
+
rmArgs.push(`--project=${cfg.projectId}`);
|
|
216
|
+
execFileSync('gcloud', rmArgs, { encoding: 'utf-8', stdio: 'pipe' });
|
|
191
217
|
return true;
|
|
192
218
|
}
|
|
193
219
|
catch {
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"gcs.js","sourceRoot":"","sources":["../../../../src/transfer/storage/gcs.ts"],"names":[],"mappings":"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"}
|