@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.
Files changed (140) hide show
  1. package/dist/cli/fusion.d.ts +101 -0
  2. package/dist/cli/fusion.d.ts.map +1 -0
  3. package/dist/cli/fusion.js +333 -0
  4. package/dist/cli/fusion.js.map +1 -0
  5. package/dist/client/FusionClient.d.ts +122 -1
  6. package/dist/client/FusionClient.d.ts.map +1 -1
  7. package/dist/client/FusionClient.js +173 -11
  8. package/dist/client/FusionClient.js.map +1 -1
  9. package/dist/client/index.d.ts +2 -2
  10. package/dist/client/index.d.ts.map +1 -1
  11. package/dist/client/index.js +1 -1
  12. package/dist/client/index.js.map +1 -1
  13. package/dist/core/StandardSchema.d.ts +178 -0
  14. package/dist/core/StandardSchema.d.ts.map +1 -0
  15. package/dist/core/StandardSchema.js +166 -0
  16. package/dist/core/StandardSchema.js.map +1 -0
  17. package/dist/core/createGroup.d.ts +140 -0
  18. package/dist/core/createGroup.d.ts.map +1 -0
  19. package/dist/core/createGroup.js +133 -0
  20. package/dist/core/createGroup.js.map +1 -0
  21. package/dist/core/execution/ExecutionPipeline.d.ts.map +1 -1
  22. package/dist/core/execution/ExecutionPipeline.js +6 -2
  23. package/dist/core/execution/ExecutionPipeline.js.map +1 -1
  24. package/dist/core/index.d.ts +7 -1
  25. package/dist/core/index.d.ts.map +1 -1
  26. package/dist/core/index.js +6 -0
  27. package/dist/core/index.js.map +1 -1
  28. package/dist/core/initFusion.d.ts +201 -0
  29. package/dist/core/initFusion.d.ts.map +1 -0
  30. package/dist/core/initFusion.js +134 -0
  31. package/dist/core/initFusion.js.map +1 -0
  32. package/dist/core/response.d.ts +49 -2
  33. package/dist/core/response.d.ts.map +1 -1
  34. package/dist/core/response.js +27 -5
  35. package/dist/core/response.js.map +1 -1
  36. package/dist/index.d.ts +57 -9
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +30 -4
  39. package/dist/index.js.map +1 -1
  40. package/dist/introspection/BehaviorDigest.d.ts +112 -0
  41. package/dist/introspection/BehaviorDigest.d.ts.map +1 -0
  42. package/dist/introspection/BehaviorDigest.js +146 -0
  43. package/dist/introspection/BehaviorDigest.js.map +1 -0
  44. package/dist/introspection/CapabilityLockfile.d.ts +259 -0
  45. package/dist/introspection/CapabilityLockfile.d.ts.map +1 -0
  46. package/dist/introspection/CapabilityLockfile.js +391 -0
  47. package/dist/introspection/CapabilityLockfile.js.map +1 -0
  48. package/dist/introspection/ContractAwareSelfHealing.d.ts +90 -0
  49. package/dist/introspection/ContractAwareSelfHealing.d.ts.map +1 -0
  50. package/dist/introspection/ContractAwareSelfHealing.js +132 -0
  51. package/dist/introspection/ContractAwareSelfHealing.js.map +1 -0
  52. package/dist/introspection/ContractDiff.d.ts +91 -0
  53. package/dist/introspection/ContractDiff.d.ts.map +1 -0
  54. package/dist/introspection/ContractDiff.js +466 -0
  55. package/dist/introspection/ContractDiff.js.map +1 -0
  56. package/dist/introspection/CryptoAttestation.d.ts +143 -0
  57. package/dist/introspection/CryptoAttestation.d.ts.map +1 -0
  58. package/dist/introspection/CryptoAttestation.js +194 -0
  59. package/dist/introspection/CryptoAttestation.js.map +1 -0
  60. package/dist/introspection/EntitlementScanner.d.ts +124 -0
  61. package/dist/introspection/EntitlementScanner.d.ts.map +1 -0
  62. package/dist/introspection/EntitlementScanner.js +244 -0
  63. package/dist/introspection/EntitlementScanner.js.map +1 -0
  64. package/dist/introspection/GovernanceObserver.d.ts +88 -0
  65. package/dist/introspection/GovernanceObserver.d.ts.map +1 -0
  66. package/dist/introspection/GovernanceObserver.js +132 -0
  67. package/dist/introspection/GovernanceObserver.js.map +1 -0
  68. package/dist/introspection/SemanticProbe.d.ts +207 -0
  69. package/dist/introspection/SemanticProbe.d.ts.map +1 -0
  70. package/dist/introspection/SemanticProbe.js +255 -0
  71. package/dist/introspection/SemanticProbe.js.map +1 -0
  72. package/dist/introspection/TokenEconomics.d.ts +210 -0
  73. package/dist/introspection/TokenEconomics.d.ts.map +1 -0
  74. package/dist/introspection/TokenEconomics.js +286 -0
  75. package/dist/introspection/TokenEconomics.js.map +1 -0
  76. package/dist/introspection/ToolContract.d.ts +159 -0
  77. package/dist/introspection/ToolContract.d.ts.map +1 -0
  78. package/dist/introspection/ToolContract.js +191 -0
  79. package/dist/introspection/ToolContract.js.map +1 -0
  80. package/dist/introspection/canonicalize.d.ts +20 -0
  81. package/dist/introspection/canonicalize.d.ts.map +1 -0
  82. package/dist/introspection/canonicalize.js +51 -0
  83. package/dist/introspection/canonicalize.js.map +1 -0
  84. package/dist/introspection/index.d.ts +20 -0
  85. package/dist/introspection/index.d.ts.map +1 -1
  86. package/dist/introspection/index.js +20 -0
  87. package/dist/introspection/index.js.map +1 -1
  88. package/dist/observability/DebugObserver.d.ts +26 -1
  89. package/dist/observability/DebugObserver.d.ts.map +1 -1
  90. package/dist/observability/DebugObserver.js +8 -1
  91. package/dist/observability/DebugObserver.js.map +1 -1
  92. package/dist/observability/index.d.ts +1 -1
  93. package/dist/observability/index.d.ts.map +1 -1
  94. package/dist/observability/index.js.map +1 -1
  95. package/dist/presenter/ZodDescriptionExtractor.d.ts +54 -0
  96. package/dist/presenter/ZodDescriptionExtractor.d.ts.map +1 -0
  97. package/dist/presenter/ZodDescriptionExtractor.js +131 -0
  98. package/dist/presenter/ZodDescriptionExtractor.js.map +1 -0
  99. package/dist/presenter/definePresenter.d.ts +172 -0
  100. package/dist/presenter/definePresenter.d.ts.map +1 -0
  101. package/dist/presenter/definePresenter.js +96 -0
  102. package/dist/presenter/definePresenter.js.map +1 -0
  103. package/dist/presenter/index.d.ts +3 -0
  104. package/dist/presenter/index.d.ts.map +1 -1
  105. package/dist/presenter/index.js +4 -0
  106. package/dist/presenter/index.js.map +1 -1
  107. package/dist/server/DevServer.d.ts +96 -0
  108. package/dist/server/DevServer.d.ts.map +1 -0
  109. package/dist/server/DevServer.js +187 -0
  110. package/dist/server/DevServer.js.map +1 -0
  111. package/dist/server/ServerAttachment.d.ts +41 -0
  112. package/dist/server/ServerAttachment.d.ts.map +1 -1
  113. package/dist/server/ServerAttachment.js +25 -1
  114. package/dist/server/ServerAttachment.js.map +1 -1
  115. package/dist/server/autoDiscover.d.ts +63 -0
  116. package/dist/server/autoDiscover.d.ts.map +1 -0
  117. package/dist/server/autoDiscover.js +157 -0
  118. package/dist/server/autoDiscover.js.map +1 -0
  119. package/dist/server/index.d.ts +4 -0
  120. package/dist/server/index.d.ts.map +1 -1
  121. package/dist/server/index.js +4 -0
  122. package/dist/server/index.js.map +1 -1
  123. package/dist/state-sync/PolicyValidator.d.ts +36 -0
  124. package/dist/state-sync/PolicyValidator.d.ts.map +1 -1
  125. package/dist/state-sync/PolicyValidator.js +35 -0
  126. package/dist/state-sync/PolicyValidator.js.map +1 -1
  127. package/dist/state-sync/ResponseDecorator.d.ts.map +1 -1
  128. package/dist/state-sync/ResponseDecorator.js +2 -1
  129. package/dist/state-sync/ResponseDecorator.js.map +1 -1
  130. package/dist/state-sync/StateSyncLayer.d.ts +5 -4
  131. package/dist/state-sync/StateSyncLayer.d.ts.map +1 -1
  132. package/dist/state-sync/StateSyncLayer.js +35 -4
  133. package/dist/state-sync/StateSyncLayer.js.map +1 -1
  134. package/dist/state-sync/index.d.ts +3 -1
  135. package/dist/state-sync/index.d.ts.map +1 -1
  136. package/dist/state-sync/index.js +1 -0
  137. package/dist/state-sync/index.js.map +1 -1
  138. package/dist/state-sync/types.d.ts +62 -0
  139. package/dist/state-sync/types.d.ts.map +1 -1
  140. 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;AAEjB;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;AAM1D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,eAAe,CAmC9E"}
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
- const path = 'action' in event && event.action
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;AA0GH,+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;QAC9B,MAAM,IAAI,GAAG,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM;YAC1C,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"}
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,GACvE,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
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;AAMzD,4DAA4D;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,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"}