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
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 or create the current lineage context.
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 getOrCreateContext() {
35
+ function getContextOrDefault() {
33
36
  const existing = lineageStorage.getStore();
34
37
  if (existing) {
35
38
  return existing;
36
39
  }
37
- // Return a default context if none exists
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,SA0CtC;AAWD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,KACxB,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,UAoBhD;AAED,eAAe,gBAAgB,CAAC"}
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
- next();
71
- }, traceOptions);
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,CAkElD;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,CAsEH;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,CAsE/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,CAqBH;AAED,eAAe,oBAAoB,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
- let response;
126
- (0, context_1.trace)(spanName, (span) => {
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
- response.headers.set(key, value);
131
+ nextResponse.headers.set(key, value);
133
132
  }
134
133
  }
135
134
  // Add span info to response headers for downstream use
136
- response.headers.set('x-monora-trace-id', span.traceId);
137
- response.headers.set('x-monora-span-id', span.spanId);
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 = (async (req, res) => {
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
- let result;
204
- await new Promise((resolve, reject) => {
205
- (0, context_1.trace)(spanName, async (span) => {
206
- try {
207
- // Store span on request for access in handler
208
- req.monoraSpan = span;
209
- req.monoraTraceId = span.traceId;
210
- req.monoraSpanId = span.spanId;
211
- // Inject trace headers into response if enabled
212
- if (injectResponseHeaders && res.setHeader) {
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
- }, traceOptions);
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
- let response;
277
- await new Promise((resolve, reject) => {
278
- (0, context_1.trace)(spanName, async (span) => {
279
- try {
280
- // Execute handler
281
- response = await handler(req, context);
282
- // Inject trace headers into response if enabled
283
- if (injectResponseHeaders && response) {
284
- const injectedHeaders = (0, propagation_1.injectHeaders)();
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
- }, traceOptions);
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
- let result;
338
- await new Promise((resolve, reject) => {
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
  });
@@ -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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"}