@pga-ai/cli 0.8.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 +449 -0
- package/dist/commands/benchmark.d.ts +2 -0
- package/dist/commands/benchmark.d.ts.map +1 -0
- package/dist/commands/benchmark.js +6 -0
- package/dist/commands/benchmark.js.map +1 -0
- package/dist/commands/chat.d.ts +6 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +67 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/config.d.ts +2 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +5 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/create.d.ts +2 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +5 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/doctor.d.ts +4 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +223 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/evolve.d.ts +2 -0
- package/dist/commands/evolve.d.ts.map +1 -0
- package/dist/commands/evolve.js +6 -0
- package/dist/commands/evolve.js.map +1 -0
- package/dist/commands/export.d.ts +2 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +6 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/import.d.ts +2 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +6 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +415 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +2 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +5 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/metrics.d.ts +2 -0
- package/dist/commands/metrics.d.ts.map +1 -0
- package/dist/commands/metrics.js +5 -0
- package/dist/commands/metrics.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +5 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +133 -0
- package/dist/index.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import ora from 'ora';
|
|
5
|
+
import inquirer from 'inquirer';
|
|
6
|
+
import boxen from 'boxen';
|
|
7
|
+
export async function init(options) {
|
|
8
|
+
console.log(chalk.bold('\nš Initialize GSEP Project\n'));
|
|
9
|
+
let template = options.template || 'basic';
|
|
10
|
+
if (!options.template) {
|
|
11
|
+
const answers = await inquirer.prompt([
|
|
12
|
+
{
|
|
13
|
+
type: 'list',
|
|
14
|
+
name: 'template',
|
|
15
|
+
message: 'Choose a project template:',
|
|
16
|
+
choices: [
|
|
17
|
+
{
|
|
18
|
+
name: 'š¦ Basic - Simple GSEP setup',
|
|
19
|
+
value: 'basic',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'š§ Advanced - With monitoring and multi-model',
|
|
23
|
+
value: 'advanced',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'š¢ Enterprise - Production-ready with all features',
|
|
27
|
+
value: 'enterprise',
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
default: 'basic',
|
|
31
|
+
},
|
|
32
|
+
]);
|
|
33
|
+
template = answers.template;
|
|
34
|
+
}
|
|
35
|
+
const spinner = ora('Initializing GSEP project...').start();
|
|
36
|
+
try {
|
|
37
|
+
const projectDir = path.resolve(options.dir || '.');
|
|
38
|
+
await createProjectStructure(projectDir, template);
|
|
39
|
+
spinner.succeed(chalk.green('Project initialized successfully!'));
|
|
40
|
+
displayNextSteps(projectDir, template);
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
spinner.fail(chalk.red('Failed to initialize project'));
|
|
44
|
+
console.error(error);
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async function createProjectStructure(projectDir, template) {
|
|
49
|
+
await fs.mkdir(projectDir, { recursive: true });
|
|
50
|
+
await fs.mkdir(path.join(projectDir, 'src'), { recursive: true });
|
|
51
|
+
await fs.mkdir(path.join(projectDir, 'genomes'), { recursive: true });
|
|
52
|
+
const packageJson = {
|
|
53
|
+
name: 'my-pga-project',
|
|
54
|
+
version: '1.0.0',
|
|
55
|
+
type: 'module',
|
|
56
|
+
description: 'GSEP-powered AI application',
|
|
57
|
+
main: 'dist/index.js',
|
|
58
|
+
scripts: {
|
|
59
|
+
dev: 'tsx watch src/index.ts',
|
|
60
|
+
build: 'tsc',
|
|
61
|
+
start: 'node dist/index.js',
|
|
62
|
+
},
|
|
63
|
+
dependencies: {
|
|
64
|
+
'@pga-ai/core': '^0.1.0',
|
|
65
|
+
'@pga-ai/adapters-llm-anthropic': '^0.1.0',
|
|
66
|
+
},
|
|
67
|
+
devDependencies: {
|
|
68
|
+
typescript: '^5.4.5',
|
|
69
|
+
tsx: '^4.7.1',
|
|
70
|
+
'@types/node': '^20.12.7',
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
if (template === 'advanced' || template === 'enterprise') {
|
|
74
|
+
packageJson.dependencies['@pga-ai/adapters-llm-openai'] = '^0.1.0';
|
|
75
|
+
}
|
|
76
|
+
if (template === 'enterprise') {
|
|
77
|
+
packageJson.dependencies['@pga-ai/adapters-storage-postgres'] = '^0.1.0';
|
|
78
|
+
}
|
|
79
|
+
await fs.writeFile(path.join(projectDir, 'package.json'), JSON.stringify(packageJson, null, 2));
|
|
80
|
+
const tsconfig = {
|
|
81
|
+
compilerOptions: {
|
|
82
|
+
target: 'ES2022',
|
|
83
|
+
module: 'ESNext',
|
|
84
|
+
moduleResolution: 'node',
|
|
85
|
+
esModuleInterop: true,
|
|
86
|
+
strict: true,
|
|
87
|
+
skipLibCheck: true,
|
|
88
|
+
outDir: './dist',
|
|
89
|
+
rootDir: './src',
|
|
90
|
+
},
|
|
91
|
+
include: ['src/**/*'],
|
|
92
|
+
exclude: ['node_modules', 'dist'],
|
|
93
|
+
};
|
|
94
|
+
await fs.writeFile(path.join(projectDir, 'tsconfig.json'), JSON.stringify(tsconfig, null, 2));
|
|
95
|
+
const envExample = getEnvTemplate(template);
|
|
96
|
+
await fs.writeFile(path.join(projectDir, '.env.example'), envExample);
|
|
97
|
+
const gitignore = `
|
|
98
|
+
node_modules/
|
|
99
|
+
dist/
|
|
100
|
+
.env
|
|
101
|
+
*.log
|
|
102
|
+
.DS_Store
|
|
103
|
+
genomes/*.json
|
|
104
|
+
`.trim();
|
|
105
|
+
await fs.writeFile(path.join(projectDir, '.gitignore'), gitignore);
|
|
106
|
+
const mainFile = getMainTemplate(template);
|
|
107
|
+
await fs.writeFile(path.join(projectDir, 'src', 'index.ts'), mainFile);
|
|
108
|
+
const readme = getReadmeTemplate(template);
|
|
109
|
+
await fs.writeFile(path.join(projectDir, 'README.md'), readme);
|
|
110
|
+
}
|
|
111
|
+
function getEnvTemplate(template) {
|
|
112
|
+
let env = '# GSEP Configuration\n\n';
|
|
113
|
+
env += '# Anthropic API Key\n';
|
|
114
|
+
env += 'ANTHROPIC_API_KEY=your-api-key-here\n\n';
|
|
115
|
+
if (template === 'advanced' || template === 'enterprise') {
|
|
116
|
+
env += '# OpenAI API Key (optional)\n';
|
|
117
|
+
env += 'OPENAI_API_KEY=your-openai-api-key\n\n';
|
|
118
|
+
}
|
|
119
|
+
if (template === 'enterprise') {
|
|
120
|
+
env += '# PostgreSQL Connection\n';
|
|
121
|
+
env += 'DATABASE_URL=postgresql://user:password@localhost:5432/pga\n\n';
|
|
122
|
+
}
|
|
123
|
+
return env;
|
|
124
|
+
}
|
|
125
|
+
function getMainTemplate(template) {
|
|
126
|
+
if (template === 'basic') {
|
|
127
|
+
return `/**
|
|
128
|
+
* Basic GSEP Application
|
|
129
|
+
*/
|
|
130
|
+
|
|
131
|
+
import { PGA } from '@pga-ai/core';
|
|
132
|
+
import { ClaudeAdapter } from '@pga-ai/adapters-llm-anthropic';
|
|
133
|
+
|
|
134
|
+
async function main() {
|
|
135
|
+
// Initialize GSEP
|
|
136
|
+
const pga = new PGA({
|
|
137
|
+
llmAdapter: new ClaudeAdapter({
|
|
138
|
+
apiKey: process.env.ANTHROPIC_API_KEY!,
|
|
139
|
+
}),
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
// Create a genome
|
|
143
|
+
const genome = await pga.createGenome({
|
|
144
|
+
name: 'my-assistant',
|
|
145
|
+
config: {
|
|
146
|
+
layer0: {
|
|
147
|
+
systemPrompt: 'You are a helpful AI assistant.',
|
|
148
|
+
constraints: ['Be concise', 'Be accurate'],
|
|
149
|
+
capabilities: ['coding', 'analysis'],
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
console.log('Genome created:', genome.id);
|
|
155
|
+
|
|
156
|
+
// Chat with the genome
|
|
157
|
+
const response = await genome.chat('Hello! How can you help me?', {
|
|
158
|
+
userId: 'user-123',
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
console.log('Response:', response.content);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
main().catch(console.error);
|
|
165
|
+
`;
|
|
166
|
+
}
|
|
167
|
+
if (template === 'advanced') {
|
|
168
|
+
return `/**
|
|
169
|
+
* Advanced GSEP Application
|
|
170
|
+
* Includes monitoring and multi-model support
|
|
171
|
+
*/
|
|
172
|
+
|
|
173
|
+
import { PGA, MetricsCollector } from '@pga-ai/core';
|
|
174
|
+
import { ClaudeAdapter } from '@pga-ai/adapters-llm-anthropic';
|
|
175
|
+
import { OpenAIAdapter } from '@pga-ai/adapters-llm-openai';
|
|
176
|
+
|
|
177
|
+
async function main() {
|
|
178
|
+
// Initialize metrics collector
|
|
179
|
+
const metrics = new MetricsCollector({
|
|
180
|
+
alertThresholds: {
|
|
181
|
+
maxCostPerHour: 50,
|
|
182
|
+
maxErrorRate: 0.05,
|
|
183
|
+
maxP95Latency: 3000,
|
|
184
|
+
},
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
// Initialize GSEP with Claude
|
|
188
|
+
const pgaClaude = new PGA({
|
|
189
|
+
llmAdapter: new ClaudeAdapter({
|
|
190
|
+
apiKey: process.env.ANTHROPIC_API_KEY!,
|
|
191
|
+
model: 'claude-sonnet-4.5',
|
|
192
|
+
}),
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
// Initialize GSEP with OpenAI (alternative)
|
|
196
|
+
const pgaOpenAI = new PGA({
|
|
197
|
+
llmAdapter: new OpenAIAdapter({
|
|
198
|
+
apiKey: process.env.OPENAI_API_KEY!,
|
|
199
|
+
model: 'gpt-4-turbo-preview',
|
|
200
|
+
}),
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
// Create genome
|
|
204
|
+
const genome = await pgaClaude.createGenome({
|
|
205
|
+
name: 'monitored-assistant',
|
|
206
|
+
config: {
|
|
207
|
+
layer0: {
|
|
208
|
+
systemPrompt: 'You are an advanced AI assistant with self-evolving capabilities.',
|
|
209
|
+
constraints: ['Be precise', 'Learn from interactions'],
|
|
210
|
+
capabilities: ['coding', 'debugging', 'architecture'],
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
// Chat with metrics tracking
|
|
216
|
+
const startTime = Date.now();
|
|
217
|
+
|
|
218
|
+
try {
|
|
219
|
+
const response = await genome.chat('Explain GSEP architecture', {
|
|
220
|
+
userId: 'user-123',
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
metrics.recordRequest({
|
|
224
|
+
requestId: crypto.randomUUID(),
|
|
225
|
+
duration: Date.now() - startTime,
|
|
226
|
+
success: true,
|
|
227
|
+
model: 'claude-sonnet-4.5',
|
|
228
|
+
inputTokens: response.usage?.inputTokens || 0,
|
|
229
|
+
outputTokens: response.usage?.outputTokens || 0,
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
console.log('Response:', response.content);
|
|
233
|
+
} catch (error) {
|
|
234
|
+
metrics.recordRequest({
|
|
235
|
+
requestId: crypto.randomUUID(),
|
|
236
|
+
duration: Date.now() - startTime,
|
|
237
|
+
success: false,
|
|
238
|
+
model: 'claude-sonnet-4.5',
|
|
239
|
+
inputTokens: 0,
|
|
240
|
+
outputTokens: 0,
|
|
241
|
+
error: error.message,
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
throw error;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// Display metrics
|
|
248
|
+
console.log('\\nMetrics:', metrics.getPerformanceMetrics());
|
|
249
|
+
console.log('Costs:', metrics.getCostMetrics());
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
main().catch(console.error);
|
|
253
|
+
`;
|
|
254
|
+
}
|
|
255
|
+
return `/**
|
|
256
|
+
* Enterprise GSEP Application
|
|
257
|
+
* Production-ready with PostgreSQL, monitoring, and multi-model support
|
|
258
|
+
*/
|
|
259
|
+
|
|
260
|
+
import { PGA, MetricsCollector, Evaluator } from '@pga-ai/core';
|
|
261
|
+
import { ClaudeAdapter } from '@pga-ai/adapters-llm-anthropic';
|
|
262
|
+
import { OpenAIAdapter } from '@pga-ai/adapters-llm-openai';
|
|
263
|
+
import { PostgresAdapter } from '@pga-ai/adapters-storage-postgres';
|
|
264
|
+
|
|
265
|
+
async function main() {
|
|
266
|
+
// Initialize storage
|
|
267
|
+
const storage = new PostgresAdapter({
|
|
268
|
+
connectionString: process.env.DATABASE_URL!,
|
|
269
|
+
});
|
|
270
|
+
|
|
271
|
+
await storage.initialize();
|
|
272
|
+
|
|
273
|
+
// Initialize metrics
|
|
274
|
+
const metrics = new MetricsCollector({
|
|
275
|
+
alertThresholds: {
|
|
276
|
+
maxCostPerHour: 100,
|
|
277
|
+
maxErrorRate: 0.05,
|
|
278
|
+
maxP95Latency: 3000,
|
|
279
|
+
maxMemoryUsageMB: 500,
|
|
280
|
+
},
|
|
281
|
+
});
|
|
282
|
+
|
|
283
|
+
// Initialize GSEP
|
|
284
|
+
const pga = new PGA({
|
|
285
|
+
llmAdapter: new ClaudeAdapter({
|
|
286
|
+
apiKey: process.env.ANTHROPIC_API_KEY!,
|
|
287
|
+
model: 'claude-sonnet-4.5',
|
|
288
|
+
}),
|
|
289
|
+
storageAdapter: storage,
|
|
290
|
+
});
|
|
291
|
+
|
|
292
|
+
// Create genome
|
|
293
|
+
const genome = await pga.createGenome({
|
|
294
|
+
name: 'enterprise-assistant',
|
|
295
|
+
config: {
|
|
296
|
+
layer0: {
|
|
297
|
+
systemPrompt: 'You are an enterprise-grade AI assistant with genomic evolution.',
|
|
298
|
+
constraints: ['Security-first', 'Audit all operations', 'Performance optimized'],
|
|
299
|
+
capabilities: ['enterprise-coding', 'architecture', 'security-analysis'],
|
|
300
|
+
},
|
|
301
|
+
},
|
|
302
|
+
});
|
|
303
|
+
|
|
304
|
+
// Run evaluation
|
|
305
|
+
const evaluator = new Evaluator(pga, metrics);
|
|
306
|
+
const benchmark = await evaluator.evaluate(genome, STANDARD_TASKS, 'admin');
|
|
307
|
+
|
|
308
|
+
console.log('Benchmark Results:');
|
|
309
|
+
console.log(\`Success Rate: \${(benchmark.successRate * 100).toFixed(1)}%\`);
|
|
310
|
+
console.log(\`Avg Response Time: \${benchmark.avgResponseTime.toFixed(0)}ms\`);
|
|
311
|
+
console.log(\`Total Cost: $\${benchmark.totalCost.toFixed(4)}\`);
|
|
312
|
+
|
|
313
|
+
// Monitor health
|
|
314
|
+
setInterval(() => {
|
|
315
|
+
const health = metrics.getHealthStatus();
|
|
316
|
+
const alerts = metrics.getAlerts();
|
|
317
|
+
|
|
318
|
+
if (health.status !== 'healthy') {
|
|
319
|
+
console.warn('Health degraded:', health);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
if (alerts.length > 0) {
|
|
323
|
+
console.warn('Active alerts:', alerts);
|
|
324
|
+
}
|
|
325
|
+
}, 60000); // Check every minute
|
|
326
|
+
|
|
327
|
+
// Graceful shutdown
|
|
328
|
+
process.on('SIGINT', async () => {
|
|
329
|
+
console.log('\\nShutting down...');
|
|
330
|
+
await storage.close();
|
|
331
|
+
process.exit(0);
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
main().catch(console.error);
|
|
336
|
+
`;
|
|
337
|
+
}
|
|
338
|
+
function getReadmeTemplate(template) {
|
|
339
|
+
return `# My GSEP Project
|
|
340
|
+
|
|
341
|
+
${template.charAt(0).toUpperCase() + template.slice(1)} GSEP application with genomic self-evolving prompts.
|
|
342
|
+
|
|
343
|
+
## Setup
|
|
344
|
+
|
|
345
|
+
1. Install dependencies:
|
|
346
|
+
\`\`\`bash
|
|
347
|
+
npm install
|
|
348
|
+
\`\`\`
|
|
349
|
+
|
|
350
|
+
2. Copy \`.env.example\` to \`.env\` and fill in your API keys:
|
|
351
|
+
\`\`\`bash
|
|
352
|
+
cp .env.example .env
|
|
353
|
+
\`\`\`
|
|
354
|
+
|
|
355
|
+
3. Run the application:
|
|
356
|
+
\`\`\`bash
|
|
357
|
+
npm run dev
|
|
358
|
+
\`\`\`
|
|
359
|
+
|
|
360
|
+
## Project Structure
|
|
361
|
+
|
|
362
|
+
\`\`\`
|
|
363
|
+
my-pga-project/
|
|
364
|
+
āāā src/
|
|
365
|
+
ā āāā index.ts # Main application
|
|
366
|
+
āāā genomes/ # Genome exports
|
|
367
|
+
āāā package.json
|
|
368
|
+
āāā tsconfig.json
|
|
369
|
+
āāā .env # Configuration (not committed)
|
|
370
|
+
āāā .env.example # Example configuration
|
|
371
|
+
\`\`\`
|
|
372
|
+
|
|
373
|
+
## Commands
|
|
374
|
+
|
|
375
|
+
- \`npm run dev\` - Run in development mode
|
|
376
|
+
- \`npm run build\` - Build for production
|
|
377
|
+
- \`npm start\` - Run production build
|
|
378
|
+
|
|
379
|
+
## Learn More
|
|
380
|
+
|
|
381
|
+
- [GSEP Documentation](https://github.com/pga-ai/pga-platform)
|
|
382
|
+
- [API Reference](https://gsepcore.com/docs)
|
|
383
|
+
- [Examples](https://github.com/pga-ai/pga-platform/tree/main/examples)
|
|
384
|
+
|
|
385
|
+
## License
|
|
386
|
+
|
|
387
|
+
MIT
|
|
388
|
+
`;
|
|
389
|
+
}
|
|
390
|
+
function displayNextSteps(projectDir, template) {
|
|
391
|
+
const dirName = path.basename(projectDir);
|
|
392
|
+
const message = `
|
|
393
|
+
${chalk.bold.green('⨠Project Created Successfully!')}
|
|
394
|
+
|
|
395
|
+
${chalk.bold('Next steps:')}
|
|
396
|
+
|
|
397
|
+
${chalk.cyan('1.')} ${chalk.gray('cd')} ${dirName}
|
|
398
|
+
${chalk.cyan('2.')} ${chalk.gray('npm install')}
|
|
399
|
+
${chalk.cyan('3.')} ${chalk.gray('cp .env.example .env')}
|
|
400
|
+
${chalk.cyan('4.')} ${chalk.gray('# Edit .env with your API keys')}
|
|
401
|
+
${chalk.cyan('5.')} ${chalk.gray('npm run dev')}
|
|
402
|
+
|
|
403
|
+
${chalk.bold('Template:')} ${template}
|
|
404
|
+
${chalk.bold('Location:')} ${projectDir}
|
|
405
|
+
|
|
406
|
+
${chalk.gray('Run')} ${chalk.cyan('pga --help')} ${chalk.gray('for more commands')}
|
|
407
|
+
`.trim();
|
|
408
|
+
console.log(boxen(message, {
|
|
409
|
+
padding: 1,
|
|
410
|
+
margin: 1,
|
|
411
|
+
borderStyle: 'round',
|
|
412
|
+
borderColor: 'cyan',
|
|
413
|
+
}));
|
|
414
|
+
}
|
|
415
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAIA,wBAAsB,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAGtD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAY;IACnC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/commands/metrics.ts"],"names":[],"mappings":"AAIA,wBAAsB,OAAO,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/commands/metrics.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAY;IACtC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAIA,wBAAsB,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAGxD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAY;IACrC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import figlet from 'figlet';
|
|
5
|
+
import { VERSION } from '@pga-ai/core';
|
|
6
|
+
const program = new Command();
|
|
7
|
+
console.log(chalk.cyan(figlet.textSync('GSEP CLI', {
|
|
8
|
+
font: 'Standard',
|
|
9
|
+
horizontalLayout: 'default',
|
|
10
|
+
})));
|
|
11
|
+
console.log(chalk.gray(' Genomic Self-Evolving Prompts | World-Class AI Agent Platform\n'));
|
|
12
|
+
program
|
|
13
|
+
.name('pga')
|
|
14
|
+
.description('Interactive CLI for GSEP (Genomic Self-Evolving Prompts)')
|
|
15
|
+
.version(VERSION)
|
|
16
|
+
.option('-v, --verbose', 'Enable verbose output')
|
|
17
|
+
.option('--no-color', 'Disable colored output');
|
|
18
|
+
program
|
|
19
|
+
.command('init')
|
|
20
|
+
.description('Initialize a new GSEP project')
|
|
21
|
+
.option('-t, --template <name>', 'Use a template (basic, advanced, enterprise)', 'basic')
|
|
22
|
+
.option('-d, --dir <path>', 'Project directory', '.')
|
|
23
|
+
.action(async (options) => {
|
|
24
|
+
const { init } = await import('./commands/init.js');
|
|
25
|
+
await init(options);
|
|
26
|
+
});
|
|
27
|
+
program
|
|
28
|
+
.command('create')
|
|
29
|
+
.description('Create a new genome')
|
|
30
|
+
.option('-n, --name <name>', 'Genome name')
|
|
31
|
+
.option('-m, --model <model>', 'LLM model (claude-sonnet-4.5, gpt-4, etc.)')
|
|
32
|
+
.option('-i, --interactive', 'Interactive mode', true)
|
|
33
|
+
.action(async (options) => {
|
|
34
|
+
const { create } = await import('./commands/create.js');
|
|
35
|
+
await create(options);
|
|
36
|
+
});
|
|
37
|
+
program
|
|
38
|
+
.command('list')
|
|
39
|
+
.description('List all genomes')
|
|
40
|
+
.option('-f, --format <format>', 'Output format (table, json)', 'table')
|
|
41
|
+
.option('-s, --sort <field>', 'Sort by field (name, fitness, created)', 'created')
|
|
42
|
+
.action(async (options) => {
|
|
43
|
+
const { list } = await import('./commands/list.js');
|
|
44
|
+
await list(options);
|
|
45
|
+
});
|
|
46
|
+
program
|
|
47
|
+
.command('chat')
|
|
48
|
+
.description('Start an interactive chat session with a genome')
|
|
49
|
+
.argument('[genome-id]', 'Genome ID (will prompt if not provided)')
|
|
50
|
+
.option('-u, --user <userId>', 'User ID', 'cli-user')
|
|
51
|
+
.action(async (genomeId, options) => {
|
|
52
|
+
const { chat } = await import('./commands/chat.js');
|
|
53
|
+
await chat(genomeId, options);
|
|
54
|
+
});
|
|
55
|
+
program
|
|
56
|
+
.command('evolve')
|
|
57
|
+
.description('Manually trigger genome evolution')
|
|
58
|
+
.argument('<genome-id>', 'Genome ID')
|
|
59
|
+
.option('-l, --layer <layer>', 'Layer to evolve (0, 1, 2)', '2')
|
|
60
|
+
.option('-g, --gene <gene>', 'Specific gene to evolve')
|
|
61
|
+
.action(async (genomeId, options) => {
|
|
62
|
+
const { evolve } = await import('./commands/evolve.js');
|
|
63
|
+
await evolve(genomeId, options);
|
|
64
|
+
});
|
|
65
|
+
program
|
|
66
|
+
.command('benchmark')
|
|
67
|
+
.description('Run evaluation benchmarks')
|
|
68
|
+
.argument('[genome-id]', 'Genome ID to benchmark')
|
|
69
|
+
.option('-t, --tasks <tasks>', 'Task IDs (comma-separated)')
|
|
70
|
+
.option('-c, --compare <genome-id>', 'Compare with another genome')
|
|
71
|
+
.action(async (genomeId, options) => {
|
|
72
|
+
const { benchmark } = await import('./commands/benchmark.js');
|
|
73
|
+
await benchmark(genomeId, options);
|
|
74
|
+
});
|
|
75
|
+
program
|
|
76
|
+
.command('metrics')
|
|
77
|
+
.description('View performance and cost metrics')
|
|
78
|
+
.option('-p, --period <period>', 'Time period (1h, 24h, 7d, 30d)', '24h')
|
|
79
|
+
.option('-e, --export <file>', 'Export to file')
|
|
80
|
+
.action(async (options) => {
|
|
81
|
+
const { metrics } = await import('./commands/metrics.js');
|
|
82
|
+
await metrics(options);
|
|
83
|
+
});
|
|
84
|
+
program
|
|
85
|
+
.command('status')
|
|
86
|
+
.description('Show system health status')
|
|
87
|
+
.option('-w, --watch', 'Watch mode (updates every 5s)')
|
|
88
|
+
.action(async (options) => {
|
|
89
|
+
const { status } = await import('./commands/status.js');
|
|
90
|
+
await status(options);
|
|
91
|
+
});
|
|
92
|
+
program
|
|
93
|
+
.command('config')
|
|
94
|
+
.description('Configure GSEP settings')
|
|
95
|
+
.option('-s, --set <key=value>', 'Set a configuration value')
|
|
96
|
+
.option('-g, --get <key>', 'Get a configuration value')
|
|
97
|
+
.option('--list', 'List all configuration')
|
|
98
|
+
.action(async (options) => {
|
|
99
|
+
const { config } = await import('./commands/config.js');
|
|
100
|
+
await config(options);
|
|
101
|
+
});
|
|
102
|
+
program
|
|
103
|
+
.command('export')
|
|
104
|
+
.description('Export genome or data')
|
|
105
|
+
.argument('<genome-id>', 'Genome ID')
|
|
106
|
+
.option('-o, --output <file>', 'Output file', 'genome-export.json')
|
|
107
|
+
.option('-f, --format <format>', 'Export format (json, yaml)', 'json')
|
|
108
|
+
.action(async (genomeId, options) => {
|
|
109
|
+
const { exportGenome } = await import('./commands/export.js');
|
|
110
|
+
await exportGenome(genomeId, options);
|
|
111
|
+
});
|
|
112
|
+
program
|
|
113
|
+
.command('import')
|
|
114
|
+
.description('Import genome from file')
|
|
115
|
+
.argument('<file>', 'File to import')
|
|
116
|
+
.option('-n, --name <name>', 'New genome name')
|
|
117
|
+
.action(async (file, options) => {
|
|
118
|
+
const { importGenome } = await import('./commands/import.js');
|
|
119
|
+
await importGenome(file, options);
|
|
120
|
+
});
|
|
121
|
+
program
|
|
122
|
+
.command('doctor')
|
|
123
|
+
.description('Run diagnostics and check for issues')
|
|
124
|
+
.option('--fix', 'Attempt to fix issues automatically')
|
|
125
|
+
.action(async (options) => {
|
|
126
|
+
const { doctor } = await import('./commands/doctor.js');
|
|
127
|
+
await doctor(options);
|
|
128
|
+
});
|
|
129
|
+
program.parse(process.argv);
|
|
130
|
+
if (!process.argv.slice(2).length) {
|
|
131
|
+
program.outputHelp();
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|