monora-ai 2.1.0 → 2.1.4

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 (193) hide show
  1. package/README.md +339 -158
  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 +85 -0
  12. package/dist/assessment.d.ts.map +1 -1
  13. package/dist/assessment.js +525 -13
  14. package/dist/attribution.d.ts +44 -3
  15. package/dist/attribution.d.ts.map +1 -1
  16. package/dist/attribution.js +197 -10
  17. package/dist/autodetect.d.ts +68 -0
  18. package/dist/autodetect.d.ts.map +1 -1
  19. package/dist/autodetect.js +639 -0
  20. package/dist/bias.d.ts +130 -0
  21. package/dist/bias.d.ts.map +1 -0
  22. package/dist/bias.js +223 -0
  23. package/dist/cli/diagnostics.d.ts +5 -1
  24. package/dist/cli/diagnostics.d.ts.map +1 -1
  25. package/dist/cli/diagnostics.js +23 -6
  26. package/dist/cli/doctor.d.ts +25 -0
  27. package/dist/cli/doctor.d.ts.map +1 -0
  28. package/dist/cli/doctor.js +381 -0
  29. package/dist/cli/fix.d.ts +16 -0
  30. package/dist/cli/fix.d.ts.map +1 -0
  31. package/dist/cli/fix.js +284 -0
  32. package/dist/cli/init.d.ts +57 -0
  33. package/dist/cli/init.d.ts.map +1 -0
  34. package/dist/cli/init.js +205 -0
  35. package/dist/cli.js +1564 -177
  36. package/dist/complianceConsolidation.d.ts +17 -0
  37. package/dist/complianceConsolidation.d.ts.map +1 -0
  38. package/dist/complianceConsolidation.js +68 -0
  39. package/dist/complianceTargets.d.ts +111 -0
  40. package/dist/complianceTargets.d.ts.map +1 -0
  41. package/dist/complianceTargets.js +521 -0
  42. package/dist/config.d.ts +261 -16
  43. package/dist/config.d.ts.map +1 -1
  44. package/dist/config.js +381 -32
  45. package/dist/config_migrations.d.ts.map +1 -1
  46. package/dist/config_migrations.js +38 -1
  47. package/dist/config_schema.d.ts +2490 -1035
  48. package/dist/config_schema.d.ts.map +1 -1
  49. package/dist/config_schema.js +233 -64
  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 +128 -0
  54. package/dist/control_backbone.d.ts.map +1 -0
  55. package/dist/control_backbone.js +826 -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.map +1 -1
  63. package/dist/dispatcher.js +17 -5
  64. package/dist/evidence_store.d.ts +103 -0
  65. package/dist/evidence_store.d.ts.map +1 -0
  66. package/dist/evidence_store.js +459 -0
  67. package/dist/executiveSummary.d.ts +15 -0
  68. package/dist/executiveSummary.d.ts.map +1 -1
  69. package/dist/executiveSummary.js +135 -22
  70. package/dist/identity.d.ts +143 -0
  71. package/dist/identity.d.ts.map +1 -0
  72. package/dist/identity.js +231 -0
  73. package/dist/impact-assessment.d.ts +350 -0
  74. package/dist/impact-assessment.d.ts.map +1 -0
  75. package/dist/impact-assessment.js +580 -0
  76. package/dist/index.d.ts +21 -4
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +254 -5
  79. package/dist/instrumentation.d.ts +1 -1
  80. package/dist/instrumentation.d.ts.map +1 -1
  81. package/dist/instrumentation.js +123 -22
  82. package/dist/integrations/anthropic.d.ts +3 -0
  83. package/dist/integrations/anthropic.d.ts.map +1 -1
  84. package/dist/integrations/anthropic.js +282 -80
  85. package/dist/integrations/governance.d.ts +33 -0
  86. package/dist/integrations/governance.d.ts.map +1 -0
  87. package/dist/integrations/governance.js +208 -0
  88. package/dist/integrations/langchain.d.ts +4 -0
  89. package/dist/integrations/langchain.d.ts.map +1 -1
  90. package/dist/integrations/langchain.js +362 -142
  91. package/dist/integrations/openai.d.ts +9 -0
  92. package/dist/integrations/openai.d.ts.map +1 -1
  93. package/dist/integrations/openai.js +673 -73
  94. package/dist/iso42001_consolidation.d.ts +16 -0
  95. package/dist/iso42001_consolidation.d.ts.map +1 -0
  96. package/dist/iso42001_consolidation.js +413 -0
  97. package/dist/iso42001_workflows.d.ts +263 -0
  98. package/dist/iso42001_workflows.d.ts.map +1 -0
  99. package/dist/iso42001_workflows.js +781 -0
  100. package/dist/lifecycle.d.ts +299 -0
  101. package/dist/lifecycle.d.ts.map +1 -0
  102. package/dist/lifecycle.js +624 -0
  103. package/dist/lineage.d.ts +2 -2
  104. package/dist/lineage.d.ts.map +1 -1
  105. package/dist/lineage.js +9 -16
  106. package/dist/middleware/express.d.ts.map +1 -1
  107. package/dist/middleware/express.js +18 -3
  108. package/dist/middleware/nextjs.js +2 -2
  109. package/dist/model.d.ts +143 -0
  110. package/dist/model.d.ts.map +1 -0
  111. package/dist/model.js +371 -0
  112. package/dist/onboarding.d.ts +42 -0
  113. package/dist/onboarding.d.ts.map +1 -0
  114. package/dist/onboarding.js +1075 -0
  115. package/dist/oversight.d.ts +264 -0
  116. package/dist/oversight.d.ts.map +1 -0
  117. package/dist/oversight.js +497 -0
  118. package/dist/presets.js +7 -7
  119. package/dist/quotas.d.ts +171 -0
  120. package/dist/quotas.d.ts.map +1 -0
  121. package/dist/quotas.js +259 -0
  122. package/dist/register.d.ts +13 -0
  123. package/dist/register.d.ts.map +1 -0
  124. package/dist/register.js +99 -0
  125. package/dist/registry.d.ts +1 -0
  126. package/dist/registry.d.ts.map +1 -1
  127. package/dist/registry.js +7 -0
  128. package/dist/registryData.json +43 -6
  129. package/dist/report.d.ts +2 -1
  130. package/dist/report.d.ts.map +1 -1
  131. package/dist/report.js +189 -2
  132. package/dist/reporting.d.ts +125 -0
  133. package/dist/reporting.d.ts.map +1 -1
  134. package/dist/reporting.js +192 -2
  135. package/dist/resources.d.ts +285 -0
  136. package/dist/resources.d.ts.map +1 -0
  137. package/dist/resources.js +643 -0
  138. package/dist/risk.d.ts +120 -0
  139. package/dist/risk.d.ts.map +1 -0
  140. package/dist/risk.js +220 -0
  141. package/dist/runtime.d.ts +74 -0
  142. package/dist/runtime.d.ts.map +1 -1
  143. package/dist/runtime.js +416 -18
  144. package/dist/schemaInference.d.ts +92 -0
  145. package/dist/schemaInference.d.ts.map +1 -0
  146. package/dist/schemaInference.js +466 -0
  147. package/dist/schema_validation.js +2 -2
  148. package/dist/schemas/config.schema.json +118 -4
  149. package/dist/security_report.js +4 -4
  150. package/dist/signing.d.ts +1 -1
  151. package/dist/signing.d.ts.map +1 -1
  152. package/dist/signing.js +4 -0
  153. package/dist/sinks/file.d.ts +19 -1
  154. package/dist/sinks/file.d.ts.map +1 -1
  155. package/dist/sinks/file.js +82 -13
  156. package/dist/sinks/https.d.ts +10 -0
  157. package/dist/sinks/https.d.ts.map +1 -1
  158. package/dist/sinks/https.js +76 -16
  159. package/dist/sinks/stdout.d.ts +1 -0
  160. package/dist/sinks/stdout.d.ts.map +1 -1
  161. package/dist/sinks/stdout.js +12 -1
  162. package/dist/spec.d.ts +159 -0
  163. package/dist/spec.d.ts.map +1 -0
  164. package/dist/spec.js +391 -0
  165. package/dist/stakeholders.d.ts +199 -0
  166. package/dist/stakeholders.d.ts.map +1 -0
  167. package/dist/stakeholders.js +398 -0
  168. package/dist/standards.d.ts.map +1 -1
  169. package/dist/standards.js +160 -2
  170. package/dist/standards_ingest.d.ts.map +1 -1
  171. package/dist/standards_ingest.js +1 -4
  172. package/dist/telemetry.d.ts +16 -2
  173. package/dist/telemetry.d.ts.map +1 -1
  174. package/dist/telemetry.js +77 -14
  175. package/dist/templates/controls/gdpr_control_catalog.json +261 -0
  176. package/dist/templates/controls/iso42001_control_catalog.json +1443 -0
  177. package/dist/templates/controls/soc2_control_catalog.json +163 -0
  178. package/dist/templates/standards/iso42001_claims.json +72 -0
  179. package/dist/traced_emitter.d.ts.map +1 -1
  180. package/dist/traced_emitter.js +19 -9
  181. package/dist/trust_package.d.ts +20 -1
  182. package/dist/trust_package.d.ts.map +1 -1
  183. package/dist/trust_package.js +90 -2
  184. package/dist/verify.d.ts.map +1 -1
  185. package/dist/verify.js +9 -2
  186. package/dist/wal.d.ts.map +1 -1
  187. package/dist/wal.js +2 -1
  188. package/package.json +14 -1
  189. package/scripts/postinstall.js +105 -210
  190. package/templates/controls/gdpr_control_catalog.json +261 -0
  191. package/templates/controls/iso42001_control_catalog.json +1443 -0
  192. package/templates/controls/soc2_control_catalog.json +163 -0
  193. package/templates/standards/iso42001_claims.json +72 -0
