@vinkius-core/mcp-fusion 2.6.0 → 2.8.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/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/client/FusionClient.d.ts +122 -1
- package/dist/client/FusionClient.d.ts.map +1 -1
- package/dist/client/FusionClient.js +173 -11
- package/dist/client/FusionClient.js.map +1 -1
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/core/StandardSchema.d.ts +178 -0
- package/dist/core/StandardSchema.d.ts.map +1 -0
- package/dist/core/StandardSchema.js +166 -0
- package/dist/core/StandardSchema.js.map +1 -0
- package/dist/core/createGroup.d.ts +140 -0
- package/dist/core/createGroup.d.ts.map +1 -0
- package/dist/core/createGroup.js +133 -0
- package/dist/core/createGroup.js.map +1 -0
- package/dist/core/execution/ExecutionPipeline.d.ts.map +1 -1
- package/dist/core/execution/ExecutionPipeline.js +6 -2
- package/dist/core/execution/ExecutionPipeline.js.map +1 -1
- package/dist/core/index.d.ts +7 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +6 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/initFusion.d.ts +201 -0
- package/dist/core/initFusion.d.ts.map +1 -0
- package/dist/core/initFusion.js +134 -0
- package/dist/core/initFusion.js.map +1 -0
- package/dist/core/response.d.ts +49 -2
- package/dist/core/response.d.ts.map +1 -1
- package/dist/core/response.js +27 -5
- package/dist/core/response.js.map +1 -1
- package/dist/index.d.ts +57 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -4
- 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 +146 -0
- package/dist/introspection/BehaviorDigest.js.map +1 -0
- package/dist/introspection/CapabilityLockfile.d.ts +259 -0
- package/dist/introspection/CapabilityLockfile.d.ts.map +1 -0
- package/dist/introspection/CapabilityLockfile.js +391 -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 +124 -0
- package/dist/introspection/EntitlementScanner.d.ts.map +1 -0
- package/dist/introspection/EntitlementScanner.js +244 -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 +159 -0
- package/dist/introspection/ToolContract.d.ts.map +1 -0
- package/dist/introspection/ToolContract.js +191 -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/presenter/ZodDescriptionExtractor.d.ts +54 -0
- package/dist/presenter/ZodDescriptionExtractor.d.ts.map +1 -0
- package/dist/presenter/ZodDescriptionExtractor.js +131 -0
- package/dist/presenter/ZodDescriptionExtractor.js.map +1 -0
- package/dist/presenter/definePresenter.d.ts +172 -0
- package/dist/presenter/definePresenter.d.ts.map +1 -0
- package/dist/presenter/definePresenter.js +96 -0
- package/dist/presenter/definePresenter.js.map +1 -0
- package/dist/presenter/index.d.ts +3 -0
- package/dist/presenter/index.d.ts.map +1 -1
- package/dist/presenter/index.js +4 -0
- package/dist/presenter/index.js.map +1 -1
- package/dist/server/DevServer.d.ts +96 -0
- package/dist/server/DevServer.d.ts.map +1 -0
- package/dist/server/DevServer.js +187 -0
- package/dist/server/DevServer.js.map +1 -0
- 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/dist/server/autoDiscover.d.ts +63 -0
- package/dist/server/autoDiscover.d.ts.map +1 -0
- package/dist/server/autoDiscover.js +157 -0
- package/dist/server/autoDiscover.js.map +1 -0
- package/dist/server/index.d.ts +4 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +4 -0
- package/dist/server/index.js.map +1 -1
- package/dist/state-sync/PolicyValidator.d.ts +36 -0
- package/dist/state-sync/PolicyValidator.d.ts.map +1 -1
- package/dist/state-sync/PolicyValidator.js +35 -0
- package/dist/state-sync/PolicyValidator.js.map +1 -1
- package/dist/state-sync/ResponseDecorator.d.ts.map +1 -1
- package/dist/state-sync/ResponseDecorator.js +2 -1
- package/dist/state-sync/ResponseDecorator.js.map +1 -1
- package/dist/state-sync/StateSyncLayer.d.ts +5 -4
- package/dist/state-sync/StateSyncLayer.d.ts.map +1 -1
- package/dist/state-sync/StateSyncLayer.js +35 -4
- package/dist/state-sync/StateSyncLayer.js.map +1 -1
- package/dist/state-sync/index.d.ts +3 -1
- package/dist/state-sync/index.d.ts.map +1 -1
- package/dist/state-sync/index.js +1 -0
- package/dist/state-sync/index.js.map +1 -1
- package/dist/state-sync/types.d.ts +62 -0
- package/dist/state-sync/types.d.ts.map +1 -1
- package/package.json +45 -1
|
@@ -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, } from './EntitlementScanner.js';
|
|
19
|
+
export type { EntitlementReport, EntitlementMatch, EntitlementViolation, EntitlementCategory, EntitlementClaims, } 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, } 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,GAClB,MAAM,yBAAyB,CAAC;AASjC,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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ZodDescriptionExtractor — Automatic Prompt Extraction from Zod .describe()
|
|
3
|
+
*
|
|
4
|
+
* Walks a Zod schema's AST and collects `.describe()` annotations from
|
|
5
|
+
* every field. These descriptions are injected as system rules via
|
|
6
|
+
* Context Tree-Shaking, eliminating the need for manual `systemRules`
|
|
7
|
+
* when the Zod schema already carries domain-specific constraints.
|
|
8
|
+
*
|
|
9
|
+
* This ensures documentation never drifts from the actual data shape:
|
|
10
|
+
* the single source of truth is the Zod `.describe()` annotation.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const schema = z.object({
|
|
15
|
+
* amount_cents: z.number().describe('CRITICAL: in CENTS. Divide by 100.'),
|
|
16
|
+
* status: z.enum(['paid', 'pending']).describe('Always display with emoji'),
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* extractZodDescriptions(schema);
|
|
20
|
+
* // → ['amount_cents: CRITICAL: in CENTS. Divide by 100.',
|
|
21
|
+
* // 'status: Always display with emoji']
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @module
|
|
25
|
+
*/
|
|
26
|
+
import { type ZodType } from 'zod';
|
|
27
|
+
/**
|
|
28
|
+
* Extract `.describe()` annotations from a Zod schema's fields.
|
|
29
|
+
*
|
|
30
|
+
* Walks the top-level `z.object()` shape and retrieves the description
|
|
31
|
+
* string from each field (after unwrapping wrappers like `z.optional()`,
|
|
32
|
+
* `z.nullable()`, `z.default()`, etc.).
|
|
33
|
+
*
|
|
34
|
+
* Returns an array of human-readable `"fieldName: description"` strings,
|
|
35
|
+
* ready to be injected as system rules.
|
|
36
|
+
*
|
|
37
|
+
* @param schema - A Zod schema (typically z.object, but safely handles non-objects)
|
|
38
|
+
* @returns Array of `"fieldName: description"` strings (empty if no descriptions found)
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* const schema = z.object({
|
|
43
|
+
* amount_cents: z.number().describe('CRITICAL: value is in CENTS. Divide by 100.'),
|
|
44
|
+
* currency: z.string(), // No .describe() → skipped
|
|
45
|
+
* status: z.enum(['paid', 'pending']).describe('Show with emoji'),
|
|
46
|
+
* });
|
|
47
|
+
*
|
|
48
|
+
* extractZodDescriptions(schema);
|
|
49
|
+
* // → ['amount_cents: CRITICAL: value is in CENTS. Divide by 100.',
|
|
50
|
+
* // 'status: Show with emoji']
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare function extractZodDescriptions(schema: ZodType): string[];
|
|
54
|
+
//# sourceMappingURL=ZodDescriptionExtractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZodDescriptionExtractor.d.ts","sourceRoot":"","sources":["../../src/presenter/ZodDescriptionExtractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AAqEnC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,CAehE"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ZodDescriptionExtractor — Automatic Prompt Extraction from Zod .describe()
|
|
3
|
+
*
|
|
4
|
+
* Walks a Zod schema's AST and collects `.describe()` annotations from
|
|
5
|
+
* every field. These descriptions are injected as system rules via
|
|
6
|
+
* Context Tree-Shaking, eliminating the need for manual `systemRules`
|
|
7
|
+
* when the Zod schema already carries domain-specific constraints.
|
|
8
|
+
*
|
|
9
|
+
* This ensures documentation never drifts from the actual data shape:
|
|
10
|
+
* the single source of truth is the Zod `.describe()` annotation.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const schema = z.object({
|
|
15
|
+
* amount_cents: z.number().describe('CRITICAL: in CENTS. Divide by 100.'),
|
|
16
|
+
* status: z.enum(['paid', 'pending']).describe('Always display with emoji'),
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* extractZodDescriptions(schema);
|
|
20
|
+
* // → ['amount_cents: CRITICAL: in CENTS. Divide by 100.',
|
|
21
|
+
* // 'status: Always display with emoji']
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @module
|
|
25
|
+
*/
|
|
26
|
+
import {} from 'zod';
|
|
27
|
+
// ── Extraction Logic ─────────────────────────────────────
|
|
28
|
+
/**
|
|
29
|
+
* Recursively unwrap wrapper Zod nodes (optional, nullable, default, branded,
|
|
30
|
+
* readonly, effects, lazy, catches, pipes) to reach the inner schema.
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
function unwrap(node) {
|
|
34
|
+
const def = node._def;
|
|
35
|
+
if (!def)
|
|
36
|
+
return node;
|
|
37
|
+
const typeName = def.typeName ?? '';
|
|
38
|
+
const wrapperTypes = [
|
|
39
|
+
'ZodOptional', 'ZodNullable', 'ZodDefault', 'ZodBranded',
|
|
40
|
+
'ZodReadonly', 'ZodEffects', 'ZodLazy', 'ZodCatch', 'ZodPipeline',
|
|
41
|
+
];
|
|
42
|
+
if (wrapperTypes.includes(typeName)) {
|
|
43
|
+
const inner = def.innerType ?? def.type ?? def.schema;
|
|
44
|
+
if (inner)
|
|
45
|
+
return unwrap(inner);
|
|
46
|
+
}
|
|
47
|
+
return node;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get the shape record from a Zod object node.
|
|
51
|
+
* Supports both v3 (`_def.shape()`) and v4 (`_def.shape`) patterns.
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
54
|
+
function getShape(node) {
|
|
55
|
+
const def = node._def;
|
|
56
|
+
if (!def)
|
|
57
|
+
return undefined;
|
|
58
|
+
if (typeof def.shape === 'function') {
|
|
59
|
+
return def.shape();
|
|
60
|
+
}
|
|
61
|
+
if (typeof def.shape === 'object' && def.shape !== null) {
|
|
62
|
+
return def.shape;
|
|
63
|
+
}
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Extract `.describe()` annotations from a Zod schema's fields.
|
|
68
|
+
*
|
|
69
|
+
* Walks the top-level `z.object()` shape and retrieves the description
|
|
70
|
+
* string from each field (after unwrapping wrappers like `z.optional()`,
|
|
71
|
+
* `z.nullable()`, `z.default()`, etc.).
|
|
72
|
+
*
|
|
73
|
+
* Returns an array of human-readable `"fieldName: description"` strings,
|
|
74
|
+
* ready to be injected as system rules.
|
|
75
|
+
*
|
|
76
|
+
* @param schema - A Zod schema (typically z.object, but safely handles non-objects)
|
|
77
|
+
* @returns Array of `"fieldName: description"` strings (empty if no descriptions found)
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* const schema = z.object({
|
|
82
|
+
* amount_cents: z.number().describe('CRITICAL: value is in CENTS. Divide by 100.'),
|
|
83
|
+
* currency: z.string(), // No .describe() → skipped
|
|
84
|
+
* status: z.enum(['paid', 'pending']).describe('Show with emoji'),
|
|
85
|
+
* });
|
|
86
|
+
*
|
|
87
|
+
* extractZodDescriptions(schema);
|
|
88
|
+
* // → ['amount_cents: CRITICAL: value is in CENTS. Divide by 100.',
|
|
89
|
+
* // 'status: Show with emoji']
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export function extractZodDescriptions(schema) {
|
|
93
|
+
const node = schema;
|
|
94
|
+
const shape = getShape(node);
|
|
95
|
+
if (!shape)
|
|
96
|
+
return [];
|
|
97
|
+
const descriptions = [];
|
|
98
|
+
for (const [key, fieldNode] of Object.entries(shape)) {
|
|
99
|
+
const desc = resolveDescription(fieldNode);
|
|
100
|
+
if (desc) {
|
|
101
|
+
descriptions.push(`${key}: ${desc}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return descriptions;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Resolve the description from a field node by unwrapping wrappers.
|
|
108
|
+
*
|
|
109
|
+
* Priority:
|
|
110
|
+
* 1. Outermost `.description` (Zod v4 style)
|
|
111
|
+
* 2. `_def.description` (Zod v3 style)
|
|
112
|
+
* 3. Unwrapped inner node's description
|
|
113
|
+
* @internal
|
|
114
|
+
*/
|
|
115
|
+
function resolveDescription(node) {
|
|
116
|
+
// Check outermost description first
|
|
117
|
+
if (node.description)
|
|
118
|
+
return node.description;
|
|
119
|
+
if (node._def?.description)
|
|
120
|
+
return node._def.description;
|
|
121
|
+
// Unwrap and check inner
|
|
122
|
+
const inner = unwrap(node);
|
|
123
|
+
if (inner !== node) {
|
|
124
|
+
if (inner.description)
|
|
125
|
+
return inner.description;
|
|
126
|
+
if (inner._def?.description)
|
|
127
|
+
return inner._def.description;
|
|
128
|
+
}
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=ZodDescriptionExtractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZodDescriptionExtractor.js","sourceRoot":"","sources":["../../src/presenter/ZodDescriptionExtractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAgB,MAAM,KAAK,CAAC;AAwBnC,4DAA4D;AAE5D;;;;GAIG;AACH,SAAS,MAAM,CAAC,IAAa;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;IACtB,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;IACpC,MAAM,YAAY,GAAG;QACjB,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY;QACxD,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa;KACpE,CAAC;IAEF,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC;QACtD,IAAI,KAAK;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,IAAa;IAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;IACtB,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAE3B,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACtD,OAAO,GAAG,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAe;IAClD,MAAM,IAAI,GAAG,MAA4B,CAAC;IAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAEtB,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,IAAI,EAAE,CAAC;YACP,YAAY,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;IAED,OAAO,YAAY,CAAC;AACxB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,kBAAkB,CAAC,IAAa;IACrC,oCAAoC;IACpC,IAAI,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC,WAAW,CAAC;IAC9C,IAAI,IAAI,CAAC,IAAI,EAAE,WAAW;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IAEzD,yBAAyB;IACzB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACjB,IAAI,KAAK,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC,WAAW,CAAC;QAChD,IAAI,KAAK,CAAC,IAAI,EAAE,WAAW;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;IAC/D,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* definePresenter() — Declarative Presenter Definition
|
|
3
|
+
*
|
|
4
|
+
* Zero-friction object-config API for creating Presenters.
|
|
5
|
+
* Replaces the fluent builder pattern with a single object literal
|
|
6
|
+
* that enables instant Ctrl+Space autocomplete and zero generic noise.
|
|
7
|
+
*
|
|
8
|
+
* The `schema` field drives type inference: the `ui`, `rules`, and
|
|
9
|
+
* `suggestActions` callbacks automatically receive the inferred type,
|
|
10
|
+
* so the developer never writes a generic parameter manually.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { definePresenter, ui } from '@vinkius-core/mcp-fusion';
|
|
15
|
+
* import { z } from 'zod';
|
|
16
|
+
*
|
|
17
|
+
* export const InvoicePresenter = definePresenter({
|
|
18
|
+
* name: 'Invoice',
|
|
19
|
+
* schema: z.object({
|
|
20
|
+
* id: z.string(),
|
|
21
|
+
* amount_cents: z.number().describe('CRITICAL: in CENTS. Divide by 100.'),
|
|
22
|
+
* status: z.enum(['paid', 'pending']),
|
|
23
|
+
* }),
|
|
24
|
+
* rules: ['CRITICAL: Divide amount_cents by 100 before displaying.'],
|
|
25
|
+
* ui: (inv) => [ui.echarts({ series: [{ type: 'gauge', data: [{ value: inv.amount_cents / 100 }] }] })],
|
|
26
|
+
* suggestActions: (inv) =>
|
|
27
|
+
* inv.status === 'pending'
|
|
28
|
+
* ? [{ tool: 'billing.pay', reason: 'Offer immediate payment' }]
|
|
29
|
+
* : [],
|
|
30
|
+
* });
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @module
|
|
34
|
+
*/
|
|
35
|
+
import { type ZodType } from 'zod';
|
|
36
|
+
import { Presenter, type ActionSuggestion } from './Presenter.js';
|
|
37
|
+
import { type UiBlock } from './ui.js';
|
|
38
|
+
/**
|
|
39
|
+
* Agent limit configuration for cognitive guardrails.
|
|
40
|
+
*/
|
|
41
|
+
export interface AgentLimitDef {
|
|
42
|
+
/** Maximum items to keep when data is an array */
|
|
43
|
+
readonly max: number;
|
|
44
|
+
/** Callback that produces a warning block when items are truncated */
|
|
45
|
+
readonly onTruncate: (omittedCount: number) => UiBlock;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Embedded child Presenter definition for relational composition.
|
|
49
|
+
*/
|
|
50
|
+
export interface EmbedDef {
|
|
51
|
+
/** Property key in the parent data that contains the nested data */
|
|
52
|
+
readonly key: string;
|
|
53
|
+
/** The child Presenter to apply to the nested data */
|
|
54
|
+
readonly presenter: Presenter<unknown>;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Full declarative configuration for `definePresenter()`.
|
|
58
|
+
*
|
|
59
|
+
* @typeParam T - Inferred from the `schema` field's output type
|
|
60
|
+
*/
|
|
61
|
+
export interface PresenterConfig<T> {
|
|
62
|
+
/** Human-readable domain name (for debugging and introspection) */
|
|
63
|
+
readonly name: string;
|
|
64
|
+
/** Zod schema for data validation and field filtering */
|
|
65
|
+
readonly schema?: ZodType<T>;
|
|
66
|
+
/**
|
|
67
|
+
* System rules that travel with the data.
|
|
68
|
+
*
|
|
69
|
+
* - **Static**: `string[]` — always injected
|
|
70
|
+
* - **Dynamic**: `(data, ctx?) => (string | null)[]` — context-aware (RBAC, DLP, locale)
|
|
71
|
+
*
|
|
72
|
+
* Return `null` from dynamic rules to conditionally exclude them.
|
|
73
|
+
*/
|
|
74
|
+
readonly rules?: readonly string[] | ((data: T, ctx?: unknown) => (string | null)[]);
|
|
75
|
+
/**
|
|
76
|
+
* UI blocks for a **single data item**.
|
|
77
|
+
*
|
|
78
|
+
* Return `null` for conditional blocks (filtered automatically).
|
|
79
|
+
*/
|
|
80
|
+
readonly ui?: (item: T, ctx?: unknown) => (UiBlock | null)[];
|
|
81
|
+
/**
|
|
82
|
+
* Aggregated UI blocks for a **collection** (array) of items.
|
|
83
|
+
*
|
|
84
|
+
* Called once with the entire validated array. Prevents N individual
|
|
85
|
+
* charts from flooding the LLM's context.
|
|
86
|
+
*/
|
|
87
|
+
readonly collectionUi?: (items: T[], ctx?: unknown) => (UiBlock | null)[];
|
|
88
|
+
/**
|
|
89
|
+
* Cognitive guardrail that truncates large collections.
|
|
90
|
+
*
|
|
91
|
+
* Protects against context DDoS by limiting returned array length
|
|
92
|
+
* and injecting a summary block.
|
|
93
|
+
*/
|
|
94
|
+
readonly agentLimit?: AgentLimitDef;
|
|
95
|
+
/**
|
|
96
|
+
* HATEOAS-style next-action suggestions based on data state.
|
|
97
|
+
*
|
|
98
|
+
* Eliminates routing hallucinations by providing explicit next-step hints.
|
|
99
|
+
*/
|
|
100
|
+
readonly suggestActions?: (data: T, ctx?: unknown) => ActionSuggestion[];
|
|
101
|
+
/**
|
|
102
|
+
* Embedded child Presenters for nested relational data.
|
|
103
|
+
*
|
|
104
|
+
* Define once, embed everywhere. Each embed's `key` is looked up on
|
|
105
|
+
* the parent data, and the child Presenter renders its own blocks/rules.
|
|
106
|
+
*/
|
|
107
|
+
readonly embeds?: readonly EmbedDef[];
|
|
108
|
+
/**
|
|
109
|
+
* Automatically extract `.describe()` annotations from the Zod schema
|
|
110
|
+
* and merge them with `rules` as system rules.
|
|
111
|
+
*
|
|
112
|
+
* When `true` (the default), field-level `.describe()` annotations
|
|
113
|
+
* become system rules, ensuring documentation never drifts from the
|
|
114
|
+
* actual data shape. Set to `false` to opt out.
|
|
115
|
+
*
|
|
116
|
+
* @default true
|
|
117
|
+
*/
|
|
118
|
+
readonly autoRules?: boolean;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Define a domain-level Presenter using a declarative config object.
|
|
122
|
+
*
|
|
123
|
+
* This is the recommended, zero-friction API. The `schema` field drives
|
|
124
|
+
* full type inference — `ui`, `rules`, and `suggestActions` callbacks
|
|
125
|
+
* all receive correctly-typed parameters without any explicit generics.
|
|
126
|
+
*
|
|
127
|
+
* @typeParam TSchema - Zod type (inferred from the `schema` field)
|
|
128
|
+
* @param config - Declarative presenter configuration
|
|
129
|
+
* @returns A fully-configured {@link Presenter} ready for use
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```typescript
|
|
133
|
+
* // Minimal
|
|
134
|
+
* const TaskPresenter = definePresenter({
|
|
135
|
+
* name: 'Task',
|
|
136
|
+
* schema: z.object({ id: z.string(), title: z.string(), done: z.boolean() }),
|
|
137
|
+
* rules: ['Use ✅ for done, 🔄 for in-progress.'],
|
|
138
|
+
* ui: (task) => [ui.markdown(`**${task.title}**: ${task.done ? '✅' : '🔄'}`)],
|
|
139
|
+
* });
|
|
140
|
+
*
|
|
141
|
+
* // With embeds, agent limit, and dynamic rules
|
|
142
|
+
* const OrderPresenter = definePresenter({
|
|
143
|
+
* name: 'Order',
|
|
144
|
+
* schema: orderSchema,
|
|
145
|
+
* rules: (order, ctx) => [
|
|
146
|
+
* ctx?.locale === 'pt-BR' ? 'Formate datas em DD/MM/YYYY' : null,
|
|
147
|
+
* ],
|
|
148
|
+
* agentLimit: { max: 100, onTruncate: (n) => ui.summary(`⚠️ ${n} orders hidden`) },
|
|
149
|
+
* embeds: [{ key: 'customer', presenter: CustomerPresenter }],
|
|
150
|
+
* suggestActions: (order) =>
|
|
151
|
+
* order.status === 'pending'
|
|
152
|
+
* ? [{ tool: 'orders.approve', reason: 'Ready for approval' }]
|
|
153
|
+
* : [],
|
|
154
|
+
* });
|
|
155
|
+
* ```
|
|
156
|
+
*
|
|
157
|
+
* @see {@link createPresenter} for the legacy fluent builder API
|
|
158
|
+
* @see {@link Presenter} for the full Presenter class documentation
|
|
159
|
+
*/
|
|
160
|
+
export declare function definePresenter<TSchema extends ZodType>(config: PresenterConfig<TSchema['_output']> & {
|
|
161
|
+
schema: TSchema;
|
|
162
|
+
}): Presenter<TSchema['_output']>;
|
|
163
|
+
/**
|
|
164
|
+
* Define a Presenter without a schema (untyped data passthrough).
|
|
165
|
+
*
|
|
166
|
+
* @param config - Configuration without a schema field
|
|
167
|
+
* @returns A Presenter that passes data through without validation
|
|
168
|
+
*/
|
|
169
|
+
export declare function definePresenter(config: PresenterConfig<unknown> & {
|
|
170
|
+
schema?: undefined;
|
|
171
|
+
}): Presenter<unknown>;
|
|
172
|
+
//# sourceMappingURL=definePresenter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definePresenter.d.ts","sourceRoot":"","sources":["../../src/presenter/definePresenter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AAKvC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,kDAAkD;IAClD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,QAAQ,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;CAC1D;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,oEAAoE;IACpE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;CAC1C;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IAC9B,mEAAmE;IACnE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,yDAAyD;IACzD,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAE7B;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IAErF;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;IAE7D;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;IAE1E;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;IAEpC;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,gBAAgB,EAAE,CAAC;IAEzE;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAEtC;;;;;;;;;OASG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAChC;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,eAAe,CAAC,OAAO,SAAS,OAAO,EACnD,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAClE,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AAEjC;;;;;GAKG;AACH,wBAAgB,eAAe,CAC3B,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,GAC1D,SAAS,CAAC,OAAO,CAAC,CAAC"}
|