@soulcraft/brainy 0.54.7 → 0.56.0
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 +174 -669
- package/bin/cortex.js +592 -0
- package/dist/augmentations/memoryAugmentations.d.ts.map +1 -1
- package/dist/augmentations/neuralImportSense.d.ts +196 -0
- package/dist/augmentations/neuralImportSense.js +747 -0
- package/dist/augmentations/neuralImportSense.js.map +1 -0
- package/dist/brainyData.d.ts +40 -0
- package/dist/brainyData.d.ts.map +1 -1
- package/dist/brainyData.js +88 -0
- package/dist/brainyData.js.map +1 -1
- package/dist/chat/brainyChat.d.ts +42 -0
- package/dist/chat/brainyChat.js +340 -0
- package/dist/chat/brainyChat.js.map +1 -0
- package/dist/connectors/interfaces/IConnector.d.ts +143 -0
- package/dist/connectors/interfaces/IConnector.js +8 -0
- package/dist/connectors/interfaces/IConnector.js.map +1 -0
- package/dist/coreTypes.d.ts.map +1 -1
- package/dist/cortex/backupRestore.d.ts +85 -0
- package/dist/cortex/backupRestore.js +326 -0
- package/dist/cortex/backupRestore.js.map +1 -0
- package/dist/cortex/cortex.d.ts +249 -0
- package/dist/cortex/cortex.js +2304 -0
- package/dist/cortex/cortex.js.map +1 -0
- package/dist/cortex/healthCheck.d.ts +85 -0
- package/dist/cortex/healthCheck.js +546 -0
- package/dist/cortex/healthCheck.js.map +1 -0
- package/dist/cortex/licensingSystem.d.ts +126 -0
- package/dist/cortex/licensingSystem.js +474 -0
- package/dist/cortex/licensingSystem.js.map +1 -0
- package/dist/cortex/neuralImport.d.ts +145 -0
- package/dist/cortex/neuralImport.js +620 -0
- package/dist/cortex/neuralImport.js.map +1 -0
- package/dist/cortex/performanceMonitor.d.ts +150 -0
- package/dist/cortex/performanceMonitor.js +371 -0
- package/dist/cortex/performanceMonitor.js.map +1 -0
- package/dist/cortex/serviceIntegration.d.ts +156 -0
- package/dist/cortex/serviceIntegration.js +384 -0
- package/dist/cortex/serviceIntegration.js.map +1 -0
- package/dist/cortex/webhookManager.d.ts +39 -0
- package/dist/cortex/webhookManager.js +326 -0
- package/dist/cortex/webhookManager.js.map +1 -0
- package/dist/hnsw/hnswIndex.d.ts.map +1 -1
- package/dist/hnsw/hnswIndexOptimized.d.ts.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/patched-platform-node.d.ts +17 -0
- package/dist/patched-platform-node.d.ts.map +1 -0
- package/dist/shared/default-augmentations.d.ts +41 -0
- package/dist/shared/default-augmentations.js +112 -0
- package/dist/shared/default-augmentations.js.map +1 -0
- package/dist/storage/adapters/baseStorageAdapter.d.ts.map +1 -1
- package/dist/storage/adapters/fileSystemStorage.d.ts +14 -0
- package/dist/storage/adapters/fileSystemStorage.d.ts.map +1 -1
- package/dist/storage/adapters/fileSystemStorage.js +68 -0
- package/dist/storage/adapters/fileSystemStorage.js.map +1 -1
- package/dist/storage/adapters/memoryStorage.d.ts +13 -0
- package/dist/storage/adapters/memoryStorage.d.ts.map +1 -1
- package/dist/storage/adapters/memoryStorage.js +19 -0
- package/dist/storage/adapters/memoryStorage.js.map +1 -1
- package/dist/storage/adapters/opfsStorage.d.ts.map +1 -1
- package/dist/storage/adapters/s3CompatibleStorage.d.ts.map +1 -1
- package/dist/storage/baseStorage.d.ts.map +1 -1
- package/dist/storage/storageFactory.d.ts.map +1 -1
- package/dist/testing/prettyReporter.d.ts +23 -0
- package/dist/testing/prettyReporter.d.ts.map +1 -0
- package/dist/testing/prettySummaryReporter.d.ts +22 -0
- package/dist/testing/prettySummaryReporter.d.ts.map +1 -0
- package/dist/types/augmentations.d.ts +48 -1
- package/dist/unified.min.js +12511 -0
- package/dist/unified.min.js.map +1 -0
- package/dist/utils/embedding.d.ts.map +1 -1
- package/dist/utils/embedding.js +1 -0
- package/dist/utils/embedding.js.map +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/tensorflowUtils.d.ts +17 -0
- package/dist/utils/tensorflowUtils.d.ts.map +1 -0
- package/dist/webhooks/webhookSystem.d.ts +114 -0
- package/dist/webhooks/webhookSystem.js +321 -0
- package/dist/webhooks/webhookSystem.js.map +1 -0
- package/package.json +11 -1
- package/dist/browserFramework.d.ts.map +0 -1
- package/dist/demo.d.ts.map +0 -1
- package/dist/distributed/configManager.d.ts.map +0 -1
- package/dist/distributed/domainDetector.d.ts.map +0 -1
- package/dist/distributed/hashPartitioner.d.ts.map +0 -1
- package/dist/distributed/healthMonitor.d.ts.map +0 -1
- package/dist/distributed/index.d.ts.map +0 -1
- package/dist/distributed/operationalModes.d.ts.map +0 -1
- package/dist/hnsw/distributedSearch.d.ts.map +0 -1
- package/dist/hnsw/optimizedHNSWIndex.d.ts.map +0 -1
- package/dist/hnsw/partitionedHNSWIndex.d.ts.map +0 -1
- package/dist/hnsw/scaledHNSWSystem.d.ts.map +0 -1
- package/dist/storage/adapters/batchS3Operations.d.ts.map +0 -1
- package/dist/storage/adapters/optimizedS3Search.d.ts.map +0 -1
- package/dist/storage/cacheManager.d.ts.map +0 -1
- package/dist/storage/enhancedCacheManager.d.ts.map +0 -1
- package/dist/storage/readOnlyOptimizations.d.ts.map +0 -1
- package/dist/types/distributedTypes.d.ts.map +0 -1
- package/dist/types/paginationTypes.d.ts.map +0 -1
- package/dist/types/tensorflowTypes.js +0 -6
- package/dist/types/tensorflowTypes.js.map +0 -1
- package/dist/utils/autoConfiguration.d.ts.map +0 -1
- package/dist/utils/cacheAutoConfig.d.ts.map +0 -1
- package/dist/utils/crypto.d.ts.map +0 -1
- package/dist/utils/fieldNameTracking.d.ts.map +0 -1
- package/dist/utils/jsonProcessing.d.ts.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/robustModelLoader.d.ts +0 -112
- package/dist/utils/robustModelLoader.d.ts.map +0 -1
- package/dist/utils/robustModelLoader.js +0 -624
- package/dist/utils/robustModelLoader.js.map +0 -1
- package/dist/utils/searchCache.d.ts.map +0 -1
- package/dist/utils/statisticsCollector.d.ts.map +0 -1
- package/dist/utils/typeUtils.d.ts.map +0 -1
- package/dist/utils/version.d.ts.map +0 -1
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brainy Premium Licensing System - Atomic Age Revenue Engine
|
|
3
|
+
*
|
|
4
|
+
* 🧠 Manages premium augmentation licenses and subscriptions
|
|
5
|
+
* ⚛️ 1950s retro sci-fi themed licensing with atomic age aesthetics
|
|
6
|
+
* 🚀 Scalable license validation for premium features
|
|
7
|
+
*/
|
|
8
|
+
export interface License {
|
|
9
|
+
id: string;
|
|
10
|
+
type: 'premium' | 'enterprise' | 'trial';
|
|
11
|
+
product: string;
|
|
12
|
+
tier: 'basic' | 'professional' | 'enterprise';
|
|
13
|
+
status: 'active' | 'expired' | 'suspended' | 'trial';
|
|
14
|
+
issuedTo: string;
|
|
15
|
+
issuedAt: string;
|
|
16
|
+
expiresAt: string;
|
|
17
|
+
features: string[];
|
|
18
|
+
limits: {
|
|
19
|
+
apiCallsPerMonth?: number;
|
|
20
|
+
dataVolumeGB?: number;
|
|
21
|
+
concurrentConnections?: number;
|
|
22
|
+
customConnectors?: number;
|
|
23
|
+
};
|
|
24
|
+
metadata: {
|
|
25
|
+
customerName: string;
|
|
26
|
+
customerEmail: string;
|
|
27
|
+
subscriptionId?: string;
|
|
28
|
+
paymentStatus?: 'active' | 'past_due' | 'canceled';
|
|
29
|
+
};
|
|
30
|
+
signature: string;
|
|
31
|
+
}
|
|
32
|
+
export interface LicenseValidationResult {
|
|
33
|
+
valid: boolean;
|
|
34
|
+
license?: License;
|
|
35
|
+
reason?: string;
|
|
36
|
+
expiresIn?: number;
|
|
37
|
+
usage?: {
|
|
38
|
+
apiCalls: number;
|
|
39
|
+
dataUsed: number;
|
|
40
|
+
connectionsUsed: number;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export interface PremiumFeature {
|
|
44
|
+
id: string;
|
|
45
|
+
name: string;
|
|
46
|
+
description: string;
|
|
47
|
+
category: 'connector' | 'intelligence' | 'enterprise';
|
|
48
|
+
requiredTier: 'basic' | 'professional' | 'enterprise';
|
|
49
|
+
monthlyPrice: number;
|
|
50
|
+
yearlyPrice: number;
|
|
51
|
+
trialDays: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Premium Licensing and Revenue Management System
|
|
55
|
+
*/
|
|
56
|
+
export declare class LicensingSystem {
|
|
57
|
+
private licensePath;
|
|
58
|
+
private premiumFeatures;
|
|
59
|
+
private activeLicenses;
|
|
60
|
+
private colors;
|
|
61
|
+
private emojis;
|
|
62
|
+
constructor();
|
|
63
|
+
/**
|
|
64
|
+
* Initialize the licensing system
|
|
65
|
+
*/
|
|
66
|
+
initialize(): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Check if a premium feature is licensed and available
|
|
69
|
+
*/
|
|
70
|
+
validateFeature(featureId: string, customerId?: string): Promise<LicenseValidationResult>;
|
|
71
|
+
/**
|
|
72
|
+
* Display premium features catalog
|
|
73
|
+
*/
|
|
74
|
+
displayFeatureCatalog(): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Activate a trial license for a feature
|
|
77
|
+
*/
|
|
78
|
+
startTrial(featureId: string, customerInfo: {
|
|
79
|
+
name: string;
|
|
80
|
+
email: string;
|
|
81
|
+
}): Promise<License | null>;
|
|
82
|
+
/**
|
|
83
|
+
* Check license status and display information
|
|
84
|
+
*/
|
|
85
|
+
checkLicenseStatus(licenseId?: string): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Initialize premium features catalog
|
|
88
|
+
*/
|
|
89
|
+
private initializePremiumFeatures;
|
|
90
|
+
/**
|
|
91
|
+
* Load licenses from storage
|
|
92
|
+
*/
|
|
93
|
+
private loadLicenses;
|
|
94
|
+
/**
|
|
95
|
+
* Save licenses to storage
|
|
96
|
+
*/
|
|
97
|
+
private saveLicenses;
|
|
98
|
+
/**
|
|
99
|
+
* Validate all loaded licenses
|
|
100
|
+
*/
|
|
101
|
+
private validateAllLicenses;
|
|
102
|
+
/**
|
|
103
|
+
* Generate cryptographic signature for license
|
|
104
|
+
*/
|
|
105
|
+
private generateLicenseSignature;
|
|
106
|
+
/**
|
|
107
|
+
* Validate license signature
|
|
108
|
+
*/
|
|
109
|
+
private validateLicenseSignature;
|
|
110
|
+
/**
|
|
111
|
+
* Generate unique license ID
|
|
112
|
+
*/
|
|
113
|
+
private generateLicenseId;
|
|
114
|
+
/**
|
|
115
|
+
* Get current usage statistics for a license
|
|
116
|
+
*/
|
|
117
|
+
private getCurrentUsage;
|
|
118
|
+
/**
|
|
119
|
+
* Display detailed license information
|
|
120
|
+
*/
|
|
121
|
+
private displayLicenseDetails;
|
|
122
|
+
/**
|
|
123
|
+
* Display all active licenses
|
|
124
|
+
*/
|
|
125
|
+
private displayAllLicenses;
|
|
126
|
+
}
|
|
@@ -0,0 +1,474 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brainy Premium Licensing System - Atomic Age Revenue Engine
|
|
3
|
+
*
|
|
4
|
+
* 🧠 Manages premium augmentation licenses and subscriptions
|
|
5
|
+
* ⚛️ 1950s retro sci-fi themed licensing with atomic age aesthetics
|
|
6
|
+
* 🚀 Scalable license validation for premium features
|
|
7
|
+
*/
|
|
8
|
+
// @ts-ignore
|
|
9
|
+
import chalk from 'chalk';
|
|
10
|
+
// @ts-ignore
|
|
11
|
+
import boxen from 'boxen';
|
|
12
|
+
import * as fs from 'fs/promises';
|
|
13
|
+
import * as path from 'path';
|
|
14
|
+
import * as crypto from 'crypto';
|
|
15
|
+
/**
|
|
16
|
+
* Premium Licensing and Revenue Management System
|
|
17
|
+
*/
|
|
18
|
+
export class LicensingSystem {
|
|
19
|
+
constructor() {
|
|
20
|
+
this.premiumFeatures = new Map();
|
|
21
|
+
this.activeLicenses = new Map();
|
|
22
|
+
this.colors = {
|
|
23
|
+
primary: chalk.hex('#3A5F4A'),
|
|
24
|
+
success: chalk.hex('#2D4A3A'),
|
|
25
|
+
warning: chalk.hex('#D67441'),
|
|
26
|
+
error: chalk.hex('#B85C35'),
|
|
27
|
+
info: chalk.hex('#4A6B5A'),
|
|
28
|
+
dim: chalk.hex('#8A9B8A'),
|
|
29
|
+
highlight: chalk.hex('#E88B5A'),
|
|
30
|
+
accent: chalk.hex('#F5E6D3'),
|
|
31
|
+
brain: chalk.hex('#E88B5A'),
|
|
32
|
+
premium: chalk.hex('#FFD700'), // Gold for premium features
|
|
33
|
+
enterprise: chalk.hex('#C0C0C0') // Silver for enterprise
|
|
34
|
+
};
|
|
35
|
+
this.emojis = {
|
|
36
|
+
brain: '🧠',
|
|
37
|
+
atom: '⚛️',
|
|
38
|
+
premium: '👑',
|
|
39
|
+
enterprise: '🏢',
|
|
40
|
+
trial: '⏰',
|
|
41
|
+
lock: '🔒',
|
|
42
|
+
unlock: '🔓',
|
|
43
|
+
key: '🗝️',
|
|
44
|
+
shield: '🛡️',
|
|
45
|
+
check: '✅',
|
|
46
|
+
cross: '❌',
|
|
47
|
+
warning: '⚠️',
|
|
48
|
+
sparkle: '✨',
|
|
49
|
+
rocket: '🚀',
|
|
50
|
+
money: '💰',
|
|
51
|
+
card: '💳',
|
|
52
|
+
gear: '⚙️'
|
|
53
|
+
};
|
|
54
|
+
this.licensePath = path.join(process.cwd(), '.cortex', 'licenses.json');
|
|
55
|
+
this.initializePremiumFeatures();
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Initialize the licensing system
|
|
59
|
+
*/
|
|
60
|
+
async initialize() {
|
|
61
|
+
await this.loadLicenses();
|
|
62
|
+
await this.validateAllLicenses();
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Check if a premium feature is licensed and available
|
|
66
|
+
*/
|
|
67
|
+
async validateFeature(featureId, customerId) {
|
|
68
|
+
const feature = this.premiumFeatures.get(featureId);
|
|
69
|
+
if (!feature) {
|
|
70
|
+
return {
|
|
71
|
+
valid: false,
|
|
72
|
+
reason: `Feature '${featureId}' not found`
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
// Find applicable license
|
|
76
|
+
let applicableLicense;
|
|
77
|
+
for (const license of this.activeLicenses.values()) {
|
|
78
|
+
if (license.features.includes(featureId) && license.status === 'active') {
|
|
79
|
+
if (!customerId || license.issuedTo === customerId) {
|
|
80
|
+
applicableLicense = license;
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (!applicableLicense) {
|
|
86
|
+
return {
|
|
87
|
+
valid: false,
|
|
88
|
+
reason: 'No valid license found for this feature'
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
// Check expiration
|
|
92
|
+
const now = new Date();
|
|
93
|
+
const expiryDate = new Date(applicableLicense.expiresAt);
|
|
94
|
+
const expiresIn = Math.ceil((expiryDate.getTime() - now.getTime()) / (1000 * 60 * 60 * 24));
|
|
95
|
+
if (expiresIn <= 0) {
|
|
96
|
+
return {
|
|
97
|
+
valid: false,
|
|
98
|
+
license: applicableLicense,
|
|
99
|
+
reason: 'License has expired',
|
|
100
|
+
expiresIn: 0
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
// Validate signature
|
|
104
|
+
if (!this.validateLicenseSignature(applicableLicense)) {
|
|
105
|
+
return {
|
|
106
|
+
valid: false,
|
|
107
|
+
license: applicableLicense,
|
|
108
|
+
reason: 'License signature is invalid'
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
valid: true,
|
|
113
|
+
license: applicableLicense,
|
|
114
|
+
expiresIn,
|
|
115
|
+
usage: await this.getCurrentUsage(applicableLicense.id)
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Display premium features catalog
|
|
120
|
+
*/
|
|
121
|
+
async displayFeatureCatalog() {
|
|
122
|
+
console.log(boxen(`${this.emojis.premium} ${this.colors.brain('BRAINY PREMIUM CATALOG')} ${this.emojis.atom}\n` +
|
|
123
|
+
`${this.colors.dim('Unlock the full potential of your atomic-age vector + graph database')}`, { padding: 1, borderStyle: 'double', borderColor: '#FFD700', width: 80 }));
|
|
124
|
+
console.log('\n' + this.colors.brain(`${this.emojis.rocket} API CONNECTORS (Premium)`));
|
|
125
|
+
const connectors = Array.from(this.premiumFeatures.values())
|
|
126
|
+
.filter(f => f.category === 'connector');
|
|
127
|
+
connectors.forEach(feature => {
|
|
128
|
+
const priceMonthly = this.colors.premium(`$${feature.monthlyPrice}/month`);
|
|
129
|
+
const priceYearly = this.colors.success(`$${feature.yearlyPrice}/year`);
|
|
130
|
+
const savings = Math.round(((feature.monthlyPrice * 12 - feature.yearlyPrice) / (feature.monthlyPrice * 12)) * 100);
|
|
131
|
+
console.log(`\n ${this.emojis.gear} ${this.colors.highlight(feature.name)}\n` +
|
|
132
|
+
` ${this.colors.dim(feature.description)}\n` +
|
|
133
|
+
` ${this.colors.accent('Pricing:')} ${priceMonthly} | ${priceYearly} ${this.colors.success(`(Save ${savings}%)`)} | ${this.colors.info(`${feature.trialDays} days free trial`)}`);
|
|
134
|
+
});
|
|
135
|
+
console.log('\n' + this.colors.brain(`${this.emojis.sparkle} INTELLIGENCE FEATURES (Premium)`));
|
|
136
|
+
const intelligence = Array.from(this.premiumFeatures.values())
|
|
137
|
+
.filter(f => f.category === 'intelligence');
|
|
138
|
+
intelligence.forEach(feature => {
|
|
139
|
+
console.log(`\n ${this.emojis.brain} ${this.colors.highlight(feature.name)}\n` +
|
|
140
|
+
` ${this.colors.dim(feature.description)}\n` +
|
|
141
|
+
` ${this.colors.accent('Tier:')} ${this.colors.premium(feature.requiredTier)} | ${this.colors.accent('Trial:')} ${this.colors.info(`${feature.trialDays} days`)}`);
|
|
142
|
+
});
|
|
143
|
+
console.log('\n' + this.colors.enterprise(`${this.emojis.enterprise} ENTERPRISE FEATURES`));
|
|
144
|
+
const enterprise = Array.from(this.premiumFeatures.values())
|
|
145
|
+
.filter(f => f.category === 'enterprise');
|
|
146
|
+
enterprise.forEach(feature => {
|
|
147
|
+
console.log(`\n ${this.emojis.shield} ${this.colors.highlight(feature.name)}\n` +
|
|
148
|
+
` ${this.colors.dim(feature.description)}\n` +
|
|
149
|
+
` ${this.colors.accent('Contact sales for pricing')}`);
|
|
150
|
+
});
|
|
151
|
+
console.log('\n' + boxen(`${this.emojis.money} ${this.colors.premium('START YOUR ATOMIC AGE TRANSFORMATION')}\n\n` +
|
|
152
|
+
`${this.colors.accent('◆')} Free trial for all premium features\n` +
|
|
153
|
+
`${this.colors.accent('◆')} No credit card required to start\n` +
|
|
154
|
+
`${this.colors.accent('◆')} Cancel anytime, no questions asked\n\n` +
|
|
155
|
+
`${this.colors.dim('Visit https://soulcraft-research.com/brainy/premium to get started')}`, { padding: 1, borderStyle: 'round', borderColor: '#FFD700' }));
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Activate a trial license for a feature
|
|
159
|
+
*/
|
|
160
|
+
async startTrial(featureId, customerInfo) {
|
|
161
|
+
const feature = this.premiumFeatures.get(featureId);
|
|
162
|
+
if (!feature) {
|
|
163
|
+
console.log(this.colors.error(`Feature '${featureId}' not found`));
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
console.log(boxen(`${this.emojis.trial} ${this.colors.brain('ATOMIC TRIAL ACTIVATION')} ${this.emojis.atom}\n\n` +
|
|
167
|
+
`${this.colors.accent('◆')} ${this.colors.dim('Feature:')} ${this.colors.highlight(feature.name)}\n` +
|
|
168
|
+
`${this.colors.accent('◆')} ${this.colors.dim('Trial Duration:')} ${this.colors.success(feature.trialDays + ' days')}\n` +
|
|
169
|
+
`${this.colors.accent('◆')} ${this.colors.dim('Customer:')} ${this.colors.primary(customerInfo.name)}`, { padding: 1, borderStyle: 'round', borderColor: '#E88B5A' }));
|
|
170
|
+
const now = new Date();
|
|
171
|
+
const expiryDate = new Date(now.getTime() + (feature.trialDays * 24 * 60 * 60 * 1000));
|
|
172
|
+
const license = {
|
|
173
|
+
id: this.generateLicenseId(),
|
|
174
|
+
type: 'trial',
|
|
175
|
+
product: featureId,
|
|
176
|
+
tier: 'basic',
|
|
177
|
+
status: 'active',
|
|
178
|
+
issuedTo: customerInfo.email,
|
|
179
|
+
issuedAt: now.toISOString(),
|
|
180
|
+
expiresAt: expiryDate.toISOString(),
|
|
181
|
+
features: [featureId],
|
|
182
|
+
limits: {
|
|
183
|
+
apiCallsPerMonth: 1000,
|
|
184
|
+
dataVolumeGB: 10,
|
|
185
|
+
concurrentConnections: 3,
|
|
186
|
+
customConnectors: 0
|
|
187
|
+
},
|
|
188
|
+
metadata: {
|
|
189
|
+
customerName: customerInfo.name,
|
|
190
|
+
customerEmail: customerInfo.email,
|
|
191
|
+
paymentStatus: 'active'
|
|
192
|
+
},
|
|
193
|
+
signature: ''
|
|
194
|
+
};
|
|
195
|
+
// Generate signature
|
|
196
|
+
license.signature = this.generateLicenseSignature(license);
|
|
197
|
+
// Store license
|
|
198
|
+
this.activeLicenses.set(license.id, license);
|
|
199
|
+
await this.saveLicenses();
|
|
200
|
+
console.log(this.colors.success(`\n${this.emojis.sparkle} Trial activated! License ID: ${license.id}`));
|
|
201
|
+
console.log(this.colors.dim(`Expires: ${expiryDate.toLocaleDateString()}`));
|
|
202
|
+
return license;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Check license status and display information
|
|
206
|
+
*/
|
|
207
|
+
async checkLicenseStatus(licenseId) {
|
|
208
|
+
if (licenseId) {
|
|
209
|
+
const license = this.activeLicenses.get(licenseId);
|
|
210
|
+
if (!license) {
|
|
211
|
+
console.log(this.colors.error(`License '${licenseId}' not found`));
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
await this.displayLicenseDetails(license);
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
await this.displayAllLicenses();
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Initialize premium features catalog
|
|
222
|
+
*/
|
|
223
|
+
initializePremiumFeatures() {
|
|
224
|
+
// API Connectors
|
|
225
|
+
this.premiumFeatures.set('salesforce-connector', {
|
|
226
|
+
id: 'salesforce-connector',
|
|
227
|
+
name: 'Salesforce Connector',
|
|
228
|
+
description: 'Real-time sync with Salesforce CRM data, contacts, opportunities, and accounts',
|
|
229
|
+
category: 'connector',
|
|
230
|
+
requiredTier: 'professional',
|
|
231
|
+
monthlyPrice: 49,
|
|
232
|
+
yearlyPrice: 490, // 2 months free
|
|
233
|
+
trialDays: 14
|
|
234
|
+
});
|
|
235
|
+
this.premiumFeatures.set('slack-connector', {
|
|
236
|
+
id: 'slack-connector',
|
|
237
|
+
name: 'Slack Integration',
|
|
238
|
+
description: 'Import Slack channels, messages, and team data for intelligent search',
|
|
239
|
+
category: 'connector',
|
|
240
|
+
requiredTier: 'basic',
|
|
241
|
+
monthlyPrice: 29,
|
|
242
|
+
yearlyPrice: 290,
|
|
243
|
+
trialDays: 7
|
|
244
|
+
});
|
|
245
|
+
this.premiumFeatures.set('notion-connector', {
|
|
246
|
+
id: 'notion-connector',
|
|
247
|
+
name: 'Notion Workspace Sync',
|
|
248
|
+
description: 'Sync Notion pages, databases, and documentation for semantic search',
|
|
249
|
+
category: 'connector',
|
|
250
|
+
requiredTier: 'professional',
|
|
251
|
+
monthlyPrice: 39,
|
|
252
|
+
yearlyPrice: 390,
|
|
253
|
+
trialDays: 14
|
|
254
|
+
});
|
|
255
|
+
this.premiumFeatures.set('hubspot-connector', {
|
|
256
|
+
id: 'hubspot-connector',
|
|
257
|
+
name: 'HubSpot CRM Integration',
|
|
258
|
+
description: 'Connect HubSpot contacts, deals, and marketing data',
|
|
259
|
+
category: 'connector',
|
|
260
|
+
requiredTier: 'professional',
|
|
261
|
+
monthlyPrice: 59,
|
|
262
|
+
yearlyPrice: 590,
|
|
263
|
+
trialDays: 14
|
|
264
|
+
});
|
|
265
|
+
this.premiumFeatures.set('jira-connector', {
|
|
266
|
+
id: 'jira-connector',
|
|
267
|
+
name: 'Jira Project Sync',
|
|
268
|
+
description: 'Import Jira tickets, projects, and development workflows',
|
|
269
|
+
category: 'connector',
|
|
270
|
+
requiredTier: 'basic',
|
|
271
|
+
monthlyPrice: 34,
|
|
272
|
+
yearlyPrice: 340,
|
|
273
|
+
trialDays: 10
|
|
274
|
+
});
|
|
275
|
+
this.premiumFeatures.set('asana-connector', {
|
|
276
|
+
id: 'asana-connector',
|
|
277
|
+
name: 'Asana Project Integration',
|
|
278
|
+
description: 'Sync Asana tasks, projects, teams, and milestone data for intelligent project insights',
|
|
279
|
+
category: 'connector',
|
|
280
|
+
requiredTier: 'professional',
|
|
281
|
+
monthlyPrice: 44,
|
|
282
|
+
yearlyPrice: 440,
|
|
283
|
+
trialDays: 14
|
|
284
|
+
});
|
|
285
|
+
// Intelligence Features
|
|
286
|
+
this.premiumFeatures.set('auto-insights', {
|
|
287
|
+
id: 'auto-insights',
|
|
288
|
+
name: 'Proactive AI Insights',
|
|
289
|
+
description: 'Automatic pattern detection and intelligent recommendations',
|
|
290
|
+
category: 'intelligence',
|
|
291
|
+
requiredTier: 'professional',
|
|
292
|
+
monthlyPrice: 79,
|
|
293
|
+
yearlyPrice: 790,
|
|
294
|
+
trialDays: 21
|
|
295
|
+
});
|
|
296
|
+
this.premiumFeatures.set('smart-autocomplete', {
|
|
297
|
+
id: 'smart-autocomplete',
|
|
298
|
+
name: 'Intelligent Auto-Complete',
|
|
299
|
+
description: 'Context-aware search suggestions and query completion',
|
|
300
|
+
category: 'intelligence',
|
|
301
|
+
requiredTier: 'basic',
|
|
302
|
+
monthlyPrice: 19,
|
|
303
|
+
yearlyPrice: 190,
|
|
304
|
+
trialDays: 14
|
|
305
|
+
});
|
|
306
|
+
// Enterprise Features
|
|
307
|
+
this.premiumFeatures.set('advanced-security', {
|
|
308
|
+
id: 'advanced-security',
|
|
309
|
+
name: 'Advanced Security Suite',
|
|
310
|
+
description: 'Enterprise-grade encryption, audit logs, and compliance features',
|
|
311
|
+
category: 'enterprise',
|
|
312
|
+
requiredTier: 'enterprise',
|
|
313
|
+
monthlyPrice: 199,
|
|
314
|
+
yearlyPrice: 1990,
|
|
315
|
+
trialDays: 30
|
|
316
|
+
});
|
|
317
|
+
this.premiumFeatures.set('custom-connectors', {
|
|
318
|
+
id: 'custom-connectors',
|
|
319
|
+
name: 'Custom Connector Development',
|
|
320
|
+
description: 'Build and deploy custom API connectors for your specific needs',
|
|
321
|
+
category: 'enterprise',
|
|
322
|
+
requiredTier: 'enterprise',
|
|
323
|
+
monthlyPrice: 299,
|
|
324
|
+
yearlyPrice: 2990,
|
|
325
|
+
trialDays: 30
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Load licenses from storage
|
|
330
|
+
*/
|
|
331
|
+
async loadLicenses() {
|
|
332
|
+
try {
|
|
333
|
+
const data = await fs.readFile(this.licensePath, 'utf8');
|
|
334
|
+
const licenses = JSON.parse(data);
|
|
335
|
+
for (const license of licenses) {
|
|
336
|
+
this.activeLicenses.set(license.id, license);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
catch (error) {
|
|
340
|
+
// File doesn't exist or is invalid - start fresh
|
|
341
|
+
this.activeLicenses.clear();
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Save licenses to storage
|
|
346
|
+
*/
|
|
347
|
+
async saveLicenses() {
|
|
348
|
+
const dir = path.dirname(this.licensePath);
|
|
349
|
+
await fs.mkdir(dir, { recursive: true });
|
|
350
|
+
const licenses = Array.from(this.activeLicenses.values());
|
|
351
|
+
await fs.writeFile(this.licensePath, JSON.stringify(licenses, null, 2));
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Validate all loaded licenses
|
|
355
|
+
*/
|
|
356
|
+
async validateAllLicenses() {
|
|
357
|
+
const now = new Date();
|
|
358
|
+
const expiredLicenses = [];
|
|
359
|
+
for (const [id, license] of this.activeLicenses) {
|
|
360
|
+
const expiryDate = new Date(license.expiresAt);
|
|
361
|
+
if (expiryDate <= now) {
|
|
362
|
+
license.status = 'expired';
|
|
363
|
+
expiredLicenses.push(id);
|
|
364
|
+
}
|
|
365
|
+
else if (!this.validateLicenseSignature(license)) {
|
|
366
|
+
license.status = 'suspended';
|
|
367
|
+
expiredLicenses.push(id);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
if (expiredLicenses.length > 0) {
|
|
371
|
+
await this.saveLicenses();
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Generate cryptographic signature for license
|
|
376
|
+
*/
|
|
377
|
+
generateLicenseSignature(license) {
|
|
378
|
+
const data = `${license.id}:${license.type}:${license.product}:${license.issuedTo}:${license.expiresAt}`;
|
|
379
|
+
const secret = process.env.BRAINY_LICENSE_SECRET || 'default-secret-key-change-in-production';
|
|
380
|
+
return crypto.createHmac('sha256', secret)
|
|
381
|
+
.update(data)
|
|
382
|
+
.digest('hex');
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Validate license signature
|
|
386
|
+
*/
|
|
387
|
+
validateLicenseSignature(license) {
|
|
388
|
+
const expectedSignature = this.generateLicenseSignature(license);
|
|
389
|
+
return crypto.timingSafeEqual(Buffer.from(license.signature, 'hex'), Buffer.from(expectedSignature, 'hex'));
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Generate unique license ID
|
|
393
|
+
*/
|
|
394
|
+
generateLicenseId() {
|
|
395
|
+
return 'lic_' + crypto.randomBytes(16).toString('hex');
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Get current usage statistics for a license
|
|
399
|
+
*/
|
|
400
|
+
async getCurrentUsage(licenseId) {
|
|
401
|
+
// Placeholder - would track actual usage
|
|
402
|
+
return {
|
|
403
|
+
apiCalls: Math.floor(Math.random() * 500),
|
|
404
|
+
dataUsed: Math.floor(Math.random() * 5),
|
|
405
|
+
connectionsUsed: Math.floor(Math.random() * 3)
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Display detailed license information
|
|
410
|
+
*/
|
|
411
|
+
async displayLicenseDetails(license) {
|
|
412
|
+
const feature = this.premiumFeatures.get(license.product);
|
|
413
|
+
const now = new Date();
|
|
414
|
+
const expiryDate = new Date(license.expiresAt);
|
|
415
|
+
const daysLeft = Math.ceil((expiryDate.getTime() - now.getTime()) / (1000 * 60 * 60 * 24));
|
|
416
|
+
const usage = await this.getCurrentUsage(license.id);
|
|
417
|
+
const statusColor = license.status === 'active' ? this.colors.success :
|
|
418
|
+
license.status === 'trial' ? this.colors.warning :
|
|
419
|
+
license.status === 'expired' ? this.colors.error :
|
|
420
|
+
this.colors.dim;
|
|
421
|
+
const statusIcon = license.status === 'active' ? this.emojis.check :
|
|
422
|
+
license.status === 'trial' ? this.emojis.trial :
|
|
423
|
+
license.status === 'expired' ? this.emojis.cross :
|
|
424
|
+
this.emojis.warning;
|
|
425
|
+
console.log(boxen(`${this.emojis.key} ${this.colors.brain('LICENSE DETAILS')} ${this.emojis.atom}\n\n` +
|
|
426
|
+
`${this.colors.accent('License ID:')} ${this.colors.primary(license.id)}\n` +
|
|
427
|
+
`${this.colors.accent('Product:')} ${this.colors.highlight(feature?.name || license.product)}\n` +
|
|
428
|
+
`${this.colors.accent('Type:')} ${this.colors.premium(license.type)}\n` +
|
|
429
|
+
`${this.colors.accent('Status:')} ${statusIcon} ${statusColor(license.status)}\n` +
|
|
430
|
+
`${this.colors.accent('Customer:')} ${this.colors.primary(license.metadata.customerName)}\n` +
|
|
431
|
+
`${this.colors.accent('Expires:')} ${daysLeft > 0 ? this.colors.success(`${daysLeft} days`) : this.colors.error('Expired')}`, { padding: 1, borderStyle: 'round', borderColor: license.status === 'active' ? '#2D4A3A' : '#D67441' }));
|
|
432
|
+
// Usage statistics
|
|
433
|
+
if (license.status === 'active' || license.status === 'trial') {
|
|
434
|
+
console.log('\n' + this.colors.brain(`${this.emojis.gear} USAGE STATISTICS`));
|
|
435
|
+
const apiUsage = license.limits.apiCallsPerMonth ?
|
|
436
|
+
`${usage.apiCalls}/${license.limits.apiCallsPerMonth}` :
|
|
437
|
+
usage.apiCalls.toString();
|
|
438
|
+
const dataUsage = license.limits.dataVolumeGB ?
|
|
439
|
+
`${usage.dataUsed}GB/${license.limits.dataVolumeGB}GB` :
|
|
440
|
+
`${usage.dataUsed}GB`;
|
|
441
|
+
console.log(` ${this.colors.accent('API Calls:')} ${this.colors.primary(apiUsage)}`);
|
|
442
|
+
console.log(` ${this.colors.accent('Data Used:')} ${this.colors.primary(dataUsage)}`);
|
|
443
|
+
console.log(` ${this.colors.accent('Connections:')} ${this.colors.primary(usage.connectionsUsed.toString())}`);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Display all active licenses
|
|
448
|
+
*/
|
|
449
|
+
async displayAllLicenses() {
|
|
450
|
+
if (this.activeLicenses.size === 0) {
|
|
451
|
+
console.log(boxen(`${this.emojis.lock} ${this.colors.brain('NO ACTIVE LICENSES')} ${this.emojis.atom}\n\n` +
|
|
452
|
+
`${this.colors.dim('Start your atomic transformation with premium features:')}\n` +
|
|
453
|
+
`${this.colors.accent('→')} Run 'cortex license catalog' to browse features\n` +
|
|
454
|
+
`${this.colors.accent('→')} Run 'cortex license trial <feature>' to start free trial`, { padding: 1, borderStyle: 'round', borderColor: '#D67441' }));
|
|
455
|
+
return;
|
|
456
|
+
}
|
|
457
|
+
console.log(boxen(`${this.emojis.premium} ${this.colors.brain('ACTIVE LICENSES')} ${this.emojis.atom}`, { padding: 1, borderStyle: 'round', borderColor: '#FFD700' }));
|
|
458
|
+
for (const license of this.activeLicenses.values()) {
|
|
459
|
+
const feature = this.premiumFeatures.get(license.product);
|
|
460
|
+
const expiryDate = new Date(license.expiresAt);
|
|
461
|
+
const daysLeft = Math.ceil((expiryDate.getTime() - Date.now()) / (1000 * 60 * 60 * 24));
|
|
462
|
+
const statusIcon = license.status === 'active' ? this.emojis.check :
|
|
463
|
+
license.status === 'trial' ? this.emojis.trial :
|
|
464
|
+
license.status === 'expired' ? this.emojis.cross : this.emojis.warning;
|
|
465
|
+
console.log(`\n ${statusIcon} ${this.colors.highlight(feature?.name || license.product)}\n` +
|
|
466
|
+
` ${this.colors.dim('License:')} ${this.colors.primary(license.id)}\n` +
|
|
467
|
+
` ${this.colors.dim('Type:')} ${this.colors.premium(license.type)} | ` +
|
|
468
|
+
`${this.colors.dim('Status:')} ${this.colors.success(license.status)} | ` +
|
|
469
|
+
`${this.colors.dim('Expires:')} ${daysLeft > 0 ? this.colors.info(`${daysLeft} days`) : this.colors.error('Expired')}`);
|
|
470
|
+
}
|
|
471
|
+
console.log(`\n${this.colors.dim('Run')} ${this.colors.accent('cortex license status <license-id>')} ${this.colors.dim('for detailed information')}`);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
//# sourceMappingURL=licensingSystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"licensingSystem.js","sourceRoot":"","sources":["../../src/cortex/licensingSystem.ts"],"names":[],"mappings":"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"}
|