@vorionsys/atsf-core 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/README.md +12 -12
  2. package/dist/api/server.d.ts.map +1 -1
  3. package/dist/api/server.js +463 -35
  4. package/dist/api/server.js.map +1 -1
  5. package/dist/arbitration/index.d.ts.map +1 -1
  6. package/dist/arbitration/index.js +8 -6
  7. package/dist/arbitration/index.js.map +1 -1
  8. package/dist/audit/key-manager.d.ts +118 -0
  9. package/dist/audit/key-manager.d.ts.map +1 -0
  10. package/dist/audit/key-manager.js +565 -0
  11. package/dist/audit/key-manager.js.map +1 -0
  12. package/dist/basis/evaluator.d.ts +31 -0
  13. package/dist/basis/evaluator.d.ts.map +1 -1
  14. package/dist/basis/evaluator.js +205 -10
  15. package/dist/basis/evaluator.js.map +1 -1
  16. package/dist/basis/parser.d.ts +210 -210
  17. package/dist/basis/parser.js.map +1 -1
  18. package/dist/carbon-aware/carbon-metrics.d.ts +151 -0
  19. package/dist/carbon-aware/carbon-metrics.d.ts.map +1 -0
  20. package/dist/carbon-aware/carbon-metrics.js +370 -0
  21. package/dist/carbon-aware/carbon-metrics.js.map +1 -0
  22. package/dist/carbon-aware/carbon-router.d.ts +101 -0
  23. package/dist/carbon-aware/carbon-router.d.ts.map +1 -0
  24. package/dist/carbon-aware/carbon-router.js +400 -0
  25. package/dist/carbon-aware/carbon-router.js.map +1 -0
  26. package/dist/chain/index.d.ts +147 -0
  27. package/dist/chain/index.d.ts.map +1 -0
  28. package/dist/chain/index.js +219 -0
  29. package/dist/chain/index.js.map +1 -0
  30. package/dist/cognigate/index.d.ts +33 -4
  31. package/dist/cognigate/index.d.ts.map +1 -1
  32. package/dist/cognigate/index.js +199 -24
  33. package/dist/cognigate/index.js.map +1 -1
  34. package/dist/common/adapters.d.ts +172 -0
  35. package/dist/common/adapters.d.ts.map +1 -0
  36. package/dist/common/adapters.js +329 -0
  37. package/dist/common/adapters.js.map +1 -0
  38. package/dist/common/config.d.ts +168 -163
  39. package/dist/common/config.d.ts.map +1 -1
  40. package/dist/common/config.js +2 -0
  41. package/dist/common/config.js.map +1 -1
  42. package/dist/common/index.d.ts +1 -0
  43. package/dist/common/index.d.ts.map +1 -1
  44. package/dist/common/index.js +1 -0
  45. package/dist/common/index.js.map +1 -1
  46. package/dist/common/types.d.ts +67 -16
  47. package/dist/common/types.d.ts.map +1 -1
  48. package/dist/common/types.js +4 -0
  49. package/dist/common/types.js.map +1 -1
  50. package/dist/enforce/index.d.ts +226 -16
  51. package/dist/enforce/index.d.ts.map +1 -1
  52. package/dist/enforce/index.js +196 -49
  53. package/dist/enforce/index.js.map +1 -1
  54. package/dist/governance/fluid-workflow.d.ts +217 -0
  55. package/dist/governance/fluid-workflow.d.ts.map +1 -0
  56. package/dist/governance/fluid-workflow.js +491 -0
  57. package/dist/governance/fluid-workflow.js.map +1 -0
  58. package/dist/governance/index.d.ts +1 -0
  59. package/dist/governance/index.d.ts.map +1 -1
  60. package/dist/governance/index.js +1 -0
  61. package/dist/governance/index.js.map +1 -1
  62. package/dist/index.d.ts +9 -3
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +14 -3
  65. package/dist/index.js.map +1 -1
  66. package/dist/intent/index.d.ts +127 -10
  67. package/dist/intent/index.d.ts.map +1 -1
  68. package/dist/intent/index.js +121 -16
  69. package/dist/intent/index.js.map +1 -1
  70. package/dist/langchain/executor.d.ts +19 -5
  71. package/dist/langchain/executor.d.ts.map +1 -1
  72. package/dist/langchain/executor.js +287 -36
  73. package/dist/langchain/executor.js.map +1 -1
  74. package/dist/langchain/index.d.ts +2 -1
  75. package/dist/langchain/index.d.ts.map +1 -1
  76. package/dist/langchain/index.js +3 -1
  77. package/dist/langchain/index.js.map +1 -1
  78. package/dist/langchain/tools.d.ts.map +1 -1
  79. package/dist/langchain/tools.js +2 -1
  80. package/dist/langchain/tools.js.map +1 -1
  81. package/dist/langchain/types.d.ts +41 -0
  82. package/dist/langchain/types.d.ts.map +1 -1
  83. package/dist/layers/index.d.ts +1 -1
  84. package/dist/layers/index.d.ts.map +1 -1
  85. package/dist/persistence/file.d.ts +35 -3
  86. package/dist/persistence/file.d.ts.map +1 -1
  87. package/dist/persistence/file.js +138 -11
  88. package/dist/persistence/file.js.map +1 -1
  89. package/dist/persistence/index.d.ts +11 -1
  90. package/dist/persistence/index.d.ts.map +1 -1
  91. package/dist/persistence/index.js +25 -1
  92. package/dist/persistence/index.js.map +1 -1
  93. package/dist/persistence/sqlite.d.ts +135 -0
  94. package/dist/persistence/sqlite.d.ts.map +1 -0
  95. package/dist/persistence/sqlite.js +372 -0
  96. package/dist/persistence/sqlite.js.map +1 -0
  97. package/dist/persistence/supabase.d.ts +93 -0
  98. package/dist/persistence/supabase.d.ts.map +1 -0
  99. package/dist/persistence/supabase.js +219 -0
  100. package/dist/persistence/supabase.js.map +1 -0
  101. package/dist/persistence/types.d.ts +5 -1
  102. package/dist/persistence/types.d.ts.map +1 -1
  103. package/dist/phase6/ceiling.d.ts +177 -0
  104. package/dist/phase6/ceiling.d.ts.map +1 -0
  105. package/dist/phase6/ceiling.js +463 -0
  106. package/dist/phase6/ceiling.js.map +1 -0
  107. package/dist/phase6/context.d.ts +207 -0
  108. package/dist/phase6/context.d.ts.map +1 -0
  109. package/dist/phase6/context.js +603 -0
  110. package/dist/phase6/context.js.map +1 -0
  111. package/dist/phase6/index.d.ts +79 -0
  112. package/dist/phase6/index.d.ts.map +1 -0
  113. package/dist/phase6/index.js +152 -0
  114. package/dist/phase6/index.js.map +1 -0
  115. package/dist/phase6/presets.d.ts +148 -0
  116. package/dist/phase6/presets.d.ts.map +1 -0
  117. package/dist/phase6/presets.js +467 -0
  118. package/dist/phase6/presets.js.map +1 -0
  119. package/dist/phase6/provenance.d.ts +148 -0
  120. package/dist/phase6/provenance.d.ts.map +1 -0
  121. package/dist/phase6/provenance.js +545 -0
  122. package/dist/phase6/provenance.js.map +1 -0
  123. package/dist/phase6/role-gates/index.d.ts +7 -0
  124. package/dist/phase6/role-gates/index.d.ts.map +1 -0
  125. package/dist/phase6/role-gates/index.js +7 -0
  126. package/dist/phase6/role-gates/index.js.map +1 -0
  127. package/dist/phase6/role-gates/kernel.d.ts +84 -0
  128. package/dist/phase6/role-gates/kernel.d.ts.map +1 -0
  129. package/dist/phase6/role-gates/kernel.js +258 -0
  130. package/dist/phase6/role-gates/kernel.js.map +1 -0
  131. package/dist/phase6/role-gates/policy.d.ts +110 -0
  132. package/dist/phase6/role-gates/policy.d.ts.map +1 -0
  133. package/dist/phase6/role-gates/policy.js +157 -0
  134. package/dist/phase6/role-gates/policy.js.map +1 -0
  135. package/dist/phase6/role-gates.d.ts +164 -0
  136. package/dist/phase6/role-gates.d.ts.map +1 -0
  137. package/dist/phase6/role-gates.js +536 -0
  138. package/dist/phase6/role-gates.js.map +1 -0
  139. package/dist/phase6/types.d.ts +1827 -0
  140. package/dist/phase6/types.d.ts.map +1 -0
  141. package/dist/phase6/types.js +450 -0
  142. package/dist/phase6/types.js.map +1 -0
  143. package/dist/phase6/weight-presets/canonical.d.ts +93 -0
  144. package/dist/phase6/weight-presets/canonical.d.ts.map +1 -0
  145. package/dist/phase6/weight-presets/canonical.js +122 -0
  146. package/dist/phase6/weight-presets/canonical.js.map +1 -0
  147. package/dist/phase6/weight-presets/deltas.d.ts +144 -0
  148. package/dist/phase6/weight-presets/deltas.d.ts.map +1 -0
  149. package/dist/phase6/weight-presets/deltas.js +184 -0
  150. package/dist/phase6/weight-presets/deltas.js.map +1 -0
  151. package/dist/phase6/weight-presets/index.d.ts +8 -0
  152. package/dist/phase6/weight-presets/index.d.ts.map +1 -0
  153. package/dist/phase6/weight-presets/index.js +8 -0
  154. package/dist/phase6/weight-presets/index.js.map +1 -0
  155. package/dist/phase6/weight-presets/merger.d.ts +79 -0
  156. package/dist/phase6/weight-presets/merger.d.ts.map +1 -0
  157. package/dist/phase6/weight-presets/merger.js +161 -0
  158. package/dist/phase6/weight-presets/merger.js.map +1 -0
  159. package/dist/proof/index.d.ts +50 -1
  160. package/dist/proof/index.d.ts.map +1 -1
  161. package/dist/proof/index.js +122 -3
  162. package/dist/proof/index.js.map +1 -1
  163. package/dist/proof/merkle.d.ts +195 -0
  164. package/dist/proof/merkle.d.ts.map +1 -0
  165. package/dist/proof/merkle.js +412 -0
  166. package/dist/proof/merkle.js.map +1 -0
  167. package/dist/proof/zk-proofs.d.ts +218 -0
  168. package/dist/proof/zk-proofs.d.ts.map +1 -0
  169. package/dist/proof/zk-proofs.js +531 -0
  170. package/dist/proof/zk-proofs.js.map +1 -0
  171. package/dist/trust-engine/ceiling-enforcement/audit.d.ts +98 -0
  172. package/dist/trust-engine/ceiling-enforcement/audit.d.ts.map +1 -0
  173. package/dist/trust-engine/ceiling-enforcement/audit.js +160 -0
  174. package/dist/trust-engine/ceiling-enforcement/audit.js.map +1 -0
  175. package/dist/trust-engine/ceiling-enforcement/index.d.ts +6 -0
  176. package/dist/trust-engine/ceiling-enforcement/index.d.ts.map +1 -0
  177. package/dist/trust-engine/ceiling-enforcement/index.js +6 -0
  178. package/dist/trust-engine/ceiling-enforcement/index.js.map +1 -0
  179. package/dist/trust-engine/ceiling-enforcement/kernel.d.ts +112 -0
  180. package/dist/trust-engine/ceiling-enforcement/kernel.d.ts.map +1 -0
  181. package/dist/trust-engine/ceiling-enforcement/kernel.js +158 -0
  182. package/dist/trust-engine/ceiling-enforcement/kernel.js.map +1 -0
  183. package/dist/trust-engine/context-policy/enforcement.d.ts +62 -0
  184. package/dist/trust-engine/context-policy/enforcement.d.ts.map +1 -0
  185. package/dist/trust-engine/context-policy/enforcement.js +104 -0
  186. package/dist/trust-engine/context-policy/enforcement.js.map +1 -0
  187. package/dist/trust-engine/context-policy/factory.d.ts +75 -0
  188. package/dist/trust-engine/context-policy/factory.d.ts.map +1 -0
  189. package/dist/trust-engine/context-policy/factory.js +130 -0
  190. package/dist/trust-engine/context-policy/factory.js.map +1 -0
  191. package/dist/trust-engine/context-policy/index.d.ts +6 -0
  192. package/dist/trust-engine/context-policy/index.d.ts.map +1 -0
  193. package/dist/trust-engine/context-policy/index.js +6 -0
  194. package/dist/trust-engine/context-policy/index.js.map +1 -0
  195. package/dist/trust-engine/creation-modifiers/index.d.ts +5 -0
  196. package/dist/trust-engine/creation-modifiers/index.d.ts.map +1 -0
  197. package/dist/trust-engine/creation-modifiers/index.js +5 -0
  198. package/dist/trust-engine/creation-modifiers/index.js.map +1 -0
  199. package/dist/trust-engine/creation-modifiers/types.d.ts +112 -0
  200. package/dist/trust-engine/creation-modifiers/types.d.ts.map +1 -0
  201. package/dist/trust-engine/creation-modifiers/types.js +166 -0
  202. package/dist/trust-engine/creation-modifiers/types.js.map +1 -0
  203. package/dist/trust-engine/decay-profiles.d.ts +159 -0
  204. package/dist/trust-engine/decay-profiles.d.ts.map +1 -0
  205. package/dist/trust-engine/decay-profiles.js +210 -0
  206. package/dist/trust-engine/decay-profiles.js.map +1 -0
  207. package/dist/trust-engine/index.d.ts +144 -5
  208. package/dist/trust-engine/index.d.ts.map +1 -1
  209. package/dist/trust-engine/index.js +320 -15
  210. package/dist/trust-engine/index.js.map +1 -1
  211. package/dist/trust-engine/phase6-types.d.ts +123 -0
  212. package/dist/trust-engine/phase6-types.d.ts.map +1 -0
  213. package/dist/trust-engine/phase6-types.js +88 -0
  214. package/dist/trust-engine/phase6-types.js.map +1 -0
  215. package/package.json +26 -10
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Q4: Weight Presets - Weight Merger
3
+ * Combines canonical ACI weights with Axiom deltas to produce final trust weights
4
+ *
5
+ * Architecture:
6
+ * - Deterministic merge process
7
+ * - Audit trail of all weight decisions
8
+ * - Supports multiple merge strategies
9
+ * - Version tracking
10
+ */
11
+ import { CANONICAL_TRUST_WEIGHTS, TOTAL_TRUST_WEIGHT, getCanonicalWeightMetrics, } from './canonical.js';
12
+ import { validateDeltaAdjustments } from './deltas.js';
13
+ /**
14
+ * Merge canonical weights with delta adjustments
15
+ */
16
+ export function mergeWeights(deltas = [], strategy = 'deltaOverride') {
17
+ const canonical = CANONICAL_TRUST_WEIGHTS;
18
+ switch (strategy) {
19
+ case 'canonical':
20
+ // Ignore deltas, return canonical
21
+ return { ...canonical };
22
+ case 'deltaOverride':
23
+ // Apply deltas directly as overrides
24
+ {
25
+ const adjusted = { ...canonical };
26
+ for (const delta of deltas) {
27
+ // Check expiration
28
+ if (delta.expiresAt && new Date() > delta.expiresAt) {
29
+ continue;
30
+ }
31
+ const metric = delta.metric;
32
+ adjusted[metric] = Math.max(0, adjusted[metric] + delta.adjustment);
33
+ }
34
+ return adjusted;
35
+ }
36
+ case 'blended':
37
+ // Blend canonical and deltas proportionally
38
+ {
39
+ const adjusted = { ...canonical };
40
+ const validDeltas = deltas.filter((d) => !d.expiresAt || new Date() <= d.expiresAt);
41
+ if (validDeltas.length === 0) {
42
+ return adjusted;
43
+ }
44
+ // Average the adjustments across all deltas
45
+ const deltaMap = {};
46
+ for (const delta of validDeltas) {
47
+ const metric = delta.metric;
48
+ if (!deltaMap[metric]) {
49
+ deltaMap[metric] = [];
50
+ }
51
+ deltaMap[metric].push(delta.adjustment);
52
+ }
53
+ // Apply averaged adjustments
54
+ for (const [metric, adjustments] of Object.entries(deltaMap)) {
55
+ const avgAdjustment = adjustments.reduce((a, b) => a + b, 0) / adjustments.length;
56
+ adjusted[metric] = Math.max(0, adjusted[metric] + avgAdjustment);
57
+ }
58
+ return adjusted;
59
+ }
60
+ default:
61
+ throw new Error(`Unknown merge strategy: ${strategy}`);
62
+ }
63
+ }
64
+ /**
65
+ * Merge weights and validate the result
66
+ */
67
+ export function mergeAndValidateWeights(deltas = [], strategy = 'deltaOverride') {
68
+ // Validate deltas first
69
+ const canonicalRecord = CANONICAL_TRUST_WEIGHTS;
70
+ const validation = validateDeltaAdjustments(canonicalRecord, deltas);
71
+ if (!validation.valid) {
72
+ return {
73
+ weights: { ...CANONICAL_TRUST_WEIGHTS },
74
+ valid: false,
75
+ errors: validation.errors,
76
+ };
77
+ }
78
+ // Merge weights
79
+ const weights = mergeWeights(deltas, strategy);
80
+ // Perform post-merge validation
81
+ const errors = [];
82
+ // Check all metrics are non-negative
83
+ for (const [metric, value] of Object.entries(weights)) {
84
+ if (value < 0) {
85
+ errors.push(`${metric} is negative: ${value}`);
86
+ }
87
+ }
88
+ return {
89
+ weights,
90
+ valid: errors.length === 0,
91
+ errors,
92
+ };
93
+ }
94
+ /**
95
+ * Create an audit record for weight computation
96
+ */
97
+ export function createWeightAuditRecord(canonicalWeights, appliedDeltas, finalWeights, strategy = 'deltaOverride', agentId, domain) {
98
+ const totalWeight = Object.values(finalWeights).reduce((sum, w) => sum + w, 0);
99
+ return {
100
+ timestamp: new Date(),
101
+ agentId,
102
+ domain,
103
+ strategy,
104
+ canonicalWeights,
105
+ appliedDeltas,
106
+ finalWeights,
107
+ totalWeight,
108
+ valid: totalWeight >= 900 && totalWeight <= 1100, // Allow 10% variance
109
+ };
110
+ }
111
+ /**
112
+ * Compare canonical vs. merged weights to show impact of deltas
113
+ */
114
+ export function compareWeights(finalWeights, canonicalWeights = CANONICAL_TRUST_WEIGHTS) {
115
+ const comparison = {};
116
+ for (const metric of Object.keys(canonicalWeights)) {
117
+ const key = metric;
118
+ const can = canonicalWeights[key];
119
+ const fin = finalWeights[key];
120
+ const delta = fin - can;
121
+ const percentChange = can !== 0 ? (delta / can) * 100 : 0;
122
+ comparison[metric] = {
123
+ canonical: can,
124
+ final: fin,
125
+ delta,
126
+ percentChange,
127
+ };
128
+ }
129
+ return comparison;
130
+ }
131
+ /**
132
+ * Format weights for display
133
+ */
134
+ export function formatWeightsForDisplay(weights) {
135
+ const metrics = getCanonicalWeightMetrics();
136
+ const lines = ['Trust Weight Distribution:', ''];
137
+ for (const metric of metrics) {
138
+ const value = weights[metric.name.toLowerCase().replace(/ /g, '')];
139
+ if (value !== undefined) {
140
+ const percentage = ((value / TOTAL_TRUST_WEIGHT) * 100).toFixed(1);
141
+ lines.push(`${metric.name.padEnd(25)} ${value.toString().padEnd(4)} pts (${percentage}%)`);
142
+ }
143
+ }
144
+ const total = Object.values(weights).reduce((sum, w) => sum + w, 0);
145
+ lines.push('');
146
+ lines.push(`Total: ${total} points`);
147
+ return lines.join('\n');
148
+ }
149
+ /**
150
+ * Compute agent's final trust score using merged weights
151
+ */
152
+ export function computeTrustScore(weights, metrics) {
153
+ const score = metrics.successRatio * weights.successRatio +
154
+ metrics.authorizationHistory * weights.authorizationHistory +
155
+ metrics.cascadePrevention * weights.cascadePrevention +
156
+ metrics.executionEfficiency * weights.executionEfficiency +
157
+ metrics.behaviorStability * weights.behaviorStability;
158
+ // Clamp to 0-1000
159
+ return Math.max(0, Math.min(1000, Math.round(score)));
160
+ }
161
+ //# sourceMappingURL=merger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merger.js","sourceRoot":"","sources":["../../../src/phase6/weight-presets/merger.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,33 @@
2
2
  * PROOF - Immutable Evidence System
