legionai 1.0.0-beta.7 → 1.0.0-beta.9
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/dist/auth/claude-cli.d.ts +68 -0
- package/dist/auth/claude-cli.d.ts.map +1 -0
- package/dist/auth/claude-cli.js +283 -0
- package/dist/auth/claude-cli.js.map +1 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +2 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/license.d.ts +41 -0
- package/dist/auth/license.d.ts.map +1 -0
- package/dist/auth/license.js +202 -0
- package/dist/auth/license.js.map +1 -0
- package/dist/commands/activate.d.ts +3 -0
- package/dist/commands/activate.d.ts.map +1 -0
- package/dist/commands/activate.js +129 -0
- package/dist/commands/activate.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +278 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/deploy.d.ts +3 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +430 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +306 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/recruit.d.ts +3 -0
- package/dist/commands/recruit.d.ts.map +1 -0
- package/dist/commands/recruit.js +136 -0
- package/dist/commands/recruit.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +130 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/wizard.d.ts +9 -0
- package/dist/commands/wizard.d.ts.map +1 -0
- package/dist/commands/wizard.js +737 -0
- package/dist/commands/wizard.js.map +1 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +2 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/store.d.ts +24 -0
- package/dist/config/store.d.ts.map +1 -0
- package/dist/config/store.js +95 -0
- package/dist/config/store.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -0
- package/dist/legion.mjs +1360 -0
- package/dist/ui/animations.d.ts +162 -0
- package/dist/ui/animations.d.ts.map +1 -0
- package/dist/ui/animations.js +734 -0
- package/dist/ui/animations.js.map +1 -0
- package/dist/ui/theme.d.ts +164 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +324 -0
- package/dist/ui/theme.js.map +1 -0
- package/dist/wizard/agent-setup.d.ts +15 -0
- package/dist/wizard/agent-setup.d.ts.map +1 -0
- package/dist/wizard/agent-setup.js +654 -0
- package/dist/wizard/agent-setup.js.map +1 -0
- package/dist/wizard/claude-code-integration.d.ts +20 -0
- package/dist/wizard/claude-code-integration.d.ts.map +1 -0
- package/dist/wizard/claude-code-integration.js +374 -0
- package/dist/wizard/claude-code-integration.js.map +1 -0
- package/dist/wizard/existing-project.d.ts +50 -0
- package/dist/wizard/existing-project.d.ts.map +1 -0
- package/dist/wizard/existing-project.js +700 -0
- package/dist/wizard/existing-project.js.map +1 -0
- package/dist/wizard/index.d.ts +10 -0
- package/dist/wizard/index.d.ts.map +1 -0
- package/dist/wizard/index.js +13 -0
- package/dist/wizard/index.js.map +1 -0
- package/dist/wizard/llm-phases.d.ts +77 -0
- package/dist/wizard/llm-phases.d.ts.map +1 -0
- package/dist/wizard/llm-phases.js +922 -0
- package/dist/wizard/llm-phases.js.map +1 -0
- package/dist/wizard/mcp-config.d.ts +14 -0
- package/dist/wizard/mcp-config.d.ts.map +1 -0
- package/dist/wizard/mcp-config.js +410 -0
- package/dist/wizard/mcp-config.js.map +1 -0
- package/dist/wizard/post-setup.d.ts +10 -0
- package/dist/wizard/post-setup.d.ts.map +1 -0
- package/dist/wizard/post-setup.js +288 -0
- package/dist/wizard/post-setup.js.map +1 -0
- package/dist/wizard/questions.d.ts +18 -0
- package/dist/wizard/questions.d.ts.map +1 -0
- package/dist/wizard/questions.js +473 -0
- package/dist/wizard/questions.js.map +1 -0
- package/dist/wizard/strategic-phase.d.ts +58 -0
- package/dist/wizard/strategic-phase.d.ts.map +1 -0
- package/dist/wizard/strategic-phase.js +896 -0
- package/dist/wizard/strategic-phase.js.map +1 -0
- package/dist/wizard/wizard-animations.d.ts +42 -0
- package/dist/wizard/wizard-animations.d.ts.map +1 -0
- package/dist/wizard/wizard-animations.js +662 -0
- package/dist/wizard/wizard-animations.js.map +1 -0
- package/package.json +10 -8
- package/dist/legion.cjs +0 -1409
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export interface ClaudeCLIAuth {
|
|
2
|
+
isLoggedIn: boolean;
|
|
3
|
+
email?: string;
|
|
4
|
+
tier?: 'Solo' | 'Pro' | 'Team' | 'Enterprise';
|
|
5
|
+
cliVersion?: string;
|
|
6
|
+
cliAvailable?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface Context7Status {
|
|
9
|
+
isInstalled: boolean;
|
|
10
|
+
isConfigured: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Check if Claude CLI is installed and user is logged in
|
|
14
|
+
*/
|
|
15
|
+
export declare function detectClaudeCLI(): ClaudeCLIAuth;
|
|
16
|
+
/**
|
|
17
|
+
* Check if Claude CLI command is available for execution
|
|
18
|
+
*/
|
|
19
|
+
export declare function isClaudeCLIAvailable(): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Get Claude CLI version
|
|
22
|
+
*/
|
|
23
|
+
export declare function getClaudeCLIVersion(): string | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Execute a prompt using Claude CLI and return the response
|
|
26
|
+
* Uses `claude -p "prompt" --print` for non-interactive execution
|
|
27
|
+
*/
|
|
28
|
+
export declare function executeWithClaudeCLI(prompt: string, options?: {
|
|
29
|
+
maxTokens?: number;
|
|
30
|
+
systemPrompt?: string;
|
|
31
|
+
workingDir?: string;
|
|
32
|
+
}): Promise<string>;
|
|
33
|
+
/**
|
|
34
|
+
* Check if we can use Claude CLI for LLM inference
|
|
35
|
+
*
|
|
36
|
+
* Note: Claude CLI handles auth interactively if needed.
|
|
37
|
+
* If the CLI is available and responds to --version, we can use it.
|
|
38
|
+
* The CLI will prompt for login if the user isn't authenticated.
|
|
39
|
+
*/
|
|
40
|
+
export declare function canUseClaudeCLI(): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Display Claude CLI auth status
|
|
43
|
+
*/
|
|
44
|
+
export declare function displayClaudeCLIStatus(auth: ClaudeCLIAuth): void;
|
|
45
|
+
/**
|
|
46
|
+
* Check if Context7 MCP server is installed
|
|
47
|
+
*/
|
|
48
|
+
export declare function detectContext7(): Context7Status;
|
|
49
|
+
/**
|
|
50
|
+
* Display Context7 status and recommendation
|
|
51
|
+
*/
|
|
52
|
+
export declare function displayContext7Status(status: Context7Status): void;
|
|
53
|
+
/**
|
|
54
|
+
* Get Context7 MCP server configuration
|
|
55
|
+
*/
|
|
56
|
+
export declare function getContext7MCPConfig(): Record<string, unknown>;
|
|
57
|
+
/**
|
|
58
|
+
* Run full auth check and display status
|
|
59
|
+
*/
|
|
60
|
+
export declare function runAuthCheck(): Promise<{
|
|
61
|
+
claudeCLI: ClaudeCLIAuth;
|
|
62
|
+
context7: Context7Status;
|
|
63
|
+
}>;
|
|
64
|
+
/**
|
|
65
|
+
* Show auth prompt if not logged in
|
|
66
|
+
*/
|
|
67
|
+
export declare function showAuthPrompt(): void;
|
|
68
|
+
//# sourceMappingURL=claude-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-cli.d.ts","sourceRoot":"","sources":["../../src/auth/claude-cli.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,YAAY,CAAC;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB;AAMD;;GAEG;AACH,wBAAgB,eAAe,IAAI,aAAa,CA+C/C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAY9C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAYxD;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyCvB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAGzC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CA0ChE;AAMD;;GAEG;AACH,wBAAgB,cAAc,IAAI,cAAc,CA+B/C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAQlE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQ9D;AAMD;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC;IAC5C,SAAS,EAAE,aAAa,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;CAC1B,CAAC,CAWD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAmBrC"}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// LegionAI Claude CLI Detection
|
|
3
|
+
// ============================================
|
|
4
|
+
//
|
|
5
|
+
// Detects if user is logged into Claude CLI and
|
|
6
|
+
// uses that authentication for native integration.
|
|
7
|
+
//
|
|
8
|
+
import { existsSync, readFileSync } from 'fs';
|
|
9
|
+
import { join } from 'path';
|
|
10
|
+
import { homedir } from 'os';
|
|
11
|
+
import { execSync, spawn } from 'child_process';
|
|
12
|
+
import chalk from 'chalk';
|
|
13
|
+
import boxen from 'boxen';
|
|
14
|
+
import { COLORS } from '../ui/theme.js';
|
|
15
|
+
// ============================================
|
|
16
|
+
// Claude CLI Detection
|
|
17
|
+
// ============================================
|
|
18
|
+
/**
|
|
19
|
+
* Check if Claude CLI is installed and user is logged in
|
|
20
|
+
*/
|
|
21
|
+
export function detectClaudeCLI() {
|
|
22
|
+
const homeDir = homedir();
|
|
23
|
+
// Possible Claude CLI config locations
|
|
24
|
+
const configPaths = [
|
|
25
|
+
join(homeDir, '.claude', 'config.json'),
|
|
26
|
+
join(homeDir, '.config', 'claude', 'config.json'),
|
|
27
|
+
join(homeDir, '.claude.json'),
|
|
28
|
+
];
|
|
29
|
+
for (const configPath of configPaths) {
|
|
30
|
+
if (existsSync(configPath)) {
|
|
31
|
+
try {
|
|
32
|
+
const config = JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
33
|
+
// Check for auth tokens or user info
|
|
34
|
+
if (config.auth || config.user || config.email || config.apiKey) {
|
|
35
|
+
return {
|
|
36
|
+
isLoggedIn: true,
|
|
37
|
+
email: config.email || config.user?.email,
|
|
38
|
+
tier: config.tier || config.plan || 'Solo',
|
|
39
|
+
cliVersion: config.version,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// Config exists but couldn't parse
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Check for Claude environment variables
|
|
49
|
+
if (process.env.CLAUDE_API_KEY || process.env.ANTHROPIC_API_KEY) {
|
|
50
|
+
return {
|
|
51
|
+
isLoggedIn: true,
|
|
52
|
+
tier: 'Solo',
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// Check if running inside Claude Code
|
|
56
|
+
if (process.env.CLAUDE_CODE || process.env.ANTHROPIC_SESSION) {
|
|
57
|
+
return {
|
|
58
|
+
isLoggedIn: true,
|
|
59
|
+
tier: 'Solo',
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return { isLoggedIn: false };
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Check if Claude CLI command is available for execution
|
|
66
|
+
*/
|
|
67
|
+
export function isClaudeCLIAvailable() {
|
|
68
|
+
try {
|
|
69
|
+
// Try to get Claude CLI version
|
|
70
|
+
const result = execSync('claude --version 2>/dev/null || claude -V 2>/dev/null', {
|
|
71
|
+
encoding: 'utf-8',
|
|
72
|
+
timeout: 5000,
|
|
73
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
74
|
+
});
|
|
75
|
+
return result.includes('claude') || result.includes('Claude') || /\d+\.\d+/.test(result);
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get Claude CLI version
|
|
83
|
+
*/
|
|
84
|
+
export function getClaudeCLIVersion() {
|
|
85
|
+
try {
|
|
86
|
+
const result = execSync('claude --version 2>/dev/null || claude -V 2>/dev/null', {
|
|
87
|
+
encoding: 'utf-8',
|
|
88
|
+
timeout: 5000,
|
|
89
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
90
|
+
});
|
|
91
|
+
const match = result.match(/v?(\d+\.\d+\.\d+)/);
|
|
92
|
+
return match ? match[1] : undefined;
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Execute a prompt using Claude CLI and return the response
|
|
100
|
+
* Uses `claude -p "prompt" --print` for non-interactive execution
|
|
101
|
+
*/
|
|
102
|
+
export async function executeWithClaudeCLI(prompt, options = {}) {
|
|
103
|
+
return new Promise((resolve, reject) => {
|
|
104
|
+
const args = ['-p', prompt, '--print'];
|
|
105
|
+
if (options.systemPrompt) {
|
|
106
|
+
args.push('--system', options.systemPrompt);
|
|
107
|
+
}
|
|
108
|
+
if (options.maxTokens) {
|
|
109
|
+
args.push('--max-tokens', String(options.maxTokens));
|
|
110
|
+
}
|
|
111
|
+
const child = spawn('claude', args, {
|
|
112
|
+
cwd: options.workingDir || process.cwd(),
|
|
113
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
114
|
+
timeout: 120000, // 2 minute timeout
|
|
115
|
+
});
|
|
116
|
+
let stdout = '';
|
|
117
|
+
let stderr = '';
|
|
118
|
+
child.stdout.on('data', (data) => {
|
|
119
|
+
stdout += data.toString();
|
|
120
|
+
});
|
|
121
|
+
child.stderr.on('data', (data) => {
|
|
122
|
+
stderr += data.toString();
|
|
123
|
+
});
|
|
124
|
+
child.on('close', (code) => {
|
|
125
|
+
if (code === 0) {
|
|
126
|
+
resolve(stdout.trim());
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
reject(new Error(`Claude CLI exited with code ${code}: ${stderr}`));
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
child.on('error', (err) => {
|
|
133
|
+
reject(new Error(`Failed to execute Claude CLI: ${err.message}`));
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Check if we can use Claude CLI for LLM inference
|
|
139
|
+
*
|
|
140
|
+
* Note: Claude CLI handles auth interactively if needed.
|
|
141
|
+
* If the CLI is available and responds to --version, we can use it.
|
|
142
|
+
* The CLI will prompt for login if the user isn't authenticated.
|
|
143
|
+
*/
|
|
144
|
+
export function canUseClaudeCLI() {
|
|
145
|
+
// If CLI is available, we can use it (it handles auth interactively)
|
|
146
|
+
return isClaudeCLIAvailable();
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Display Claude CLI auth status
|
|
150
|
+
*/
|
|
151
|
+
export function displayClaudeCLIStatus(auth) {
|
|
152
|
+
const cliAvailable = isClaudeCLIAvailable();
|
|
153
|
+
const cliVersion = getClaudeCLIVersion();
|
|
154
|
+
if (cliAvailable) {
|
|
155
|
+
// CLI is available - show version and any auth info we have
|
|
156
|
+
const versionStr = cliVersion ? `v${cliVersion}` : '';
|
|
157
|
+
const authInfo = auth.email
|
|
158
|
+
? `Logged in as ${chalk.hex(COLORS.primary.gold)(auth.email)}`
|
|
159
|
+
: '';
|
|
160
|
+
const tierInfo = auth.tier
|
|
161
|
+
? chalk.hex(COLORS.primary.orange)(auth.tier)
|
|
162
|
+
: '';
|
|
163
|
+
const parts = [
|
|
164
|
+
chalk.hex(COLORS.status.success)('✓ ') + chalk.white(`Claude CLI ${versionStr} detected`),
|
|
165
|
+
];
|
|
166
|
+
if (authInfo) {
|
|
167
|
+
parts.push(authInfo);
|
|
168
|
+
}
|
|
169
|
+
if (tierInfo) {
|
|
170
|
+
parts.push(tierInfo);
|
|
171
|
+
}
|
|
172
|
+
console.log(parts.join(' • '));
|
|
173
|
+
console.log(chalk.hex(COLORS.text.muted)(' Ready for AI-powered analysis'));
|
|
174
|
+
}
|
|
175
|
+
else if (auth.isLoggedIn) {
|
|
176
|
+
// No CLI but have auth (e.g., running inside Claude Code environment)
|
|
177
|
+
const authLine = auth.email
|
|
178
|
+
? `Logged in as ${chalk.hex(COLORS.primary.gold)(auth.email)}`
|
|
179
|
+
: 'Claude authentication detected';
|
|
180
|
+
const tierLine = auth.tier
|
|
181
|
+
? ` • ${chalk.hex(COLORS.primary.orange)(auth.tier)}`
|
|
182
|
+
: '';
|
|
183
|
+
console.log(chalk.hex(COLORS.text.secondary)(`${authLine}${tierLine}`));
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
console.log(chalk.hex(COLORS.status.warning)('Claude CLI not detected'));
|
|
187
|
+
console.log(chalk.hex(COLORS.text.muted)('For best experience, install Claude Code: https://claude.ai/code'));
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
// ============================================
|
|
191
|
+
// Context7 MCP Detection
|
|
192
|
+
// ============================================
|
|
193
|
+
/**
|
|
194
|
+
* Check if Context7 MCP server is installed
|
|
195
|
+
*/
|
|
196
|
+
export function detectContext7() {
|
|
197
|
+
const homeDir = homedir();
|
|
198
|
+
// Check MCP config locations
|
|
199
|
+
const mcpConfigPaths = [
|
|
200
|
+
join(homeDir, '.claude', 'mcp.json'),
|
|
201
|
+
join(homeDir, '.config', 'claude', 'mcp.json'),
|
|
202
|
+
join(process.cwd(), '.claude', 'mcp.json'),
|
|
203
|
+
];
|
|
204
|
+
for (const configPath of mcpConfigPaths) {
|
|
205
|
+
if (existsSync(configPath)) {
|
|
206
|
+
try {
|
|
207
|
+
const config = JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
208
|
+
// Check if context7 is in the servers list
|
|
209
|
+
if (config.servers && (config.servers.context7 || config.servers['context-7'])) {
|
|
210
|
+
return { isInstalled: true, isConfigured: true };
|
|
211
|
+
}
|
|
212
|
+
// Check mcpServers format
|
|
213
|
+
if (config.mcpServers && (config.mcpServers.context7 || config.mcpServers['context-7'])) {
|
|
214
|
+
return { isInstalled: true, isConfigured: true };
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
// Config exists but couldn't parse
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return { isInstalled: false, isConfigured: false };
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Display Context7 status and recommendation
|
|
226
|
+
*/
|
|
227
|
+
export function displayContext7Status(status) {
|
|
228
|
+
if (status.isConfigured) {
|
|
229
|
+
console.log(chalk.hex(COLORS.status.success)('✓ ') + chalk.hex(COLORS.text.primary)('Context7 MCP detected'));
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
console.log(chalk.hex(COLORS.status.warning)('⚠ ') + chalk.hex(COLORS.text.secondary)('Context7 MCP not detected.'));
|
|
233
|
+
console.log(chalk.hex(COLORS.text.muted)(' For better documentation lookups, install it: ') +
|
|
234
|
+
chalk.hex(COLORS.primary.orange)('https://context7.com/'));
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Get Context7 MCP server configuration
|
|
239
|
+
*/
|
|
240
|
+
export function getContext7MCPConfig() {
|
|
241
|
+
return {
|
|
242
|
+
context7: {
|
|
243
|
+
command: 'npx',
|
|
244
|
+
args: ['-y', '@context7/mcp-server'],
|
|
245
|
+
description: 'Context7 - Better documentation lookups for Claude Code',
|
|
246
|
+
},
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
// ============================================
|
|
250
|
+
// Combined Auth Check
|
|
251
|
+
// ============================================
|
|
252
|
+
/**
|
|
253
|
+
* Run full auth check and display status
|
|
254
|
+
*/
|
|
255
|
+
export async function runAuthCheck() {
|
|
256
|
+
const claudeCLI = detectClaudeCLI();
|
|
257
|
+
const context7 = detectContext7();
|
|
258
|
+
console.log('');
|
|
259
|
+
displayClaudeCLIStatus(claudeCLI);
|
|
260
|
+
console.log('');
|
|
261
|
+
displayContext7Status(context7);
|
|
262
|
+
console.log('');
|
|
263
|
+
return { claudeCLI, context7 };
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Show auth prompt if not logged in
|
|
267
|
+
*/
|
|
268
|
+
export function showAuthPrompt() {
|
|
269
|
+
console.log('');
|
|
270
|
+
console.log(boxen(chalk.hex(COLORS.primary.gold).bold('🔐 Authentication\n\n') +
|
|
271
|
+
chalk.white('LegionAI works best with Claude Code.\n\n') +
|
|
272
|
+
chalk.hex(COLORS.text.muted)('To get started:\n') +
|
|
273
|
+
chalk.hex(COLORS.primary.orange)('1. Install Claude Code: ') + chalk.white('https://claude.ai/code\n') +
|
|
274
|
+
chalk.hex(COLORS.primary.orange)('2. Log in with your Anthropic account\n') +
|
|
275
|
+
chalk.hex(COLORS.primary.orange)('3. Run ') + chalk.white('legion wizard') + chalk.hex(COLORS.primary.orange)(' again\n\n') +
|
|
276
|
+
chalk.hex(COLORS.text.muted)('Or set ANTHROPIC_API_KEY for API access.'), {
|
|
277
|
+
padding: 1,
|
|
278
|
+
borderStyle: 'round',
|
|
279
|
+
borderColor: '#FF6B00',
|
|
280
|
+
}));
|
|
281
|
+
console.log('');
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=claude-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-cli.js","sourceRoot":"","sources":["../../src/auth/claude-cli.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,gCAAgC;AAChC,+CAA+C;AAC/C,EAAE;AACF,gDAAgD;AAChD,mDAAmD;AACnD,EAAE;AAEF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAmBxC,+CAA+C;AAC/C,uBAAuB;AACvB,+CAA+C;AAE/C;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,OAAO,EAAE,CAAC;IAE1B,uCAAuC;IACvC,MAAM,WAAW,GAAG;QAClB,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC;QACjD,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC;KAC9B,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;gBAE7D,qCAAqC;gBACrC,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAChE,OAAO;wBACL,UAAU,EAAE,IAAI;wBAChB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK;wBACzC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM;wBAC1C,UAAU,EAAE,MAAM,CAAC,OAAO;qBAC3B,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,mCAAmC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAChE,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,MAAM;SACb,CAAC;IACJ,CAAC;IAED,sCAAsC;IACtC,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAC7D,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,MAAM;SACb,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC;QACH,gCAAgC;QAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,uDAAuD,EAAE;YAC/E,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,uDAAuD,EAAE;YAC/E,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAChD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAc,EAAE,UAIvD,EAAE;IACJ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,IAAI,GAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAEjD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE;YAClC,GAAG,EAAE,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE;YACxC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAC/B,OAAO,EAAE,MAAM,EAAE,mBAAmB;SACrC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC;YACtE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe;IAC7B,qEAAqE;IACrE,OAAO,oBAAoB,EAAE,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAmB;IACxD,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;IAEzC,IAAI,YAAY,EAAE,CAAC;QACjB,4DAA4D;QAC5D,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK;YACzB,CAAC,CAAC,gBAAgB,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC9D,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;YACxB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7C,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,KAAK,GAAG;YACZ,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,UAAU,WAAW,CAAC;SAC1F,CAAC;QAEF,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC/E,CAAC;SAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3B,sEAAsE;QACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK;YACzB,CAAC,CAAC,gBAAgB,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC9D,CAAC,CAAC,gCAAgC,CAAC;QAErC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;YACxB,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACrD,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,QAAQ,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,kEAAkE,CAAC,CAAC,CAAC;IAChH,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,yBAAyB;AACzB,+CAA+C;AAE/C;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,OAAO,GAAG,OAAO,EAAE,CAAC;IAE1B,6BAA6B;IAC7B,MAAM,cAAc,GAAG;QACrB,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC;QACpC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC;KAC3C,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE,CAAC;QACxC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;gBAE7D,2CAA2C;gBAC3C,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;oBAC/E,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;gBACnD,CAAC;gBAED,0BAA0B;gBAC1B,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;oBACxF,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;gBACnD,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,mCAAmC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAsB;IAC1D,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAChH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACrH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,kDAAkD,CAAC;YAC1F,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,QAAQ,EAAE;YACR,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,CAAC,IAAI,EAAE,sBAAsB,CAAC;YACpC,WAAW,EAAE,yDAAyD;SACvE;KACF,CAAC;AACJ,CAAC;AAED,+CAA+C;AAC/C,sBAAsB;AACtB,+CAA+C;AAE/C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAIhC,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;IAElC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CACT,KAAK,CACH,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC;QAC1D,KAAK,CAAC,KAAK,CAAC,2CAA2C,CAAC;QACxD,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC;QACjD,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC;QACtG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,yCAAyC,CAAC;QAC3E,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC;QAC3H,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,0CAA0C,CAAC,EAC1E;QACE,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,SAAS;KACvB,CACF,CACF,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export interface LicenseInfo {
|
|
2
|
+
isValid: boolean;
|
|
3
|
+
tier: 'beta' | 'standard' | 'pro' | null;
|
|
4
|
+
expiresAt: Date | null;
|
|
5
|
+
message: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Validate a license key
|
|
9
|
+
* In production, this would call your license server
|
|
10
|
+
*/
|
|
11
|
+
export declare function validateLicense(key: string): Promise<LicenseInfo>;
|
|
12
|
+
/**
|
|
13
|
+
* Activate a license key
|
|
14
|
+
*/
|
|
15
|
+
export declare function activateLicense(key: string): Promise<LicenseInfo>;
|
|
16
|
+
/**
|
|
17
|
+
* Check if there's a valid active license
|
|
18
|
+
*/
|
|
19
|
+
export declare function checkLicense(): LicenseInfo;
|
|
20
|
+
/**
|
|
21
|
+
* Deactivate the current license
|
|
22
|
+
*/
|
|
23
|
+
export declare function deactivateLicense(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Get stored license info (for display)
|
|
26
|
+
*/
|
|
27
|
+
export declare function getLicenseInfo(): {
|
|
28
|
+
key: string | null;
|
|
29
|
+
tier: string | null;
|
|
30
|
+
activatedAt: string | null;
|
|
31
|
+
expiresAt: string | null;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Require valid license - throws if not valid
|
|
35
|
+
*/
|
|
36
|
+
export declare function requireLicense(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Display license status
|
|
39
|
+
*/
|
|
40
|
+
export declare function displayLicenseStatus(): void;
|
|
41
|
+
//# sourceMappingURL=license.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/auth/license.ts"],"names":[],"mappings":"AA8CA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC;IACzC,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAyCvE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAavE;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,WAAW,CAoD1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAChC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAOA;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAgBrC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAqB3C"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// LegionAI License Validation
|
|
3
|
+
// Protects IP by requiring valid license
|
|
4
|
+
// ============================================
|
|
5
|
+
import Conf from 'conf';
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import crypto from 'crypto';
|
|
8
|
+
import os from 'os';
|
|
9
|
+
// License store (separate from project config)
|
|
10
|
+
const licenseStore = new Conf({
|
|
11
|
+
projectName: 'legionai-license',
|
|
12
|
+
encryptionKey: 'legion-ai-2024-secure-key', // In production, use env var
|
|
13
|
+
defaults: {
|
|
14
|
+
licenseKey: null,
|
|
15
|
+
activatedAt: null,
|
|
16
|
+
expiresAt: null,
|
|
17
|
+
tier: null,
|
|
18
|
+
machineId: null,
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
// Generate machine-specific ID for license binding
|
|
22
|
+
function getMachineId() {
|
|
23
|
+
const data = `${os.hostname()}-${os.platform()}-${os.arch()}-${os.cpus()[0]?.model || 'unknown'}`;
|
|
24
|
+
return crypto.createHash('sha256').update(data).digest('hex').substring(0, 16);
|
|
25
|
+
}
|
|
26
|
+
// Beta license keys (in production, these would be validated server-side)
|
|
27
|
+
// Format: LEGION-BETA-XXXX-XXXX-XXXX
|
|
28
|
+
const BETA_KEYS = new Set([
|
|
29
|
+
'LEGION-BETA-2024-ALPHA-0001',
|
|
30
|
+
'LEGION-BETA-2024-ALPHA-0002',
|
|
31
|
+
'LEGION-BETA-2024-ALPHA-0003',
|
|
32
|
+
'LEGION-BETA-2024-EARLY-0001',
|
|
33
|
+
'LEGION-BETA-2024-EARLY-0002',
|
|
34
|
+
// Add more beta keys as needed
|
|
35
|
+
]);
|
|
36
|
+
/**
|
|
37
|
+
* Validate a license key
|
|
38
|
+
* In production, this would call your license server
|
|
39
|
+
*/
|
|
40
|
+
export async function validateLicense(key) {
|
|
41
|
+
// Normalize key
|
|
42
|
+
const normalizedKey = key.trim().toUpperCase();
|
|
43
|
+
// Check format
|
|
44
|
+
if (!normalizedKey.startsWith('LEGION-')) {
|
|
45
|
+
return {
|
|
46
|
+
isValid: false,
|
|
47
|
+
tier: null,
|
|
48
|
+
expiresAt: null,
|
|
49
|
+
message: 'Invalid license key format',
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
// Beta key validation (local for now)
|
|
53
|
+
if (BETA_KEYS.has(normalizedKey)) {
|
|
54
|
+
const expiresAt = new Date();
|
|
55
|
+
expiresAt.setMonth(expiresAt.getMonth() + 3); // Beta expires in 3 months
|
|
56
|
+
return {
|
|
57
|
+
isValid: true,
|
|
58
|
+
tier: 'beta',
|
|
59
|
+
expiresAt,
|
|
60
|
+
message: 'Beta license activated',
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
// TODO: In production, call license server
|
|
64
|
+
// const response = await fetch('https://api.legionai.dev/validate', {
|
|
65
|
+
// method: 'POST',
|
|
66
|
+
// headers: { 'Content-Type': 'application/json' },
|
|
67
|
+
// body: JSON.stringify({ key: normalizedKey, machineId: getMachineId() }),
|
|
68
|
+
// });
|
|
69
|
+
// return await response.json();
|
|
70
|
+
return {
|
|
71
|
+
isValid: false,
|
|
72
|
+
tier: null,
|
|
73
|
+
expiresAt: null,
|
|
74
|
+
message: 'Invalid or expired license key',
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Activate a license key
|
|
79
|
+
*/
|
|
80
|
+
export async function activateLicense(key) {
|
|
81
|
+
const validation = await validateLicense(key);
|
|
82
|
+
if (validation.isValid) {
|
|
83
|
+
// Store the license
|
|
84
|
+
licenseStore.set('licenseKey', key.trim().toUpperCase());
|
|
85
|
+
licenseStore.set('activatedAt', new Date().toISOString());
|
|
86
|
+
licenseStore.set('expiresAt', validation.expiresAt?.toISOString() || null);
|
|
87
|
+
licenseStore.set('tier', validation.tier);
|
|
88
|
+
licenseStore.set('machineId', getMachineId());
|
|
89
|
+
}
|
|
90
|
+
return validation;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Check if there's a valid active license
|
|
94
|
+
*/
|
|
95
|
+
export function checkLicense() {
|
|
96
|
+
const licenseKey = licenseStore.get('licenseKey');
|
|
97
|
+
const expiresAt = licenseStore.get('expiresAt');
|
|
98
|
+
const tier = licenseStore.get('tier');
|
|
99
|
+
const storedMachineId = licenseStore.get('machineId');
|
|
100
|
+
// No license stored
|
|
101
|
+
if (!licenseKey) {
|
|
102
|
+
return {
|
|
103
|
+
isValid: false,
|
|
104
|
+
tier: null,
|
|
105
|
+
expiresAt: null,
|
|
106
|
+
message: 'No license activated',
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
// Check machine binding
|
|
110
|
+
if (storedMachineId && storedMachineId !== getMachineId()) {
|
|
111
|
+
return {
|
|
112
|
+
isValid: false,
|
|
113
|
+
tier: null,
|
|
114
|
+
expiresAt: null,
|
|
115
|
+
message: 'License is bound to a different machine',
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
// Check expiration
|
|
119
|
+
if (expiresAt) {
|
|
120
|
+
const expDate = new Date(expiresAt);
|
|
121
|
+
if (expDate < new Date()) {
|
|
122
|
+
return {
|
|
123
|
+
isValid: false,
|
|
124
|
+
tier: null,
|
|
125
|
+
expiresAt: expDate,
|
|
126
|
+
message: 'License has expired',
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
isValid: true,
|
|
131
|
+
tier,
|
|
132
|
+
expiresAt: expDate,
|
|
133
|
+
message: `${tier} license active`,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
isValid: true,
|
|
138
|
+
tier,
|
|
139
|
+
expiresAt: null,
|
|
140
|
+
message: `${tier} license active (no expiration)`,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Deactivate the current license
|
|
145
|
+
*/
|
|
146
|
+
export function deactivateLicense() {
|
|
147
|
+
licenseStore.clear();
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get stored license info (for display)
|
|
151
|
+
*/
|
|
152
|
+
export function getLicenseInfo() {
|
|
153
|
+
return {
|
|
154
|
+
key: licenseStore.get('licenseKey'),
|
|
155
|
+
tier: licenseStore.get('tier'),
|
|
156
|
+
activatedAt: licenseStore.get('activatedAt'),
|
|
157
|
+
expiresAt: licenseStore.get('expiresAt'),
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Require valid license - throws if not valid
|
|
162
|
+
*/
|
|
163
|
+
export function requireLicense() {
|
|
164
|
+
const license = checkLicense();
|
|
165
|
+
if (!license.isValid) {
|
|
166
|
+
console.log('');
|
|
167
|
+
console.log(chalk.red('⚔️ License Required'));
|
|
168
|
+
console.log('');
|
|
169
|
+
console.log(chalk.dim('LegionAI requires a valid license to operate.'));
|
|
170
|
+
console.log('');
|
|
171
|
+
console.log(chalk.white('To activate your license:'));
|
|
172
|
+
console.log(chalk.hex('#FF6B00')(' legionai activate <LICENSE-KEY>'));
|
|
173
|
+
console.log('');
|
|
174
|
+
console.log(chalk.dim('Get a license at: https://legionai.dev/pricing'));
|
|
175
|
+
console.log('');
|
|
176
|
+
process.exit(1);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Display license status
|
|
181
|
+
*/
|
|
182
|
+
export function displayLicenseStatus() {
|
|
183
|
+
const license = checkLicense();
|
|
184
|
+
const info = getLicenseInfo();
|
|
185
|
+
console.log('');
|
|
186
|
+
if (license.isValid) {
|
|
187
|
+
console.log(chalk.green(`✓ License: ${license.tier?.toUpperCase()} (Active)`));
|
|
188
|
+
if (license.expiresAt) {
|
|
189
|
+
const daysLeft = Math.ceil((license.expiresAt.getTime() - Date.now()) / (1000 * 60 * 60 * 24));
|
|
190
|
+
console.log(chalk.dim(` Expires: ${license.expiresAt.toLocaleDateString()} (${daysLeft} days)`));
|
|
191
|
+
}
|
|
192
|
+
if (info.key) {
|
|
193
|
+
console.log(chalk.dim(` Key: ${info.key.substring(0, 15)}...`));
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
console.log(chalk.red(`✗ License: ${license.message}`));
|
|
198
|
+
console.log(chalk.dim(' Run: legionai activate <LICENSE-KEY>'));
|
|
199
|
+
}
|
|
200
|
+
console.log('');
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=license.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/auth/license.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activate.d.ts","sourceRoot":"","sources":["../../src/commands/activate.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,eAAO,MAAM,eAAe,SAoIxB,CAAC"}
|