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
@@ -2,6 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LATEST_CONFIG_VERSION = void 0;
4
4
  exports.applyConfigMigrations = applyConfigMigrations;
5
+ exports.validateProductionReadiness = validateProductionReadiness;
6
+ exports.checkPresetEnvironmentMismatch = checkPresetEnvironmentMismatch;
7
+ exports.logProductionWarnings = logProductionWarnings;
5
8
  const logger_1 = require("./logger");
6
9
  exports.LATEST_CONFIG_VERSION = '1.0.0';
7
10
  function applyConfigMigrations(config) {
@@ -15,12 +18,14 @@ function applyConfigMigrations(config) {
15
18
  if (!config.config_version) {
16
19
  config.config_version = exports.LATEST_CONFIG_VERSION;
17
20
  }
21
+ normalizeOnboarding(config);
18
22
  return config;
19
23
  }
20
24
  if (compareVersions(version, '1.0.0') < 0) {
21
25
  migrate000To100(config);
22
26
  config.config_version = exports.LATEST_CONFIG_VERSION;
23
27
  }
28
+ normalizeOnboarding(config);
24
29
  return config;
25
30
  }
26
31
  function compareVersions(left, right) {
@@ -159,3 +164,203 @@ function normalizeErrorHandling(config) {
159
164
  }
160
165
  }
161
166
  }
