@claude-flow/cli 3.32.40 → 3.33.0
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-version +1 -1
- package/.claude/helpers/helpers.manifest.json +2 -2
- package/.claude/helpers/statusline.cjs +0 -0
- package/README.md +0 -2
- package/catalog-manifest.json +2 -2
- package/dist/src/commands/hooks.js +42 -14
- package/dist/src/mcp-tools/hooks-tools.js +83 -22
- package/node_modules/@claude-flow/security/dist/index.d.ts +1 -0
- package/node_modules/@claude-flow/security/dist/index.d.ts.map +1 -1
- package/node_modules/@claude-flow/security/dist/index.js +5 -0
- package/node_modules/@claude-flow/security/dist/index.js.map +1 -1
- package/node_modules/@claude-flow/security/dist/mcp-caller-identity.d.ts +90 -0
- package/node_modules/@claude-flow/security/dist/mcp-caller-identity.d.ts.map +1 -0
- package/node_modules/@claude-flow/security/dist/mcp-caller-identity.js +0 -0
- package/node_modules/@claude-flow/security/dist/mcp-caller-identity.js.map +1 -0
- package/package.json +1 -1
- package/.claude/.proven-config-version +0 -1
- package/.claude/proven-config.json +0 -42
|
@@ -1 +1 @@
|
|
|
1
|
-
3.32.
|
|
1
|
+
3.32.29
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest": {
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.33.0",
|
|
4
4
|
"files": {
|
|
5
5
|
"auto-memory-hook.mjs": "68be7e9a9eba7bf9c4e8a230db7bf61a243b965639f8504842799d6c6ca28762",
|
|
6
6
|
"hook-handler.cjs": "dae295fb9ae2626b89899c19a20cc911541af82b52d2eeb9b214d618b96e9a86",
|
|
@@ -8,6 +8,6 @@
|
|
|
8
8
|
"statusline.cjs": "0457fe53f8cd2c56458ff178392536a5868efd1a573665fa43bc01d2d95ca677"
|
|
9
9
|
}
|
|
10
10
|
},
|
|
11
|
-
"signature": "
|
|
11
|
+
"signature": "J0E/yeJoSS9oIfHsfle9CjlnSLNeSO6dcXPkuhzDx/2lddDeddDXMDXF3XO0GnQbpZWTduBKx5+cN0ip89fJDw==",
|
|
12
12
|
"algorithm": "ed25519"
|
|
13
13
|
}
|
|
File without changes
|
package/README.md
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
3
|
[](https://cognitum.one/agentic-engineering)
|
|
4
|
-
[](https://agentics.org/siliconvalley/?UTM=GH-RuFlo-SV)
|
|
5
|
-
|
|
6
4
|
|
|
7
5
|
<!-- Try Ruflo — the 4 badges first-time visitors actually act on -->
|
|
8
6
|
[](https://flo.ruv.io/)
|
package/catalog-manifest.json
CHANGED
|
@@ -1387,6 +1387,16 @@ const transferFromProjectCommand = {
|
|
|
1387
1387
|
minConfidence,
|
|
1388
1388
|
mergeStrategy: 'keep-highest-confidence',
|
|
1389
1389
|
});
|
|
1390
|
+
// #2859 — the handler reports success:false (no destination write
|
|
1391
|
+
// happened) when the source has no matching patterns at all. Surface
|
|
1392
|
+
// that honestly instead of claiming a transfer occurred.
|
|
1393
|
+
if (!result.success || typeof result.transferred === 'number') {
|
|
1394
|
+
spinner.fail(result.message ?? 'No patterns transferred');
|
|
1395
|
+
if (ctx.flags.format === 'json') {
|
|
1396
|
+
output.printJson(result);
|
|
1397
|
+
}
|
|
1398
|
+
return { success: false, exitCode: 1, data: result };
|
|
1399
|
+
}
|
|
1390
1400
|
spinner.succeed(`Transferred ${result.transferred.total} patterns`);
|
|
1391
1401
|
if (ctx.flags.format === 'json') {
|
|
1392
1402
|
output.printJson(result);
|
|
@@ -1401,9 +1411,9 @@ const transferFromProjectCommand = {
|
|
|
1401
1411
|
],
|
|
1402
1412
|
data: [
|
|
1403
1413
|
{ category: 'Total Transferred', count: output.success(String(result.transferred.total)) },
|
|
1404
|
-
{ category: 'Skipped (Low Confidence)', count: result.skipped
|
|
1405
|
-
{ category: 'Skipped (Duplicates)', count: result.skipped
|
|
1406
|
-
{ category: 'Skipped (Conflicts)', count: result.skipped
|
|
1414
|
+
{ category: 'Skipped (Low Confidence)', count: result.skipped?.lowConfidence ?? 0 },
|
|
1415
|
+
{ category: 'Skipped (Duplicates)', count: result.skipped?.duplicates ?? 0 },
|
|
1416
|
+
{ category: 'Skipped (Conflicts)', count: result.skipped?.conflicts ?? 0 }
|
|
1407
1417
|
]
|
|
1408
1418
|
});
|
|
1409
1419
|
if (Object.keys(result.transferred.byType).length > 0) {
|
|
@@ -1417,11 +1427,19 @@ const transferFromProjectCommand = {
|
|
|
1417
1427
|
data: Object.entries(result.transferred.byType).map(([type, count]) => ({ type, count }))
|
|
1418
1428
|
});
|
|
1419
1429
|
}
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1430
|
+
// #2865-style honesty: omit stats that have no real measured value
|
|
1431
|
+
// rather than showing a fabricated number.
|
|
1432
|
+
const statLines = [];
|
|
1433
|
+
if (result.stats?.avgConfidence != null) {
|
|
1434
|
+
statLines.push(`Avg Confidence: ${(result.stats.avgConfidence * 100).toFixed(1)}%`);
|
|
1435
|
+
}
|
|
1436
|
+
if (result.stats?.avgAgeDays != null) {
|
|
1437
|
+
statLines.push(`Avg Age: ${result.stats.avgAgeDays.toFixed(1)} days`);
|
|
1438
|
+
}
|
|
1439
|
+
if (statLines.length > 0) {
|
|
1440
|
+
output.writeln();
|
|
1441
|
+
output.printList(statLines);
|
|
1442
|
+
}
|
|
1425
1443
|
return { success: true, data: result };
|
|
1426
1444
|
}
|
|
1427
1445
|
catch (error) {
|
|
@@ -2137,9 +2155,17 @@ const intelligenceCommand = {
|
|
|
2137
2155
|
moe: {
|
|
2138
2156
|
enabled: enableMoe,
|
|
2139
2157
|
status: String(mcpMoe?.status ?? (hasLocalData ? 'active' : 'idle')),
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2158
|
+
// #2865 — these three previously fell back to hardcoded
|
|
2159
|
+
// hasLocalData ? <constant> : 0 whenever the MCP tool didn't
|
|
2160
|
+
// report a real value, so "Routing Accuracy: 82.0%" displayed
|
|
2161
|
+
// on every project with local neural data regardless of actual
|
|
2162
|
+
// routing quality (measured 49% on a real store). None of these
|
|
2163
|
+
// three has a cheap, honest local substitute the way
|
|
2164
|
+
// `hooks metrics`' routingAccuracy falls back to averageConfidence,
|
|
2165
|
+
// so they are null (unmeasured) rather than a fabricated number.
|
|
2166
|
+
expertsActive: mcpMoe?.expertsActive == null ? null : Number(mcpMoe.expertsActive),
|
|
2167
|
+
routingAccuracy: mcpMoe?.routingAccuracy == null ? null : Number(mcpMoe.routingAccuracy),
|
|
2168
|
+
loadBalance: mcpMoe?.loadBalance == null ? null : Number(mcpMoe.loadBalance),
|
|
2143
2169
|
},
|
|
2144
2170
|
hnsw: {
|
|
2145
2171
|
enabled: enableHnsw,
|
|
@@ -2235,9 +2261,11 @@ const intelligenceCommand = {
|
|
|
2235
2261
|
],
|
|
2236
2262
|
data: [
|
|
2237
2263
|
{ metric: 'Status', value: formatIntelligenceStatus(moe.status) },
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
{ metric: '
|
|
2264
|
+
// #2865 — omit rather than show a fabricated 0/0.0% when the
|
|
2265
|
+
// MCP tool hasn't reported a real value for these.
|
|
2266
|
+
...(moe.expertsActive == null ? [] : [{ metric: 'Active Experts', value: moe.expertsActive }]),
|
|
2267
|
+
...(moe.routingAccuracy == null ? [] : [{ metric: 'Routing Accuracy', value: `${(moe.routingAccuracy * 100).toFixed(1)}%` }]),
|
|
2268
|
+
...(moe.loadBalance == null ? [] : [{ metric: 'Load Balance', value: `${(moe.loadBalance * 100).toFixed(1)}%` }]),
|
|
2241
2269
|
]
|
|
2242
2270
|
});
|
|
2243
2271
|
}
|
|
@@ -987,14 +987,20 @@ export const hooksRoute = {
|
|
|
987
987
|
let agents;
|
|
988
988
|
let confidence;
|
|
989
989
|
let matchedPattern = '';
|
|
990
|
+
// Both static and learned patterns are gated on the same similarity
|
|
991
|
+
// score. Learned patterns additionally require support/reliability as a
|
|
992
|
+
// quality guard, but do NOT need a higher score bar — a learned pattern
|
|
993
|
+
// that outscores every static candidate must not lose to one anyway
|
|
994
|
+
// (#2864: a 25pp higher threshold made a top-scoring learned-researcher
|
|
995
|
+
// match at 0.57 lose to a static match at 0.52, discarding the learned
|
|
996
|
+
// store's output on the majority of routes).
|
|
990
997
|
const eligibleSemantic = semanticResult.find((match) => {
|
|
991
998
|
if (match.score <= 0.4)
|
|
992
999
|
return false;
|
|
993
1000
|
const learned = match.intent.startsWith('learned-') || match.metadata.source === 'learned';
|
|
994
1001
|
if (!learned)
|
|
995
1002
|
return true;
|
|
996
|
-
return match.
|
|
997
|
-
&& Number(match.metadata.support ?? 0) >= 2
|
|
1003
|
+
return Number(match.metadata.support ?? 0) >= 2
|
|
998
1004
|
&& Number(match.metadata.reliability ?? 0) >= 0.75;
|
|
999
1005
|
});
|
|
1000
1006
|
if (eligibleSemantic) {
|
|
@@ -1866,16 +1872,23 @@ export const hooksTransfer = {
|
|
|
1866
1872
|
catch {
|
|
1867
1873
|
// Fall back to empty store
|
|
1868
1874
|
}
|
|
1869
|
-
const
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1875
|
+
const classifyType = (key, metadata) => {
|
|
1876
|
+
if (key.includes('file') || metadata?.type === 'file-pattern')
|
|
1877
|
+
return 'file-patterns';
|
|
1878
|
+
if (key.includes('routing') || metadata?.type === 'routing')
|
|
1879
|
+
return 'task-routing';
|
|
1880
|
+
if (key.includes('command') || metadata?.type === 'command-risk')
|
|
1881
|
+
return 'command-risk';
|
|
1882
|
+
if (key.includes('agent') || metadata?.type === 'agent-success')
|
|
1883
|
+
return 'agent-success';
|
|
1884
|
+
return null;
|
|
1876
1885
|
};
|
|
1886
|
+
const candidates = Object.entries(sourceStore.entries)
|
|
1887
|
+
.map(([key, entry]) => ({ key, entry, type: classifyType(key, entry.metadata) }))
|
|
1888
|
+
.filter((c) => c.type !== null)
|
|
1889
|
+
.filter(c => !filter || c.type.includes(filter));
|
|
1877
1890
|
// If source has no patterns, report honestly instead of substituting demo data
|
|
1878
|
-
if (
|
|
1891
|
+
if (candidates.length === 0) {
|
|
1879
1892
|
return {
|
|
1880
1893
|
success: false,
|
|
1881
1894
|
message: 'No patterns found in source project',
|
|
@@ -1883,28 +1896,76 @@ export const hooksTransfer = {
|
|
|
1883
1896
|
transferred: 0,
|
|
1884
1897
|
};
|
|
1885
1898
|
}
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1899
|
+
// #2859 — this used to count source patterns, then invent skip counts
|
|
1900
|
+
// as fixed percentages of that count and a fixed avgConfidence/avgAge,
|
|
1901
|
+
// without ever reading or writing the destination store. An operator
|
|
1902
|
+
// could believe state moved between projects when nothing changed.
|
|
1903
|
+
// Perform a real merge: skip entries below the confidence threshold,
|
|
1904
|
+
// skip exact duplicates, skip real conflicts (destination already has
|
|
1905
|
+
// a different value for that key — never silently overwritten), and
|
|
1906
|
+
// actually write whatever remains into this project's own memory store.
|
|
1907
|
+
const destStore = loadMemoryStore();
|
|
1908
|
+
const byType = {};
|
|
1909
|
+
let lowConfidence = 0;
|
|
1910
|
+
let duplicates = 0;
|
|
1911
|
+
let conflicts = 0;
|
|
1912
|
+
let transferredCount = 0;
|
|
1913
|
+
let confidenceSum = 0;
|
|
1914
|
+
let confidenceCount = 0;
|
|
1915
|
+
let ageSumMs = 0;
|
|
1916
|
+
let ageCount = 0;
|
|
1917
|
+
const now = Date.now();
|
|
1918
|
+
for (const { key, entry, type } of candidates) {
|
|
1919
|
+
const confidenceRaw = entry.metadata?.confidence ?? entry.metadata?.reliability;
|
|
1920
|
+
const confidence = typeof confidenceRaw === 'number' ? confidenceRaw : undefined;
|
|
1921
|
+
if (confidence !== undefined && confidence < minConfidence) {
|
|
1922
|
+
lowConfidence++;
|
|
1923
|
+
continue;
|
|
1924
|
+
}
|
|
1925
|
+
const existing = destStore.entries[key];
|
|
1926
|
+
if (existing) {
|
|
1927
|
+
const same = JSON.stringify(existing.value) === JSON.stringify(entry.value);
|
|
1928
|
+
if (same) {
|
|
1929
|
+
duplicates++;
|
|
1930
|
+
continue;
|
|
1931
|
+
}
|
|
1932
|
+
conflicts++;
|
|
1933
|
+
continue;
|
|
1934
|
+
}
|
|
1935
|
+
destStore.entries[key] = entry;
|
|
1936
|
+
transferredCount++;
|
|
1937
|
+
byType[type] = (byType[type] ?? 0) + 1;
|
|
1938
|
+
if (confidence !== undefined) {
|
|
1939
|
+
confidenceSum += confidence;
|
|
1940
|
+
confidenceCount++;
|
|
1941
|
+
}
|
|
1942
|
+
const storedAtMs = Date.parse(entry.storedAt ?? '');
|
|
1943
|
+
if (!Number.isNaN(storedAtMs)) {
|
|
1944
|
+
ageSumMs += now - storedAtMs;
|
|
1945
|
+
ageCount++;
|
|
1946
|
+
}
|
|
1947
|
+
}
|
|
1948
|
+
if (transferredCount > 0) {
|
|
1949
|
+
const memDir = resolve(MEMORY_DIR);
|
|
1950
|
+
if (!existsSync(memDir))
|
|
1951
|
+
mkdirSync(memDir, { recursive: true });
|
|
1952
|
+
writeFileSync(getMemoryPath(), JSON.stringify(destStore, null, 2), 'utf-8');
|
|
1891
1953
|
}
|
|
1892
|
-
const total = Object.values(byType).reduce((a, b) => a + b, 0);
|
|
1893
1954
|
return {
|
|
1894
1955
|
success: true,
|
|
1895
1956
|
sourcePath,
|
|
1896
1957
|
transferred: {
|
|
1897
|
-
total,
|
|
1958
|
+
total: transferredCount,
|
|
1898
1959
|
byType,
|
|
1899
1960
|
},
|
|
1900
1961
|
skipped: {
|
|
1901
|
-
lowConfidence
|
|
1902
|
-
duplicates
|
|
1903
|
-
conflicts
|
|
1962
|
+
lowConfidence,
|
|
1963
|
+
duplicates,
|
|
1964
|
+
conflicts,
|
|
1904
1965
|
},
|
|
1905
1966
|
stats: {
|
|
1906
|
-
avgConfidence:
|
|
1907
|
-
|
|
1967
|
+
avgConfidence: confidenceCount > 0 ? Number((confidenceSum / confidenceCount).toFixed(3)) : null,
|
|
1968
|
+
avgAgeDays: ageCount > 0 ? Number((ageSumMs / ageCount / 86_400_000).toFixed(1)) : null,
|
|
1908
1969
|
},
|
|
1909
1970
|
dataSource: 'source-project',
|
|
1910
1971
|
};
|
|
@@ -21,6 +21,7 @@ export { InputValidator, sanitizeString, sanitizeHtml, sanitizePath, SafeStringS
|
|
|
21
21
|
export { TokenGenerator, TokenGeneratorError, createTokenGenerator, getDefaultGenerator, quickGenerate, type TokenConfig, type Token, type SignedToken, type VerificationCode, } from './token-generator.js';
|
|
22
22
|
export { ToolOutputGuardrail, createToolOutputGuardrail, isToolOutputSafe, type GuardrailConfig, type GuardrailResult, type GuardrailAction, type InjectionFinding, type InjectionSeverity, type InjectionCategory, } from './tool-output-guardrail.js';
|
|
23
23
|
export { AgentAuthorizationPropagator, AuthorizationPropagationError, makeLegacyPermissiveScope, type AuthScope, type SendMessageEnvelope, type ToolCallDecision, } from './authorization/propagator.js';
|
|
24
|
+
export { generateCallerIdentityKey, loadCallerIdentityKey, issueInvocationToken, verifyInvocationToken, isMcpCallerAuthEnabled, type CallerIdentityKey, type InvocationToken, type TokenVerificationResult, } from './mcp-caller-identity.js';
|
|
24
25
|
export * from './policy/index.js';
|
|
25
26
|
export { CLIENT_ID as OAUTH_CLIENT_ID, SCOPE as OAUTH_SCOPE, OOB_REDIRECT_URI, OAuthError, authorizeUrl, exchangeCode, refreshToken, exchangeManualCode, type TokenResponse as OAuthTokenResponse, } from './oauth/client.js';
|
|
26
27
|
export { generate as generatePkce, challengeFromVerifier, type PkceRequest } from './oauth/pkce.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,11 @@ export { ToolOutputGuardrail, createToolOutputGuardrail, isToolOutputSafe, } fro
|
|
|
43
43
|
// Action-layer: SendMessage envelope + per-action scope check + MCP server
|
|
44
44
|
// identity probe. Wraps the comms layer in P2; wraps the dispatcher in P3.
|
|
45
45
|
export { AgentAuthorizationPropagator, AuthorizationPropagationError, makeLegacyPermissiveScope, } from './authorization/propagator.js';
|
|
46
|
+
// MCP Caller-Identity Binding (ADR-377 Phase 3 — ruvnet/ruflo#2516, #2873)
|
|
47
|
+
// Per-invocation Ed25519-signed capability tokens. Off by default
|
|
48
|
+
// (CLAUDE_FLOW_MCP_CALLER_AUTH) pending a follow-on ADR for key
|
|
49
|
+
// distribution; see mcp-caller-identity.ts's file header for scope notes.
|
|
50
|
+
export { generateCallerIdentityKey, loadCallerIdentityKey, issueInvocationToken, verifyInvocationToken, isMcpCallerAuthEnabled, } from './mcp-caller-identity.js';
|
|
46
51
|
// Agentic Policy Engine (ADR-324)
|
|
47
52
|
// Deterministic policy evaluation, monotonic capability envelopes, approvals,
|
|
48
53
|
// budgets, and tamper-evident decision receipts. Legacy mode preserves the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,+BAA+B;AAC/B,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,oBAAoB,GAGrB,MAAM,sBAAsB,CAAC;AAE9B,oCAAoC;AACpC,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,GAIpB,MAAM,2BAA2B,CAAC;AAEnC,sCAAsC;AACtC,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,yBAAyB,EACzB,sBAAsB,GAIvB,MAAM,oBAAoB,CAAC;AAE5B,+BAA+B;AAC/B,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,0BAA0B,EAC1B,8BAA8B,GAG/B,MAAM,qBAAqB,CAAC;AAE7B,mBAAmB;AACnB,OAAO,EACL,cAAc,EACd,cAAc,EACd,YAAY,EACZ,YAAY;AACZ,eAAe;AACf,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,cAAc,EACd,UAAU,EACV,cAAc,EACd,SAAS,EACT,YAAY,EACZ,UAAU,EACV,UAAU,EACV,QAAQ;AACR,eAAe;AACf,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB;AAClB,uBAAuB;AACvB,eAAe,EACf,gBAAgB,EAChB,eAAe;AACf,yBAAyB;AACzB,qBAAqB,EACrB,UAAU;AACV,iBAAiB;AACjB,oBAAoB,EACpB,oBAAoB;AACpB,YAAY;AACZ,QAAQ,EACR,MAAM,EACN,CAAC,GACF,MAAM,sBAAsB,CAAC;AAE9B,mBAAmB;AACnB,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,GAKd,MAAM,sBAAsB,CAAC;AAE9B,8EAA8E;AAC9E,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,GAOjB,MAAM,4BAA4B,CAAC;AAEpC,mEAAmE;AACnE,2EAA2E;AAC3E,2EAA2E;AAC3E,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,EAC7B,yBAAyB,GAI1B,MAAM,+BAA+B,CAAC;AAEvC,2EAA2E;AAC3E,kEAAkE;AAClE,gEAAgE;AAChE,0EAA0E;AAC1E,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,GAIvB,MAAM,0BAA0B,CAAC;AAElC,kCAAkC;AAClC,8EAA8E;AAC9E,2EAA2E;AAC3E,iFAAiF;AACjF,cAAc,mBAAmB,CAAC;AAElC,2CAA2C;AAC3C,uEAAuE;AACvE,yEAAyE;AACzE,yEAAyE;AACzE,OAAO,EACL,SAAS,IAAI,eAAe,EAC5B,KAAK,IAAI,WAAW,EACpB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,kBAAkB,GAEnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,qBAAqB,EAAoB,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAuB,MAAM,4BAA4B,CAAC;AACvG,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,gCAAgC;AAChC,OAAO,EACL,qBAAqB,EACrB,0BAA0B,GAE3B,MAAM,uBAAuB,CAAC;AAE/B,6DAA6D;AAC7D,0EAA0E;AAC1E,0DAA0D;AAC1D,OAAO,EACL,uBAAuB,EACvB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,UAAU,GAQX,MAAM,iCAAiC,CAAC;AAEzC,sEAAsE;AACtE,sEAAsE;AACtE,6DAA6D;AAC7D,sEAAsE;AACtE,uEAAuE;AACvE,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,OAAO,EACP,SAAS,EACT,iBAAiB,GAOlB,MAAM,gCAAgC,CAAC;AAExC,+EAA+E;AAC/E,gCAAgC;AAChC,+EAA+E;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAwCtD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAA4B;IAC/D,OAAO;QACL,cAAc,EAAE,IAAI,cAAc,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;SAClC,CAAC;QACF,mBAAmB,EAAE,IAAI,mBAAmB,EAAE;QAC9C,YAAY,EAAE,IAAI,YAAY,CAAC;YAC7B,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;SAClE,CAAC;QACF,aAAa,EAAE,IAAI,aAAa,CAAC;YAC/B,eAAe,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;YACrC,WAAW,EAAE,IAAI;SAClB,CAAC;QACF,cAAc,EAAE,IAAI,cAAc,CAAC;YACjC,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC;KACH,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAEpC;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAEpC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEhD,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAqC;IACvE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,GAAG,iBAAiB,EAAE,CAAC;QACnE,QAAQ,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,YAAY,gCAAgC,iBAAiB,GAAG,CAAC,CAAC;IAC1G,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACvD,QAAQ,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClE,QAAQ,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,eAAe,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* McpCallerIdentity — ADR-377 Phase 3 (ruvnet/ruflo#2516, #2873).
|
|
3
|
+
*
|
|
4
|
+
* Per-invocation, Ed25519-signed capability tokens binding an MCP tool call
|
|
5
|
+
* to a specific caller. Closes the gap identified in arXiv:2603.07473
|
|
6
|
+
* (Caller Identity Confusion in MCP): authorization state today persists
|
|
7
|
+
* across callers with no re-verification, and `AgentAuthorizationPropagator`
|
|
8
|
+
* (ADR-144)'s `checkToolCall` validates a *scope* but not that the caller
|
|
9
|
+
* presenting it is who they claim to be for *this* call.
|
|
10
|
+
*
|
|
11
|
+
* Signing implementation follows the same pattern already used in this repo
|
|
12
|
+
* for Ed25519 signing (`@claude-flow/browser`'s `witness-signer.ts`): native
|
|
13
|
+
* `node:crypto`, zero new dependencies, sign+verify both supported (unlike
|
|
14
|
+
* `@claude-flow/security`'s own `plugins/integrity-verifier.ts`, which uses
|
|
15
|
+
* `@noble/ed25519` for verify-only). Reimplemented here rather than imported
|
|
16
|
+
* from `@claude-flow/browser` because a security-primitives module
|
|
17
|
+
* depending on the browser package would be a backwards layering
|
|
18
|
+
* dependency; the pattern is ~15 lines and not worth a cross-package import
|
|
19
|
+
* for that.
|
|
20
|
+
*
|
|
21
|
+
* Scope and honest limitations (per the ADR's own text)
|
|
22
|
+
* --------------------------------------------------------
|
|
23
|
+
* This module implements token issuance/verification only. It does NOT
|
|
24
|
+
* wire itself into any MCP tool dispatcher — this repo currently has at
|
|
25
|
+
* least two distinct `ToolRegistry` implementations
|
|
26
|
+
* (`v3/mcp/tool-registry.ts`, `v3/@claude-flow/mcp/src/tool-registry.ts`)
|
|
27
|
+
* plus a third under `@claude-flow/shared`, and it was not safe to guess
|
|
28
|
+
* which one is authoritative without risking silently wiring the wrong
|
|
29
|
+
* dispatch path. `AgentAuthorizationPropagator.checkToolCall` (ADR-144) is
|
|
30
|
+
* the natural composition point — call `verifyInvocationToken` first and
|
|
31
|
+
* only proceed to `checkToolCall` if it passes — but that composition is
|
|
32
|
+
* left to the caller rather than baked into `checkToolCall` itself, to
|
|
33
|
+
* avoid changing ADR-144's already-shipped, already-tested behavior.
|
|
34
|
+
*
|
|
35
|
+
* Key distribution (how callers obtain a private key to sign with in the
|
|
36
|
+
* first place) is explicitly out of scope — the ADR calls for "a follow-on
|
|
37
|
+
* ADR for key distribution" before this ships enabled by default, which is
|
|
38
|
+
* why `CLAUDE_FLOW_MCP_CALLER_AUTH` defaults to disabled.
|
|
39
|
+
*/
|
|
40
|
+
import type { KeyObject } from 'node:crypto';
|
|
41
|
+
export interface CallerIdentityKey {
|
|
42
|
+
privateKey: KeyObject;
|
|
43
|
+
publicKey: KeyObject;
|
|
44
|
+
publicKeyHex: string;
|
|
45
|
+
}
|
|
46
|
+
export interface InvocationToken {
|
|
47
|
+
/** Agent/principal id of the caller this token was issued to. */
|
|
48
|
+
callerId: string;
|
|
49
|
+
/** Tool this token authorizes — a token issued for one tool cannot be
|
|
50
|
+
* replayed against another. */
|
|
51
|
+
toolName: string;
|
|
52
|
+
/** Unix ms the token was issued. */
|
|
53
|
+
issuedAt: number;
|
|
54
|
+
/** Unix ms after which the token is no longer valid. */
|
|
55
|
+
expiresAt: number;
|
|
56
|
+
/** Random per-token value; prevents replay of an otherwise-identical
|
|
57
|
+
* token issued in the same millisecond. */
|
|
58
|
+
nonce: string;
|
|
59
|
+
/** Hex-encoded Ed25519 signature over the canonicalized fields above. */
|
|
60
|
+
signature: string;
|
|
61
|
+
}
|
|
62
|
+
export interface TokenVerificationResult {
|
|
63
|
+
valid: boolean;
|
|
64
|
+
reason?: 'expired' | 'bad-signature' | 'tool-mismatch';
|
|
65
|
+
}
|
|
66
|
+
/** Generate a fresh Ed25519 keypair. */
|
|
67
|
+
export declare function generateCallerIdentityKey(): CallerIdentityKey;
|
|
68
|
+
/** Load a caller-identity key from a PEM-encoded private key string. */
|
|
69
|
+
export declare function loadCallerIdentityKey(privateKeyPem: string): CallerIdentityKey;
|
|
70
|
+
/**
|
|
71
|
+
* Issue a fresh, signed `InvocationToken` for `callerId` to call `toolName`.
|
|
72
|
+
* Callers must present a *new* token per invocation — tokens are
|
|
73
|
+
* single-tool-bound and short-lived (`ttlMs`, default 30s) by design; there
|
|
74
|
+
* is no renewal API on purpose.
|
|
75
|
+
*/
|
|
76
|
+
export declare function issueInvocationToken(callerId: string, toolName: string, key: CallerIdentityKey, opts?: {
|
|
77
|
+
ttlMs?: number;
|
|
78
|
+
now?: number;
|
|
79
|
+
}): InvocationToken;
|
|
80
|
+
/**
|
|
81
|
+
* Verify an `InvocationToken` against the issuing caller's public key and
|
|
82
|
+
* (if provided) the tool the caller is about to invoke. Never throws.
|
|
83
|
+
*/
|
|
84
|
+
export declare function verifyInvocationToken(token: InvocationToken, publicKey: KeyObject, opts?: {
|
|
85
|
+
toolName?: string;
|
|
86
|
+
now?: number;
|
|
87
|
+
}): TokenVerificationResult;
|
|
88
|
+
/** Off by default — see the file header re: key distribution being out of scope pending a follow-on ADR. Only the literal `'true'` enables enforcement. */
|
|
89
|
+
export declare function isMcpCallerAuthEnabled(): boolean;
|
|
90
|
+
//# sourceMappingURL=mcp-caller-identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-caller-identity.d.ts","sourceRoot":"","sources":["../src/mcp-caller-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,SAAS,CAAC;IACtB,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB;mCAC+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB;+CAC2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,SAAS,GAAG,eAAe,GAAG,eAAe,CAAC;CACxD;AAeD,wCAAwC;AACxC,wBAAgB,yBAAyB,IAAI,iBAAiB,CAG7D;AAED,wEAAwE;AACxE,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,iBAAiB,CAI9E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,iBAAiB,EACtB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1C,eAAe,CAWjB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,SAAS,EACpB,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7C,uBAAuB,CAgBzB;AAQD,2JAA2J;AAC3J,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD"}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-caller-identity.js","sourceRoot":"","sources":["../src/mcp-caller-identity.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.
|
|
3
|
+
"version": "3.33.0",
|
|
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",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
sha256:6141a8ea990c5063b77e090ae8f37f9c539d8aa8f58dcceb30f3a82f97e57319
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"adoptedAt": 1785415360835,
|
|
3
|
-
"championId": "sha256:6141a8ea990c5063b77e090ae8f37f9c539d8aa8f58dcceb30f3a82f97e57319",
|
|
4
|
-
"manifest": {
|
|
5
|
-
"schema": "ruflo.proven-config/v1",
|
|
6
|
-
"policy": {
|
|
7
|
-
"ref": "sha256:6141a8ea990c5063b77e090ae8f37f9c539d8aa8f58dcceb30f3a82f97e57319",
|
|
8
|
-
"value": {
|
|
9
|
-
"alpha": 0.3,
|
|
10
|
-
"subjectWeight": 1,
|
|
11
|
-
"mmrLambda": 0.5,
|
|
12
|
-
"bodyWeight": 1.5,
|
|
13
|
-
"typePenaltyFactor": 0.5
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
"layer": "framework/node-cli",
|
|
17
|
-
"compatibility": {
|
|
18
|
-
"ruflo": ">=3.24.0"
|
|
19
|
-
},
|
|
20
|
-
"benchmark": {
|
|
21
|
-
"corpus": "ADR-081-labelled-v1",
|
|
22
|
-
"corpusHash": "sha256:2f700b5c363e20a3bd88ce2bc9b87bbbbaa61732c6177894c6ec37890f888982"
|
|
23
|
-
},
|
|
24
|
-
"receipt": {
|
|
25
|
-
"heldOutDelta": 0.07381404928570845,
|
|
26
|
-
"redblue": "PASS",
|
|
27
|
-
"drift": 0,
|
|
28
|
-
"canary": {
|
|
29
|
-
"rollbackRate": 0,
|
|
30
|
-
"latencyP95": 244.612458000076,
|
|
31
|
-
"costPerTask": 0
|
|
32
|
-
},
|
|
33
|
-
"receiptCoverage": 1
|
|
34
|
-
},
|
|
35
|
-
"platform": [
|
|
36
|
-
"linux",
|
|
37
|
-
"macOS",
|
|
38
|
-
"windows"
|
|
39
|
-
]
|
|
40
|
-
},
|
|
41
|
-
"previous": ""
|
|
42
|
-
}
|