@claude-flow/cli 3.63.1 → 3.63.2
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/.claude/helpers/helpers.manifest.json +2 -2
- package/catalog-manifest.json +2 -2
- package/dist/src/mcp-tools/http-fetch-tools.js +36 -8
- package/node_modules/@claude-flow/codex/dist/cli.js +0 -0
- package/node_modules/@claude-flow/plugin-agent-federation/dist/bin.js +0 -0
- package/node_modules/@claude-flow/security/dist/input-validator.d.ts +6 -6
- package/package.json +1 -1
- package/plugins/ruflo-console/dist/tui.mjs +137 -136
- package/dist/src/ruvector/diskann-backend.d.ts +0 -78
- package/dist/src/ruvector/diskann-backend.js +0 -310
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest": {
|
|
3
|
-
"version": "3.63.
|
|
3
|
+
"version": "3.63.2",
|
|
4
4
|
"files": {
|
|
5
5
|
"auto-memory-hook.mjs": "631fac9d518835e2852a406888316bbbddddb49e7ed8e406d2e971f46833df9a",
|
|
6
6
|
"hook-handler.cjs": "24502a3bcb78770971147940515c992e35b6736ae14ee2dc54e07d4cdef6a1d8",
|
|
@@ -9,6 +9,6 @@
|
|
|
9
9
|
"router.cjs": "16648b3c0d73b6681ac2d8d13def6a68286c57f5a11004de5b19a0fa088c833d"
|
|
10
10
|
}
|
|
11
11
|
},
|
|
12
|
-
"signature": "
|
|
12
|
+
"signature": "6+Obx8HZs73gmcPZ6JJH6sBZf3OGb1DC5p5p0K8QhMAAr1QwhKu2uNPv36NmjpsbOTJ0MpidudSRt4fP/ToVBA==",
|
|
13
13
|
"algorithm": "ed25519"
|
|
14
14
|
}
|
package/catalog-manifest.json
CHANGED
|
@@ -61,11 +61,33 @@ export function validateUrl(rawUrl) {
|
|
|
61
61
|
function isPrivateOrLoopback(host) {
|
|
62
62
|
if (host === 'localhost' || host === 'localhost.localdomain')
|
|
63
63
|
return true;
|
|
64
|
-
// IPv6
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
// Node's URL parser keeps brackets in `.hostname` for every IPv6 literal
|
|
65
|
+
// (e.g. "[::1]", "[fc00::1]", "[::ffff:7f00:1]"). Strip them once so every
|
|
66
|
+
// check below operates on the bare address — without this, the fc00::/7
|
|
67
|
+
// and fe80::/10 checks further down never match anything (they test
|
|
68
|
+
// `startsWith('fc'/'fe80:')` against a string starting with "["), and an
|
|
69
|
+
// IPv4-mapped-IPv6 literal (`::ffff:a.b.c.d`, which Node normalizes to a
|
|
70
|
+
// canonical `::ffff:xxxx:yyyy` hex form) sails through both the IPv4 and
|
|
71
|
+
// IPv6 branches untested — a live SSRF bypass (e.g. `::ffff:127.0.0.1` or
|
|
72
|
+
// `::ffff:169.254.169.254` reaching loopback / cloud-metadata targets).
|
|
73
|
+
const bare = host.startsWith('[') && host.endsWith(']') ? host.slice(1, -1) : host;
|
|
74
|
+
if (bare === '::1')
|
|
75
|
+
return true; // IPv6 loopback
|
|
76
|
+
// IPv4-mapped IPv6 — decode back to dotted-decimal and recurse into the
|
|
77
|
+
// IPv4 check below so it inherits every existing private/loopback/
|
|
78
|
+
// link-local/CGNAT rule instead of needing its own copy.
|
|
79
|
+
const mappedHex = bare.match(/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/);
|
|
80
|
+
if (mappedHex) {
|
|
81
|
+
const hi = parseInt(mappedHex[1], 16);
|
|
82
|
+
const lo = parseInt(mappedHex[2], 16);
|
|
83
|
+
const decoded = `${(hi >> 8) & 0xff}.${hi & 0xff}.${(lo >> 8) & 0xff}.${lo & 0xff}`;
|
|
84
|
+
return isPrivateOrLoopback(decoded);
|
|
85
|
+
}
|
|
86
|
+
const mappedDecimal = bare.match(/^::ffff:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/);
|
|
87
|
+
if (mappedDecimal)
|
|
88
|
+
return isPrivateOrLoopback(mappedDecimal[1]);
|
|
67
89
|
// IPv4 numeric checks
|
|
68
|
-
const m =
|
|
90
|
+
const m = bare.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);
|
|
69
91
|
if (m) {
|
|
70
92
|
const a = Number(m[1]);
|
|
71
93
|
const b = Number(m[2]);
|
|
@@ -85,12 +107,18 @@ function isPrivateOrLoopback(host) {
|
|
|
85
107
|
return true; // CGNAT
|
|
86
108
|
return false;
|
|
87
109
|
}
|
|
88
|
-
// IPv6
|
|
89
|
-
//
|
|
90
|
-
if (
|
|
110
|
+
// IPv6 special forms — be conservative and accept only public-looking
|
|
111
|
+
// literals. Reject obvious private/local forms.
|
|
112
|
+
if (bare.startsWith('fc') || bare.startsWith('fd'))
|
|
91
113
|
return true; // fc00::/7 ULA
|
|
92
|
-
if (
|
|
114
|
+
if (bare.startsWith('fe80:'))
|
|
93
115
|
return true; // link-local
|
|
116
|
+
// KNOWN LIMITATION (pre-existing, not introduced by the bracket-stripping /
|
|
117
|
+
// IPv4-mapped-IPv6 fix above; flagged by an independent adversarial review):
|
|
118
|
+
// `::` (IPv6 unspecified/"any", the analog of 0.0.0.0, which the IPv4 branch
|
|
119
|
+
// above does block), IPv6 multicast (ff00::/8), and NAT64 (64:ff9b::/96) are
|
|
120
|
+
// not covered. Left as a follow-up hardening item rather than scope-creeping
|
|
121
|
+
// this patch.
|
|
94
122
|
return false;
|
|
95
123
|
}
|
|
96
124
|
export function validateHeaders(headers) {
|
|
File without changes
|
|
File without changes
|
|
@@ -159,14 +159,14 @@ export declare const SpawnAgentSchema: z.ZodObject<{
|
|
|
159
159
|
timeout: z.ZodOptional<z.ZodNumber>;
|
|
160
160
|
}, "strip", z.ZodTypeAny, {
|
|
161
161
|
type: "coder" | "reviewer" | "tester" | "planner" | "researcher" | "security-architect" | "security-auditor" | "memory-specialist" | "swarm-specialist" | "integration-architect" | "performance-engineer" | "core-architect" | "test-architect" | "queen-coordinator" | "project-coordinator";
|
|
162
|
-
id?: string | undefined;
|
|
163
162
|
config?: Record<string, unknown> | undefined;
|
|
164
163
|
timeout?: number | undefined;
|
|
164
|
+
id?: string | undefined;
|
|
165
165
|
}, {
|
|
166
166
|
type: "coder" | "reviewer" | "tester" | "planner" | "researcher" | "security-architect" | "security-auditor" | "memory-specialist" | "swarm-specialist" | "integration-architect" | "performance-engineer" | "core-architect" | "test-architect" | "queen-coordinator" | "project-coordinator";
|
|
167
|
-
id?: string | undefined;
|
|
168
167
|
config?: Record<string, unknown> | undefined;
|
|
169
168
|
timeout?: number | undefined;
|
|
169
|
+
id?: string | undefined;
|
|
170
170
|
}>;
|
|
171
171
|
/**
|
|
172
172
|
* Task input schema
|
|
@@ -181,13 +181,13 @@ export declare const TaskInputSchema: z.ZodObject<{
|
|
|
181
181
|
taskId: string;
|
|
182
182
|
content: string;
|
|
183
183
|
agentType: "coder" | "reviewer" | "tester" | "planner" | "researcher" | "security-architect" | "security-auditor" | "memory-specialist" | "swarm-specialist" | "integration-architect" | "performance-engineer" | "core-architect" | "test-architect" | "queen-coordinator" | "project-coordinator";
|
|
184
|
-
priority?: "
|
|
184
|
+
priority?: "critical" | "high" | "medium" | "low" | undefined;
|
|
185
185
|
metadata?: Record<string, unknown> | undefined;
|
|
186
186
|
}, {
|
|
187
187
|
taskId: string;
|
|
188
188
|
content: string;
|
|
189
189
|
agentType: "coder" | "reviewer" | "tester" | "planner" | "researcher" | "security-architect" | "security-auditor" | "memory-specialist" | "swarm-specialist" | "integration-architect" | "performance-engineer" | "core-architect" | "test-architect" | "queen-coordinator" | "project-coordinator";
|
|
190
|
-
priority?: "
|
|
190
|
+
priority?: "critical" | "high" | "medium" | "low" | undefined;
|
|
191
191
|
metadata?: Record<string, unknown> | undefined;
|
|
192
192
|
}>;
|
|
193
193
|
/**
|
|
@@ -234,16 +234,16 @@ export declare const ExecutorConfigSchema: z.ZodObject<{
|
|
|
234
234
|
cwd: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>;
|
|
235
235
|
allowSudo: z.ZodDefault<z.ZodBoolean>;
|
|
236
236
|
}, "strip", z.ZodTypeAny, {
|
|
237
|
-
timeout: number;
|
|
238
237
|
allowedCommands: string[];
|
|
238
|
+
timeout: number;
|
|
239
239
|
maxBuffer: number;
|
|
240
240
|
allowSudo: boolean;
|
|
241
241
|
blockedPatterns?: string[] | undefined;
|
|
242
242
|
cwd?: string | undefined;
|
|
243
243
|
}, {
|
|
244
244
|
allowedCommands: string[];
|
|
245
|
-
timeout?: number | undefined;
|
|
246
245
|
blockedPatterns?: string[] | undefined;
|
|
246
|
+
timeout?: number | undefined;
|
|
247
247
|
maxBuffer?: number | undefined;
|
|
248
248
|
cwd?: string | undefined;
|
|
249
249
|
allowSudo?: boolean | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claude-flow/cli",
|
|
3
|
-
"version": "3.63.
|
|
3
|
+
"version": "3.63.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Ruflo CLI - Enterprise AI agent orchestration with 60+ specialized agents, swarm coordination, MCP server, self-learning hooks, and vector memory for Claude Code",
|
|
6
6
|
"main": "dist/src/index.js",
|