@@ -30,7 +30,7 @@ export interface ProjectRegistration {
30
30
  company?: string;
31
31
  /** Your role (e.g., "ML Engineer", "DevOps", "CTO") */
32
32
  role?: string;
33
- /** Work email for best practices updates (never shared) */
33
+ /** Work email for best practices updates (included in registration payload when enabled) */
34
34
  email?: string;
35
35
  /** How you found Monora (npm, pypi, github, blog, referral) */
36
36
  source?: string;
@@ -260,9 +260,9 @@ export declare function configureHttp(config: {
260
260
  eu?: string;
261
261
  };
262
262
  apiKeyEnv?: string;
263
- timeoutMs?: number;
263
+ timeoutSec?: number;
264
264
  retryAttempts?: number;
265
- backoffBaseMs?: number;
265
+ backoffBaseSec?: number;
266
266
  }): void;
267
267
  /**
268
268
  * Send a telemetry event (e.g., startup, shutdown, error).
@@ -305,4 +305,45 @@ export declare function setAuditMetadata(metadata: AuditMetadata): AuditMetadata
305
305
  * @returns AuditMetadata object or null.
306
306
  */
307
307
  export declare function getAuditMetadata(): AuditMetadata | null;
308
+ /**
309
+ * Check if first-run registration prompt has been shown.
310
+ *
311
+ * @returns True if already prompted, false otherwise.
312
+ */
313
+ export declare function hasShownFirstRunPrompt(): boolean;
314
+ /**
315
+ * Check if user has registered (either via postinstall or programmatically).
316
+ *
317
+ * @returns True if registered, false otherwise.
318
+ */
319
+ export declare function hasRegistration(): boolean;
320
+ /**
321
+ * Prompt the user to register their project (interactive, optional).
322
+ *
323
+ * @param options - Optional context about the environment.
324
+ * @returns True if registration was completed, false otherwise.
325
+ */
326
+ export declare function promptForRegistration(options?: {
327
+ environment?: string;
328
+ force?: boolean;
329
+ silent?: boolean;
330
+ }): Promise<boolean>;
331
+ /**
332
+ * Show first-run registration prompt if needed.
333
+ *
334
+ * This logs a one-time message suggesting the user run `npx monora init`
335
+ * to register their project for best practices updates. The message is
336
+ * only shown once per installation.
337
+ *
338
+ * @param options - Optional context about the environment.
339
+ * @returns True if prompt was shown, false if skipped.
340
+ */
341
+ export declare function showFirstRunPromptIfNeeded(options?: {
342
+ environment?: string;
343
+ silent?: boolean;
344
+ }): boolean;
345
+ /**
346
+ * Reset the first-run prompt state (for testing).
347
+ */
348
+ export declare function resetFirstRunPrompt(): void;
308
349
  //# sourceMappingURL=attribution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attribution.d.ts","sourceRoot":"","sources":["../src/attribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attribution.d.ts","sourceRoot":"","sources":["../src/attribution.ts"],"names":[],"mappings":"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"}
