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.
- package/README.md +441 -150
- package/dist/aims_governance.d.ts +238 -0
- package/dist/aims_governance.d.ts.map +1 -0
- package/dist/aims_governance.js +922 -0
- package/dist/alerts.d.ts +16 -0
- package/dist/alerts.d.ts.map +1 -1
- package/dist/alerts.js +16 -0
- package/dist/api.d.ts +6 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +6 -0
- package/dist/assessment.d.ts +269 -0
- package/dist/assessment.d.ts.map +1 -0
- package/dist/assessment.js +1232 -0
- package/dist/attestation.js +23 -1
- package/dist/attribution.d.ts +349 -0
- package/dist/attribution.d.ts.map +1 -0
- package/dist/attribution.js +987 -0
- package/dist/autodetect.d.ts +69 -1
- package/dist/autodetect.d.ts.map +1 -1
- package/dist/autodetect.js +644 -1
- package/dist/bias.d.ts +130 -0
- package/dist/bias.d.ts.map +1 -0
- package/dist/bias.js +223 -0
- package/dist/circuit_breaker.js +3 -3
- package/dist/cli/diagnostics.d.ts +5 -1
- package/dist/cli/diagnostics.d.ts.map +1 -1
- package/dist/cli/diagnostics.js +31 -8
- package/dist/cli/doctor.d.ts +25 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +381 -0
- package/dist/cli/fix.d.ts +16 -0
- package/dist/cli/fix.d.ts.map +1 -0
- package/dist/cli/fix.js +284 -0
- package/dist/cli/init.d.ts +57 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +205 -0
- package/dist/cli.js +1611 -126
- package/dist/complianceTargets.d.ts +111 -0
- package/dist/complianceTargets.d.ts.map +1 -0
- package/dist/complianceTargets.js +521 -0
- package/dist/config.d.ts +301 -17
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +428 -36
- package/dist/config_migrations.d.ts +41 -0
- package/dist/config_migrations.d.ts.map +1 -1
- package/dist/config_migrations.js +205 -0
- package/dist/config_schema.d.ts +2900 -731
- package/dist/config_schema.d.ts.map +1 -1
- package/dist/config_schema.js +257 -55
- package/dist/context.d.ts +34 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +118 -7
- package/dist/control_backbone.d.ts +122 -0
- package/dist/control_backbone.d.ts.map +1 -0
- package/dist/control_backbone.js +698 -0
- package/dist/data-governance.d.ts +187 -0
- package/dist/data-governance.d.ts.map +1 -0
- package/dist/data-governance.js +424 -0
- package/dist/dataResidency.d.ts +44 -0
- package/dist/dataResidency.d.ts.map +1 -0
- package/dist/dataResidency.js +203 -0
- package/dist/dispatcher.d.ts +32 -0
- package/dist/dispatcher.d.ts.map +1 -1
- package/dist/dispatcher.js +91 -4
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +38 -0
- package/dist/evidence_store.d.ts +103 -0
- package/dist/evidence_store.d.ts.map +1 -0
- package/dist/evidence_store.js +459 -0
- package/dist/executiveSummary.d.ts +65 -8
- package/dist/executiveSummary.d.ts.map +1 -1
- package/dist/executiveSummary.js +289 -26
- package/dist/identity.d.ts +143 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +231 -0
- package/dist/impact-assessment.d.ts +350 -0
- package/dist/impact-assessment.d.ts.map +1 -0
- package/dist/impact-assessment.js +580 -0
- package/dist/index.d.ts +25 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +300 -4
- package/dist/instrumentation.d.ts +1 -1
- package/dist/instrumentation.d.ts.map +1 -1
- package/dist/instrumentation.js +243 -27
- package/dist/integrations/anthropic.d.ts +3 -0
- package/dist/integrations/anthropic.d.ts.map +1 -1
- package/dist/integrations/anthropic.js +284 -79
- package/dist/integrations/governance.d.ts +33 -0
- package/dist/integrations/governance.d.ts.map +1 -0
- package/dist/integrations/governance.js +208 -0
- package/dist/integrations/langchain.d.ts +7 -0
- package/dist/integrations/langchain.d.ts.map +1 -1
- package/dist/integrations/langchain.js +387 -143
- package/dist/integrations/openai.d.ts +9 -0
- package/dist/integrations/openai.d.ts.map +1 -1
- package/dist/integrations/openai.js +673 -73
- package/dist/iso42001_consolidation.d.ts +16 -0
- package/dist/iso42001_consolidation.d.ts.map +1 -0
- package/dist/iso42001_consolidation.js +413 -0
- package/dist/iso42001_workflows.d.ts +263 -0
- package/dist/iso42001_workflows.d.ts.map +1 -0
- package/dist/iso42001_workflows.js +781 -0
- package/dist/lifecycle.d.ts +299 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +624 -0
- package/dist/lineage.d.ts +2 -2
- package/dist/lineage.d.ts.map +1 -1
- package/dist/lineage.js +12 -17
- package/dist/middleware/express.d.ts.map +1 -1
- package/dist/middleware/express.js +33 -3
- package/dist/middleware/nextjs.d.ts.map +1 -1
- package/dist/middleware/nextjs.js +42 -68
- package/dist/model.d.ts +143 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +371 -0
- package/dist/onboarding.d.ts +42 -0
- package/dist/onboarding.d.ts.map +1 -0
- package/dist/onboarding.js +1022 -0
- package/dist/oversight.d.ts +264 -0
- package/dist/oversight.d.ts.map +1 -0
- package/dist/oversight.js +497 -0
- package/dist/pdf_report.d.ts.map +1 -1
- package/dist/pdf_report.js +42 -21
- package/dist/presets.d.ts +88 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +520 -0
- package/dist/propagation.d.ts.map +1 -1
- package/dist/propagation.js +34 -2
- package/dist/quotas.d.ts +171 -0
- package/dist/quotas.d.ts.map +1 -0
- package/dist/quotas.js +259 -0
- package/dist/register.d.ts +13 -0
- package/dist/register.d.ts.map +1 -0
- package/dist/register.js +99 -0
- package/dist/registry.d.ts +1 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +7 -0
- package/dist/registryData.json +43 -6
- package/dist/report.d.ts +2 -1
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +189 -2
- package/dist/reporting.d.ts +125 -0
- package/dist/reporting.d.ts.map +1 -1
- package/dist/reporting.js +196 -5
- package/dist/resources.d.ts +285 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +643 -0
- package/dist/risk.d.ts +120 -0
- package/dist/risk.d.ts.map +1 -0
- package/dist/risk.js +220 -0
- package/dist/runtime.d.ts +74 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +598 -22
- package/dist/schemaInference.d.ts +92 -0
- package/dist/schemaInference.d.ts.map +1 -0
- package/dist/schemaInference.js +466 -0
- package/dist/schema_validation.js +2 -2
- package/dist/schemas/config.schema.json +169 -6
- package/dist/schemas/event.schema.json +4 -0
- package/dist/security_report.js +4 -4
- package/dist/signing.d.ts +1 -1
- package/dist/signing.d.ts.map +1 -1
- package/dist/signing.js +4 -0
- package/dist/sinks/file.d.ts +19 -1
- package/dist/sinks/file.d.ts.map +1 -1
- package/dist/sinks/file.js +82 -13
- package/dist/sinks/https.d.ts +10 -0
- package/dist/sinks/https.d.ts.map +1 -1
- package/dist/sinks/https.js +76 -16
- package/dist/sinks/stdout.d.ts +1 -0
- package/dist/sinks/stdout.d.ts.map +1 -1
- package/dist/sinks/stdout.js +12 -1
- package/dist/spec.d.ts +159 -0
- package/dist/spec.d.ts.map +1 -0
- package/dist/spec.js +391 -0
- package/dist/stakeholders.d.ts +199 -0
- package/dist/stakeholders.d.ts.map +1 -0
- package/dist/stakeholders.js +398 -0
- package/dist/standards.d.ts.map +1 -1
- package/dist/standards.js +160 -2
- package/dist/standards_ingest.d.ts +2 -2
- package/dist/standards_ingest.d.ts.map +1 -1
- package/dist/standards_ingest.js +105 -23
- package/dist/streaming.d.ts.map +1 -1
- package/dist/streaming.js +7 -2
- package/dist/telemetry.d.ts +16 -2
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +79 -14
- package/dist/templates/controls/iso42001_control_catalog.json +1443 -0
- package/dist/traced_emitter.d.ts +3 -0
- package/dist/traced_emitter.d.ts.map +1 -1
- package/dist/traced_emitter.js +142 -25
- package/dist/trust_package.d.ts +21 -1
- package/dist/trust_package.d.ts.map +1 -1
- package/dist/trust_package.js +101 -4
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +9 -2
- package/dist/wal.d.ts.map +1 -1
- package/dist/wal.js +2 -1
- package/package.json +14 -1
- package/scripts/postinstall.js +119 -97
- package/templates/controls/iso42001_control_catalog.json +1443 -0
package/dist/traced_emitter.d.ts
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/traced_emitter.js
CHANGED
|
@@ -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.
|
|
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.
|
|
68
|
-
this.wrappedListeners.delete(listener);
|
|
94
|
+
this.untrackListener(event, listener);
|
|
69
95
|
};
|
|
70
|
-
this.
|
|
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.
|
|
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
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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.
|
|
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.
|
|
124
|
-
this.wrappedListeners.delete(listener);
|
|
151
|
+
this.untrackListener(event, listener);
|
|
125
152
|
};
|
|
126
|
-
this.
|
|
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
|
|
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, (
|
|
240
|
+
return originalOn(event, bindListener(event, listener, false));
|
|
170
241
|
};
|
|
171
242
|
emitter.addListener = function (event, listener) {
|
|
172
|
-
return originalAddListener(event, (
|
|
243
|
+
return originalAddListener(event, bindListener(event, listener, false));
|
|
173
244
|
};
|
|
174
245
|
emitter.once = function (event, listener) {
|
|
175
|
-
return
|
|
246
|
+
return originalOn(event, bindListener(event, listener, true));
|
|
176
247
|
};
|
|
177
248
|
emitter.prependListener = function (event, listener) {
|
|
178
|
-
return originalPrependListener(event, (
|
|
249
|
+
return originalPrependListener(event, bindListener(event, listener, false));
|
|
179
250
|
};
|
|
180
251
|
emitter.prependOnceListener = function (event, listener) {
|
|
181
|
-
return
|
|
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
|
}
|
package/dist/trust_package.d.ts
CHANGED
|
@@ -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
|
|
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;
|
|
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"}
|
package/dist/trust_package.js
CHANGED
|
@@ -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
|
-
|
|
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
|
+
}
|
package/dist/verify.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
|
292
|
-
|
|
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;
|
|
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
|
-
|
|
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.
|
|
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
|
}
|