monora-ai 2.0.0 → 2.1.3

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 (202) hide show
  1. package/README.md +441 -150
  2. package/dist/aims_governance.d.ts +238 -0
  3. package/dist/aims_governance.d.ts.map +1 -0
  4. package/dist/aims_governance.js +922 -0
  5. package/dist/alerts.d.ts +16 -0
  6. package/dist/alerts.d.ts.map +1 -1
  7. package/dist/alerts.js +16 -0
  8. package/dist/api.d.ts +6 -0
  9. package/dist/api.d.ts.map +1 -1
  10. package/dist/api.js +6 -0
  11. package/dist/assessment.d.ts +269 -0
  12. package/dist/assessment.d.ts.map +1 -0
  13. package/dist/assessment.js +1232 -0
  14. package/dist/attestation.js +23 -1
  15. package/dist/attribution.d.ts +349 -0
  16. package/dist/attribution.d.ts.map +1 -0
  17. package/dist/attribution.js +987 -0
  18. package/dist/autodetect.d.ts +69 -1
  19. package/dist/autodetect.d.ts.map +1 -1
  20. package/dist/autodetect.js +644 -1
  21. package/dist/bias.d.ts +130 -0
  22. package/dist/bias.d.ts.map +1 -0
  23. package/dist/bias.js +223 -0
  24. package/dist/circuit_breaker.js +3 -3
  25. package/dist/cli/diagnostics.d.ts +5 -1
  26. package/dist/cli/diagnostics.d.ts.map +1 -1
  27. package/dist/cli/diagnostics.js +31 -8
  28. package/dist/cli/doctor.d.ts +25 -0
  29. package/dist/cli/doctor.d.ts.map +1 -0
  30. package/dist/cli/doctor.js +381 -0
  31. package/dist/cli/fix.d.ts +16 -0
  32. package/dist/cli/fix.d.ts.map +1 -0
  33. package/dist/cli/fix.js +284 -0
  34. package/dist/cli/init.d.ts +57 -0
  35. package/dist/cli/init.d.ts.map +1 -0
  36. package/dist/cli/init.js +205 -0
  37. package/dist/cli.js +1611 -126
  38. package/dist/complianceTargets.d.ts +111 -0
  39. package/dist/complianceTargets.d.ts.map +1 -0
  40. package/dist/complianceTargets.js +521 -0
  41. package/dist/config.d.ts +301 -17
  42. package/dist/config.d.ts.map +1 -1
  43. package/dist/config.js +428 -36
  44. package/dist/config_migrations.d.ts +41 -0
  45. package/dist/config_migrations.d.ts.map +1 -1
  46. package/dist/config_migrations.js +205 -0
  47. package/dist/config_schema.d.ts +2900 -731
  48. package/dist/config_schema.d.ts.map +1 -1
  49. package/dist/config_schema.js +257 -55
  50. package/dist/context.d.ts +34 -0
  51. package/dist/context.d.ts.map +1 -1
  52. package/dist/context.js +118 -7
  53. package/dist/control_backbone.d.ts +122 -0
  54. package/dist/control_backbone.d.ts.map +1 -0
  55. package/dist/control_backbone.js +698 -0
  56. package/dist/data-governance.d.ts +187 -0
  57. package/dist/data-governance.d.ts.map +1 -0
  58. package/dist/data-governance.js +424 -0
  59. package/dist/dataResidency.d.ts +44 -0
  60. package/dist/dataResidency.d.ts.map +1 -0
  61. package/dist/dataResidency.js +203 -0
  62. package/dist/dispatcher.d.ts +32 -0
  63. package/dist/dispatcher.d.ts.map +1 -1
  64. package/dist/dispatcher.js +91 -4
  65. package/dist/events.d.ts.map +1 -1
  66. package/dist/events.js +38 -0
  67. package/dist/evidence_store.d.ts +103 -0
  68. package/dist/evidence_store.d.ts.map +1 -0
  69. package/dist/evidence_store.js +459 -0
  70. package/dist/executiveSummary.d.ts +65 -8
  71. package/dist/executiveSummary.d.ts.map +1 -1
  72. package/dist/executiveSummary.js +289 -26
  73. package/dist/identity.d.ts +143 -0
  74. package/dist/identity.d.ts.map +1 -0
  75. package/dist/identity.js +231 -0
  76. package/dist/impact-assessment.d.ts +350 -0
  77. package/dist/impact-assessment.d.ts.map +1 -0
  78. package/dist/impact-assessment.js +580 -0
  79. package/dist/index.d.ts +25 -5
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +300 -4
  82. package/dist/instrumentation.d.ts +1 -1
  83. package/dist/instrumentation.d.ts.map +1 -1
  84. package/dist/instrumentation.js +243 -27
  85. package/dist/integrations/anthropic.d.ts +3 -0
  86. package/dist/integrations/anthropic.d.ts.map +1 -1
  87. package/dist/integrations/anthropic.js +284 -79
  88. package/dist/integrations/governance.d.ts +33 -0
  89. package/dist/integrations/governance.d.ts.map +1 -0
  90. package/dist/integrations/governance.js +208 -0
  91. package/dist/integrations/langchain.d.ts +7 -0
  92. package/dist/integrations/langchain.d.ts.map +1 -1
  93. package/dist/integrations/langchain.js +387 -143
  94. package/dist/integrations/openai.d.ts +9 -0
  95. package/dist/integrations/openai.d.ts.map +1 -1
  96. package/dist/integrations/openai.js +673 -73
  97. package/dist/iso42001_consolidation.d.ts +16 -0
  98. package/dist/iso42001_consolidation.d.ts.map +1 -0
  99. package/dist/iso42001_consolidation.js +413 -0
  100. package/dist/iso42001_workflows.d.ts +263 -0
  101. package/dist/iso42001_workflows.d.ts.map +1 -0
  102. package/dist/iso42001_workflows.js +781 -0
  103. package/dist/lifecycle.d.ts +299 -0
  104. package/dist/lifecycle.d.ts.map +1 -0
  105. package/dist/lifecycle.js +624 -0
  106. package/dist/lineage.d.ts +2 -2
  107. package/dist/lineage.d.ts.map +1 -1
  108. package/dist/lineage.js +12 -17
  109. package/dist/middleware/express.d.ts.map +1 -1
  110. package/dist/middleware/express.js +33 -3
  111. package/dist/middleware/nextjs.d.ts.map +1 -1
  112. package/dist/middleware/nextjs.js +42 -68
  113. package/dist/model.d.ts +143 -0
  114. package/dist/model.d.ts.map +1 -0
  115. package/dist/model.js +371 -0
  116. package/dist/onboarding.d.ts +42 -0
  117. package/dist/onboarding.d.ts.map +1 -0
  118. package/dist/onboarding.js +1022 -0
  119. package/dist/oversight.d.ts +264 -0
  120. package/dist/oversight.d.ts.map +1 -0
  121. package/dist/oversight.js +497 -0
  122. package/dist/pdf_report.d.ts.map +1 -1
  123. package/dist/pdf_report.js +42 -21
  124. package/dist/presets.d.ts +88 -0
  125. package/dist/presets.d.ts.map +1 -0
  126. package/dist/presets.js +520 -0
  127. package/dist/propagation.d.ts.map +1 -1
  128. package/dist/propagation.js +34 -2
  129. package/dist/quotas.d.ts +171 -0
  130. package/dist/quotas.d.ts.map +1 -0
  131. package/dist/quotas.js +259 -0
  132. package/dist/register.d.ts +13 -0
  133. package/dist/register.d.ts.map +1 -0
  134. package/dist/register.js +99 -0
  135. package/dist/registry.d.ts +1 -0
  136. package/dist/registry.d.ts.map +1 -1
  137. package/dist/registry.js +7 -0
  138. package/dist/registryData.json +43 -6
  139. package/dist/report.d.ts +2 -1
  140. package/dist/report.d.ts.map +1 -1
  141. package/dist/report.js +189 -2
  142. package/dist/reporting.d.ts +125 -0
  143. package/dist/reporting.d.ts.map +1 -1
  144. package/dist/reporting.js +196 -5
  145. package/dist/resources.d.ts +285 -0
  146. package/dist/resources.d.ts.map +1 -0
  147. package/dist/resources.js +643 -0
  148. package/dist/risk.d.ts +120 -0
  149. package/dist/risk.d.ts.map +1 -0
  150. package/dist/risk.js +220 -0
  151. package/dist/runtime.d.ts +74 -1
  152. package/dist/runtime.d.ts.map +1 -1
  153. package/dist/runtime.js +598 -22
  154. package/dist/schemaInference.d.ts +92 -0
  155. package/dist/schemaInference.d.ts.map +1 -0
  156. package/dist/schemaInference.js +466 -0
  157. package/dist/schema_validation.js +2 -2
  158. package/dist/schemas/config.schema.json +169 -6
  159. package/dist/schemas/event.schema.json +4 -0
  160. package/dist/security_report.js +4 -4
  161. package/dist/signing.d.ts +1 -1
  162. package/dist/signing.d.ts.map +1 -1
  163. package/dist/signing.js +4 -0
  164. package/dist/sinks/file.d.ts +19 -1
  165. package/dist/sinks/file.d.ts.map +1 -1
  166. package/dist/sinks/file.js +82 -13
  167. package/dist/sinks/https.d.ts +10 -0
  168. package/dist/sinks/https.d.ts.map +1 -1
  169. package/dist/sinks/https.js +76 -16
  170. package/dist/sinks/stdout.d.ts +1 -0
  171. package/dist/sinks/stdout.d.ts.map +1 -1
  172. package/dist/sinks/stdout.js +12 -1
  173. package/dist/spec.d.ts +159 -0
  174. package/dist/spec.d.ts.map +1 -0
  175. package/dist/spec.js +391 -0
  176. package/dist/stakeholders.d.ts +199 -0
  177. package/dist/stakeholders.d.ts.map +1 -0
  178. package/dist/stakeholders.js +398 -0
  179. package/dist/standards.d.ts.map +1 -1
  180. package/dist/standards.js +160 -2
  181. package/dist/standards_ingest.d.ts +2 -2
  182. package/dist/standards_ingest.d.ts.map +1 -1
  183. package/dist/standards_ingest.js +105 -23
  184. package/dist/streaming.d.ts.map +1 -1
  185. package/dist/streaming.js +7 -2
  186. package/dist/telemetry.d.ts +16 -2
  187. package/dist/telemetry.d.ts.map +1 -1
  188. package/dist/telemetry.js +79 -14
  189. package/dist/templates/controls/iso42001_control_catalog.json +1443 -0
  190. package/dist/traced_emitter.d.ts +3 -0
  191. package/dist/traced_emitter.d.ts.map +1 -1
  192. package/dist/traced_emitter.js +142 -25
  193. package/dist/trust_package.d.ts +21 -1
  194. package/dist/trust_package.d.ts.map +1 -1
  195. package/dist/trust_package.js +101 -4
  196. package/dist/verify.d.ts.map +1 -1
  197. package/dist/verify.js +9 -2
  198. package/dist/wal.d.ts.map +1 -1
  199. package/dist/wal.js +2 -1
  200. package/package.json +14 -1
  201. package/scripts/postinstall.js +119 -97
  202. package/templates/controls/iso42001_control_catalog.json +1443 -0
