@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.
- package/.claude/helpers/helpers.manifest.json +2 -2
- package/catalog-manifest.json +2 -2
- package/dist/src/mcp-tools/agent-execute-core.d.ts +10 -2
- package/dist/src/mcp-tools/agent-execute-core.js +85 -21
- package/dist/src/mcp-tools/agent-tools.js +30 -4
- package/node_modules/@claude-flow/security/dist/path-validator.d.ts.map +1 -1
- package/node_modules/@claude-flow/security/dist/path-validator.js +24 -2
- package/node_modules/@claude-flow/security/dist/path-validator.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest": {
|
|
3
|
-
"version": "3.38.
|
|
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": "
|
|
11
|
+
"signature": "3d1AL1dnpOuXC44aTkQIjVmh6laRNnIEo99/iamUYH1IlCzQEwvA2svMe3hgchi7XjeKFRCkjWWtGpq0jv5uDg==",
|
|
12
12
|
"algorithm": "ed25519"
|
|
13
13
|
}
|
package/catalog-manifest.json
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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
|
|
98
|
-
|
|
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
|
-
//
|
|
189
|
-
//
|
|
190
|
-
//
|
|
191
|
-
|
|
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
|
|
130
|
-
|
|
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
|
-
...(
|
|
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
|
-
|
|
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;
|
|
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
|
-
|
|
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":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAsDlC,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAGzB;IACA;IAHlB,YACE,OAAe,EACC,IAAY,EACZ,IAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAQ;QACZ,SAAI,GAAJ,IAAI,CAAS;QAG7B,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,kBAAkB,GAAG;IACzB,QAAQ,EAAe,MAAM;IAC7B,QAAQ,EAAe,MAAM;IAC7B,MAAM,EAAiB,cAAc;IACrC,SAAS,EAAc,iBAAiB;IACxC,aAAa,EAAU,wBAAwB;IAC/C,QAAQ,EAAe,iBAAiB;IACxC,QAAQ,EAAe,iBAAiB;IACxC,IAAI,EAAmB,YAAY;IACnC,KAAK,EAAkB,mBAAmB;CAC3C,CAAC;AAEF;;GAEG;AACH,MAAM,0BAA0B,GAAG;IACjC,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,WAAW;IACX,SAAS;IACT,cAAc;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,qBAAqB,GAAG;IAC5B,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,WAAW;IACX,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,iBAAiB;IACjB,aAAa;IACb,MAAM;IACN,YAAY;IACZ,QAAQ;IACR,SAAS;CACV,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,aAAa;IACP,MAAM,CAAgC;IACtC,gBAAgB,CAAW;IAE5C,YAAY,MAA2B;QACrC,IAAI,CAAC,MAAM,GAAG;YACZ,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,0BAA0B;YACzE,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,qBAAqB;YAC1D,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI;YAC3C,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,IAAI;YAC/C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,IAAI;YACjD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,KAAK;SACzC,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,kBAAkB,CAC1B,+CAA+C,EAC/C,gBAAgB,CACjB,CAAC;QACJ,CAAC;QAED,
|
|
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.
|
|
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",
|