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.
@@ -1,5 +1,5 @@
1
1
  {
2
- "adoptedAt": 1792476754804,
2
+ "adoptedAt": 1792482576260,
3
3
  "championId": "sha256:6141a8ea990c5063b77e090ae8f37f9c539d8aa8f58dcceb30f3a82f97e57319",
4
4
  "manifest": {
5
5
  "schema": "ruflo.proven-config/v1",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-flow",
3
- "version": "3.58.0",
3
+ "version": "3.58.1",
4
4
  "workspaces": [
5
5
  "v3/@claude-flow/codex",
6
6
  "v3/@claude-flow/mcp",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "generation": 7,
4
- "generatedAt": "2026-10-20T06:14:05.915Z",
5
- "gitSha": "d529a38a",
4
+ "generatedAt": "2026-10-20T07:55:51.186Z",
5
+ "gitSha": "f5f2e40c",
6
6
  "catalog": {
7
7
  "agents": 176,
8
8
  "tools": 423,
@@ -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
- if (!abs.startsWith(cwd))
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
- if (arg === '--') {
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.0",
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",