3
3
  *
4
4
  * Creates and maintains cryptographically sealed records of all governance decisions.
5
+ * Uses Ed25519 for cryptographic signing of proof records.
5
6
  *
6
7
  * @packageDocumentation
7
8
  */
8
9
  import type { Proof, Decision, Intent, ID } from '../common/types.js';
10
+ /**
11
+ * Ed25519 key pair for signing proofs
12
+ */
13
+ export interface SigningKeyPair {
14
+ publicKey: string;
15
+ privateKey: string;
16
+ }
17
+ /**
18
+ * Signing configuration for proof service
19
+ */
20
+ export interface SigningConfig {
21
+ /** Private key for signing (base64-encoded Ed25519) */
22
+ privateKey?: string;
23
+ /** Public key for verification (base64-encoded Ed25519) */
24
+ publicKey?: string;
25
+ /** Key ID for multi-key scenarios */
26
+ keyId?: string;
27
+ }
28
+ /**
29
+ * Generate a new Ed25519 key pair for signing
30
+ */
31
+ export declare function generateKeyPair(): SigningKeyPair;
9
32
  /**
10
33
  * Proof creation request
11
34
  */
@@ -43,6 +66,10 @@ export declare class ProofService {
43
66
  private proofs;
44
67
  private chain;
45
68
  private lastHash;
69
+ private privateKey;
70
+ private publicKey;
71
+ private keyId;
72
+ constructor(config?: SigningConfig);
46
73
  /**
47
74
  * Create a new proof record
48
75
  */
@@ -71,6 +98,25 @@ export declare class ProofService {
71
98
  * Calculate hash for a proof record
72
99
  */
73
100
  private calculateHash;
101
+ /**
102
+ * Sign data with Ed25519 private key
103
+ * @returns Base64-encoded signature, or empty string if no key configured
104
+ */
105
+ private sign;
106
+ /**
107
+ * Verify Ed25519 signature
108
+ * @returns true if valid, false if invalid or no public key
109
+ */
110
+ private verifySignature;
111
+ /**
112
+ * Get the public key for external verification
113
+ * @returns Base64-encoded public key, or null if not configured
114
+ */
115
+ getPublicKey(): string | null;
116
+ /**
117
+ * Check if signing is enabled
118
+ */
119
+ isSigningEnabled(): boolean;
74
120
  /**
75
121
  * Get chain statistics
76
122
  */
@@ -82,6 +128,9 @@ export declare class ProofService {
82
128
  }
83
129
  /**
84
130
  * Create a new PROOF service instance
131
+ * @param config Optional signing configuration
85
132
  */
86
- export declare function createProofService(): ProofService;
133
+ export declare function createProofService(config?: SigningConfig): ProofService;
134
+ export { type MerkleNode, type MerkleProof, type MerkleAnchor, type ExternalAnchor, type BatchAggregationResult, type MerkleAggregationConfig, buildMerkleTree, generateMerkleProof, verifyMerkleProof, MerkleAggregationService, createMerkleAggregationService, } from './merkle.js';
135
+ export { type PedersenCommitment, type RangeProof, type ThresholdProof, type MembershipProof, type TrustTierProof, type CompositeProof, type ZKVerificationResult, type ZKProofConfig, createCommitment, verifyCommitment, generateRangeProof, verifyRangeProof, generateThresholdProof, verifyThresholdProof, generateMembershipProof, verifyMembershipProof, generateTrustTierProof, verifyTrustTierProof, ZKProofService, createZKProofService, } from './zk-proofs.js';
87
136
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/proof/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAItE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,EAAE,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,CAAC;IACd,QAAQ,CAAC,EAAE,EAAE,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAA0B;IAE1C;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;IAmCnD;;OAEG;IACG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAI7C;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IA4BhD;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgDjD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC;QAC3B,KAAK,EAAE,OAAO,CAAC;QACf,iBAAiB,EAAE,MAAM,CAAC;QAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IAuBF;;OAEG;YACW,aAAa;IAqB3B;;OAEG;IACH,QAAQ,IAAI;QACV,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B;CASF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAEjD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/proof/index.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,23 @@
2
2
  * PROOF - Immutable Evidence System
3
3
  *
4
4
  * Creates and maintains cryptographically sealed records of all governance decisions.
5
+ * Uses Ed25519 for cryptographic signing of proof records.
5
6
  *
6
7
  * @packageDocumentation
7
8
  */
9
+ import * as nodeCrypto from 'node:crypto';
8
10
  import { createLogger } from '../common/logger.js';
9
11
  const logger = createLogger({ component: 'proof' });
12
+ /**
13
+ * Generate a new Ed25519 key pair for signing
14
+ */
15
+ export function generateKeyPair() {
16
+ const { publicKey, privateKey } = nodeCrypto.generateKeyPairSync('ed25519');
17
+ return {
18
+ publicKey: publicKey.export({ type: 'spki', format: 'der' }).toString('base64'),
19
+ privateKey: privateKey.export({ type: 'pkcs8', format: 'der' }).toString('base64'),
20
+ };
21
+ }
10
22
  /**
11
23
  * PROOF service for evidence management
12
24
  */
@@ -14,6 +26,33 @@ export class ProofService {
14
26
  proofs = new Map();
15
27
  chain = [];
16
28
  lastHash = '0'.repeat(64);
29
+ privateKey = null;
30
+ publicKey = null;
31
+ keyId;
32
+ constructor(config) {
33
+ this.keyId = config?.keyId ?? 'default';
34
+ if (config?.privateKey) {
35
+ this.privateKey = nodeCrypto.createPrivateKey({
36
+ key: Buffer.from(config.privateKey, 'base64'),
37
+ format: 'der',
38
+ type: 'pkcs8',
39
+ });
40
+ // Derive public key from private key
41
+ this.publicKey = nodeCrypto.createPublicKey(this.privateKey);
42
+ logger.info({ keyId: this.keyId }, 'Signing key loaded');
43
+ }
44
+ else if (config?.publicKey) {
45
+ this.publicKey = nodeCrypto.createPublicKey({
46
+ key: Buffer.from(config.publicKey, 'base64'),
47
+ format: 'der',
48
+ type: 'spki',
49
+ });
50
+ logger.info({ keyId: this.keyId }, 'Verification-only key loaded');
51
+ }
52
+ else {
53
+ logger.warn('No signing key configured - proofs will not be signed');
54
+ }
55
+ }
17
56
  /**
18
57
  * Create a new proof record
19
58
  */
@@ -28,12 +67,14 @@ export class ProofService {
28
67
  outputs: request.outputs,
29
68
  hash: '', // Will be calculated
30
69
  previousHash: this.lastHash,
31
- signature: '', // TODO: Implement signing
70
+ signature: '', // Will be signed after hash calculation
32
71
  createdAt: new Date().toISOString(),
33
72
  };
34
73
  // Calculate hash
35
74
  proof.hash = await this.calculateHash(proof);
36
75
  this.lastHash = proof.hash;
76
+ // Sign the proof hash
77
+ proof.signature = this.sign(proof.hash);
37
78
  // Store
38
79
  this.proofs.set(proof.id, proof);
39
80
  this.chain.push(proof);
@@ -95,6 +136,16 @@ export class ProofService {
95
136
  if (proof.hash !== expectedHash) {
96
137
  issues.push('Hash mismatch');
97
138
  }
139
+ // Verify signature
140
+ if (proof.signature) {
141
+ if (!this.verifySignature(proof.hash, proof.signature)) {
142
+ issues.push('Invalid signature');
143
+ }
144
+ }
145
+ else if (this.publicKey) {
146
+ // Signature missing but we have a key configured
147
+ issues.push('Signature missing');
148
+ }
98
149
  // Verify chain linkage
99
150
  if (proof.chainPosition > 0) {
100
151
  const previous = this.chain[proof.chainPosition - 1];
@@ -158,6 +209,49 @@ export class ProofService {
158
209
  const hashArray = Array.from(new Uint8Array(hashBuffer));
159
210
  return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');
160
211
  }
212
+ /**
213
+ * Sign data with Ed25519 private key
214
+ * @returns Base64-encoded signature, or empty string if no key configured
215
+ */
216
+ sign(data) {
217
+ if (!this.privateKey) {
218
+ return '';
219
+ }
220
+ const signature = nodeCrypto.sign(null, Buffer.from(data), this.privateKey);
221
+ return signature.toString('base64');
222
+ }
223
+ /**
224
+ * Verify Ed25519 signature
225
+ * @returns true if valid, false if invalid or no public key
226
+ */
227
+ verifySignature(data, signature) {
228
+ if (!this.publicKey) {
229
+ // No key to verify with - skip signature verification
230
+ return true;
231
+ }
232
+ try {
233
+ return nodeCrypto.verify(null, Buffer.from(data), this.publicKey, Buffer.from(signature, 'base64'));
234
+ }
235
+ catch {
236
+ return false;
237
+ }
238
+ }
239
+ /**
240
+ * Get the public key for external verification
241
+ * @returns Base64-encoded public key, or null if not configured
242
+ */
243
+ getPublicKey() {
244
+ if (!this.publicKey) {
245
+ return null;
246
+ }
247
+ return this.publicKey.export({ type: 'spki', format: 'der' }).toString('base64');
248
+ }
249
+ /**
250
+ * Check if signing is enabled
251
+ */
252
+ isSigningEnabled() {
253
+ return this.privateKey !== null;
254
+ }
161
255
  /**
162
256
  * Get chain statistics
163
257
  */
@@ -172,8 +266,33 @@ export class ProofService {
172
266
  }
173
267
  /**
174
268
  * Create a new PROOF service instance
269
+ * @param config Optional signing configuration
175
270
  */
176
- export function createProofService() {
177
- return new ProofService();
271
+ export function createProofService(config) {
272
+ return new ProofService(config);
178
273
  }
274
+ // =============================================================================
275
+ // MERKLE AGGREGATION
276
+ // =============================================================================
277
+ export {
278
+ // Functions
279
+ buildMerkleTree, generateMerkleProof, verifyMerkleProof,
280
+ // Service
281
+ MerkleAggregationService, createMerkleAggregationService, } from './merkle.js';
282
+ // =============================================================================
283
+ // ZERO-KNOWLEDGE PROOFS
284
+ // =============================================================================
285
+ export {
286
+ // Primitives
287
+ createCommitment, verifyCommitment,
288
+ // Range proofs
289
+ generateRangeProof, verifyRangeProof,
290
+ // Threshold proofs
291
+ generateThresholdProof, verifyThresholdProof,
292
+ // Membership proofs
293
+ generateMembershipProof, verifyMembershipProof,
294
+ // Trust tier proofs
295
+ generateTrustTierProof, verifyTrustTierProof,
296
+ // Service
297
+ ZKProofService, createZKProofService, } from './zk-proofs.js';
179
298
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/proof/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/proof/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ /**
2
+ * Merkle Tree Aggregation Service
3
+ *
4
+ * Implements batch proof aggregation using Merkle trees for:
5
+ * - Efficient batch verification
6
+ * - External anchoring (blockchain, timestamping services)
7
+ * - Privacy-preserving proof disclosure
8
+ *
9
+ * Key Features:
10
+ * - SHA-256 based Merkle tree construction
11
+ * - Incremental tree building
12
+ * - Compact inclusion proofs
13
+ * - Anchor commitments for external verification
14
+ *
15
+ * @packageDocumentation
16
+ */
17
+ import type { Proof } from '../common/types.js';
18
+ /**
19
+ * Merkle tree node
20
+ */
21
+ export interface MerkleNode {
22
+ hash: string;
23
+ left?: MerkleNode;
24
+ right?: MerkleNode;
25
+ data?: string;
26
+ }
27
+ /**
28
+ * Merkle inclusion proof
29
+ */
30
+ export interface MerkleProof {
31
+ /** Leaf hash being proven */
32
+ leafHash: string;
33
+ /** Proof path (sibling hashes) */
34
+ path: Array<{
35
+ hash: string;
36
+ position: 'left' | 'right';
37
+ }>;
38
+ /** Root hash */
39
+ root: string;
40
+ /** Leaf index in tree */
41
+ leafIndex: number;
42
+ /** Total leaves in tree */
43
+ treeSize: number;
44
+ }
45
+ /**
46
+ * Merkle tree anchor commitment
47
+ */
48
+ export interface MerkleAnchor {
49
+ /** Unique anchor ID */
50
+ anchorId: string;
51
+ /** Merkle root hash */
52
+ rootHash: string;
53
+ /** Number of leaves in tree */
54
+ leafCount: number;
55
+ /** Timestamp of anchor creation */
56
+ timestamp: Date;
57
+ /** External anchor references */
58
+ externalAnchors: ExternalAnchor[];
59
+ /** Signature of root by anchor service */
60
+ signature?: string;
61
+ }
62
+ /**
63
+ * External anchor reference
64
+ */
65
+ export interface ExternalAnchor {
66
+ /** Type of external anchor */
67
+ type: 'ethereum' | 'bitcoin' | 'rfc3161' | 'custom';
68
+ /** Transaction hash or reference ID */
69
+ reference: string;
70
+ /** Anchor timestamp */
71
+ timestamp?: Date;
72
+ /** Confirmation status */
73
+ confirmed: boolean;
74
+ }
75
+ /**
76
+ * Batch aggregation result
77
+ */
78
+ export interface BatchAggregationResult {
79
+ /** Anchor record */
80
+ anchor: MerkleAnchor;
81
+ /** Proofs for each item */
82
+ proofs: Map<string, MerkleProof>;
83
+ /** Time taken in ms */
84
+ durationMs: number;
85
+ }
86
+ /**
87
+ * Build Merkle tree from leaf hashes
88
+ */
89
+ export declare function buildMerkleTree(leafHashes: string[]): MerkleNode | null;
90
+ /**
91
+ * Generate Merkle proof for a leaf
92
+ */
93
+ export declare function generateMerkleProof(leafHashes: string[], leafIndex: number): MerkleProof | null;
94
+ /**
95
+ * Verify a Merkle proof
96
+ */
97
+ export declare function verifyMerkleProof(proof: MerkleProof): boolean;
98
+ /**
99
+ * Merkle aggregation configuration
100
+ */
101
+ export interface MerkleAggregationConfig {
102
+ /** Minimum items before auto-anchor */
103
+ minBatchSize: number;
104
+ /** Maximum items before forced anchor */
105
+ maxBatchSize: number;
106
+ /** Maximum time before auto-anchor (ms) */
107
+ maxBatchAgeMs: number;
108
+ /** Enable external anchoring */
109
+ enableExternalAnchoring: boolean;
110
+ /** External anchor service URLs */
111
+ externalAnchorServices?: {
112
+ ethereum?: string;
113
+ bitcoin?: string;
114
+ rfc3161?: string;
115
+ };
116
+ /** Signing key for anchors */
117
+ signingKey?: string;
118
+ }
119
+ /**
120
+ * Merkle Aggregation Service
121
+ *
122
+ * Aggregates proofs into Merkle trees for efficient batch verification
123
+ * and external anchoring.
124
+ */
125
+ export declare class MerkleAggregationService {
126
+ private config;
127
+ private pending;
128
+ private anchors;
129
+ private proofsByAnchor;
130
+ private anchorTimer;
131
+ private signingKey;
132
+ constructor(config?: Partial<MerkleAggregationConfig>);
133
+ /**
134
+ * Add an item for aggregation
135
+ */
136
+ addItem(id: string, data: string): Promise<void>;
137
+ /**
138
+ * Add a proof for aggregation
139
+ */
140
+ addProof(proof: Proof): Promise<void>;
141
+ /**
142
+ * Force anchor current batch
143
+ */
144
+ anchor(): Promise<BatchAggregationResult | null>;
145
+ /**
146
+ * Submit to external anchoring services
147
+ */
148
+ private submitExternalAnchors;
149
+ /**
150
+ * Submit RFC 3161 timestamp request
151
+ */
152
+ private submitRFC3161Timestamp;
153
+ /**
154
+ * Submit Ethereum anchor
155
+ */
156
+ private submitEthereumAnchor;
157
+ /**
158
+ * Get anchor by ID
159
+ */
160
+ getAnchor(anchorId: string): MerkleAnchor | undefined;
161
+ /**
162
+ * Get proof for an item
163
+ */
164
+ getProof(anchorId: string, itemId: string): MerkleProof | undefined;
165
+ /**
166
+ * Verify item inclusion in an anchor
167
+ */
168
+ verifyInclusion(anchorId: string, itemId: string, data: string): boolean;
169
+ /**
170
+ * Get all anchors
171
+ */
172
+ getAllAnchors(): MerkleAnchor[];
173
+ /**
174
+ * Get pending count
175
+ */
176
+ getPendingCount(): number;
177
+ /**
178
+ * Get statistics
179
+ */
180
+ getStats(): {
181
+ totalAnchors: number;
182
+ totalProofs: number;
183
+ pendingItems: number;
184
+ externalAnchors: number;
185
+ };
186
+ /**
187
+ * Cleanup resources
188
+ */
189
+ destroy(): void;
190
+ }
191
+ /**
192
+ * Create a Merkle aggregation service
193
+ */
194
+ export declare function createMerkleAggregationService(config?: Partial<MerkleAggregationConfig>): MerkleAggregationService;
195
+ //# sourceMappingURL=merkle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../../src/proof/merkle.ts"],"names":[],"mappings":"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"}