claude-flow 3.58.0 → 3.58.1
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/package.json
CHANGED
|
@@ -5,7 +5,7 @@ import { feedbackPatternsSchema, validateFeedbackPatterns } from '../memory/feed
|
|
|
5
5
|
*/
|
|
6
6
|
import { mkdirSync, writeFileSync, existsSync, readFileSync, statSync, unlinkSync, readdirSync } from 'fs';
|
|
7
7
|
import * as nodeFs from 'fs';
|
|
8
|
-
import { dirname, join, resolve } from 'path';
|
|
8
|
+
import { dirname, join, resolve, sep } from 'path';
|
|
9
9
|
import { getProjectCwd } from './types.js';
|
|
10
10
|
import { validateIdentifier, validateText, validatePath } from './validate-input.js';
|
|
11
11
|
import { commandRecordingDisabled, redactCommandForStorage } from '../services/command-recording.js';
|
|
@@ -5136,7 +5136,17 @@ export const hooksCodemod = {
|
|
|
5136
5136
|
if (!v.valid)
|
|
5137
5137
|
return v.error;
|
|
5138
5138
|
const abs = resolve(cwd, v.sanitized);
|
|
5139
|
-
|
|
5139
|
+
// Anchor containment at a path-separator boundary — an unanchored
|
|
5140
|
+
// `abs.startsWith(cwd)` string-prefix check would let an absolute
|
|
5141
|
+
// path like `${cwd}-staging/x.ts` pass as "inside" `cwd`. Matches
|
|
5142
|
+
// the pattern already used correctly elsewhere in this codebase
|
|
5143
|
+
// (@claude-flow/security's `isWithinPrefix`, hooks/workers, plugins/security).
|
|
5144
|
+
// KNOWN LIMITATION (disclosed 2026-10-20, not fixed here): this
|
|
5145
|
+
// compares the resolved-but-not-realpath'd path, so a symlink
|
|
5146
|
+
// inside cwd pointing outside it still escapes containment
|
|
5147
|
+
// (CWE-59, a distinct/broader gap than the CWE-22 prefix bug this
|
|
5148
|
+
// anchors). Needs fs.realpathSync-based containment as a follow-up.
|
|
5149
|
+
if (abs !== cwd && !abs.startsWith(cwd + sep))
|
|
5140
5150
|
return `path escapes project root: ${p}`;
|
|
5141
5151
|
out.add(abs);
|
|
5142
5152
|
return undefined;
|
|
@@ -5169,7 +5179,7 @@ export const hooksCodemod = {
|
|
|
5169
5179
|
}
|
|
5170
5180
|
for (const m of matches) {
|
|
5171
5181
|
const abs = resolve(cwd, m);
|
|
5172
|
-
if (abs.startsWith(cwd) && CODEMOD_EXTENSIONS.has(abs.slice(abs.lastIndexOf('.')).toLowerCase())) {
|
|
5182
|
+
if ((abs === cwd || abs.startsWith(cwd + sep)) && CODEMOD_EXTENSIONS.has(abs.slice(abs.lastIndexOf('.')).toLowerCase())) {
|
|
5173
5183
|
out.add(abs);
|
|
5174
5184
|
}
|
|
5175
5185
|
}
|
|
@@ -184,8 +184,9 @@ export class CommandParser {
|
|
|
184
184
|
let commandSlotAvailable = true;
|
|
185
185
|
while (i < args.length) {
|
|
186
186
|
const arg = args[i];
|
|
187
|
-
// Check for end of flags marker
|
|
188
|
-
|
|
187
|
+
// Check for end of flags marker. Only the first "--" changes parser
|
|
188
|
+
// state; a later literal "--" is an ordinary positional (#4310).
|
|
189
|
+
if (parsingFlags && arg === '--') {
|
|
189
190
|
parsingFlags = false;
|
|
190
191
|
i++;
|
|
191
192
|
continue;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claude-flow/cli",
|
|
3
|
-
"version": "3.58.
|
|
3
|
+
"version": "3.58.1",
|
|
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",
|