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/lineage.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* automatic capture of parent events and input events in the trace graph.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.createLineageContext = createLineageContext;
|
|
9
10
|
exports.setCurrentEvent = setCurrentEvent;
|
|
10
11
|
exports.getParentEventId = getParentEventId;
|
|
11
12
|
exports.addInputEvent = addInputEvent;
|
|
@@ -27,14 +28,20 @@ const async_hooks_1 = require("async_hooks");
|
|
|
27
28
|
// AsyncLocalStorage for lineage context propagation
|
|
28
29
|
const lineageStorage = new async_hooks_1.AsyncLocalStorage();
|
|
29
30
|
/**
|
|
30
|
-
* Get
|
|
31
|
+
* Get the current lineage context or a default one.
|
|
32
|
+
*
|
|
33
|
+
* Note: This persists a default context when none is present.
|
|
31
34
|
*/
|
|
32
|
-
function
|
|
35
|
+
function getContextOrDefault() {
|
|
33
36
|
const existing = lineageStorage.getStore();
|
|
34
37
|
if (existing) {
|
|
35
38
|
return existing;
|
|
36
39
|
}
|
|
37
|
-
|
|
40
|
+
const defaultContext = createLineageContext();
|
|
41
|
+
lineageStorage.enterWith(defaultContext);
|
|
42
|
+
return defaultContext;
|
|
43
|
+
}
|
|
44
|
+
function createLineageContext() {
|
|
38
45
|
return {
|
|
39
46
|
currentEventId: null,
|
|
40
47
|
inputEventIds: [],
|
|
@@ -206,13 +213,7 @@ function clearLineageContext() {
|
|
|
206
213
|
* @returns The result of the function.
|
|
207
214
|
*/
|
|
208
215
|
function runWithLineage(fn) {
|
|
209
|
-
const ctx =
|
|
210
|
-
currentEventId: null,
|
|
211
|
-
inputEventIds: [],
|
|
212
|
-
promptId: null,
|
|
213
|
-
templateId: null,
|
|
214
|
-
dataSourceIds: [],
|
|
215
|
-
};
|
|
216
|
+
const ctx = createLineageContext();
|
|
216
217
|
return lineageStorage.run(ctx, fn);
|
|
217
218
|
}
|
|
218
219
|
/**
|
|
@@ -222,13 +223,7 @@ function runWithLineage(fn) {
|
|
|
222
223
|
* @returns Promise resolving to the function result.
|
|
223
224
|
*/
|
|
224
225
|
async function runWithLineageAsync(fn) {
|
|
225
|
-
const ctx =
|
|
226
|
-
currentEventId: null,
|
|
227
|
-
inputEventIds: [],
|
|
228
|
-
promptId: null,
|
|
229
|
-
templateId: null,
|
|
230
|
-
dataSourceIds: [],
|
|
231
|
-
};
|
|
226
|
+
const ctx = createLineageContext();
|
|
232
227
|
return lineageStorage.run(ctx, fn);
|
|
233
228
|
}
|
|
234
229
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../src/middleware/express.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;IAElC;;OAEG;IACH,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAExB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,wBAA6B,IAO7D,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../src/middleware/express.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;IAElC;;OAEG;IACH,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAExB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,wBAA6B,IAO7D,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,SAwEtC;AAWD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,KACxB,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,UAoBhD;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -55,7 +55,7 @@ function monoraMiddleware(options = {}) {
|
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
// Run handler within trace
|
|
58
|
-
(0, context_1.trace)(spanName, (span) => {
|
|
58
|
+
void (0, context_1.trace)(spanName, (span) => {
|
|
59
59
|
// Inject trace headers into response if enabled
|
|
60
60
|
if (injectResponseHeaders) {
|
|
61
61
|
const headers = (0, propagation_1.injectHeaders)();
|
|
@@ -67,8 +67,38 @@ function monoraMiddleware(options = {}) {
|
|
|
67
67
|
req.monoraSpan = span;
|
|
68
68
|
req.monoraTraceId = span.traceId;
|
|
69
69
|
req.monoraSpanId = span.spanId;
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
return new Promise((resolve, reject) => {
|
|
71
|
+
let finished = false;
|
|
72
|
+
const cleanup = () => {
|
|
73
|
+
if (finished)
|
|
74
|
+
return;
|
|
75
|
+
finished = true;
|
|
76
|
+
res.off('finish', finish);
|
|
77
|
+
res.off('close', finish);
|
|
78
|
+
res.off('error', finish);
|
|
79
|
+
};
|
|
80
|
+
const finish = () => {
|
|
81
|
+
cleanup();
|
|
82
|
+
resolve();
|
|
83
|
+
};
|
|
84
|
+
res.on('finish', finish);
|
|
85
|
+
res.on('close', finish);
|
|
86
|
+
res.on('error', finish);
|
|
87
|
+
try {
|
|
88
|
+
const result = next();
|
|
89
|
+
if (result && typeof result.then === 'function') {
|
|
90
|
+
result.catch((error) => {
|
|
91
|
+
cleanup();
|
|
92
|
+
reject(error);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
cleanup();
|
|
98
|
+
reject(error);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}, traceOptions).catch(next);
|
|
72
102
|
};
|
|
73
103
|
}
|
|
74
104
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextjs.d.ts","sourceRoot":"","sources":["../../src/middleware/nextjs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAMH;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;IAE1C;;OAEG;IACH,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAExB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;IAElC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAGD,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AA0BD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,uBAA4B,IAQ1D,SAAS,WAAW,KAAG,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"nextjs.d.ts","sourceRoot":"","sources":["../../src/middleware/nextjs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAMH;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;IAE1C;;OAEG;IACH,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAExB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;IAElC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAGD,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AA0BD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,uBAA4B,IAQ1D,SAAS,WAAW,KAAG,OAAO,CAAC,GAAG,CAAC,CAiElD;AAWD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAC7D,OAAO,EAAE,CAAC,EACV,OAAO,GAAE,gBAAqB,GAC7B,CAAC,CA6DH;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAC7B,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,QAAQ,CAAC,EAChE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAE,gBAAqB,GAAG,CAAC,CA8D/C;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EACzE,MAAM,EAAE,CAAC,EACT,UAAU,CAAC,EAAE,MAAM,GAClB,CAAC,CAYH;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -122,19 +122,19 @@ function withMonoraMiddleware(options = {}) {
|
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
124
|
// Create response with trace context
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
response = NextResponse.next();
|
|
125
|
+
const response = await (0, context_1.trace)(spanName, async (span) => {
|
|
126
|
+
const nextResponse = NextResponse.next();
|
|
128
127
|
// Inject trace headers into response if enabled
|
|
129
128
|
if (injectResponseHeaders) {
|
|
130
129
|
const injectedHeaders = (0, propagation_1.injectHeaders)();
|
|
131
130
|
for (const [key, value] of Object.entries(injectedHeaders)) {
|
|
132
|
-
|
|
131
|
+
nextResponse.headers.set(key, value);
|
|
133
132
|
}
|
|
134
133
|
}
|
|
135
134
|
// Add span info to response headers for downstream use
|
|
136
|
-
|
|
137
|
-
|
|
135
|
+
nextResponse.headers.set('x-monora-trace-id', span.traceId);
|
|
136
|
+
nextResponse.headers.set('x-monora-span-id', span.spanId);
|
|
137
|
+
return nextResponse;
|
|
138
138
|
}, traceOptions);
|
|
139
139
|
return response;
|
|
140
140
|
};
|
|
@@ -169,7 +169,7 @@ function defaultSpanName(req) {
|
|
|
169
169
|
*/
|
|
170
170
|
function withMonoraApi(handler, options = {}) {
|
|
171
171
|
const { spanNameFn = (req) => `API ${req.method || 'GET'} ${req.url || '/'}`, injectResponseHeaders = true, } = options;
|
|
172
|
-
const wrapped = (
|
|
172
|
+
const wrapped = ((req, res) => {
|
|
173
173
|
// Extract headers
|
|
174
174
|
const headers = {};
|
|
175
175
|
if (req.headers) {
|
|
@@ -200,29 +200,20 @@ function withMonoraApi(handler, options = {}) {
|
|
|
200
200
|
// Determine span name
|
|
201
201
|
const spanName = spanNameFn(req);
|
|
202
202
|
// Run handler within trace
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
const injectedHeaders = (0, propagation_1.injectHeaders)();
|
|
214
|
-
for (const [key, value] of Object.entries(injectedHeaders)) {
|
|
215
|
-
res.setHeader(key, value);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
result = await handler(req, res);
|
|
219
|
-
resolve();
|
|
220
|
-
}
|
|
221
|
-
catch (error) {
|
|
222
|
-
reject(error);
|
|
203
|
+
const result = (0, context_1.trace)(spanName, (span) => {
|
|
204
|
+
// Store span on request for access in handler
|
|
205
|
+
req.monoraSpan = span;
|
|
206
|
+
req.monoraTraceId = span.traceId;
|
|
207
|
+
req.monoraSpanId = span.spanId;
|
|
208
|
+
// Inject trace headers into response if enabled
|
|
209
|
+
if (injectResponseHeaders && res.setHeader) {
|
|
210
|
+
const injectedHeaders = (0, propagation_1.injectHeaders)();
|
|
211
|
+
for (const [key, value] of Object.entries(injectedHeaders)) {
|
|
212
|
+
res.setHeader(key, value);
|
|
223
213
|
}
|
|
224
|
-
}
|
|
225
|
-
|
|
214
|
+
}
|
|
215
|
+
return handler(req, res);
|
|
216
|
+
}, traceOptions);
|
|
226
217
|
return result;
|
|
227
218
|
});
|
|
228
219
|
return wrapped;
|
|
@@ -273,35 +264,27 @@ function withMonoraRoute(handler, options = {}) {
|
|
|
273
264
|
// Determine span name
|
|
274
265
|
const spanName = spanNameFn(req);
|
|
275
266
|
// Run handler within trace
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
const newHeaders = new Headers(response.headers);
|
|
286
|
-
for (const [key, value] of Object.entries(injectedHeaders)) {
|
|
287
|
-
newHeaders.set(key, value);
|
|
288
|
-
}
|
|
289
|
-
newHeaders.set('x-monora-trace-id', span.traceId);
|
|
290
|
-
newHeaders.set('x-monora-span-id', span.spanId);
|
|
291
|
-
// Create new response with updated headers
|
|
292
|
-
response = new Response(response.body, {
|
|
293
|
-
status: response.status,
|
|
294
|
-
statusText: response.statusText,
|
|
295
|
-
headers: newHeaders,
|
|
296
|
-
});
|
|
297
|
-
}
|
|
298
|
-
resolve();
|
|
299
|
-
}
|
|
300
|
-
catch (error) {
|
|
301
|
-
reject(error);
|
|
267
|
+
const response = await (0, context_1.trace)(spanName, async (span) => {
|
|
268
|
+
// Execute handler
|
|
269
|
+
let handlerResponse = await handler(req, context);
|
|
270
|
+
// Inject trace headers into response if enabled
|
|
271
|
+
if (injectResponseHeaders && handlerResponse) {
|
|
272
|
+
const injectedHeaders = (0, propagation_1.injectHeaders)();
|
|
273
|
+
const newHeaders = new Headers(handlerResponse.headers);
|
|
274
|
+
for (const [key, value] of Object.entries(injectedHeaders)) {
|
|
275
|
+
newHeaders.set(key, value);
|
|
302
276
|
}
|
|
303
|
-
|
|
304
|
-
|
|
277
|
+
newHeaders.set('x-monora-trace-id', span.traceId);
|
|
278
|
+
newHeaders.set('x-monora-span-id', span.spanId);
|
|
279
|
+
// Create new response with updated headers
|
|
280
|
+
handlerResponse = new Response(handlerResponse.body, {
|
|
281
|
+
status: handlerResponse.status,
|
|
282
|
+
statusText: handlerResponse.statusText,
|
|
283
|
+
headers: newHeaders,
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
return handlerResponse;
|
|
287
|
+
}, traceOptions);
|
|
305
288
|
return response;
|
|
306
289
|
});
|
|
307
290
|
return wrapped;
|
|
@@ -334,17 +317,8 @@ function withMonoraRoute(handler, options = {}) {
|
|
|
334
317
|
function withMonoraAction(action, actionName) {
|
|
335
318
|
const name = actionName || action.name || 'ServerAction';
|
|
336
319
|
const wrapped = (async (...args) => {
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
(0, context_1.trace)(`Action ${name}`, async () => {
|
|
340
|
-
try {
|
|
341
|
-
result = await action(...args);
|
|
342
|
-
resolve();
|
|
343
|
-
}
|
|
344
|
-
catch (error) {
|
|
345
|
-
reject(error);
|
|
346
|
-
}
|
|
347
|
-
});
|
|
320
|
+
const result = await (0, context_1.trace)(`Action ${name}`, async () => {
|
|
321
|
+
return action(...args);
|
|
348
322
|
});
|
|
349
323
|
return result;
|
|
350
324
|
});
|
package/dist/model.d.ts
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MonoraModel - Registered AI model/application with its specification.
|
|
3
|
+
*
|
|
4
|
+
* Provides the MonoraModel class for registering and managing AI models/applications
|
|
5
|
+
* being monitored by Monora.
|
|
6
|
+
*/
|
|
7
|
+
import { MonoraSpec } from './spec';
|
|
8
|
+
import { InferSchemaOptions } from './schemaInference';
|
|
9
|
+
/** Risk category per EU AI Act classification */
|
|
10
|
+
export type RiskCategory = 'minimal' | 'limited' | 'high' | 'unacceptable';
|
|
11
|
+
/**
|
|
12
|
+
* A single validation error.
|
|
13
|
+
*/
|
|
14
|
+
export interface ValidationError {
|
|
15
|
+
field: string;
|
|
16
|
+
message: string;
|
|
17
|
+
expected?: string;
|
|
18
|
+
actual?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Result of validating an event against a model spec.
|
|
22
|
+
*/
|
|
23
|
+
export interface ValidationResult {
|
|
24
|
+
valid: boolean;
|
|
25
|
+
errors: ValidationError[];
|
|
26
|
+
warnings: string[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Create a ValidationResult.
|
|
30
|
+
*/
|
|
31
|
+
export declare function createValidationResult(valid: boolean, errors?: ValidationError[], warnings?: string[]): ValidationResult;
|
|
32
|
+
/**
|
|
33
|
+
* Convert ValidationResult to dictionary.
|
|
34
|
+
*/
|
|
35
|
+
export declare function validationResultToDict(result: ValidationResult): Record<string, any>;
|
|
36
|
+
/**
|
|
37
|
+
* MonoraModel - A registered AI model/application with its specification.
|
|
38
|
+
*/
|
|
39
|
+
export interface MonoraModel {
|
|
40
|
+
/** Unique identifier for the model */
|
|
41
|
+
modelId: string;
|
|
42
|
+
/** MonoraSpec containing schema and enrichment configuration */
|
|
43
|
+
spec: MonoraSpec;
|
|
44
|
+
/** EU AI Act risk classification */
|
|
45
|
+
riskCategory: RiskCategory;
|
|
46
|
+
/** Description of the model's intended use */
|
|
47
|
+
intendedUse?: string;
|
|
48
|
+
/** ISO timestamp of model creation */
|
|
49
|
+
createdAt: string;
|
|
50
|
+
/** ISO timestamp of last update */
|
|
51
|
+
updatedAt?: string;
|
|
52
|
+
/** List of tags for categorization */
|
|
53
|
+
tags: string[];
|
|
54
|
+
/** Owner/team responsible for the model */
|
|
55
|
+
owner?: string;
|
|
56
|
+
}
|
|
57
|
+
export interface CreateModelOptions {
|
|
58
|
+
modelId: string;
|
|
59
|
+
spec: MonoraSpec;
|
|
60
|
+
riskCategory?: RiskCategory;
|
|
61
|
+
intendedUse?: string;
|
|
62
|
+
tags?: string[];
|
|
63
|
+
owner?: string;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Create a MonoraModel instance.
|
|
67
|
+
*/
|
|
68
|
+
export declare function createMonoraModel(options: CreateModelOptions): MonoraModel;
|
|
69
|
+
export interface FromDataOptions extends InferSchemaOptions {
|
|
70
|
+
/** Source: file path or list of event dictionaries */
|
|
71
|
+
source: string | Array<Record<string, any>>;
|
|
72
|
+
/** EU AI Act risk classification */
|
|
73
|
+
riskCategory?: RiskCategory;
|
|
74
|
+
/** Description of model's intended use */
|
|
75
|
+
intendedUse?: string;
|
|
76
|
+
/** Tags for categorization */
|
|
77
|
+
tags?: string[];
|
|
78
|
+
/** Owner/team responsible */
|
|
79
|
+
owner?: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Create a MonoraModel from sample data using schema inference.
|
|
83
|
+
*
|
|
84
|
+
* This is the primary way to create a model when you have sample events.
|
|
85
|
+
* It analyzes the events to infer the schema, detect PII, and configure
|
|
86
|
+
* appropriate enrichments.
|
|
87
|
+
*/
|
|
88
|
+
export declare function modelFromData(options: FromDataOptions): MonoraModel;
|
|
89
|
+
/**
|
|
90
|
+
* Create a MonoraModel from an existing MonoraSpec.
|
|
91
|
+
*/
|
|
92
|
+
export declare function modelFromSpec(spec: MonoraSpec, options?: {
|
|
93
|
+
modelId?: string;
|
|
94
|
+
riskCategory?: RiskCategory;
|
|
95
|
+
intendedUse?: string;
|
|
96
|
+
tags?: string[];
|
|
97
|
+
owner?: string;
|
|
98
|
+
}): MonoraModel;
|
|
99
|
+
/**
|
|
100
|
+
* Validate an event against a model's specification.
|
|
101
|
+
*/
|
|
102
|
+
export declare function validateEvent(model: MonoraModel, event: Record<string, any>): ValidationResult;
|
|
103
|
+
/**
|
|
104
|
+
* Generate a complete Monora configuration from a model.
|
|
105
|
+
*/
|
|
106
|
+
export declare function generateConfig(model: MonoraModel): Record<string, any>;
|
|
107
|
+
/**
|
|
108
|
+
* Convert MonoraModel to dictionary representation.
|
|
109
|
+
*/
|
|
110
|
+
export declare function modelToDict(model: MonoraModel): Record<string, any>;
|
|
111
|
+
/**
|
|
112
|
+
* Convert MonoraModel to JSON string.
|
|
113
|
+
*/
|
|
114
|
+
export declare function modelToJson(model: MonoraModel, indent?: number): string;
|
|
115
|
+
/**
|
|
116
|
+
* Create MonoraModel from dictionary representation.
|
|
117
|
+
*/
|
|
118
|
+
export declare function modelFromDict(data: Record<string, any>): MonoraModel;
|
|
119
|
+
/**
|
|
120
|
+
* Create MonoraModel from JSON string.
|
|
121
|
+
*/
|
|
122
|
+
export declare function modelFromJson(jsonStr: string): MonoraModel;
|
|
123
|
+
/**
|
|
124
|
+
* Save MonoraModel to a JSON file.
|
|
125
|
+
*/
|
|
126
|
+
export declare function saveModel(model: MonoraModel, filePath: string): void;
|
|
127
|
+
/**
|
|
128
|
+
* Load MonoraModel from a JSON file.
|
|
129
|
+
*/
|
|
130
|
+
export declare function loadModel(filePath: string): MonoraModel;
|
|
131
|
+
/**
|
|
132
|
+
* Save just the schema contract for use with onboarding validation.
|
|
133
|
+
*/
|
|
134
|
+
export declare function saveSchemaContract(model: MonoraModel, filePath: string): void;
|
|
135
|
+
/**
|
|
136
|
+
* Save the generated Monora configuration.
|
|
137
|
+
*/
|
|
138
|
+
export declare function saveConfig(model: MonoraModel, filePath: string, format?: 'json' | 'yaml'): void;
|
|
139
|
+
/**
|
|
140
|
+
* Get a string representation of a MonoraModel.
|
|
141
|
+
*/
|
|
142
|
+
export declare function modelToString(model: MonoraModel): string;
|
|
143
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
|