@@ -74,28 +74,35 @@ exports.configureHttp = configureHttp;
74
74
  exports.sendTelemetryEvent = sendTelemetryEvent;
75
75
  exports.setAuditMetadata = setAuditMetadata;
76
76
  exports.getAuditMetadata = getAuditMetadata;
77
+ exports.hasShownFirstRunPrompt = hasShownFirstRunPrompt;
78
+ exports.hasRegistration = hasRegistration;
79
+ exports.promptForRegistration = promptForRegistration;
80
+ exports.showFirstRunPromptIfNeeded = showFirstRunPromptIfNeeded;
81
+ exports.resetFirstRunPrompt = resetFirstRunPrompt;
77
82
  const crypto = __importStar(require("crypto"));
78
83
  const fs = __importStar(require("fs"));
79
84
  const http = __importStar(require("http"));
80
85
  const https = __importStar(require("https"));
81
86
  const os = __importStar(require("os"));
82
87
  const path = __importStar(require("path"));
88
+ const readline = __importStar(require("readline"));
83
89
  // HTTP configuration (can be overridden via config or environment)
90
+ // Note: Uses seconds (not milliseconds) for cross-SDK parity with Python
84
91
  const HTTP_CONFIG = {
85
92
  endpoints: {
86
93
  us: process.env.MONORA_ATTRIBUTION_ENDPOINT_US || null,
87
94
  eu: process.env.MONORA_ATTRIBUTION_ENDPOINT_EU || null,
88
95
  },
89
96
  apiKeyEnv: 'MONORA_ATTRIBUTION_KEY',
90
- timeoutMs: 5000,
97
+ timeoutSec: 5,
91
98
  retryAttempts: 2,
92
- backoffBaseMs: 500,
99
+ backoffBaseSec: 0.5,
93
100
  };