@@ -30,6 +30,9 @@ import { EventEmitter } from 'events';
30
30
  export declare class TracedEventEmitter extends EventEmitter {
31
31
  private listenerContexts;
32
32
  private wrappedListeners;
33
+ private getEventMap;
34
+ private trackListener;
35
+ private untrackListener;
33
36
  /**
34
37
  * Register an event listener that preserves the current trace context.
35
38
  */
@@ -1 +1 @@
1
- {"version":3,"file":"traced_emitter.d.ts","sourceRoot":"","sources":["../src/traced_emitter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAQtC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,gBAAgB,CAAiD;IACzE,OAAO,CAAC,gBAAgB,CAAiC;IAEzD;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAYpE;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAI7E;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAetE;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAYrE;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAIhF;;OAEG;IACH,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOjD;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAYjF;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;CAatF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CA2C5E"}
1
+ {"version":3,"file":"traced_emitter.d.ts","sourceRoot":"","sources":["../src/traced_emitter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAQtC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,gBAAgB,CAAuE;IAC/F,OAAO,CAAC,gBAAgB,CAAuD;IAE/E,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAWpE;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAI7E;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAatE;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAWrE;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAIhF;;OAEG;IACH,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAWjD;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAWjF;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;CAWtF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAuJ5E"}
@@ -38,6 +38,34 @@ class TracedEventEmitter extends events_1.EventEmitter {
38
38
  this.listenerContexts = new Map();
39
39
  this.wrappedListeners = new Map();
40
40
  }
41
+ getEventMap(map, event) {
42
+ let eventMap = map.get(event);
43
+ if (!eventMap) {
44
+ eventMap = new Map();
45
+ map.set(event, eventMap);
46
+ }
47
+ return eventMap;
48
+ }
49
+ trackListener(event, listener, ctx, wrappedListener) {
50
+ this.getEventMap(this.listenerContexts, event).set(listener, ctx);
51
+ this.getEventMap(this.wrappedListeners, event).set(listener, wrappedListener);
52
+ }
53
+ untrackListener(event, listener) {
54
+ const ctxMap = this.listenerContexts.get(event);
55
+ if (ctxMap) {
56
+ ctxMap.delete(listener);
57
+ if (ctxMap.size === 0) {
58
+ this.listenerContexts.delete(event);
59
+ }
60
+ }
61
+ const wrappedMap = this.wrappedListeners.get(event);
62
+ if (wrappedMap) {
63
+ wrappedMap.delete(listener);
64
+ if (wrappedMap.size === 0) {
65
+ this.wrappedListeners.delete(event);
66
+ }
67
+ }
68
+ }
41
69
  /**
42
70
  * Register an event listener that preserves the current trace context.
43
71
  */
@@ -46,8 +74,7 @@ class TracedEventEmitter extends events_1.EventEmitter {
46
74
  const wrappedListener = (...args) => {
47
75
  (0, context_1.runInContext)(ctx, () => listener(...args));
48
76
  };
49
- this.listenerContexts.set(listener, ctx);
50
- this.wrappedListeners.set(listener, wrappedListener);
77
+ this.trackListener(event, listener, ctx, wrappedListener);
51
78
  return super.on(event, wrappedListener);
52
79
  }
53
80
  /**
@@ -64,22 +91,19 @@ class TracedEventEmitter extends events_1.EventEmitter {
64
91
  const wrappedListener = (...args) => {
65
92
  (0, context_1.runInContext)(ctx, () => listener(...args));
66
93
  // Clean up mappings after one-time listener fires
67
- this.listenerContexts.delete(listener);
68
- this.wrappedListeners.delete(listener);
94
+ this.untrackListener(event, listener);
69
95
  };
70
- this.listenerContexts.set(listener, ctx);
71
- this.wrappedListeners.set(listener, wrappedListener);
96
+ this.trackListener(event, listener, ctx, wrappedListener);
72
97
  return super.once(event, wrappedListener);
73
98
  }
74
99
  /**
75
100
  * Remove an event listener.
76
101
  */
77
102
  off(event, listener) {
78
- const wrappedListener = this.wrappedListeners.get(listener);
103
+ const wrappedListener = this.wrappedListeners.get(event)?.get(listener);
79
104
  if (wrappedListener) {
80
105
  super.off(event, wrappedListener);
81
- this.listenerContexts.delete(listener);
82
- this.wrappedListeners.delete(listener);
106
+ this.untrackListener(event, listener);
83
107
  }
84
108
  else {
85
109
  super.off(event, listener);
@@ -96,9 +120,14 @@ class TracedEventEmitter extends events_1.EventEmitter {
96
120
  * Remove all listeners for an event (or all events).
97
121
  */
98
122
  removeAllListeners(event) {
99
- // Clear our tracking maps
100
- this.listenerContexts.clear();
101
- this.wrappedListeners.clear();
123
+ if (event === undefined) {
124
+ this.listenerContexts.clear();
125
+ this.wrappedListeners.clear();
126
+ }
127
+ else {
128
+ this.listenerContexts.delete(event);
129
+ this.wrappedListeners.delete(event);
130
+ }
102
131
  return super.removeAllListeners(event);
103
132
  }
104
133
  /**
@@ -109,8 +138,7 @@ class TracedEventEmitter extends events_1.EventEmitter {
109
138
  const wrappedListener = (...args) => {
110
139
  (0, context_1.runInContext)(ctx, () => listener(...args));
111
140
  };
112
- this.listenerContexts.set(listener, ctx);
113
- this.wrappedListeners.set(listener, wrappedListener);
141
+ this.trackListener(event, listener, ctx, wrappedListener);
114
142
  return super.prependListener(event, wrappedListener);
115
143
  }
116
144
  /**
@@ -120,11 +148,9 @@ class TracedEventEmitter extends events_1.EventEmitter {
120
148
  const ctx = (0, context_1.captureContext)();
121
149
  const wrappedListener = (...args) => {
122
150
  (0, context_1.runInContext)(ctx, () => listener(...args));
123
- this.listenerContexts.delete(listener);
124
- this.wrappedListeners.delete(listener);
151
+ this.untrackListener(event, listener);
125
152
  };
126
- this.listenerContexts.set(listener, ctx);
127
- this.wrappedListeners.set(listener, wrappedListener);
153
+ this.trackListener(event, listener, ctx, wrappedListener);
128
154
  return super.prependOnceListener(event, wrappedListener);
129
155
  }
130
156
  }
@@ -161,24 +187,115 @@ exports.TracedEventEmitter = TracedEventEmitter;
161
187
  */
162
188
  function wrapEmitterWithContext(emitter) {
163
189
  const originalOn = emitter.on.bind(emitter);
164
- const originalOnce = emitter.once.bind(emitter);
165
190
  const originalAddListener = emitter.addListener.bind(emitter);
166
191
  const originalPrependListener = emitter.prependListener.bind(emitter);
167
- const originalPrependOnceListener = emitter.prependOnceListener.bind(emitter);
192
+ const originalRemoveListener = emitter.removeListener.bind(emitter);
193
+ const originalOff = emitter.off ? emitter.off.bind(emitter) : undefined;
194
+ const originalRemoveAllListeners = emitter.removeAllListeners.bind(emitter);
195
+ let boundListeners = new WeakMap();
196
+ const eventListeners = new Map();
197
+ const trackListener = (event, originalListener, boundListener) => {
198
+ boundListeners.set(originalListener, boundListener);
199
+ let listeners = eventListeners.get(event);
200
+ if (!listeners) {
201
+ listeners = new Set();
202
+ eventListeners.set(event, listeners);
203
+ }
204
+ listeners.add(originalListener);
205
+ };
206
+ const untrackListener = (event, originalListener) => {
207
+ boundListeners.delete(originalListener);
208
+ const listeners = eventListeners.get(event);
209
+ if (listeners) {
210
+ listeners.delete(originalListener);
211
+ if (listeners.size === 0) {
212
+ eventListeners.delete(event);
213
+ }
214
+ }
215
+ };
216
+ const bindListener = (event, listener, once) => {
217
+ const bound = (0, context_1.bindContext)(listener);
218
+ if (once) {
219
+ const wrapped = (...args) => {
220
+ try {
221
+ return bound(...args);
222
+ }
223
+ finally {
224
+ if (originalOff) {
225
+ originalOff(event, wrapped);
226
+ }
227
+ else {
228
+ originalRemoveListener(event, wrapped);
229
+ }
230
+ untrackListener(event, listener);
231
+ }
232
+ };
233
+ trackListener(event, listener, wrapped);
234
+ return wrapped;
235
+ }
236
+ trackListener(event, listener, bound);
237
+ return bound;
238
+ };
168
239
  emitter.on = function (event, listener) {
169
- return originalOn(event, (0, context_1.bindContext)(listener));
240
+ return originalOn(event, bindListener(event, listener, false));
170
241
  };
171
242
  emitter.addListener = function (event, listener) {
172
- return originalAddListener(event, (0, context_1.bindContext)(listener));
243
+ return originalAddListener(event, bindListener(event, listener, false));
173
244
  };
174
245
  emitter.once = function (event, listener) {
175
- return originalOnce(event, (0, context_1.bindContext)(listener));
246
+ return originalOn(event, bindListener(event, listener, true));
176
247
  };
177
248
  emitter.prependListener = function (event, listener) {
178
- return originalPrependListener(event, (0, context_1.bindContext)(listener));
249
+ return originalPrependListener(event, bindListener(event, listener, false));
179
250
  };
180
251
  emitter.prependOnceListener = function (event, listener) {
181
- return originalPrependOnceListener(event, (0, context_1.bindContext)(listener));
252
+ return originalPrependListener(event, bindListener(event, listener, true));
253
+ };
254
+ emitter.removeListener = function (event, listener) {
255
+ const bound = boundListeners.get(listener);
256
+ const target = bound || listener;
257
+ originalRemoveListener(event, target);
258
+ if (bound) {
259
+ untrackListener(event, listener);
260
+ }
261
+ return emitter;
262
+ };
263
+ emitter.off = function (event, listener) {
264
+ const bound = boundListeners.get(listener);
265
+ const targets = new Set();
266
+ targets.add(listener);
267
+ if (bound) {
268
+ targets.add(bound);
269
+ }
270
+ for (const target of targets) {
271
+ if (originalOff) {
272
+ originalOff(event, target);
273
+ }
274
+ else {
275
+ originalRemoveListener(event, target);
276
+ }
277
+ }
278
+ if (bound) {
279
+ untrackListener(event, listener);
280
+ }
281
+ return emitter;
282
+ };
283
+ emitter.removeAllListeners = function (event) {
284
+ if (event === undefined) {
285
+ boundListeners = new WeakMap();
286
+ eventListeners.clear();
287
+ }
288
+ else {
289
+ const listeners = eventListeners.get(event);
290
+ if (listeners) {
291
+ for (const originalListener of listeners) {
292
+ boundListeners.delete(originalListener);
293
+ }
294
+ eventListeners.delete(event);
295
+ }
296
+ }
297
+ originalRemoveAllListeners(event);
298
+ return emitter;
182
299
  };
183
300
  return emitter;
184
301
  }
@@ -10,10 +10,30 @@ export interface TrustPackage {
10
10
  hash_chain_proof: Record<string, any>;
11
11
  config_snapshot: Record<string, any>;
12
12
  export_manifest: Record<string, any>;
13
+ evidence_manifest?: Record<string, any>;
14
+ control_coverage?: Record<string, any>;
15
+ audit_metadata?: Record<string, any>;
16
+ project_registration?: Record<string, any>;
13
17
  gpg_signature: string | null;
14
18
  gpg_signature_metadata?: Record<string, any>;
15
19
  }
16
- export declare function buildTrustPackage(traceId: string, events: Array<Record<string, any>>, config: MonoraConfig): TrustPackage;
20
+ export interface TrustPackageBuildOptions {
21
+ evidenceManifest?: Record<string, any>;
22
+ evidenceManifestPath?: string;
23
+ evidenceManifestAuto?: boolean;
24
+ evidenceManifestStandard?: string;
25
+ evidenceManifestIncludeLineage?: boolean;
26
+ evidenceManifestIncludeHashChain?: boolean;
27
+ evidenceManifestIncludeWorkflowState?: boolean;
28
+ evidenceManifestIncludeAimsState?: boolean;
29
+ controlCatalog?: Record<string, any>;
30
+ controlCatalogPath?: string;
31
+ controlWorkflowState?: Record<string, any>;
32
+ controlWorkflowStatePath?: string;
33
+ controlCoverageTarget?: number;
34
+ controlCoveragePath?: string;
35
+ }
36
+ export declare function buildTrustPackage(traceId: string, events: Array<Record<string, any>>, config: MonoraConfig, options?: TrustPackageBuildOptions): TrustPackage;
17
37
  export declare function applyGpgSignature(trustPackage: TrustPackage, options?: {
18
38
  gpgKey?: string;
19
39
  gpgHome?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"trust_package.d.ts","sourceRoot":"","sources":["../src/trust_package.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAMxC,MAAM,WAAW,YAAY;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9C;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAClC,MAAM,EAAE,YAAY,GACnB,YAAY,CAiBd;AAED,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,YAAY,CAQd;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAOtF;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAClC,OAAO,EAAE,MAAM,GACd,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAS5B"}
1
+ {"version":3,"file":"trust_package.d.ts","sourceRoot":"","sources":["../src/trust_package.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAQxC,MAAM,WAAW,YAAY;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,wBAAwB;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,oCAAoC,CAAC,EAAE,OAAO,CAAC;IAC/C,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3C,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAClC,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,wBAAwB,GACjC,YAAY,CA2Fd;AAED,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,YAAY,CAQd;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAOtF;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAClC,OAAO,EAAE,MAAM,GACd,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAS5B"}
@@ -43,17 +43,20 @@ exports.filterTraceEvents = filterTraceEvents;
43
43
  const fs = __importStar(require("fs"));
44
44
  const path = __importStar(require("path"));
45
45
  const attestation_1 = require("./attestation");
46
+ const attribution_1 = require("./attribution");
47
+ const control_backbone_1 = require("./control_backbone");
48
+ const evidence_store_1 = require("./evidence_store");
46
49
  const report_1 = require("./report");
47
50
  const security_report_1 = require("./security_report");
48
51
  const verify_1 = require("./verify");
49
52
  const reporting_1 = require("./reporting");
50
- function buildTrustPackage(traceId, events, config) {
53
+ function buildTrustPackage(traceId, events, config, options) {
51
54
  const traceEvents = filterTraceEvents(events, traceId);
52
- const complianceReport = (0, report_1.buildReport)(traceEvents, config.policies || {});
55
+ const complianceReport = (0, report_1.buildReport)(traceEvents, config.policies || {}, config.registry);
53
56
  const configSnapshot = (0, security_report_1.buildConfigSnapshot)(config || {});
54
57
  const hashChainProof = buildHashChainProof(traceEvents, config || {}, traceId);
55
58
  const exportManifest = buildExportManifest(traceEvents, config || {}, traceId);
56
- return {
59
+ const trustPackage = {
57
60
  trust_package_version: '1.0.0',
58
61
  trace_id: traceId,
59
62
  generated_at: new Date().toISOString(),
@@ -63,6 +66,70 @@ function buildTrustPackage(traceId, events, config) {
63
66
  export_manifest: exportManifest,
64
67
  gpg_signature: null,
65
68
  };
69
+ const auditMetadata = (0, attribution_1.getAuditMetadata)();
70
+ if (auditMetadata) {
71
+ trustPackage.audit_metadata = { ...auditMetadata };
72
+ }
73
+ const registration = (0, attribution_1.getRegistration)();
74
+ if (registration) {
75
+ trustPackage.project_registration = { ...registration };
76
+ }
77
+ let evidenceManifest = loadEvidenceManifest(options);
78
+ if (!evidenceManifest && options?.evidenceManifestAuto) {
79
+ evidenceManifest = (0, evidence_store_1.buildRuntimeEvidenceManifest)({
80
+ standard: options.evidenceManifestStandard || 'ISO42001',
81
+ includeLineage: options.evidenceManifestIncludeLineage !== false,
82
+ includeHashChain: options.evidenceManifestIncludeHashChain !== false,
83
+ includeControlWorkflowState: options.evidenceManifestIncludeWorkflowState !== false,
84
+ includeAimsGovernanceState: options.evidenceManifestIncludeAimsState !== false,
85
+ controlCatalog: options.controlCatalog || null,
86
+ });
87
+ }
88
+ const workflowState = loadWorkflowState(options);
89
+ const shouldGenerateCoverage = Boolean(options?.controlCatalog) ||
90
+ Boolean(options?.controlCatalogPath) ||
91
+ Boolean(workflowState) ||
92
+ Boolean(evidenceManifest) ||
93
+ Boolean(options?.controlCoveragePath);
94
+ if (shouldGenerateCoverage) {
95
+ let catalog = options?.controlCatalog || null;
96
+ if (!catalog && options?.controlCatalogPath) {
97
+ try {
98
+ catalog = JSON.parse(fs.readFileSync(options.controlCatalogPath, 'utf-8'));
99
+ }
100
+ catch {
101
+ catalog = null;
102
+ }
103
+ }
104
+ if (!catalog) {
105
+ try {
106
+ catalog = (0, control_backbone_1.loadDefaultIso42001Catalog)();
107
+ }
108
+ catch (_err) {
109
+ catalog = null;
110
+ }
111
+ }
112
+ if (catalog) {
113
+ const coverage = (0, control_backbone_1.generateControlCoverageReport)({
114
+ catalog,
115
+ evidenceItems: evidenceManifest?.evidence_items
116
+ || workflowState?.evidence_items,
117
+ workflows: workflowState?.workflows,
118
+ targetCoverage: typeof options?.controlCoverageTarget === 'number'
119
+ ? options.controlCoverageTarget
120
+ : 0.9,
121
+ });
122
+ trustPackage.control_coverage = coverage;
123
+ if (options?.controlCoveragePath) {
124
+ fs.mkdirSync(path.dirname(options.controlCoveragePath), { recursive: true });
125
+ fs.writeFileSync(options.controlCoveragePath, JSON.stringify(coverage, null, 2), 'utf-8');
126
+ }
127
+ }
128
+ }
129
+ if (evidenceManifest) {
130
+ trustPackage.evidence_manifest = evidenceManifest;
131
+ }
132
+ return trustPackage;
66
133
  }
67
134
  function applyGpgSignature(trustPackage, options) {
68
135
  const { gpg_signature, gpg_signature_metadata, ...payload } = trustPackage;
@@ -75,7 +142,7 @@ function applyGpgSignature(trustPackage, options) {
75
142
  }
76
143
  function writeTrustPackage(outputPath, trustPackage) {
77
144
  const dir = path.dirname(outputPath);
78
- if (dir) {
145
+ if (dir && dir !== '.') {
79
146
  fs.mkdirSync(dir, { recursive: true });
80
147
  }
81
148
  const reportBytes = (0, attestation_1.serializeReport)(trustPackage);
@@ -156,3 +223,33 @@ function attachSignature(trustPackage, signature) {
156
223
  },
157
224
  };
158
225
  }
226
+ function loadEvidenceManifest(options) {
227
+ if (options?.evidenceManifest && typeof options.evidenceManifest === 'object') {
228
+ return options.evidenceManifest;
229
+ }
230
+ if (options?.evidenceManifestPath) {
231
+ try {
232
+ return JSON.parse(fs.readFileSync(options.evidenceManifestPath, 'utf-8'));
233
+ }
234
+ catch (error) {
235
+ const message = error instanceof Error ? error.message : String(error);
236
+ throw new Error(`loadEvidenceManifest failed to parse ${options.evidenceManifestPath}: ${message}`);
237
+ }
238
+ }
239
+ return null;
240
+ }
241
+ function loadWorkflowState(options) {
242
+ if (options?.controlWorkflowState && typeof options.controlWorkflowState === 'object') {
243
+ return options.controlWorkflowState;
244
+ }
245
+ if (options?.controlWorkflowStatePath) {
246
+ try {
247
+ return JSON.parse(fs.readFileSync(options.controlWorkflowStatePath, 'utf-8'));
248
+ }
249
+ catch (error) {
250
+ const message = error instanceof Error ? error.message : String(error);
251
+ throw new Error(`loadWorkflowState failed to parse ${options.controlWorkflowStatePath}: ${message}`);
252
+ }
253
+ }
254
+ return null;
255
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAID,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CA2DnE;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GACjC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,CA4C1B;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAClC,OAAO,EAAE,MAAM,GACd,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,CAgB1B;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GACjC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CA+C5B;AA0BD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GACjC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAkD5B;AAgBD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,mBAAmB,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC3C,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GACjC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,UAAU,CAAC,CAoBtC;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAO9E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAEhE;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAkC1D"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAID,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CA2DnE;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GACjC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,CA4C1B;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAClC,OAAO,EAAE,MAAM,GACd,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,CAgB1B;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GACjC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CA+C5B;AA0BD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GACjC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAkD5B;AAgBD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,mBAAmB,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC3C,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GACjC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,UAAU,CAAC,CA6BtC;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAO9E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAEhE;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAkC1D"}
package/dist/verify.js CHANGED
@@ -288,8 +288,15 @@ function verifyChainWithProof(events) {
288
288
  };
289
289
  // Always compute Merkle root for chains with > 1 event
290
290
  if (events.length > 1) {
291
- const hashes = events.map((e) => e.event_hash || '');
292
- proofData.merkle_root = computeMerkleRoot(hashes);
291
+ const hashes = events
292
+ .map((event) => event.event_hash)
293
+ .filter((hash) => typeof hash === 'string' && hash.length > 0);
294
+ if (hashes.length !== events.length) {
295
+ throw new ChainVerificationError('Missing event_hash values; cannot compute Merkle root.');
296
+ }
297
+ if (hashes.length > 1) {
298
+ proofData.merkle_root = computeMerkleRoot(hashes);
299
+ }
293
300
  }
294
301
  return [isValid, error, proofData];
295
302
  }
package/dist/wal.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"wal.d.ts","sourceRoot":"","sources":["../src/wal.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,EAAE,CAAuB;IACjC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,eAAe,CAAK;gBAEhB,MAAM,GAAE,SAAc;IAgBlC,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,iBAAiB;IAyBzB;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;IAgBzC;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAazB,OAAO,CAAC,WAAW;IAcnB;;;;OAIG;IACH,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IA4BrC,OAAO,CAAE,cAAc;IAgCvB;;;;OAIG;IACH,eAAe,IAAI,MAAM;IA4CzB;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,qBAAqB;CAkC9B;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAAE,GAAG,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,aAAa,CAE9E"}
1
+ {"version":3,"file":"wal.d.ts","sourceRoot":"","sources":["../src/wal.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,EAAE,CAAuB;IACjC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,eAAe,CAAK;gBAEhB,MAAM,GAAE,SAAc;IAgBlC,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,iBAAiB;IAyBzB;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;IAgBzC;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAazB,OAAO,CAAC,WAAW;IAcnB;;;;OAIG;IACH,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IA4BrC,OAAO,CAAE,cAAc;IAgCvB;;;;OAIG;IACH,eAAe,IAAI,MAAM;IA4CzB;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,qBAAqB;CAkC9B;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAAE,GAAG,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,aAAa,CAE9E"}
package/dist/wal.js CHANGED
@@ -96,7 +96,8 @@ class WriteAheadLog {
96
96
  if (this.currentFilePath === null) {
97
97
  const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
98
98
  const serviceName = process.env.MONORA_SERVICE_NAME || 'monora';
99
- this.currentFilePath = path.join(this.config.path, `${serviceName}_${timestamp}.wal`);
99
+ const uniqueSuffix = `${process.pid}_${process.hrtime.bigint().toString()}`;
100
+ this.currentFilePath = path.join(this.config.path, `${serviceName}_${timestamp}_${uniqueSuffix}.wal`);
100
101
  }
101
102
  return this.currentFilePath;
102
103
  }
package/package.json CHANGED
@@ -1,9 +1,21 @@
1
1
  {
2
2
  "name": "monora-ai",
3
- "version": "2.0.0",
3
+ "version": "2.1.3",
4
4
  "description": "Lightweight governance and trace SDK for AI systems",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "require": "./dist/index.js",
11
+ "import": "./dist/index.js"
12
+ },
13
+ "./register": {
14
+ "types": "./dist/register.d.ts",
15
+ "require": "./dist/register.js",
16
+ "import": "./dist/register.js"
17
+ }
18
+ },
7
19
  "bin": {
8
20
  "monora": "dist/cli.js"
9
21
  },
@@ -54,6 +66,7 @@
54
66
  "ajv": "^8.12.0",
55
67
  "axios": "^1.7.9",
56
68
  "js-yaml": "^4.1.1",
69
+ "minimatch": "^9.0.0",
57
70
  "zod": "^3.23.0"
58
71
  }
59
72
  }