@claude-flow/cli 3.38.7 → 3.38.9

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,6 +1,6 @@
1
1
  {
2
2
  "manifest": {
3
- "version": "3.38.7",
3
+ "version": "3.38.9",
4
4
  "files": {
5
5
  "auto-memory-hook.mjs": "85fe05c757421c52137c0bc8545a0896bab6b4714538c2a11d1d0835bfcc8c1c",
6
6
  "hook-handler.cjs": "dae295fb9ae2626b89899c19a20cc911541af82b52d2eeb9b214d618b96e9a86",
@@ -8,6 +8,6 @@
8
8
  "statusline.cjs": "0457fe53f8cd2c56458ff178392536a5868efd1a573665fa43bc01d2d95ca677"
9
9
  }
10
10
  },
11
- "signature": "FgH/N1oH9kP+lac4BmyUWUmAamnyfQzYgIt3b/xGeL2PJgOLGvPbuKF1DTpnzRHONcsAViViVt0dWKF6Q3LqAw==",
11
+ "signature": "3d1AL1dnpOuXC44aTkQIjVmh6laRNnIEo99/iamUYH1IlCzQEwvA2svMe3hgchi7XjeKFRCkjWWtGpq0jv5uDg==",
12
12
  "algorithm": "ed25519"
13
13
  }
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "generation": 4,
4
- "generatedAt": "2026-08-12T21:44:13.365Z",
5
- "gitSha": "57c0fcba",
4
+ "generatedAt": "2026-08-13T12:38:48.969Z",
5
+ "gitSha": "c1e8e0c4",
6
6
  "catalog": {
7
7
  "agents": 164,
8
8
  "tools": 397,
@@ -27,8 +27,8 @@ export interface AgentRecord {
27
27
  * falling back to MODEL_MAP[tier].
28
28
  */
29
29
  modelId?: string;
30
- /** ADR-148 phase 2 — execution provider hint. */
31
- provider?: 'anthropic' | 'openrouter';
30
+ /** ADR-148 phase 2 — execution provider hint. #2962 widened to include 'ollama'. */
31
+ provider?: 'anthropic' | 'openrouter' | 'ollama';
32
32
  /** ADR-148 phase 2 — concrete OpenRouter slug when provider='openrouter'. */
33
33
  openrouterModel?: string;
34
34
  lastResult?: Record<string, unknown>;
@@ -42,6 +42,14 @@ export interface AnthropicCallInput {
42
42
  maxTokens?: number;
43
43
  temperature?: number;
44
44
  timeoutMs?: number;
45
+ /**
46
+ * #2962 — explicit provider carried from the agent record (agent.provider,
47
+ * itself populated from a user's `--provider` flag or persisted
48
+ * `providers configure`). When set, this outranks the env-var-only
49
+ * inference callAnthropicMessages otherwise does — see the precedence
50
+ * comment on that function.
51
+ */
52
+ provider?: 'anthropic' | 'openrouter' | 'ollama';
45
53
  }
46
54
  export interface AnthropicCallResult {
47
55
  success: boolean;
@@ -10,6 +10,7 @@
10
10
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
11
11
  import { join } from 'node:path';
12
12
  import { getProjectCwd } from './types.js';
13
+ import { configManager } from '../services/config-file-manager.js';
13
14
  const STORAGE_DIR = '.claude-flow';
14
15
  const AGENT_DIR = 'agents';
15
16
  const AGENT_FILE = 'store.json';
@@ -57,6 +58,29 @@ const MODEL_MAP = {
57
58
  export function modelRejectsSamplingParams(model) {
58
59
  return /^claude-(fable-5|opus-4-8|opus-4-7|sonnet-5)/.test(model);
59
60
  }
61
+ /**
62
+ * #2962 — read the enabled `agents.providers` entry matching `name` from
63
+ * cwd-scoped `claude-flow.config.json` (written by `providers configure`,
64
+ * `commands/providers.ts`). Best-effort: any failure (no config file, wrong
65
+ * shape, etc.) returns undefined rather than throwing — this must never
66
+ * break execution, and env vars remain a fully-supported override that
67
+ * doesn't require this file to exist.
68
+ */
69
+ function getPersistedProviderConfig(name) {
70
+ try {
71
+ const providers = configManager.get(getProjectCwd(), 'agents.providers');
72
+ if (!Array.isArray(providers))
73
+ return undefined;
74
+ const entry = providers.find((p) => !!p && typeof p === 'object' && typeof p.name === 'string' &&
75
+ p.name.toLowerCase() === name.toLowerCase());
76
+ if (!entry || entry.enabled === false)
77
+ return undefined;
78
+ return entry;
79
+ }
80
+ catch {
81
+ return undefined;
82
+ }
83
+ }
60
84
  /**
61
85
  * Generic Anthropic Messages API call. No agent registry coupling — used
62
86
  * by agent_execute (with the agent's configured model) and by the WASM
@@ -69,7 +93,13 @@ export function modelRejectsSamplingParams(model) {
69
93
  * don't need to know which provider answered.
70
94
  */
71
95
  export async function callAnthropicMessages(input) {
72
- const explicitProvider = (process.env.RUFLO_PROVIDER || '').toLowerCase();
96
+ // #2962 precedence: explicit per-agent flag (input.provider, forwarded
97
+ // from agent.provider by executeAgentTask, itself populated from a
98
+ // user's `agent spawn --provider` flag) → env vars (RUFLO_PROVIDER + the
99
+ // *_API_KEY family — unchanged back-compat surface) → persisted
100
+ // `agents.providers` config (`providers configure`) → the original
101
+ // key-presence inference, kept below as the last-resort fallback.
102
+ const explicitProvider = (input.provider || process.env.RUFLO_PROVIDER || '').toLowerCase();
73
103
  const ollamaKey = process.env.OLLAMA_API_KEY;
74
104
  const anthropicKey = process.env.ANTHROPIC_API_KEY;
75
105
  // #2042 — OpenRouter is an OpenAI-compat endpoint that fronts dozens of
@@ -80,22 +110,47 @@ export async function callAnthropicMessages(input) {
80
110
  // branch above).
81
111
  const openrouterKey = process.env.OPENROUTER_API_KEY;
82
112
  const useOpenRouter = explicitProvider === 'openrouter' || (!anthropicKey && !!openrouterKey);
83
- const useOllama = explicitProvider === 'ollama' || (!anthropicKey && !!ollamaKey && !openrouterKey);
84
- if (useOpenRouter && openrouterKey) {
85
- return callOpenAICompat({
86
- ...input,
87
- apiKey: openrouterKey,
88
- baseUrl: process.env.OPENROUTER_BASE_URL || 'https://openrouter.ai/api',
89
- providerLabel: 'openrouter',
90
- // #2357 Finding C: anthropic/claude-3.5-sonnet was retired Oct 2025.
91
- // Default to the same canonical family the rest of the resolver uses
92
- // (MODEL_MAP). `OPENROUTER_DEFAULT_MODEL` still wins for callers who
93
- // want to pin a specific OpenRouter slug.
94
- defaultModel: process.env.OPENROUTER_DEFAULT_MODEL || 'anthropic/claude-sonnet-4-6',
95
- });
113
+ // #2962 only consult the persisted config when a candidate is actually
114
+ // relevant (explicit choice, or no env key found anywhere), so a normal
115
+ // ANTHROPIC_API_KEY-only setup never pays a config-file read.
116
+ const persistedOllama = explicitProvider === 'ollama' || (!anthropicKey && !openrouterKey && !ollamaKey)
117
+ ? getPersistedProviderConfig('ollama')
118
+ : undefined;
119
+ const persistedOpenRouter = explicitProvider === 'openrouter' && !openrouterKey ? getPersistedProviderConfig('openrouter') : undefined;
120
+ const useOllama = explicitProvider === 'ollama' || (!anthropicKey && !openrouterKey && (!!ollamaKey || !!persistedOllama));
121
+ if (useOpenRouter) {
122
+ const apiKey = openrouterKey || persistedOpenRouter?.apiKey;
123
+ if (apiKey) {
124
+ return callOpenAICompat({
125
+ ...input,
126
+ apiKey,
127
+ baseUrl: process.env.OPENROUTER_BASE_URL || persistedOpenRouter?.baseUrl || 'https://openrouter.ai/api',
128
+ providerLabel: 'openrouter',
129
+ // #2357 Finding C: anthropic/claude-3.5-sonnet was retired Oct 2025.
130
+ // Default to the same canonical family the rest of the resolver uses
131
+ // (MODEL_MAP). `OPENROUTER_DEFAULT_MODEL` still wins for callers who
132
+ // want to pin a specific OpenRouter slug.
133
+ defaultModel: process.env.OPENROUTER_DEFAULT_MODEL || persistedOpenRouter?.model || 'anthropic/claude-sonnet-4-6',
134
+ });
135
+ }
96
136
  }
97
- if (useOllama && ollamaKey) {
98
- return callOllamaCompat({ ...input, apiKey: ollamaKey });
137
+ if (useOllama) {
138
+ // #2962 retire the undocumented OLLAMA_API_KEY=local sentinel
139
+ // requirement. A self-hosted, unauthenticated Ollama daemon shouldn't
140
+ // need a fake credential to become reachable; "self-hosted" is any
141
+ // resolved base URL that isn't the public Ollama Cloud endpoint
142
+ // (persisted `providers configure -e` baseUrl, or OLLAMA_BASE_URL,
143
+ // checked in that order — matching callOllamaCompat's own precedence).
144
+ const resolvedBaseUrl = process.env.OLLAMA_BASE_URL || persistedOllama?.baseUrl;
145
+ const isSelfHosted = !!resolvedBaseUrl && !/^https:\/\/ollama\.com\/?$/i.test(resolvedBaseUrl);
146
+ if (ollamaKey || persistedOllama?.apiKey || isSelfHosted) {
147
+ return callOllamaCompat({
148
+ ...input,
149
+ apiKey: ollamaKey || persistedOllama?.apiKey || 'local',
150
+ baseUrl: resolvedBaseUrl,
151
+ model: input.model || persistedOllama?.model,
152
+ });
153
+ }
99
154
  }
100
155
  if (!anthropicKey) {
101
156
  return {
@@ -185,15 +240,18 @@ export async function callAnthropicMessages(input) {
185
240
  async function callOllamaCompat(input) {
186
241
  const model = resolveOllamaModel(input.model);
187
242
  const startedAt = Date.now();
188
- // OLLAMA_BASE_URL lets users point at local/self-hosted endpoints
189
- // (e.g. http://ruvultra:11434, http://localhost:11434) instead of
190
- // Ollama Cloud. Default is the public cloud endpoint.
191
- const base = (process.env.OLLAMA_BASE_URL || 'https://ollama.com').replace(/\/+$/, '');
243
+ // #2962 input.baseUrl (resolved by the caller from persisted
244
+ // `providers configure` config, then OLLAMA_BASE_URL) takes precedence
245
+ // over re-reading OLLAMA_BASE_URL here, so a persisted-config-only setup
246
+ // (no env vars) still reaches a self-hosted endpoint instead of Ollama
247
+ // Cloud. Falls back to the original OLLAMA_BASE_URL-or-cloud behavior
248
+ // for any direct caller that doesn't pass baseUrl.
249
+ const base = (input.baseUrl || process.env.OLLAMA_BASE_URL || 'https://ollama.com').replace(/\/+$/, '');
192
250
  const url = `${base}/v1/chat/completions`;
193
251
  // Self-hosted endpoints typically don't need an Authorization header
194
252
  // (the daemon binds to 11434 with no auth by default), but Ollama Cloud
195
253
  // does. Send the bearer when the key is non-empty AND looks cloud-shaped.
196
- const sendAuth = input.apiKey && input.apiKey !== 'local';
254
+ const sendAuth = !!input.apiKey && input.apiKey !== 'local';
197
255
  try {
198
256
  const controller = new AbortController();
199
257
  const timer = setTimeout(() => controller.abort(), input.timeoutMs || 60000);
@@ -406,6 +464,11 @@ export async function executeAgentTask(input) {
406
464
  const startedAt = Date.now();
407
465
  // #2042 — delegate to callAnthropicMessages so the v3 provider router
408
466
  // (Anthropic / Ollama / OpenRouter) governs which backend is hit.
467
+ // #2962 — forward the agent's own explicit provider (set at spawn time
468
+ // from --provider / persisted config) so it outranks env-var inference.
469
+ // Only the first-attempt call; the ADR-149 fallback-retry call below is
470
+ // driven by the cost-optimal neural router picking model-id alternatives,
471
+ // an orthogonal mechanism left as-is to avoid unintended interaction.
409
472
  let result = await callAnthropicMessages({
410
473
  model: anthropicModel,
411
474
  prompt: input.prompt,
@@ -413,6 +476,7 @@ export async function executeAgentTask(input) {
413
476
  maxTokens: input.maxTokens,
414
477
  temperature: input.temperature,
415
478
  timeoutMs: input.timeoutMs,
479
+ provider: agent.provider,
416
480
  });
417
481
  // ADR-149 iter 7 — fallback chain on retryable failures (429, 5xx,
418
482
  // timeout). When the cost-optimal neural backend picked a specific
@@ -126,8 +126,19 @@ async function embedTaskSafe(task) {
126
126
  */
127
127
  async function determineAgentModel(agentType, config, task) {
128
128
  // 1. Explicit model in config
129
- if (config.model && ['haiku', 'sonnet', 'opus', 'opus-4.7', 'inherit'].includes(config.model)) {
130
- return { model: config.model, routedBy: 'explicit' };
129
+ if (config.model) {
130
+ const explicitModel = config.model;
131
+ if (['haiku', 'sonnet', 'opus', 'opus-4.7', 'inherit'].includes(explicitModel)) {
132
+ return { model: explicitModel, routedBy: 'explicit' };
133
+ }
134
+ // #2962 — a non-alias model string (e.g. an Ollama tag like
135
+ // 'qwen3.6:27b', or any other provider-native model id) is still an
136
+ // explicit user selection. Route it through the modelId fast-path
137
+ // (executeAgentTask already prefers agent.modelId over
138
+ // MODEL_MAP[agent.model] — ADR-149 iter 13) instead of falling through
139
+ // to task-based routing / agent-type defaults, which silently
140
+ // substituted 'sonnet' and discarded the user's request.
141
+ return { model: 'sonnet', routedBy: 'explicit', modelId: explicitModel };
131
142
  }
132
143
  // 2. Enhanced task-based routing with deterministic Tier-1 codemods
133
144
  if (task) {
@@ -248,6 +259,15 @@ export const agentTools = [
248
259
  const task = input.task || config.task || undefined;
249
260
  // Determine model using ADR-026 3-tier routing logic
250
261
  const routingResult = await determineAgentModel(agentType, config, task);
262
+ // #2962 — an explicit, unambiguous provider choice in config wins over
263
+ // the router's own pick. 'anthropic' is deliberately excluded: the CLI's
264
+ // `agent spawn` action always sets config.provider (defaulting to
265
+ // 'anthropic' when --provider isn't passed — commands/agent.ts), so
266
+ // 'anthropic' here is indistinguishable from that silent default.
267
+ // 'ollama'/'openrouter' are never silently defaulted and are unambiguous.
268
+ const explicitConfigProvider = config.provider === 'ollama' || config.provider === 'openrouter'
269
+ ? config.provider
270
+ : undefined;
251
271
  const agent = {
252
272
  agentId,
253
273
  agentType,
@@ -260,7 +280,9 @@ export const agentTools = [
260
280
  model: routingResult.model,
261
281
  modelRoutedBy: routingResult.routedBy,
262
282
  ...(routingResult.modelId ? { modelId: routingResult.modelId } : {}),
263
- ...(routingResult.provider ? { provider: routingResult.provider } : {}),
283
+ ...(explicitConfigProvider
284
+ ? { provider: explicitConfigProvider }
285
+ : routingResult.provider ? { provider: routingResult.provider } : {}),
264
286
  ...(routingResult.openrouterModel ? { openrouterModel: routingResult.openrouterModel } : {}),
265
287
  };
266
288
  store.agents[agentId] = agent;
@@ -331,7 +353,11 @@ export const agentTools = [
331
353
  model: agent.model,
332
354
  modelRoutedBy: routingResult.routedBy,
333
355
  ...(routingResult.modelId ? { modelId: routingResult.modelId } : {}),
334
- ...(routingResult.provider ? { provider: routingResult.provider } : {}),
356
+ // #2962 mirror the same precedence used for the stored agent
357
+ // record, so the response a caller sees matches what was actually
358
+ // persisted (previously this always reported the router's own
359
+ // pick, silently dropping an explicit config.provider override).
360
+ ...(agent.provider ? { provider: agent.provider } : {}),
335
361
  ...(routingResult.openrouterModel ? { openrouterModel: routingResult.openrouterModel } : {}),
336
362
  status: 'registered',
337
363
  createdAt: agent.createdAt,
@@ -1 +1 @@
1
- {"version":3,"file":"path-validator.d.ts","sourceRoot":"","sources":["../src/path-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,eAAe,EAAE,MAAM,EAAE,CAAC;IAE1B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,kBAAmB,SAAQ,KAAK;aAGzB,IAAI,EAAE,MAAM;aACZ,IAAI,CAAC,EAAE,MAAM;gBAF7B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,YAAA;CAKhC;AAqDD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAW;gBAEhC,MAAM,EAAE,mBAAmB;IAwBvC;;;;;OAKG;IACG,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAwIhE;;;;;;OAMG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAczD;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB;IA4FrD;;;;;;OAMG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAQxE;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ/B;;OAEG;IACH,kBAAkB,IAAI,SAAS,MAAM,EAAE;IAIvC;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAU5C;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAS7E;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CASjF"}
1
+ {"version":3,"file":"path-validator.d.ts","sourceRoot":"","sources":["../src/path-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,eAAe,EAAE,MAAM,EAAE,CAAC;IAE1B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,kBAAmB,SAAQ,KAAK;aAGzB,IAAI,EAAE,MAAM;aACZ,IAAI,CAAC,EAAE,MAAM;gBAF7B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,YAAA;CAKhC;AAqDD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAW;gBAEhC,MAAM,EAAE,mBAAmB;IAyCvC;;;;;OAKG;IACG,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAwIhE;;;;;;OAMG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAczD;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB;IA4FrD;;;;;;OAMG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAQxE;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ/B;;OAEG;IACH,kBAAkB,IAAI,SAAS,MAAM,EAAE;IAIvC;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAU5C;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAS7E;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CASjF"}
@@ -17,6 +17,7 @@
17
17
  */
18
18
  import * as path from 'path';
19
19
  import * as fs from 'fs/promises';
20
+ import { realpathSync } from 'fs';
20
21
  export class PathValidatorError extends Error {
21
22
  code;
22
23
  path;
@@ -109,8 +110,29 @@ export class PathValidator {
109
110
  if (this.config.allowedPrefixes.length === 0) {
110
111
  throw new PathValidatorError('At least one allowed prefix must be specified', 'EMPTY_PREFIXES');
111
112
  }
112
- // Pre-resolve all prefixes
113
- this.resolvedPrefixes = this.config.allowedPrefixes.map(p => path.resolve(p));
113
+ // Pre-resolve all prefixes. #3010 — validate() canonicalizes the
114
+ // *candidate* through fs.realpath (when resolveSymlinks is on, the
115
+ // default) but prefixes were only ever path.resolve()d, never
116
+ // realpath'd. On any platform where the prefix itself is reached
117
+ // through a symlink (e.g. macOS os.tmpdir() -> /var/folders/... while
118
+ // /var is itself a symlink to /private/var), the realpath'd candidate
119
+ // can never match the non-realpath'd prefix, and every path under that
120
+ // prefix is rejected as "outside allowed directories" — including the
121
+ // prefix's own contents. Mirror validate()'s own ENOENT-tolerant
122
+ // fallback: a prefix that doesn't exist yet (or otherwise can't be
123
+ // realpath'd) still gets a resolved value via path.resolve, matching
124
+ // allowNonExistent's semantics for candidates.
125
+ this.resolvedPrefixes = this.config.allowedPrefixes.map(p => {
126
+ const resolved = path.resolve(p);
127
+ if (!this.config.resolveSymlinks)
128
+ return resolved;
129
+ try {
130
+ return realpathSync(resolved);
131
+ }
132
+ catch {
133
+ return resolved;
134
+ }
135
+ });
114
136
  }
115
137
  /**
116
138
  * Validates a path against security rules.
@@ -1 +1 @@
1
- {"version":3,"file":"path-validator.js","sourceRoot":"","sources":["../src/path-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"path-validator.js","sourceRoot":"","sources":["../src/path-validator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@claude-flow/cli",
3
- "version": "3.38.7",
3
+ "version": "3.38.9",
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",