167
+ function normalizeOnboarding(config) {
168
+ const cfg = config;
169
+ if (!cfg.onboarding && cfg.onboard && typeof cfg.onboard === 'object') {
170
+ cfg.onboarding = cfg.onboard;
171
+ delete cfg.onboard;
172
+ }
173
+ if (cfg.onboarding && typeof cfg.onboarding === 'object') {
174
+ const onboarding = cfg.onboarding;
175
+ if (onboarding.require_in_production !== undefined && onboarding.required_in_production === undefined) {
176
+ onboarding.required_in_production = onboarding.require_in_production;
177
+ }
178
+ if (typeof onboarding.status === 'string') {
179
+ const status = onboarding.status.toLowerCase();
180
+ if (['draft', 'validated', 'completed'].includes(status)) {
181
+ onboarding.status = status;
182
+ }
183
+ else {
184
+ onboarding.status = 'draft';
185
+ }
186
+ }
187
+ const artifacts = onboarding.artifacts;
188
+ if (artifacts && typeof artifacts === 'object') {
189
+ if (artifacts.input_path && !artifacts.production_logs_path) {
190
+ artifacts.production_logs_path = artifacts.input_path;
191
+ }
192
+ if (artifacts.schema_path && !artifacts.schema_contract_path) {
193
+ artifacts.schema_contract_path = artifacts.schema_path;
194
+ }
195
+ }
196
+ }
197
+ if (!cfg.enrichments && cfg.enrichment && typeof cfg.enrichment === 'object') {
198
+ cfg.enrichments = cfg.enrichment;
199
+ delete cfg.enrichment;
200
+ }
201
+ }
202
+ /**
203
+ * Validate configuration against production best practices.
204
+ *
205
+ * Returns a list of warnings for settings that may not be appropriate
206
+ * for production use.
207
+ *
208
+ * @param config - The Monora configuration object.
209
+ * @returns List of ProductionReadinessWarning objects.
210
+ *
211
+ * @example
212
+ * ```typescript
213
+ * const warnings = validateProductionReadiness(config);
214
+ * for (const w of warnings) {
215
+ * console.log(`[${w.category}] ${w.message}`);
216
+ * console.log(` Recommendation: ${w.recommendation}`);
217
+ * }
218
+ * ```
219
+ */
220
+ function validateProductionReadiness(config) {
221
+ const warnings = [];
222
+ // Check environment
223
+ const defaults = config.defaults || {};
224
+ const environment = defaults.environment || 'development';
225
+ // Only run these checks in production
226
+ if (environment !== 'production') {
227
+ return warnings;
228
+ }
229
+ // Check immutability settings
230
+ const immutability = config.immutability || {};
231
+ if (immutability.enabled === false) {
232
+ warnings.push({
233
+ category: 'security',
234
+ message: 'Immutability (hash chaining) is disabled',
235
+ recommendation: 'Enable immutability.enabled=true for tamper-evident audit trails',
236
+ });
237
+ }
238
+ if (!immutability.verify_on_emit) {
239
+ warnings.push({
240
+ category: 'security',
241
+ message: 'Hash verification on emit is disabled',
242
+ recommendation: 'Enable immutability.verify_on_emit=true to detect chain tampering',
243
+ });
244
+ }
245
+ // Check signing settings
246
+ const signing = config.signing || {};
247
+ if (!signing.enabled) {
248
+ warnings.push({
249
+ category: 'security',
250
+ message: 'Event signing is disabled',
251
+ recommendation: 'Enable signing.enabled=true with Ed25519 or HMAC-SHA256 for cryptographic integrity',
252
+ });
253
+ }
254
+ // Check sinks configuration
255
+ const sinks = config.sinks || [];
256
+ const hasPersistentSink = sinks.some((sink) => sink.type === 'file' || sink.type === 'https');
257
+ if (!hasPersistentSink) {
258
+ warnings.push({
259
+ category: 'durability',
260
+ message: 'No persistent sink configured (only stdout)',
261
+ recommendation: 'Add a file or https sink to ensure events are persisted',
262
+ });
263
+ }
264
+ // Check WAL settings
265
+ const wal = config.wal || {};
266
+ if (!wal.enabled) {
267
+ warnings.push({
268
+ category: 'durability',
269
+ message: 'Write-ahead log (WAL) is disabled',
270
+ recommendation: 'Enable wal.enabled=true for crash recovery',
271
+ });
272
+ }
273
+ else if (wal.sync_mode === 'none') {
274
+ warnings.push({
275
+ category: 'durability',
276
+ message: "WAL sync mode is 'none' (data may be lost on crash)",
277
+ recommendation: "Set wal.sync_mode='fsync' (avoid 'none') for durability",
278
+ });
279
+ }
280
+ // Check error handling
281
+ const errorHandling = config.error_handling || {};
282
+ if (errorHandling.sink_failure_mode === 'silent') {
283
+ warnings.push({
284
+ category: 'observability',
285
+ message: 'Sink failures are silently ignored',
286
+ recommendation: "Set error_handling.sink_failure_mode='warn' or 'raise'",
287
+ });
288
+ }
289
+ // Check reporting
290
+ const reporting = config.reporting || {};
291
+ if (reporting.enabled === false) {
292
+ warnings.push({
293
+ category: 'compliance',
294
+ message: 'Trust summary reporting is disabled',
295
+ recommendation: 'Enable reporting.enabled=true for compliance documentation',
296
+ });
297
+ }
298
+ // Check data handling for sensitive data
299
+ const dataHandling = config.data_handling || {};
300
+ if (!dataHandling.enabled) {
301
+ warnings.push({
302
+ category: 'privacy',
303
+ message: 'Data handling/redaction is disabled',
304
+ recommendation: 'Enable data_handling.enabled=true to prevent PII leakage',
305
+ });
306
+ }
307
+ // Check policies
308
+ const policies = config.policies || {};
309
+ if (!policies.enforce) {
310
+ warnings.push({
311
+ category: 'governance',
312
+ message: 'Model policy enforcement is disabled',
313
+ recommendation: 'Enable policies.enforce=true with model_allowlist for governance',
314
+ });
315
+ }
316
+ return warnings;
317
+ }
318
+ /**
319
+ * Check if a preset is appropriate for the given environment.
320
+ *
321
+ * @param presetName - Name of the preset being used.
322
+ * @param environment - Target environment.
323
+ * @returns Warning if there's a mismatch, null otherwise.
324
+ */
325
+ function checkPresetEnvironmentMismatch(presetName, environment) {
326
+ if (!presetName) {
327
+ return null;
328
+ }
329
+ const presetLower = presetName.toLowerCase();
330
+ const envLower = environment.toLowerCase();
331
+ // Development/POC presets in production
332
+ if (envLower === 'production' && ['development', 'dev', 'poc', 'experimental'].includes(presetLower)) {
333
+ return {
334
+ category: 'configuration',
335
+ message: `Using '${presetName}' preset in production environment`,
336
+ recommendation: "Switch to 'production' or 'strict_enterprise' preset for production use",
337
+ };
338
+ }
339
+ // Strict enterprise in development (overkill warning)
340
+ if (['development', 'dev'].includes(envLower) && presetLower === 'strict_enterprise') {
341
+ return {
342
+ category: 'configuration',
343
+ message: `Using '${presetName}' preset in development - may slow iteration`,
344
+ recommendation: "Consider 'development' or 'poc' preset for faster local development",
345
+ };
346
+ }
347
+ return null;
348
+ }
349
+ /**
350
+ * Log production readiness warnings.
351
+ *
352
+ * @param warnings - List of warnings to log.
353
+ */
354
+ function logProductionWarnings(warnings) {
355
+ if (warnings.length === 0) {
356
+ return;
357
+ }
358
+ logger_1.logger.warning('='.repeat(60));
359
+ logger_1.logger.warning('PRODUCTION READINESS WARNINGS (%d issues)', warnings.length);
360
+ logger_1.logger.warning('='.repeat(60));
361
+ for (const w of warnings) {
362
+ logger_1.logger.warning('[%s] %s', w.category.toUpperCase(), w.message);
363
+ logger_1.logger.warning(' → %s', w.recommendation);
364
+ }
365
+ logger_1.logger.warning('='.repeat(60));
366
+ }