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
@@ -1,14 +1,29 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
3
  * Postinstall script for Monora SDK
4
- * Automatically runs the setup wizard after npm install
4
+ *
5
+ * Shows a non-blocking welcome message with setup instructions.
6
+ * Opt-in only - no interactive prompts or data collection during install.
7
+ *
8
+ * Users can register later via: npx monora-ai init
5
9
  */
6
10
 
7
- const { execSync, spawn } = require('child_process');
8
11
  const fs = require('fs');
9
12
  const path = require('path');
10
-
11
- // Check if we're in a CI environment or non-interactive terminal
13
+ const crypto = require('crypto');
14
+
15
+ // ANSI color codes for terminal output
16
+ const colors = {
17
+ reset: '\x1b[0m',
18
+ bold: '\x1b[1m',
19
+ dim: '\x1b[2m',
20
+ cyan: '\x1b[36m',
21
+ green: '\x1b[32m',
22
+ yellow: '\x1b[33m',
23
+ blue: '\x1b[34m',
24
+ };
25
+
26
+ // Check if we're in a CI environment
12
27
  function isCI() {
13
28
  return !!(
14
29
  process.env.CI ||
@@ -19,40 +34,71 @@ function isCI() {
19
34
  process.env.CIRCLECI ||
20
35
  process.env.TRAVIS ||
21
36
  process.env.JENKINS_URL ||
37
+ process.env.BUILDKITE ||
38
+ process.env.TF_BUILD ||
22
39
  process.env.MONORA_SKIP_POSTINSTALL
23
40
  );
24
41
  }
25
42
 
26
- function isTTY() {
27
- return process.stdout.isTTY && process.stdin.isTTY;
43
+ // Check if terminal supports colors
44
+ function supportsColor() {
45
+ if (process.env.NO_COLOR || process.env.TERM === 'dumb') {
46
+ return false;
47
+ }
48
+ return process.stdout.isTTY;
49
+ }
50
+
51
+ // Colorize text if supported
52
+ function colorize(text, color) {
53
+ if (!supportsColor()) {
54
+ return text;
55
+ }
56
+ return `${color}${text}${colors.reset}`;
57
+ }
58
+
59
+ // Get the Monora data directory
60
+ function getMonoraDataDir() {
61
+ const home = process.env.HOME || process.env.USERPROFILE;
62
+ if (!home) {
63
+ return null;
64
+ }
65
+ return path.join(home, '.monora');
28
66
  }
29
67
 
30
- function findProjectRoot() {
31
- // Walk up from current directory to find package.json (the user's project)
32
- let dir = process.cwd();
33
- const maxLevels = 10;
34
-
35
- for (let i = 0; i < maxLevels; i++) {
36
- const pkgPath = path.join(dir, 'package.json');
37
- if (fs.existsSync(pkgPath)) {
38
- try {
39
- const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
40
- // Skip if this is the monora-ai package itself
41
- if (pkg.name !== 'monora-ai') {
42
- return dir;
43
- }
44
- } catch (e) {
45
- // Continue searching
46
- }
68
+ // Record install timestamp for analytics (local only)
69
+ function recordInstallTimestamp() {
70
+ const dataDir = getMonoraDataDir();
71
+ if (!dataDir) {
72
+ return;
73
+ }
74
+
75
+ try {
76
+ if (!fs.existsSync(dataDir)) {
77
+ fs.mkdirSync(dataDir, { recursive: true });
47
78
  }
48
- const parent = path.dirname(dir);
49
- if (parent === dir) break;
50
- dir = parent;
79
+
80
+ const installPath = path.join(dataDir, 'install_info.json');
81
+ const existingData = fs.existsSync(installPath)
82
+ ? JSON.parse(fs.readFileSync(installPath, 'utf8'))
83
+ : {};
84
+
85
+ const installInfo = {
86
+ ...existingData,
87
+ install_id: existingData.install_id || crypto.randomUUID().replace(/-/g, '').slice(0, 32),
88
+ sdk: 'node',
89
+ first_installed_at: existingData.first_installed_at || new Date().toISOString(),
90
+ last_installed_at: new Date().toISOString(),
91
+ install_count: (existingData.install_count || 0) + 1,
92
+ };
93
+
94
+ fs.writeFileSync(installPath, JSON.stringify(installInfo, null, 2));
95
+ } catch {
96
+ // Silent fail - never break install
51
97
  }
52
- return process.cwd();
53
98
  }
54
99
 
55
- function configExists(projectRoot) {
100
+ // Check if config already exists in project
101
+ function configExists() {
56
102
  const configFiles = [
57
103
  'monora.yml',
58
104
  'monora.yaml',
@@ -62,85 +108,61 @@ function configExists(projectRoot) {
62
108
  '.monora.json',
63
109
  ];
64
110
 
65
- return configFiles.some(file =>
66
- fs.existsSync(path.join(projectRoot, file))
67
- );
111
+ return configFiles.some(file => fs.existsSync(path.join(process.cwd(), file)));
68
112
  }
69
113
 
70
- async function main() {
71
- // Skip in CI environments
72
- if (isCI()) {
73
- console.log('\nšŸ“¦ Monora SDK installed successfully.');
74
- console.log(' Run "npx monora init" to configure.\n');
75
- return;
76
- }
77
-
78
- const projectRoot = findProjectRoot();
114
+ // Display welcome message
115
+ function showWelcomeMessage() {
116
+ const hasConfig = configExists();
79
117
 
80
- // Check if config already exists
81
- if (configExists(projectRoot)) {
82
- console.log('\nāœ… Monora SDK installed. Existing configuration detected.\n');
83
- return;
84
- }
118
+ console.log('');
119
+ console.log(colorize(' Monora AI Governance SDK', colors.bold + colors.cyan));
120
+ console.log('');
85
121
 
86
- // Non-interactive terminal - show quick start
87
- if (!isTTY()) {
88
- console.log('\nšŸ“¦ Monora SDK installed successfully!');
122
+ if (hasConfig) {
123
+ console.log(colorize(' āœ“ Existing configuration detected', colors.green));
89
124
  console.log('');
90
- console.log('Quick Start:');
91
- console.log(' 1. Run: npx monora init');
92
- console.log(' 2. Or use zero-config:');
93
- console.log(' import { init } from "monora-ai";');
94
- console.log(' init();');
125
+ } else {
126
+ console.log(colorize(' Quick Start:', colors.bold));
127
+ console.log('');
128
+ console.log(' ' + colorize('Option 1:', colors.yellow) + ' Zero-config (recommended)');
129
+ console.log(colorize(' import { init } from "monora-ai";', colors.dim));
130
+ console.log(colorize(' init();', colors.dim));
131
+ console.log('');
132
+ console.log(' ' + colorize('Option 2:', colors.yellow) + ' Run setup wizard');
133
+ console.log(colorize(' npx monora-ai init', colors.dim));
95
134
  console.log('');
96
- return;
97
135
  }
98
136
 
99
- // Interactive terminal - run setup wizard
100
- console.log('\nšŸš€ Monora SDK installed! Starting setup wizard...\n');
137
+ console.log(colorize(' Documentation:', colors.bold) + ' https://docs.monora.ai');
138
+ console.log(colorize(' GitHub:', colors.bold) + ' https://github.com/monora-ai/monora');
139
+ console.log('');
140
+ }
101
141
 
102
- try {
103
- // Run the wizard with --yes for smart defaults
104
- // Users can run `npx monora init` later for full interactive mode
105
- const cliPath = path.join(__dirname, '..', 'dist', 'cli.js');
106
-
107
- if (fs.existsSync(cliPath)) {
108
- // Run the CLI init command
109
- const child = spawn('node', [cliPath, 'init', '--yes'], {
110
- cwd: projectRoot,
111
- stdio: 'inherit',
112
- shell: process.platform === 'win32',
113
- });
114
-
115
- child.on('error', (err) => {
116
- console.log('\nšŸ“¦ Monora SDK installed.');
117
- console.log(' Run "npx monora init" to configure manually.\n');
118
- });
119
-
120
- child.on('close', (code) => {
121
- if (code !== 0) {
122
- console.log('\n Run "npx monora init" to configure manually.\n');
123
- }
124
- });
125
- } else {
126
- // CLI not built yet (fresh install), show manual instructions
127
- console.log('šŸ“¦ Monora SDK installed successfully!');
128
- console.log('');
129
- console.log('Quick Start:');
130
- console.log(' Option 1: Run "npx monora init" to configure');
131
- console.log(' Option 2: Use zero-config in your code:');
132
- console.log(' import { init } from "monora-ai";');
133
- console.log(' init();');
134
- console.log('');
135
- }
136
- } catch (err) {
137
- // Silent fail - don't break npm install
138
- console.log('\nšŸ“¦ Monora SDK installed.');
139
- console.log(' Run "npx monora init" to configure.\n');
142
+ // Display minimal CI message
143
+ function showCIMessage() {
144
+ console.log('');
145
+ console.log('Monora SDK installed. Use init() for zero-config or run "npx monora-ai init".');
146
+ console.log('');
147
+ }
148
+
149
+ // Main function
150
+ function main() {
151
+ // Record install timestamp (local only, non-blocking)
152
+ recordInstallTimestamp();
153
+
154
+ // Show appropriate message based on environment
155
+ if (isCI()) {
156
+ showCIMessage();
157
+ } else {
158
+ showWelcomeMessage();
140
159
  }
141
160
  }
142
161
 
143
- main().catch(() => {
162
+ // Execute
163
+ try {
164
+ main();
165
+ } catch {
144
166
  // Never fail the install
145
- console.log('\nšŸ“¦ Monora SDK installed.\n');
146
- });
167
+ console.log('\nMonora SDK installed.\n');
168
+ }