@vinkius-core/mcp-fusion 2.7.0 → 2.8.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/dist/cli/fusion.d.ts +101 -0
- package/dist/cli/fusion.d.ts.map +1 -0
- package/dist/cli/fusion.js +333 -0
- package/dist/cli/fusion.js.map +1 -0
- package/dist/index.d.ts +41 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -1
- package/dist/introspection/BehaviorDigest.d.ts +112 -0
- package/dist/introspection/BehaviorDigest.d.ts.map +1 -0
- package/dist/introspection/BehaviorDigest.js +147 -0
- package/dist/introspection/BehaviorDigest.js.map +1 -0
- package/dist/introspection/CapabilityLockfile.d.ts +261 -0
- package/dist/introspection/CapabilityLockfile.d.ts.map +1 -0
- package/dist/introspection/CapabilityLockfile.js +392 -0
- package/dist/introspection/CapabilityLockfile.js.map +1 -0
- package/dist/introspection/ContractAwareSelfHealing.d.ts +90 -0
- package/dist/introspection/ContractAwareSelfHealing.d.ts.map +1 -0
- package/dist/introspection/ContractAwareSelfHealing.js +132 -0
- package/dist/introspection/ContractAwareSelfHealing.js.map +1 -0
- package/dist/introspection/ContractDiff.d.ts +91 -0
- package/dist/introspection/ContractDiff.d.ts.map +1 -0
- package/dist/introspection/ContractDiff.js +466 -0
- package/dist/introspection/ContractDiff.js.map +1 -0
- package/dist/introspection/CryptoAttestation.d.ts +143 -0
- package/dist/introspection/CryptoAttestation.d.ts.map +1 -0
- package/dist/introspection/CryptoAttestation.js +194 -0
- package/dist/introspection/CryptoAttestation.js.map +1 -0
- package/dist/introspection/EntitlementScanner.d.ts +177 -0
- package/dist/introspection/EntitlementScanner.d.ts.map +1 -0
- package/dist/introspection/EntitlementScanner.js +459 -0
- package/dist/introspection/EntitlementScanner.js.map +1 -0
- package/dist/introspection/GovernanceObserver.d.ts +88 -0
- package/dist/introspection/GovernanceObserver.d.ts.map +1 -0
- package/dist/introspection/GovernanceObserver.js +132 -0
- package/dist/introspection/GovernanceObserver.js.map +1 -0
- package/dist/introspection/SemanticProbe.d.ts +207 -0
- package/dist/introspection/SemanticProbe.d.ts.map +1 -0
- package/dist/introspection/SemanticProbe.js +255 -0
- package/dist/introspection/SemanticProbe.js.map +1 -0
- package/dist/introspection/TokenEconomics.d.ts +210 -0
- package/dist/introspection/TokenEconomics.d.ts.map +1 -0
- package/dist/introspection/TokenEconomics.js +286 -0
- package/dist/introspection/TokenEconomics.js.map +1 -0
- package/dist/introspection/ToolContract.d.ts +161 -0
- package/dist/introspection/ToolContract.d.ts.map +1 -0
- package/dist/introspection/ToolContract.js +192 -0
- package/dist/introspection/ToolContract.js.map +1 -0
- package/dist/introspection/canonicalize.d.ts +20 -0
- package/dist/introspection/canonicalize.d.ts.map +1 -0
- package/dist/introspection/canonicalize.js +51 -0
- package/dist/introspection/canonicalize.js.map +1 -0
- package/dist/introspection/index.d.ts +20 -0
- package/dist/introspection/index.d.ts.map +1 -1
- package/dist/introspection/index.js +20 -0
- package/dist/introspection/index.js.map +1 -1
- package/dist/observability/DebugObserver.d.ts +26 -1
- package/dist/observability/DebugObserver.d.ts.map +1 -1
- package/dist/observability/DebugObserver.js +8 -1
- package/dist/observability/DebugObserver.js.map +1 -1
- package/dist/observability/index.d.ts +1 -1
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js.map +1 -1
- package/dist/server/ServerAttachment.d.ts +41 -0
- package/dist/server/ServerAttachment.d.ts.map +1 -1
- package/dist/server/ServerAttachment.js +25 -1
- package/dist/server/ServerAttachment.js.map +1 -1
- package/package.json +8 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolContract.d.ts","sourceRoot":"","sources":["../../src/introspection/ToolContract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ToolContract — Behavioral Contract Materialization
|
|
3
|
+
*
|
|
4
|
+
* Unifies the declarative surface (tool names, schemas, tags) with
|
|
5
|
+
* the behavioral contract (Presenter egress schema, system rules,
|
|
6
|
+
* cognitive guardrails, middleware chain, state-sync policies) into
|
|
7
|
+
* a single, serializable, diffable, hashable artifact.
|
|
8
|
+
*
|
|
9
|
+
* **Key insight**: MCP Fusion's Presenter is not just a response
|
|
10
|
+
* formatter — it's a declarative behavioral specification. The Zod
|
|
11
|
+
* schema, system rules, agent limits, and affordances are all
|
|
12
|
+
* explicit, serializable contracts. By materializing them into a
|
|
13
|
+
* `ToolContract`, we create a fingerprint that changes when behavior
|
|
14
|
+
* changes — even if the MCP tool declaration stays identical.
|
|
15
|
+
*
|
|
16
|
+
* **Zero developer effort**: The contract materializes from what the
|
|
17
|
+
* developer has already declared. No annotations, no config, no
|
|
18
|
+
* ceremony — just `materializeContract(builder)`.
|
|
19
|
+
*
|
|
20
|
+
* Pure-function module: no state, no side effects.
|
|
21
|
+
*
|
|
22
|
+
* @module
|
|
23
|
+
*/
|
|
24
|
+
import {} from '../core/types.js';
|
|
25
|
+
import { sha256, canonicalize } from './canonicalize.js';
|
|
26
|
+
// ============================================================================
|
|
27
|
+
// Materialization
|
|
28
|
+
// ============================================================================
|
|
29
|
+
/**
|
|
30
|
+
* Materialize a `ToolContract` from a builder's public API.
|
|
31
|
+
*
|
|
32
|
+
* Extracts all behavioral metadata from the builder's introspection
|
|
33
|
+
* methods without accessing any private internals. This guarantees
|
|
34
|
+
* compatibility with any `ToolBuilder` implementation.
|
|
35
|
+
*
|
|
36
|
+
* @param builder - A registered tool builder
|
|
37
|
+
* @returns A fully materialized `ToolContract`
|
|
38
|
+
*/
|
|
39
|
+
export function materializeContract(builder) {
|
|
40
|
+
const toolDef = builder.buildToolDefinition();
|
|
41
|
+
const metadata = builder.getActionMetadata();
|
|
42
|
+
// Surface
|
|
43
|
+
const actions = {};
|
|
44
|
+
for (const action of metadata) {
|
|
45
|
+
actions[action.key] = {
|
|
46
|
+
description: action.description,
|
|
47
|
+
destructive: action.destructive,
|
|
48
|
+
idempotent: action.idempotent,
|
|
49
|
+
readOnly: action.readOnly,
|
|
50
|
+
requiredFields: action.requiredFields,
|
|
51
|
+
presenterName: action.presenterName,
|
|
52
|
+
inputSchemaDigest: sha256(JSON.stringify(action.requiredFields)),
|
|
53
|
+
hasMiddleware: action.hasMiddleware,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const surface = {
|
|
57
|
+
name: builder.getName(),
|
|
58
|
+
description: toolDef.description,
|
|
59
|
+
tags: builder.getTags(),
|
|
60
|
+
actions,
|
|
61
|
+
inputSchemaDigest: sha256(canonicalize(toolDef.inputSchema)),
|
|
62
|
+
};
|
|
63
|
+
// Behavior — extract from action metadata (Presenter introspection accessors)
|
|
64
|
+
const behavior = materializeBehavior(metadata, builder);
|
|
65
|
+
// Token Economics
|
|
66
|
+
const tokenEconomics = computeTokenEconomics(metadata, behavior);
|
|
67
|
+
// Entitlements — placeholder (real AST analysis in EntitlementScanner)
|
|
68
|
+
const entitlements = {
|
|
69
|
+
filesystem: false,
|
|
70
|
+
network: false,
|
|
71
|
+
subprocess: false,
|
|
72
|
+
crypto: false,
|
|
73
|
+
codeEvaluation: false,
|
|
74
|
+
raw: [],
|
|
75
|
+
};
|
|
76
|
+
return { surface, behavior, tokenEconomics, entitlements };
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Materialize the behavioral contract from action metadata.
|
|
80
|
+
* @internal
|
|
81
|
+
*/
|
|
82
|
+
function materializeBehavior(metadata, builder) {
|
|
83
|
+
// Collect Presenter data from the first action that declares one
|
|
84
|
+
let egressSchemaDigest = null;
|
|
85
|
+
let systemRulesFingerprint = 'none';
|
|
86
|
+
const affordanceTopology = [];
|
|
87
|
+
const embeddedPresenters = [];
|
|
88
|
+
// Collect unique Presenter metadata across all actions
|
|
89
|
+
const presenterSchemaKeys = new Set();
|
|
90
|
+
for (const action of metadata) {
|
|
91
|
+
if (action.presenterSchemaKeys) {
|
|
92
|
+
for (const key of action.presenterSchemaKeys) {
|
|
93
|
+
presenterSchemaKeys.add(key);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (action.presenterHasContextualRules) {
|
|
97
|
+
systemRulesFingerprint = 'dynamic';
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (presenterSchemaKeys.size > 0) {
|
|
101
|
+
const sortedKeys = [...presenterSchemaKeys].sort();
|
|
102
|
+
egressSchemaDigest = sha256(sortedKeys.join(','));
|
|
103
|
+
}
|
|
104
|
+
if (systemRulesFingerprint !== 'dynamic' && presenterSchemaKeys.size > 0) {
|
|
105
|
+
systemRulesFingerprint = 'static:' + sha256([...presenterSchemaKeys].sort().join(','));
|
|
106
|
+
}
|
|
107
|
+
// Middleware chain — extract names from builder
|
|
108
|
+
const middlewareChain = [];
|
|
109
|
+
// Cannot access private _middlewares, but we can infer from action metadata
|
|
110
|
+
for (const action of metadata) {
|
|
111
|
+
if (action.hasMiddleware) {
|
|
112
|
+
middlewareChain.push(`${action.key}:mw`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
egressSchemaDigest,
|
|
117
|
+
systemRulesFingerprint,
|
|
118
|
+
cognitiveGuardrails: {
|
|
119
|
+
agentLimitMax: null, // Extracted per-Presenter in extended materialization
|
|
120
|
+
egressMaxBytes: null,
|
|
121
|
+
},
|
|
122
|
+
middlewareChain,
|
|
123
|
+
stateSyncFingerprint: null, // Injected by StateSyncLayer integration
|
|
124
|
+
concurrencyFingerprint: null,
|
|
125
|
+
affordanceTopology,
|
|
126
|
+
embeddedPresenters,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Compute token economics profile from contract metadata.
|
|
131
|
+
* @internal
|
|
132
|
+
*/
|
|
133
|
+
function computeTokenEconomics(metadata, behavior) {
|
|
134
|
+
// Count schema fields across all Presenters
|
|
135
|
+
let schemaFieldCount = 0;
|
|
136
|
+
const seenPresenters = new Set();
|
|
137
|
+
for (const action of metadata) {
|
|
138
|
+
if (action.presenterName && !seenPresenters.has(action.presenterName)) {
|
|
139
|
+
seenPresenters.add(action.presenterName);
|
|
140
|
+
schemaFieldCount += action.presenterSchemaKeys?.length ?? 0;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Unbounded collection risk
|
|
144
|
+
const unboundedCollection = behavior.cognitiveGuardrails.agentLimitMax === null
|
|
145
|
+
&& schemaFieldCount > 0;
|
|
146
|
+
// Base overhead estimation (~4 chars per token, GPT heuristic)
|
|
147
|
+
// Rules: ~50 tokens each, UI blocks: ~100 tokens each
|
|
148
|
+
const rulesOverhead = behavior.systemRulesFingerprint !== 'none' ? 50 : 0;
|
|
149
|
+
const affordanceOverhead = behavior.affordanceTopology.length * 20;
|
|
150
|
+
const baseOverheadTokens = rulesOverhead + affordanceOverhead;
|
|
151
|
+
// Inflation risk — derived from guardrails and schema density
|
|
152
|
+
const inflationRisk = classifyInflationRisk(unboundedCollection, schemaFieldCount);
|
|
153
|
+
return {
|
|
154
|
+
schemaFieldCount,
|
|
155
|
+
unboundedCollection,
|
|
156
|
+
baseOverheadTokens,
|
|
157
|
+
inflationRisk,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
// ============================================================================
|
|
161
|
+
// Server-Level Contract Compilation
|
|
162
|
+
// ============================================================================
|
|
163
|
+
/**
|
|
164
|
+
* Compile contracts for all tools in a registry.
|
|
165
|
+
*
|
|
166
|
+
* @param builders - Iterable of all registered tool builders
|
|
167
|
+
* @returns Record mapping tool names to their materialized contracts
|
|
168
|
+
*/
|
|
169
|
+
export function compileContracts(builders) {
|
|
170
|
+
const contracts = {};
|
|
171
|
+
for (const builder of builders) {
|
|
172
|
+
const contract = materializeContract(builder);
|
|
173
|
+
contracts[contract.surface.name] = contract;
|
|
174
|
+
}
|
|
175
|
+
return contracts;
|
|
176
|
+
}
|
|
177
|
+
// ============================================================================
|
|
178
|
+
// Internals
|
|
179
|
+
// ============================================================================
|
|
180
|
+
/** @internal */
|
|
181
|
+
function classifyInflationRisk(unbounded, fieldCount) {
|
|
182
|
+
if (unbounded && fieldCount > 10)
|
|
183
|
+
return 'critical';
|
|
184
|
+
if (unbounded)
|
|
185
|
+
return 'high';
|
|
186
|
+
if (fieldCount > 20)
|
|
187
|
+
return 'medium';
|
|
188
|
+
return 'low';
|
|
189
|
+
}
|
|
190
|
+
// ── Re-export shared utilities for public API stability ──
|
|
191
|
+
export { sha256, canonicalize } from './canonicalize.js';
|
|
192
|
+
//# sourceMappingURL=ToolContract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolContract.js","sourceRoot":"","sources":["../../src/introspection/ToolContract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SHA-256 hash of a string, returned as lowercase hex.
|
|
3
|
+
*
|
|
4
|
+
* @param input - The string to hash
|
|
5
|
+
* @returns 64-character hex digest
|
|
6
|
+
*/
|
|
7
|
+
export declare function sha256(input: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Canonical JSON serialization with deterministic key ordering.
|
|
10
|
+
*
|
|
11
|
+
* Guarantees that two structurally identical objects produce
|
|
12
|
+
* the same string regardless of property insertion order.
|
|
13
|
+
* This is critical for content-addressed hashing — the same
|
|
14
|
+
* contract must always produce the same digest.
|
|
15
|
+
*
|
|
16
|
+
* @param obj - The value to serialize
|
|
17
|
+
* @returns Deterministic JSON string
|
|
18
|
+
*/
|
|
19
|
+
export declare function canonicalize(obj: unknown): string;
|
|
20
|
+
//# sourceMappingURL=canonicalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonicalize.d.ts","sourceRoot":"","sources":["../../src/introspection/canonicalize.ts"],"names":[],"mappings":"AAgBA;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5C;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAYjD"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical — Shared Cryptographic Primitives
|
|
3
|
+
*
|
|
4
|
+
* Deterministic JSON serialization and SHA-256 hashing
|
|
5
|
+
* used across governance modules. Single source of truth
|
|
6
|
+
* eliminates duplication and guarantees behavioral consistency.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
import { createHash } from 'node:crypto';
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Hashing
|
|
14
|
+
// ============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* SHA-256 hash of a string, returned as lowercase hex.
|
|
17
|
+
*
|
|
18
|
+
* @param input - The string to hash
|
|
19
|
+
* @returns 64-character hex digest
|
|
20
|
+
*/
|
|
21
|
+
export function sha256(input) {
|
|
22
|
+
return createHash('sha256').update(input, 'utf8').digest('hex');
|
|
23
|
+
}
|
|
24
|
+
// ============================================================================
|
|
25
|
+
// Serialization
|
|
26
|
+
// ============================================================================
|
|
27
|
+
/**
|
|
28
|
+
* Canonical JSON serialization with deterministic key ordering.
|
|
29
|
+
*
|
|
30
|
+
* Guarantees that two structurally identical objects produce
|
|
31
|
+
* the same string regardless of property insertion order.
|
|
32
|
+
* This is critical for content-addressed hashing — the same
|
|
33
|
+
* contract must always produce the same digest.
|
|
34
|
+
*
|
|
35
|
+
* @param obj - The value to serialize
|
|
36
|
+
* @returns Deterministic JSON string
|
|
37
|
+
*/
|
|
38
|
+
export function canonicalize(obj) {
|
|
39
|
+
return JSON.stringify(obj, (_key, value) => {
|
|
40
|
+
if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
|
|
41
|
+
return Object.keys(value)
|
|
42
|
+
.sort()
|
|
43
|
+
.reduce((sorted, k) => {
|
|
44
|
+
sorted[k] = value[k];
|
|
45
|
+
return sorted;
|
|
46
|
+
}, {});
|
|
47
|
+
}
|
|
48
|
+
return value;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=canonicalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonicalize.js","sourceRoot":"","sources":["../../src/introspection/canonicalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,KAAa;IAChC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpE,CAAC;AAED,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY;IACrC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACvC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC;iBAC/C,IAAI,EAAE;iBACN,MAAM,CAA0B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,CAAC,CAAC,CAAC,GAAI,KAAiC,CAAC,CAAC,CAAC,CAAC;gBAClD,OAAO,MAAM,CAAC;YAClB,CAAC,EAAE,EAAE,CAAC,CAAC;QACf,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -3,4 +3,24 @@ export { compileManifest, cloneManifest } from './ManifestCompiler.js';
|
|
|
3
3
|
export { registerIntrospectionResource } from './IntrospectionResource.js';
|
|
4
4
|
export type { IntrospectionConfig, ManifestPayload, ManifestCapabilities, ManifestTool, ManifestAction, ManifestPresenter, } from './types.js';
|
|
5
5
|
export type { IntrospectionRegistryDelegate } from './IntrospectionResource.js';
|
|
6
|
+
export { materializeContract, compileContracts, sha256, canonicalize, } from './ToolContract.js';
|
|
7
|
+
export type { ToolContract, ToolSurface, ActionContract, ToolBehavior, CognitiveGuardrailsContract, TokenEconomicsProfile, HandlerEntitlements, } from './ToolContract.js';
|
|
8
|
+
export { diffContracts, formatDiffReport, formatDeltasAsXml, } from './ContractDiff.js';
|
|
9
|
+
export type { ContractDelta, ContractDiffResult, DeltaSeverity, DeltaCategory, } from './ContractDiff.js';
|
|
10
|
+
export { computeDigest, computeServerDigest, compareServerDigests, } from './BehaviorDigest.js';
|
|
11
|
+
export type { BehaviorDigestResult, DigestComponents, ServerDigest, DigestComparison, } from './BehaviorDigest.js';
|
|
12
|
+
export { generateLockfile, serializeLockfile, checkLockfile, parseLockfile, writeLockfile, readLockfile, LOCKFILE_NAME, } from './CapabilityLockfile.js';
|
|
13
|
+
export type { CapabilityLockfile, LockfileCapabilities, LockfileTool, LockfileToolSurface, LockfileToolBehavior, LockfileTokenEconomics, LockfileEntitlements, LockfileCheckResult, LockfilePrompt, LockfilePromptArgument, PromptBuilderLike, GenerateLockfileOptions, } from './CapabilityLockfile.js';
|
|
14
|
+
export { createHmacSigner, attestServerDigest, verifyAttestation, verifyCapabilityPin, buildTrustCapability, AttestationError, } from './CryptoAttestation.js';
|
|
15
|
+
export type { ZeroTrustConfig, AttestationSigner, AttestationResult, FusionTrustCapability, } from './CryptoAttestation.js';
|
|
16
|
+
export { estimateTokens, profileBlock, profileResponse, computeStaticProfile, aggregateProfiles, } from './TokenEconomics.js';
|
|
17
|
+
export type { TokenAnalysis, BlockTokenProfile, TokenRisk, TokenThresholds, TokenEconomicsConfig, StaticTokenProfile, FieldTokenEstimate, ServerTokenSummary, } from './TokenEconomics.js';
|
|
18
|
+
export { scanSource, buildEntitlements, validateClaims, scanAndValidate, scanEvasionIndicators, } from './EntitlementScanner.js';
|
|
19
|
+
export type { EntitlementReport, EntitlementMatch, EntitlementViolation, EntitlementCategory, EntitlementClaims, EvasionIndicator, EvasionType, } from './EntitlementScanner.js';
|
|
20
|
+
export { createProbe, buildJudgePrompt, parseJudgeResponse, evaluateProbe, evaluateProbes, aggregateResults, } from './SemanticProbe.js';
|
|
21
|
+
export type { SemanticProbeConfig, SemanticProbeAdapter, SemanticThresholds, SemanticProbe, ProbeContractContext, SemanticProbeResult, DriftLevel, SemanticProbeReport, } from './SemanticProbe.js';
|
|
22
|
+
export { enrichValidationError, createToolEnhancer, } from './ContractAwareSelfHealing.js';
|
|
23
|
+
export type { SelfHealingConfig, SelfHealingResult, } from './ContractAwareSelfHealing.js';
|
|
24
|
+
export { createGovernanceObserver, createNoopObserver, } from './GovernanceObserver.js';
|
|
25
|
+
export type { GovernanceObserverConfig, GovernanceObserver, } from './GovernanceObserver.js';
|
|
6
26
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/introspection/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,YAAY,EACR,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,iBAAiB,GACpB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/introspection/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,24 @@
|
|
|
1
1
|
/** Introspection Module — Barrel Export */
|
|
2
2
|
export { compileManifest, cloneManifest } from './ManifestCompiler.js';
|
|
3
3
|
export { registerIntrospectionResource } from './IntrospectionResource.js';
|
|
4
|
+
// ── Contract Materialization ─────────────────────────────
|
|
5
|
+
export { materializeContract, compileContracts, sha256, canonicalize, } from './ToolContract.js';
|
|
6
|
+
// ── Contract Diffing ─────────────────────────────────────
|
|
7
|
+
export { diffContracts, formatDiffReport, formatDeltasAsXml, } from './ContractDiff.js';
|
|
8
|
+
// ── Behavioral Fingerprinting ────────────────────────────
|
|
9
|
+
export { computeDigest, computeServerDigest, compareServerDigests, } from './BehaviorDigest.js';
|
|
10
|
+
// ── Capability Lockfile ──────────────────────────────────
|
|
11
|
+
export { generateLockfile, serializeLockfile, checkLockfile, parseLockfile, writeLockfile, readLockfile, LOCKFILE_NAME, } from './CapabilityLockfile.js';
|
|
12
|
+
// ── Zero-Trust Runtime ───────────────────────────────────
|
|
13
|
+
export { createHmacSigner, attestServerDigest, verifyAttestation, verifyCapabilityPin, buildTrustCapability, AttestationError, } from './CryptoAttestation.js';
|
|
14
|
+
// ── Token Economics ──────────────────────────────────────
|
|
15
|
+
export { estimateTokens, profileBlock, profileResponse, computeStaticProfile, aggregateProfiles, } from './TokenEconomics.js';
|
|
16
|
+
// ── Entitlement Scanner (Blast Radius) ───────────────────
|
|
17
|
+
export { scanSource, buildEntitlements, validateClaims, scanAndValidate, scanEvasionIndicators, } from './EntitlementScanner.js';
|
|
18
|
+
// ── Semantic Probing (LLM-as-Judge) ──────────────────────
|
|
19
|
+
export { createProbe, buildJudgePrompt, parseJudgeResponse, evaluateProbe, evaluateProbes, aggregateResults, } from './SemanticProbe.js';
|
|
20
|
+
// ── Self-Healing Context ─────────────────────────────────
|
|
21
|
+
export { enrichValidationError, createToolEnhancer, } from './ContractAwareSelfHealing.js';
|
|
22
|
+
// ── Governance Observer (Observability Bridge) ───────────
|
|
23
|
+
export { createGovernanceObserver, createNoopObserver, } from './GovernanceObserver.js';
|
|
4
24
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/introspection/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/introspection/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAW3E,4DAA4D;AAC5D,OAAO,EACH,mBAAmB,EACnB,gBAAgB,EAChB,MAAM,EACN,YAAY,GACf,MAAM,mBAAmB,CAAC;AAW3B,4DAA4D;AAC5D,OAAO,EACH,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GACpB,MAAM,mBAAmB,CAAC;AAQ3B,4DAA4D;AAC5D,OAAO,EACH,aAAa,EACb,mBAAmB,EACnB,oBAAoB,GACvB,MAAM,qBAAqB,CAAC;AAQ7B,4DAA4D;AAC5D,OAAO,EACH,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,GAChB,MAAM,yBAAyB,CAAC;AAgBjC,4DAA4D;AAC5D,OAAO,EACH,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACnB,MAAM,wBAAwB,CAAC;AAQhC,4DAA4D;AAC5D,OAAO,EACH,cAAc,EACd,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,iBAAiB,GACpB,MAAM,qBAAqB,CAAC;AAY7B,4DAA4D;AAC5D,OAAO,EACH,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,qBAAqB,GACxB,MAAM,yBAAyB,CAAC;AAWjC,4DAA4D;AAC5D,OAAO,EACH,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,gBAAgB,GACnB,MAAM,oBAAoB,CAAC;AAY5B,4DAA4D;AAC5D,OAAO,EACH,qBAAqB,EACrB,kBAAkB,GACrB,MAAM,+BAA+B,CAAC;AAMvC,4DAA4D;AAC5D,OAAO,EACH,wBAAwB,EACxB,kBAAkB,GACrB,MAAM,yBAAyB,CAAC"}
|
|
@@ -96,6 +96,31 @@ export interface ErrorEvent {
|
|
|
96
96
|
readonly step: 'route' | 'validate' | 'middleware' | 'execute';
|
|
97
97
|
readonly timestamp: number;
|
|
98
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Emitted during governance operations (contract materialization,
|
|
101
|
+
* lockfile generation, integrity verification, attestation).
|
|
102
|
+
*
|
|
103
|
+
* Connects the introspection/governance modules to observability,
|
|
104
|
+
* enabling debug logging and telemetry for CI/CD pipeline steps.
|
|
105
|
+
*/
|
|
106
|
+
export interface GovernanceEvent {
|
|
107
|
+
readonly type: 'governance';
|
|
108
|
+
/** Which governance operation ran */
|
|
109
|
+
readonly operation: GovernanceOperation;
|
|
110
|
+
/** Human-readable label */
|
|
111
|
+
readonly label: string;
|
|
112
|
+
/** Outcome of the operation */
|
|
113
|
+
readonly outcome: 'success' | 'failure' | 'drift';
|
|
114
|
+
/** Optional details (e.g. "3 tools compiled", "lockfile stale") */
|
|
115
|
+
readonly detail?: string;
|
|
116
|
+
/** Milliseconds spent in this operation */
|
|
117
|
+
readonly durationMs: number;
|
|
118
|
+
readonly timestamp: number;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Named governance operations that emit debug/tracing events.
|
|
122
|
+
*/
|
|
123
|
+
export type GovernanceOperation = 'contract.compile' | 'contract.diff' | 'digest.compute' | 'lockfile.generate' | 'lockfile.check' | 'lockfile.write' | 'lockfile.read' | 'attestation.sign' | 'attestation.verify' | 'entitlement.scan' | 'token.profile';
|
|
99
124
|
/**
|
|
100
125
|
* Union of all debug event types.
|
|
101
126
|
*
|
|
@@ -112,7 +137,7 @@ export interface ErrorEvent {
|
|
|
112
137
|
* }
|
|
113
138
|
* ```
|
|
114
139
|
*/
|
|
115
|
-
export type DebugEvent = RouteEvent | ValidateEvent | MiddlewareEvent | ExecuteEvent | ErrorEvent;
|
|
140
|
+
export type DebugEvent = RouteEvent | ValidateEvent | MiddlewareEvent | ExecuteEvent | ErrorEvent | GovernanceEvent;
|
|
116
141
|
/**
|
|
117
142
|
* Observer function that receives debug events.
|
|
118
143
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DebugObserver.d.ts","sourceRoot":"","sources":["../../src/observability/DebugObserver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAMH;;;GAGG;AACH,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,mDAAmD;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,2CAA2C;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,2DAA2D;IAC3D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iDAAiD;IACjD,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC;IAC/D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,UAAU,GAChB,UAAU,GACV,aAAa,GACb,eAAe,GACf,YAAY,GACZ,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"DebugObserver.d.ts","sourceRoot":"","sources":["../../src/observability/DebugObserver.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,7 +66,14 @@ export function createDebugObserver(handler) {
|
|
|
66
66
|
return handler;
|
|
67
67
|
return (event) => {
|
|
68
68
|
const prefix = '[mcp-fusion]';
|
|
69
|
-
|
|
69
|
+
// GovernanceEvent has no tool/action — handle separately
|
|
70
|
+
if (event.type === 'governance') {
|
|
71
|
+
const outcomeIcon = event.outcome === 'success' ? '✓' : event.outcome === 'drift' ? '⚠' : '✗';
|
|
72
|
+
const detail = event.detail ? ` ${event.detail}` : '';
|
|
73
|
+
console.debug(`${prefix} gov ${event.operation} ${outcomeIcon}${detail} ${event.durationMs.toFixed(1)}ms`);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const path = event.action
|
|
70
77
|
? `${event.tool}/${event.action}`
|
|
71
78
|
: event.tool;
|
|
72
79
|
switch (event.type) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DebugObserver.js","sourceRoot":"","sources":["../../src/observability/DebugObserver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;
|
|
1
|
+
{"version":3,"file":"DebugObserver.js","sourceRoot":"","sources":["../../src/observability/DebugObserver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAmJH,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAyB;IACzD,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,OAAO,CAAC,KAAiB,EAAQ,EAAE;QAC/B,MAAM,MAAM,GAAG,cAAc,CAAC;QAE9B,yDAAyD;QACzD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC9B,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC9F,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,cAAc,KAAK,CAAC,SAAS,IAAI,WAAW,GAAG,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACjH,OAAO;QACX,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM;YACrB,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE;YACjC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QAEjB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,OAAO;gBACR,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,cAAc,IAAI,EAAE,CAAC,CAAC;gBAC7C,MAAM;YAEV,KAAK,UAAU,CAAC,CAAC,CAAC;gBACd,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;gBAC5D,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,cAAc,IAAI,IAAI,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACxF,MAAM;YACV,CAAC;YAED,KAAK,YAAY;gBACb,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,cAAc,IAAI,KAAK,KAAK,CAAC,WAAW,aAAa,CAAC,CAAC;gBAC9E,MAAM;YAEV,KAAK,SAAS,CAAC,CAAC,CAAC;gBACb,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBACvC,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,cAAc,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACtF,MAAM;YACV,CAAC;YAED,KAAK,OAAO;gBACR,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,cAAc,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC5E,MAAM;QACd,CAAC;IACL,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Public API for debug observers and OpenTelemetry-compatible tracing.
|
|
5
5
|
*/
|
|
6
6
|
export { createDebugObserver } from './DebugObserver.js';
|
|
7
|
-
export type { DebugEvent, DebugObserverFn, RouteEvent, ValidateEvent, MiddlewareEvent, ExecuteEvent, ErrorEvent, } from './DebugObserver.js';
|
|
7
|
+
export type { DebugEvent, DebugObserverFn, RouteEvent, ValidateEvent, MiddlewareEvent, ExecuteEvent, ErrorEvent, GovernanceEvent, GovernanceOperation, } from './DebugObserver.js';
|
|
8
8
|
export { SpanStatusCode } from './Tracing.js';
|
|
9
9
|
export type { FusionSpan, FusionTracer, FusionAttributeValue } from './Tracing.js';
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EACR,UAAU,EAAE,eAAe,EAC3B,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EACR,UAAU,EAAE,eAAe,EAC3B,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EACpE,eAAe,EAAE,mBAAmB,GACvC,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,4DAA4D;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,4DAA4D;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAOzD,4DAA4D;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -6,6 +6,8 @@ import { type DebugObserverFn } from '../observability/DebugObserver.js';
|
|
|
6
6
|
import { type FusionTracer } from '../observability/Tracing.js';
|
|
7
7
|
import { type StateSyncConfig } from '../state-sync/types.js';
|
|
8
8
|
import { type IntrospectionConfig } from '../introspection/types.js';
|
|
9
|
+
import { type ZeroTrustConfig } from '../introspection/CryptoAttestation.js';
|
|
10
|
+
import { type SelfHealingConfig } from '../introspection/ContractAwareSelfHealing.js';
|
|
9
11
|
import { type ToolExposition } from '../exposition/types.js';
|
|
10
12
|
import { type PromptRegistry } from '../prompt/PromptRegistry.js';
|
|
11
13
|
/** Options for attaching to an MCP Server */
|
|
@@ -191,6 +193,45 @@ export interface AttachOptions<TContext> {
|
|
|
191
193
|
* @see {@link definePrompt} for creating prompts
|
|
192
194
|
*/
|
|
193
195
|
prompts?: PromptRegistry<TContext>;
|
|
196
|
+
/**
|
|
197
|
+
* Enable Zero-Trust runtime verification for behavioral contracts.
|
|
198
|
+
*
|
|
199
|
+
* When configured, the framework:
|
|
200
|
+
* 1. Materializes ToolContracts from all registered builders
|
|
201
|
+
* 2. Computes a server-level behavioral digest
|
|
202
|
+
* 3. Optionally verifies against a known-good digest (capability pinning)
|
|
203
|
+
* 4. Exposes the trust capability via MCP server metadata
|
|
204
|
+
*
|
|
205
|
+
* Zero overhead when omitted — no cryptographic operations run.
|
|
206
|
+
*
|
|
207
|
+
* @example
|
|
208
|
+
* ```typescript
|
|
209
|
+
* registry.attachToServer(server, {
|
|
210
|
+
* contextFactory: createContext,
|
|
211
|
+
* zeroTrust: {
|
|
212
|
+
* signer: 'hmac',
|
|
213
|
+
* secret: process.env.FUSION_SIGNING_SECRET,
|
|
214
|
+
* expectedDigest: process.env.FUSION_EXPECTED_DIGEST,
|
|
215
|
+
* failOnMismatch: process.env.NODE_ENV === 'production',
|
|
216
|
+
* },
|
|
217
|
+
* });
|
|
218
|
+
* ```
|
|
219
|
+
*
|
|
220
|
+
* @see {@link ZeroTrustConfig} for configuration options
|
|
221
|
+
*/
|
|
222
|
+
zeroTrust?: ZeroTrustConfig;
|
|
223
|
+
/**
|
|
224
|
+
* Enable contract-aware self-healing for validation errors.
|
|
225
|
+
*
|
|
226
|
+
* When configured, Zod validation errors are enriched with
|
|
227
|
+
* contract change context, helping the LLM self-correct
|
|
228
|
+
* when the tool's behavioral contract has changed.
|
|
229
|
+
*
|
|
230
|
+
* Zero overhead when omitted or when no contract deltas exist.
|
|
231
|
+
*
|
|
232
|
+
* @see {@link SelfHealingConfig} for configuration options
|
|
233
|
+
*/
|
|
234
|
+
selfHealing?: SelfHealingConfig;
|
|
194
235
|
}
|
|
195
236
|
/** Function to detach the registry from the server */
|
|
196
237
|
export type DetachFn = () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerAttachment.d.ts","sourceRoot":"","sources":["../../src/server/ServerAttachment.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,IAAI,IAAI,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,KAAK,YAAY,EAAS,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,qCAAqC,CAAC;AAE5F,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,KAAK,cAAc,EAAqB,MAAM,6BAA6B,CAAC;AAkCrF,6CAA6C;AAC7C,MAAM,WAAW,aAAa,CAAC,QAAQ;IACnC,mDAAmD;IACnD,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACpE;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClE;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC;IAExB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,aAAa,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAE9C;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAIpB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAIzB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ServerAttachment.d.ts","sourceRoot":"","sources":["../../src/server/ServerAttachment.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,10 @@ import { StateSyncLayer } from '../state-sync/StateSyncLayer.js';
|
|
|
20
20
|
import {} from '../state-sync/types.js';
|
|
21
21
|
import {} from '../introspection/types.js';
|
|
22
22
|
import { registerIntrospectionResource } from '../introspection/IntrospectionResource.js';
|
|
23
|
+
import { AttestationError } from '../introspection/CryptoAttestation.js';
|
|
24
|
+
import {} from '../introspection/ContractAwareSelfHealing.js';
|
|
25
|
+
import { compileContracts } from '../introspection/ToolContract.js';
|
|
26
|
+
import { computeServerDigest } from '../introspection/BehaviorDigest.js';
|
|
23
27
|
import {} from '../exposition/types.js';
|
|
24
28
|
import { compileExposition } from '../exposition/ExpositionCompiler.js';
|
|
25
29
|
import {} from '../prompt/PromptRegistry.js';
|
|
@@ -179,7 +183,7 @@ function createDetachFn(resolved, hasPrompts) {
|
|
|
179
183
|
*/
|
|
180
184
|
export function attachToServer(server, registry, options = {}) {
|
|
181
185
|
const resolved = resolveServer(server);
|
|
182
|
-
const { filter, contextFactory, debug, tracing, stateSync, introspection, serverName, toolExposition = 'flat', actionSeparator = '_', prompts, } = options;
|
|
186
|
+
const { filter, contextFactory, debug, tracing, stateSync, introspection, serverName, toolExposition = 'flat', actionSeparator = '_', prompts, zeroTrust, } = options;
|
|
183
187
|
// 1. Propagate observability to all registered builders
|
|
184
188
|
propagateObservability(registry, debug, tracing);
|
|
185
189
|
// 2. Create State Sync layer (zero overhead when not configured)
|
|
@@ -188,6 +192,26 @@ export function attachToServer(server, registry, options = {}) {
|
|
|
188
192
|
if (introspection?.enabled) {
|
|
189
193
|
registerIntrospectionResource(resolved, introspection, serverName ?? 'mcp-fusion-server', { values: () => registry.getBuilders() }, contextFactory);
|
|
190
194
|
}
|
|
195
|
+
// 3b. Zero-Trust: compile contracts, compute digest, verify attestation
|
|
196
|
+
// Zero overhead when not configured — no crypto operations run.
|
|
197
|
+
if (zeroTrust) {
|
|
198
|
+
const contracts = compileContracts(registry.getBuilders());
|
|
199
|
+
const serverDigest = computeServerDigest(contracts);
|
|
200
|
+
// Synchronous digest comparison (no signer needed for pinning)
|
|
201
|
+
if (zeroTrust.expectedDigest && serverDigest.digest !== zeroTrust.expectedDigest) {
|
|
202
|
+
if (zeroTrust.failOnMismatch ?? true) {
|
|
203
|
+
throw new AttestationError(`[MCP Fusion] Zero-Trust attestation failed: computed digest ${serverDigest.digest} does not match expected ${zeroTrust.expectedDigest}`, {
|
|
204
|
+
valid: false,
|
|
205
|
+
computedDigest: serverDigest.digest,
|
|
206
|
+
expectedDigest: zeroTrust.expectedDigest,
|
|
207
|
+
signature: null,
|
|
208
|
+
signerName: typeof zeroTrust.signer === 'string' ? zeroTrust.signer : zeroTrust.signer.name,
|
|
209
|
+
attestedAt: new Date().toISOString(),
|
|
210
|
+
error: `Digest mismatch: ${serverDigest.digest} !== ${zeroTrust.expectedDigest}`,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
191
215
|
// 4. Build handler context (shared state for all handler factories)
|
|
192
216
|
const hCtx = {
|
|
193
217
|
registry,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerAttachment.js","sourceRoot":"","sources":["../../src/server/ServerAttachment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EACH,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,GACzB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAwB,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAqB,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAoB,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAyC,MAAM,qCAAqC,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAwB,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAqB,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAwB,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAA4B,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,2CAA2C,CAAC;AAC1F,OAAO,EAAuB,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAyC,MAAM,qCAAqC,CAAC;AAC/G,OAAO,EAA0C,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"ServerAttachment.js","sourceRoot":"","sources":["../../src/server/ServerAttachment.ts"],"names":[],"mappings":"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"}
|