94
101
  const retryQueue = [];
95
102
  const MAX_RETRY_QUEUE_SIZE = 100;
96
103
  let retryTimer = null;
97
104
  // Get version from package.json
98
- let SDK_VERSION = '1.9.0';
105
+ let SDK_VERSION = '2.1.4';
99
106
  try {
100
107
  const pkgPath = path.join(__dirname, '..', 'package.json');
101
108
  if (fs.existsSync(pkgPath)) {
@@ -111,6 +118,8 @@ const INSTALL_ID_PATH = path.join(os.homedir(), '.monora', 'install_id');
111
118
  const ATTRIBUTION_STATE_PATH = path.join(os.homedir(), '.monora', 'attribution.json');
112
119
  // Registration from postinstall script (collected during npm install)
113
120
  const POSTINSTALL_REGISTRATION_PATH = path.join(os.homedir(), '.monora', 'registration.json');
121
+ // First-run prompt state
122
+ const FIRST_RUN_PROMPT_PATH = path.join(os.homedir(), '.monora', 'first_run_prompt.json');
114
123
  // Callback registry
115
124
  const attributionCallbacks = [];
116
125
  // Global state
@@ -547,12 +556,12 @@ function configureHttp(config) {
547
556
  }
548
557
  if (config.apiKeyEnv)
549
558
  HTTP_CONFIG.apiKeyEnv = config.apiKeyEnv;
550
- if (config.timeoutMs)
551
- HTTP_CONFIG.timeoutMs = config.timeoutMs;
559
+ if (config.timeoutSec)
560
+ HTTP_CONFIG.timeoutSec = config.timeoutSec;
552
561
  if (config.retryAttempts)
553
562
  HTTP_CONFIG.retryAttempts = config.retryAttempts;
554
- if (config.backoffBaseMs)
555
- HTTP_CONFIG.backoffBaseMs = config.backoffBaseMs;
563
+ if (config.backoffBaseSec)
564
+ HTTP_CONFIG.backoffBaseSec = config.backoffBaseSec;
556
565
  }
557
566
  function getEndpoint(endpointType) {
558
567
  ensureStateLoaded();
@@ -571,7 +580,8 @@ async function makeRequest(url, data, timeout, retries) {
571
580
  const apiKey = getApiKey();
572
581
  if (!apiKey)
573
582
  return false;
574
- const effectiveTimeout = timeout ?? HTTP_CONFIG.timeoutMs;
583
+ // Convert seconds to milliseconds for setTimeout
584
+ const effectiveTimeout = (timeout ?? HTTP_CONFIG.timeoutSec) * 1000;
575
585
  const effectiveRetries = retries ?? HTTP_CONFIG.retryAttempts;
576
586
  const payload = JSON.stringify({
577
587
  ...data,
@@ -628,13 +638,15 @@ async function makeRequest(url, data, timeout, retries) {
628
638
  if (success)
629
639
  return true;
630
640
  if (attempt < effectiveRetries) {
631
- const delay = HTTP_CONFIG.backoffBaseMs * Math.pow(2, attempt) + Math.random() * 100;
641
+ // Convert seconds to milliseconds for setTimeout
642
+ const delay = HTTP_CONFIG.backoffBaseSec * 1000 * Math.pow(2, attempt) + Math.random() * 100;
632
643
  await new Promise((resolve) => setTimeout(resolve, delay));
633
644
  }
634
645
  }
635
646
  catch {
636
647
  if (attempt < effectiveRetries) {
637
- const delay = HTTP_CONFIG.backoffBaseMs * Math.pow(2, attempt) + Math.random() * 100;
648
+ // Convert seconds to milliseconds for setTimeout
649
+ const delay = HTTP_CONFIG.backoffBaseSec * 1000 * Math.pow(2, attempt) + Math.random() * 100;
638
650
  await new Promise((resolve) => setTimeout(resolve, delay));
639
651
  }
640
652
  }
@@ -699,6 +711,7 @@ async function processRetryQueue() {
699
711
  }
700
712
  /**
701
713
  * Send registration to Monora API (internal).
714
+ * Includes optional email if provided.
702
715
  */
703
716
  function sendRegistration(registration) {
704
717
  if (!sendDataEnabled)
@@ -798,3 +811,177 @@ function getAuditMetadata() {
798
811
  ensureStateLoaded();
799
812
  return auditMetadata;
800
813
  }
814
+ /**
815
+ * Load the first-run prompt state from disk.
816
+ */
817
+ function loadFirstRunPromptState() {
818
+ try {
819
+ if (!fs.existsSync(FIRST_RUN_PROMPT_PATH)) {
820
+ return null;
821
+ }
822
+ const raw = fs.readFileSync(FIRST_RUN_PROMPT_PATH, 'utf8');
823
+ return JSON.parse(raw);
824
+ }
825
+ catch {
826
+ return null;
827
+ }
828
+ }
829
+ /**
830
+ * Save the first-run prompt state to disk.
831
+ */
832
+ function saveFirstRunPromptState(state) {
833
+ try {
834
+ const dir = path.dirname(FIRST_RUN_PROMPT_PATH);
835
+ if (!fs.existsSync(dir)) {
836
+ fs.mkdirSync(dir, { recursive: true });
837
+ }
838
+ fs.writeFileSync(FIRST_RUN_PROMPT_PATH, JSON.stringify(state, null, 2));
839
+ }
840
+ catch {
841
+ // Silent fail - don't break user's app
842
+ }
843
+ }
844
+ /**
845
+ * Check if first-run registration prompt has been shown.
846
+ *
847
+ * @returns True if already prompted, false otherwise.
848
+ */
849
+ function hasShownFirstRunPrompt() {
850
+ const state = loadFirstRunPromptState();
851
+ return state !== null && !!state.promptedAt;
852
+ }
853
+ /**
854
+ * Check if user has registered (either via postinstall or programmatically).
855
+ *
856
+ * @returns True if registered, false otherwise.
857
+ */
858
+ function hasRegistration() {
859
+ ensureStateLoaded();
860
+ return currentRegistration !== null;
861
+ }
862
+ /**
863
+ * Prompt the user to register their project (interactive, optional).
864
+ *
865
+ * @param options - Optional context about the environment.
866
+ * @returns True if registration was completed, false otherwise.
867
+ */
868
+ async function promptForRegistration(options) {
869
+ try {
870
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
871
+ return false;
872
+ }
873
+ if (!options?.force) {
874
+ if (options?.environment === 'production') {
875
+ return false;
876
+ }
877
+ if (process.env.CI ||
878
+ process.env.GITHUB_ACTIONS ||
879
+ process.env.GITLAB_CI ||
880
+ process.env.MONORA_SKIP_PROMPT) {
881
+ return false;
882
+ }
883
+ if (hasRegistration()) {
884
+ return false;
885
+ }
886
+ }
887
+ if (options?.silent) {
888
+ return false;
889
+ }
890
+ console.log('');
891
+ console.log('Monora SDK optional project registration');
892
+ console.log('This helps us improve the SDK and share best practices.');
893
+ console.log('Email is stored locally and only sent if telemetry is enabled.');
894
+ console.log('');
895
+ const rl = readline.createInterface({
896
+ input: process.stdin,
897
+ output: process.stdout,
898
+ });
899
+ const ask = (question) => new Promise((resolve) => rl.question(question, (answer) => resolve(answer)));
900
+ try {
901
+ const confirm = (await ask('Register this project now? [y/N]: ')).trim().toLowerCase();
902
+ if (confirm !== 'y' && confirm !== 'yes') {
903
+ return false;
904
+ }
905
+ const company = (await ask('Company (optional): ')).trim() || undefined;
906
+ const role = (await ask('Role (optional): ')).trim() || undefined;
907
+ const email = (await ask('Work email (optional): ')).trim() || undefined;
908
+ const source = (await ask('How did you find Monora? (optional): ')).trim() || undefined;
909
+ const useCase = (await ask('Primary use case (optional): ')).trim() || undefined;
910
+ registerProject({
911
+ company,
912
+ role,
913
+ email,
914
+ source,
915
+ useCase,
916
+ });
917
+ return true;
918
+ }
919
+ finally {
920
+ rl.close();
921
+ }
922
+ }
923
+ catch {
924
+ return false;
925
+ }
926
+ }
927
+ /**
928
+ * Show first-run registration prompt if needed.
929
+ *
930
+ * This logs a one-time message suggesting the user run `npx monora init`
931
+ * to register their project for best practices updates. The message is
932
+ * only shown once per installation.
933
+ *
934
+ * @param options - Optional context about the environment.
935
+ * @returns True if prompt was shown, false if skipped.
936
+ */
937
+ function showFirstRunPromptIfNeeded(options) {
938
+ // Skip in CI environments
939
+ if (process.env.CI ||
940
+ process.env.GITHUB_ACTIONS ||
941
+ process.env.GITLAB_CI ||
942
+ process.env.MONORA_SKIP_PROMPT) {
943
+ return false;
944
+ }
945
+ // Skip if already prompted
946
+ if (hasShownFirstRunPrompt()) {
947
+ return false;
948
+ }
949
+ // Skip if already registered
950
+ if (hasRegistration()) {
951
+ // Mark as prompted so we don't check again
952
+ saveFirstRunPromptState({
953
+ promptedAt: new Date().toISOString(),
954
+ sdkVersion: SDK_VERSION,
955
+ environment: options?.environment,
956
+ });
957
+ return false;
958
+ }
959
+ // Save state first to avoid showing multiple times in parallel inits
960
+ saveFirstRunPromptState({
961
+ promptedAt: new Date().toISOString(),
962
+ sdkVersion: SDK_VERSION,
963
+ environment: options?.environment,
964
+ });
965
+ // Show the prompt (unless silent mode)
966
+ if (!options?.silent) {
967
+ console.log('');
968
+ console.log('\x1b[36m[Monora]\x1b[0m Register your project for best practices updates:');
969
+ console.log(' Run: \x1b[33mnpx monora init\x1b[0m');
970
+ console.log(' Or skip this message by setting MONORA_SKIP_PROMPT=1');
971
+ console.log('');
972
+ }
973
+ return true;
974
+ }
975
+ /**
976
+ * Reset the first-run prompt state (for testing).
977
+ */
978
+ function resetFirstRunPrompt() {
979
+ try {
980
+ if (fs.existsSync(FIRST_RUN_PROMPT_PATH)) {
981
+ fs.unlinkSync(FIRST_RUN_PROMPT_PATH);
982
+ }
983
+ }
984
+ catch {
985
+ // Silent fail
986
+ }
987
+ }
@@ -1,6 +1,53 @@
1
1
  /**
2
2
  * Auto-detection utilities for zero-config initialization.
3
+ *
4
+ * Provides intelligent project analysis for streamlined setup:
5
+ * - Framework detection (Next.js, Express, FastAPI, etc.)
6
+ * - Cloud platform detection (Vercel, AWS, GCP, etc.)
7
+ * - AI SDK detection with model suggestions
8
+ * - Optional AI-powered analysis using Claude/GPT
3
9
  */
10
+ /**
11
+ * Result of framework and project detection.
12
+ */
13
+ export interface FrameworkDetection {
14
+ /** Detected framework (next, express, fastify, koa, nest, etc.) */
15
+ framework: string | null;
16
+ /** Project type (web-app, api, cli, library, monorepo) */
17
+ projectType: string;
18
+ /** Detected cloud platform (vercel, aws, gcp, azure, heroku, etc.) */
19
+ cloudPlatform: string | null;
20
+ /** Detected AI SDKs with versions */
21
+ aiSdks: Array<{
22
+ name: string;
23
+ version?: string;
24
+ }>;
25
+ /** Suggested models based on detected SDKs */
26
+ suggestedModels: string[];
27
+ /** Detected language/runtime */
28
+ runtime: 'node' | 'python' | 'mixed';
29
+ /** Entry point file if detected */
30
+ entryPoint: string | null;
31
+ /** Whether TypeScript is used */
32
+ typescript: boolean;
33
+ /** Package manager (npm, yarn, pnpm) */
34
+ packageManager: string;
35
+ }
36
+ /**
37
+ * Result of AI-powered project analysis.
38
+ */
39
+ export interface AIAnalysisResult {
40
+ /** Suggested preset based on analysis */
41
+ suggestedPreset: string;
42
+ /** Suggested configuration overrides */
43
+ suggestedConfig: Record<string, any>;
44
+ /** Reasoning for suggestions */
45
+ reasoning: string;
46
+ /** Confidence level (0-1) */
47
+ confidence: number;
48
+ /** Detected compliance requirements */
49
+ complianceHints: string[];
50
+ }
4
51
  /**
5
52
  * Detect which LLM SDKs are installed.
6
53
  */
@@ -21,4 +68,25 @@ export declare function autoDetectConfig(): Record<string, any>;
21
68
  * Select the appropriate preset based on environment.
22
69
  */
23
70
  export declare function selectPresetForEnvironment(env: string): string;
71
+ /**
72
+ * Detect framework, cloud platform, and AI SDKs from project files.
73
+ *
74
+ * This performs comprehensive project analysis without requiring user input.
75
+ */
76
+ export declare function detectFramework(): FrameworkDetection;
77
+ /**
78
+ * Analyze project using AI (Claude or GPT) for intelligent configuration suggestions.
79
+ *
80
+ * This is optional and requires an API key to be available.
81
+ * Returns null if no AI API key is found or analysis fails.
82
+ */
83
+ export declare function analyzeProjectWithAI(): Promise<AIAnalysisResult | null>;
84
+ /**
85
+ * Build a smart configuration based on all detection results.
86
+ */
87
+ export declare function buildSmartConfig(detection: FrameworkDetection, aiAnalysis: AIAnalysisResult | null, attribution: {
88
+ email?: string;
89
+ company?: string;
90
+ role?: string;
91
+ }): Record<string, any>;
24
92
  //# sourceMappingURL=autodetect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"autodetect.d.ts","sourceRoot":"","sources":["../src/autodetect.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAmB9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CA6D1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,SAAS,CA2CtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAwBtD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAc9D"}
1
+ {"version":3,"file":"autodetect.d.ts","sourceRoot":"","sources":["../src/autodetect.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,qCAAqC;IACrC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,8CAA8C;IAC9C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gCAAgC;IAChC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC,mCAAmC;IACnC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iCAAiC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,wCAAwC;IACxC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,eAAe,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAuKD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAmB9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CA6D1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,SAAS,CA2CtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAwBtD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAc9D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,kBAAkB,CA+NpD;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAuF7E;AAsID;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,kBAAkB,EAC7B,UAAU,EAAE,gBAAgB,GAAG,IAAI,EACnC,WAAW,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/D,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAmErB"}