@astrive-ai/cli 1.0.1
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/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +4 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli.d.ts +20 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +74 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/chat.d.ts +8 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +84 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/dev.d.ts +7 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +51 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/doctor.d.ts +7 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +46 -0
- package/dist/commands/doctor.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 +56 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/inspect.d.ts +7 -0
- package/dist/commands/inspect.d.ts.map +1 -0
- package/dist/commands/inspect.js +24 -0
- package/dist/commands/inspect.js.map +1 -0
- package/dist/commands/plugins.d.ts +7 -0
- package/dist/commands/plugins.d.ts.map +1 -0
- package/dist/commands/plugins.js +32 -0
- package/dist/commands/plugins.js.map +1 -0
- package/dist/commands/tools.d.ts +7 -0
- package/dist/commands/tools.d.ts.map +1 -0
- package/dist/commands/tools.js +42 -0
- package/dist/commands/tools.js.map +1 -0
- package/dist/commands/version.d.ts +8 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/version.js +23 -0
- package/dist/commands/version.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/parser.d.ts +6 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +43 -0
- package/dist/parser.js.map +1 -0
- package/dist/ui.d.ts +32 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +95 -0
- package/dist/ui.js.map +1 -0
- package/package.json +29 -0
- package/src/bin.ts +3 -0
- package/src/cli.ts +97 -0
- package/src/commands/chat.ts +94 -0
- package/src/commands/dev.ts +61 -0
- package/src/commands/doctor.ts +50 -0
- package/src/commands/init.ts +64 -0
- package/src/commands/inspect.ts +28 -0
- package/src/commands/plugins.ts +35 -0
- package/src/commands/tools.ts +47 -0
- package/src/commands/version.ts +25 -0
- package/src/index.ts +8 -0
- package/src/parser.ts +41 -0
- package/src/ui.ts +109 -0
- package/tsconfig.json +8 -0
package/dist/bin.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
|
package/dist/bin.js
ADDED
package/dist/bin.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface Flag {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
type: 'string' | 'boolean';
|
|
5
|
+
}
|
|
6
|
+
export interface Command {
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
aliases?: string[];
|
|
10
|
+
flags?: Flag[];
|
|
11
|
+
execute(args: string[], flags: Record<string, string>): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export declare class CLI {
|
|
14
|
+
private commands;
|
|
15
|
+
constructor();
|
|
16
|
+
private register;
|
|
17
|
+
run(args: string[]): Promise<void>;
|
|
18
|
+
private showHelp;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;AAaD,qBAAa,GAAG;IACd,OAAO,CAAC,QAAQ,CAA8B;;IAa9C,OAAO,CAAC,QAAQ;IAOV,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBxC,OAAO,CAAC,QAAQ;CA0BjB"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { parseArgs } from './parser.js';
|
|
2
|
+
import { error, banner, info, bold, divider } from './ui.js';
|
|
3
|
+
import { InitCommand } from './commands/init.js';
|
|
4
|
+
import { ChatCommand } from './commands/chat.js';
|
|
5
|
+
import { DoctorCommand } from './commands/doctor.js';
|
|
6
|
+
import { ToolsCommand } from './commands/tools.js';
|
|
7
|
+
import { PluginsCommand } from './commands/plugins.js';
|
|
8
|
+
import { VersionCommand } from './commands/version.js';
|
|
9
|
+
import { DevCommand } from './commands/dev.js';
|
|
10
|
+
import { InspectCommand } from './commands/inspect.js';
|
|
11
|
+
export class CLI {
|
|
12
|
+
commands = new Map();
|
|
13
|
+
constructor() {
|
|
14
|
+
this.register(new InitCommand());
|
|
15
|
+
this.register(new ChatCommand());
|
|
16
|
+
this.register(new DoctorCommand());
|
|
17
|
+
this.register(new ToolsCommand());
|
|
18
|
+
this.register(new PluginsCommand());
|
|
19
|
+
this.register(new VersionCommand());
|
|
20
|
+
this.register(new DevCommand());
|
|
21
|
+
this.register(new InspectCommand());
|
|
22
|
+
}
|
|
23
|
+
register(cmd) {
|
|
24
|
+
this.commands.set(cmd.name, cmd);
|
|
25
|
+
if (cmd.aliases) {
|
|
26
|
+
cmd.aliases.forEach(alias => this.commands.set(alias, cmd));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async run(args) {
|
|
30
|
+
const parsed = parseArgs(args);
|
|
31
|
+
if (!parsed.command || parsed.flags['help'] || parsed.flags['h']) {
|
|
32
|
+
this.showHelp();
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const command = this.commands.get(parsed.command);
|
|
36
|
+
if (!command) {
|
|
37
|
+
error(`Unknown command: ${parsed.command}`);
|
|
38
|
+
info('Run "astrive --help" to see available commands.');
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
await command.execute(parsed.positional, parsed.flags);
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
error(`Error executing command ${command.name}:`);
|
|
46
|
+
console.error(err instanceof Error ? err.message : err);
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
showHelp() {
|
|
51
|
+
banner();
|
|
52
|
+
console.log(bold('Usage:'));
|
|
53
|
+
console.log(' astrive <command> [options]');
|
|
54
|
+
console.log('');
|
|
55
|
+
console.log(bold('Commands:'));
|
|
56
|
+
// Deduplicate commands (because of aliases)
|
|
57
|
+
const uniqueCommands = new Set();
|
|
58
|
+
for (const cmd of this.commands.values()) {
|
|
59
|
+
uniqueCommands.add(cmd);
|
|
60
|
+
}
|
|
61
|
+
Array.from(uniqueCommands)
|
|
62
|
+
.sort((a, b) => a.name.localeCompare(b.name))
|
|
63
|
+
.forEach(cmd => {
|
|
64
|
+
const namePad = cmd.name.padEnd(15);
|
|
65
|
+
console.log(` ${namePad} ${cmd.description}`);
|
|
66
|
+
});
|
|
67
|
+
console.log('');
|
|
68
|
+
console.log(bold('Options:'));
|
|
69
|
+
console.log(' --help, -h Show help');
|
|
70
|
+
console.log('');
|
|
71
|
+
divider();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,OAAO,GAAG;IACN,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAE9C;QACE,IAAI,CAAC,QAAQ,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;IACtC,CAAC;IAEO,QAAQ,CAAC,GAAY;QAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACjC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAc;QACtB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAE/B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,KAAK,CAAC,oBAAoB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,iDAAiD,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,2BAA2B,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;YAClD,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAEO,QAAQ;QACd,MAAM,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAE/B,4CAA4C;QAC5C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAW,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;aACvB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aAC5C,OAAO,CAAC,GAAG,CAAC,EAAE;YACb,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEL,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Command, Flag } from '../cli.js';
|
|
2
|
+
export declare class ChatCommand implements Command {
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
flags: Flag[];
|
|
6
|
+
execute(args: string[], flags: Record<string, string>): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=chat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAM1C,qBAAa,WAAY,YAAW,OAAO;IACzC,IAAI,SAAU;IACd,WAAW,SAAuC;IAClD,KAAK,EAAE,IAAI,EAAE,CAIX;IAEI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CA8E5E"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { error, info, bold, dim, Spinner } from '../ui.js';
|
|
2
|
+
import * as readline from 'readline';
|
|
3
|
+
import { AstriveAI } from '@astrive-ai/agent';
|
|
4
|
+
export class ChatCommand {
|
|
5
|
+
name = 'chat';
|
|
6
|
+
description = 'Start an interactive chat session';
|
|
7
|
+
flags = [
|
|
8
|
+
{ name: 'provider', description: 'AI Provider to use', type: 'string' },
|
|
9
|
+
{ name: 'model', description: 'Model to use', type: 'string' },
|
|
10
|
+
{ name: 'system', description: 'System prompt', type: 'string' }
|
|
11
|
+
];
|
|
12
|
+
async execute(args, flags) {
|
|
13
|
+
const apiKey = process.env.GROQ_API_KEY;
|
|
14
|
+
if (!apiKey) {
|
|
15
|
+
error('No API key configured. Please set the GROQ_API_KEY environment variable.');
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
info('Starting AstriveAI chat session...');
|
|
19
|
+
if (flags.provider)
|
|
20
|
+
info(`Provider: ${flags.provider}`);
|
|
21
|
+
if (flags.model)
|
|
22
|
+
info(`Model: ${flags.model}`);
|
|
23
|
+
info(dim('Type "exit" or "quit" to stop.'));
|
|
24
|
+
const config = {
|
|
25
|
+
providers: {
|
|
26
|
+
groq: { apiKey }
|
|
27
|
+
},
|
|
28
|
+
logger: {
|
|
29
|
+
level: 'info',
|
|
30
|
+
prefix: 'Astrive',
|
|
31
|
+
colors: true,
|
|
32
|
+
timestamp: true
|
|
33
|
+
},
|
|
34
|
+
systemPrompt: flags.system
|
|
35
|
+
};
|
|
36
|
+
const agent = new AstriveAI(config);
|
|
37
|
+
try {
|
|
38
|
+
await agent.init();
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
error(`Failed to initialize agent: ${e.message}`);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const rl = readline.createInterface({
|
|
45
|
+
input: process.stdin,
|
|
46
|
+
output: process.stdout
|
|
47
|
+
});
|
|
48
|
+
const providerName = flags.provider || 'groq';
|
|
49
|
+
const modelName = flags.model || 'llama-3.3-70b-versatile';
|
|
50
|
+
const ask = () => {
|
|
51
|
+
rl.question(bold('You: '), async (input) => {
|
|
52
|
+
const trimmed = input.trim();
|
|
53
|
+
if (trimmed.toLowerCase() === 'exit' || trimmed.toLowerCase() === 'quit') {
|
|
54
|
+
rl.close();
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (!trimmed) {
|
|
58
|
+
ask();
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const spinner = new Spinner();
|
|
62
|
+
spinner.start('Thinking...');
|
|
63
|
+
try {
|
|
64
|
+
const response = await agent.chat({ message: trimmed }, { provider: providerName, model: modelName });
|
|
65
|
+
spinner.stop();
|
|
66
|
+
console.log(`${bold('Astrive:')} ${response.content}`);
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
spinner.fail('Error generating response');
|
|
70
|
+
error(err.message);
|
|
71
|
+
}
|
|
72
|
+
ask();
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
ask();
|
|
76
|
+
return new Promise((resolve) => {
|
|
77
|
+
rl.on('close', () => {
|
|
78
|
+
info('Chat session ended.');
|
|
79
|
+
agent.destroy().catch(() => { }).finally(() => resolve());
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,qBAAa,UAAW,YAAW,OAAO;IACxC,IAAI,SAAS;IACb,WAAW,SAA8C;IAEnD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAkD5E"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { info, error, dim } from '../ui.js';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import { spawn } from 'child_process';
|
|
5
|
+
export class DevCommand {
|
|
6
|
+
name = 'dev';
|
|
7
|
+
description = 'Start development server with hot reload';
|
|
8
|
+
async execute(args, flags) {
|
|
9
|
+
const cwd = process.cwd();
|
|
10
|
+
const entryFile = path.join(cwd, 'src', 'index.ts');
|
|
11
|
+
try {
|
|
12
|
+
await fs.promises.access(entryFile);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
error(`Entry file not found: ${entryFile}`);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
info(`Starting dev server for ${entryFile}`);
|
|
19
|
+
info(dim('Watching for file changes...'));
|
|
20
|
+
let child = null;
|
|
21
|
+
const startServer = () => {
|
|
22
|
+
if (child) {
|
|
23
|
+
child.kill();
|
|
24
|
+
}
|
|
25
|
+
// We assume ts-node or similar is installed in the user's project,
|
|
26
|
+
// or we just use node if it's compiled. For dev we might use node with loader.
|
|
27
|
+
child = spawn('node', ['--loader', 'ts-node/esm', entryFile], {
|
|
28
|
+
stdio: 'inherit'
|
|
29
|
+
});
|
|
30
|
+
child.on('error', (err) => {
|
|
31
|
+
error(`Failed to start process: ${err.message}`);
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
startServer();
|
|
35
|
+
let debounceTimer = null;
|
|
36
|
+
// Watch src directory
|
|
37
|
+
fs.watch(path.join(cwd, 'src'), { recursive: true }, (eventType, filename) => {
|
|
38
|
+
if (filename && filename.endsWith('.ts')) {
|
|
39
|
+
if (debounceTimer)
|
|
40
|
+
clearTimeout(debounceTimer);
|
|
41
|
+
debounceTimer = setTimeout(() => {
|
|
42
|
+
info(`\nFile changed: ${filename}. Restarting...`);
|
|
43
|
+
startServer();
|
|
44
|
+
}, 300);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
// Keep process alive
|
|
48
|
+
return new Promise(() => { });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=dev.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAW,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAgB,MAAM,eAAe,CAAC;AAEpD,MAAM,OAAO,UAAU;IACrB,IAAI,GAAG,KAAK,CAAC;IACb,WAAW,GAAG,0CAA0C,CAAC;IAEzD,KAAK,CAAC,OAAO,CAAC,IAAc,EAAE,KAA6B;QACzD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAEpD,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,yBAAyB,SAAS,EAAE,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAE1C,IAAI,KAAK,GAAwB,IAAI,CAAC;QAEtC,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,CAAC;YAED,oEAAoE;YACpE,+EAA+E;YAC/E,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE;gBAC5D,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACxB,KAAK,CAAC,4BAA4B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,WAAW,EAAE,CAAC;QAEd,IAAI,aAAa,GAA0B,IAAI,CAAC;QAEhD,sBAAsB;QACtB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;YAC3E,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzC,IAAI,aAAa;oBAAE,YAAY,CAAC,aAAa,CAAC,CAAC;gBAC/C,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC9B,IAAI,CAAC,mBAAmB,QAAQ,iBAAiB,CAAC,CAAC;oBACnD,WAAW,EAAE,CAAC;gBAChB,CAAC,EAAE,GAAG,CAAC,CAAC;YACV,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,qBAAqB;QACrB,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,qBAAa,aAAc,YAAW,OAAO;IAC3C,IAAI,SAAY;IAChB,WAAW,SAAiD;IAEtD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAwC5E"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { success, error, info, table } from '../ui.js';
|
|
2
|
+
import * as fs from 'fs/promises';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
export class DoctorCommand {
|
|
5
|
+
name = 'doctor';
|
|
6
|
+
description = 'Check system configuration and dependencies';
|
|
7
|
+
async execute(args, flags) {
|
|
8
|
+
info('Running AstriveAI System Checks...');
|
|
9
|
+
const results = [['Check', 'Status', 'Message']];
|
|
10
|
+
// Node.js Version
|
|
11
|
+
const nodeVersion = process.version;
|
|
12
|
+
const isNodeValid = parseInt(nodeVersion.slice(1).split('.')[0]) >= 18;
|
|
13
|
+
results.push([
|
|
14
|
+
'Node.js',
|
|
15
|
+
isNodeValid ? '✔' : '✖',
|
|
16
|
+
`Found ${nodeVersion} (Requires >= 18)`
|
|
17
|
+
]);
|
|
18
|
+
// Check .env
|
|
19
|
+
const cwd = process.cwd();
|
|
20
|
+
try {
|
|
21
|
+
await fs.access(path.join(cwd, '.env'));
|
|
22
|
+
results.push(['.env File', '✔', 'Found']);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
results.push(['.env File', '✖', 'Not found']);
|
|
26
|
+
}
|
|
27
|
+
// Check astrive.config.js
|
|
28
|
+
try {
|
|
29
|
+
await fs.access(path.join(cwd, 'astrive.config.js'));
|
|
30
|
+
results.push(['Config', '✔', 'astrive.config.js found']);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
results.push(['Config', '✖', 'astrive.config.js not found']);
|
|
34
|
+
}
|
|
35
|
+
console.log();
|
|
36
|
+
table(['Check', 'Status', 'Message'], results.slice(1));
|
|
37
|
+
console.log();
|
|
38
|
+
if (results.some(r => r[1] === '✖')) {
|
|
39
|
+
error('Some checks failed. Please fix the issues above.');
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
success('All systems go!');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAW,MAAM,UAAU,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,OAAO,aAAa;IACxB,IAAI,GAAG,QAAQ,CAAC;IAChB,WAAW,GAAG,6CAA6C,CAAC;IAE5D,KAAK,CAAC,OAAO,CAAC,IAAc,EAAE,KAA6B;QACzD,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAe,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;QAE7D,kBAAkB;QAClB,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;QACpC,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC;YACX,SAAS;YACT,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;YACvB,SAAS,WAAW,mBAAmB;SACxC,CAAC,CAAC;QAEH,aAAa;QACb,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,yBAAyB,CAAC,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,6BAA6B,CAAC,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,KAAK,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,WAAW,CAAC;AAK1C,qBAAa,WAAY,YAAW,OAAO;IACzC,IAAI,SAAU;IACd,WAAW,SAAwC;IAE7C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAsD5E"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { info, Spinner } from '../ui.js';
|
|
2
|
+
import * as fs from 'fs/promises';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
export class InitCommand {
|
|
5
|
+
name = 'init';
|
|
6
|
+
description = 'Initialize a new AstriveAI project';
|
|
7
|
+
async execute(args, flags) {
|
|
8
|
+
const spinner = new Spinner();
|
|
9
|
+
spinner.start('Initializing AstriveAI project...');
|
|
10
|
+
const cwd = process.cwd();
|
|
11
|
+
const configContent = `// astrive.config.js
|
|
12
|
+
export default {
|
|
13
|
+
provider: 'openai',
|
|
14
|
+
model: 'gpt-4o',
|
|
15
|
+
tools: [],
|
|
16
|
+
plugins: [],
|
|
17
|
+
};
|
|
18
|
+
`;
|
|
19
|
+
const envContent = `OPENAI_API_KEY=your_openai_api_key_here
|
|
20
|
+
ANTHROPIC_API_KEY=your_anthropic_api_key_here
|
|
21
|
+
`;
|
|
22
|
+
const srcDir = path.join(cwd, 'src');
|
|
23
|
+
const indexContent = `import { Agent } from '@astrive-ai/agent';
|
|
24
|
+
|
|
25
|
+
async function main() {
|
|
26
|
+
const agent = new Agent();
|
|
27
|
+
const response = await agent.run('Hello AstriveAI!');
|
|
28
|
+
console.log(response);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
main().catch(console.error);
|
|
32
|
+
`;
|
|
33
|
+
try {
|
|
34
|
+
await fs.writeFile(path.join(cwd, 'astrive.config.js'), configContent);
|
|
35
|
+
await fs.writeFile(path.join(cwd, '.env'), envContent);
|
|
36
|
+
try {
|
|
37
|
+
await fs.mkdir(srcDir);
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
if (e.code !== 'EEXIST')
|
|
41
|
+
throw e;
|
|
42
|
+
}
|
|
43
|
+
await fs.writeFile(path.join(srcDir, 'index.ts'), indexContent);
|
|
44
|
+
spinner.succeed('Project initialized successfully!');
|
|
45
|
+
info('Next steps:');
|
|
46
|
+
info('1. Update your .env file with your API keys');
|
|
47
|
+
info('2. Run "npm install @astrive-ai/agent @astrive-ai/types @astrive-ai/tools @astrive-ai/providers"');
|
|
48
|
+
info('3. Run "astrive dev" to start development');
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
spinner.fail('Failed to initialize project');
|
|
52
|
+
throw err;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,IAAI,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,OAAO,WAAW;IACtB,IAAI,GAAG,MAAM,CAAC;IACd,WAAW,GAAG,oCAAoC,CAAC;IAEnD,KAAK,CAAC,OAAO,CAAC,IAAc,EAAE,KAA6B;QACzD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAEnD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAE1B,MAAM,aAAa,GAAG;;;;;;;CAOzB,CAAC;QAEE,MAAM,UAAU,GAAG;;CAEtB,CAAC;QAEE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACrC,MAAM,YAAY,GAAG;;;;;;;;;CASxB,CAAC;QAEE,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,EAAE,aAAa,CAAC,CAAC;YACvE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;YAEvD,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;oBAAE,MAAM,CAAC,CAAC;YACnC,CAAC;YAED,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC;YAEhE,OAAO,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;YAErD,IAAI,CAAC,aAAa,CAAC,CAAC;YACpB,IAAI,CAAC,6CAA6C,CAAC,CAAC;YACpD,IAAI,CAAC,kGAAkG,CAAC,CAAC;YACzG,IAAI,CAAC,2CAA2C,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC7C,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,qBAAa,cAAe,YAAW,OAAO;IAC5C,IAAI,SAAa;IACjB,WAAW,SAAiC;IAEtC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAmB5E"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { info, bold, error } from '../ui.js';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
export class InspectCommand {
|
|
4
|
+
name = 'inspect';
|
|
5
|
+
description = 'Inspect agent configuration';
|
|
6
|
+
async execute(args, flags) {
|
|
7
|
+
info('Inspecting AstriveAI configuration...');
|
|
8
|
+
const cwd = process.cwd();
|
|
9
|
+
const configPath = path.join(cwd, 'astrive.config.js');
|
|
10
|
+
try {
|
|
11
|
+
const configUrl = `file://${configPath}`;
|
|
12
|
+
const config = (await import(configUrl)).default;
|
|
13
|
+
console.log();
|
|
14
|
+
console.log(bold('Configuration Object:'));
|
|
15
|
+
console.log(JSON.stringify(config, null, 2));
|
|
16
|
+
console.log();
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
error(`Could not load astrive.config.js from ${configPath}`);
|
|
20
|
+
info(err.message);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=inspect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,OAAO,cAAc;IACzB,IAAI,GAAG,SAAS,CAAC;IACjB,WAAW,GAAG,6BAA6B,CAAC;IAE5C,KAAK,CAAC,OAAO,CAAC,IAAc,EAAE,KAA6B;QACzD,IAAI,CAAC,uCAAuC,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;QAEvD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,UAAU,UAAU,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YAEjD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,EAAE,CAAC;QAEhB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,KAAK,CAAC,yCAAyC,UAAU,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,qBAAa,cAAe,YAAW,OAAO;IAC5C,IAAI,SAAa;IACjB,WAAW,SAAoB;IAEzB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CA0B5E"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { table, info } from '../ui.js';
|
|
2
|
+
import * as BuiltInPlugins from '@astrive-ai/plugins';
|
|
3
|
+
export class PluginsCommand {
|
|
4
|
+
name = 'plugins';
|
|
5
|
+
description = 'Manage plugins';
|
|
6
|
+
async execute(args, flags) {
|
|
7
|
+
info('Available Built-in AstriveAI Plugins:');
|
|
8
|
+
const pluginsData = [];
|
|
9
|
+
// Assuming @astrive-ai/plugins exports plugin classes
|
|
10
|
+
for (const key of Object.keys(BuiltInPlugins)) {
|
|
11
|
+
const PluginClass = BuiltInPlugins[key];
|
|
12
|
+
if (typeof PluginClass === 'function' && PluginClass.prototype) {
|
|
13
|
+
try {
|
|
14
|
+
const instance = new PluginClass();
|
|
15
|
+
pluginsData.push([instance.name || key, instance.version || '1.0.0', 'Built-in plugin']);
|
|
16
|
+
}
|
|
17
|
+
catch (e) {
|
|
18
|
+
// ignore instantiation errors
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
console.log();
|
|
23
|
+
if (pluginsData.length === 0) {
|
|
24
|
+
info('No built-in plugins found.');
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
table(['Name', 'Version', 'Description'], pluginsData);
|
|
28
|
+
}
|
|
29
|
+
console.log();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=plugins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AAEtD,MAAM,OAAO,cAAc;IACzB,IAAI,GAAG,SAAS,CAAC;IACjB,WAAW,GAAG,gBAAgB,CAAC;IAE/B,KAAK,CAAC,OAAO,CAAC,IAAc,EAAE,KAA6B;QACzD,IAAI,CAAC,uCAAuC,CAAC,CAAC;QAE9C,MAAM,WAAW,GAAe,EAAE,CAAC;QAEnC,sDAAsD;QACtD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YAC9C,MAAM,WAAW,GAAI,cAAsB,CAAC,GAAG,CAAC,CAAC;YACjD,IAAI,OAAO,WAAW,KAAK,UAAU,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;gBAC/D,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;oBACnC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAE,QAAQ,CAAC,OAAO,IAAI,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC;gBAC3F,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,8BAA8B;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,qBAAa,YAAa,YAAW,OAAO;IAC1C,IAAI,SAAW;IACf,WAAW,SAA0B;IAE/B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAsC5E"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { table, info } from '../ui.js';
|
|
2
|
+
import * as BuiltInTools from '@astrive-ai/tools';
|
|
3
|
+
export class ToolsCommand {
|
|
4
|
+
name = 'tools';
|
|
5
|
+
description = 'List available tools';
|
|
6
|
+
async execute(args, flags) {
|
|
7
|
+
info('Registered AstriveAI Tools:');
|
|
8
|
+
const toolClasses = [
|
|
9
|
+
BuiltInTools.DownloaderTool,
|
|
10
|
+
BuiltInTools.VisionTool,
|
|
11
|
+
BuiltInTools.TextToImageTool,
|
|
12
|
+
BuiltInTools.RemoveBGTool,
|
|
13
|
+
BuiltInTools.UpscalerTool,
|
|
14
|
+
BuiltInTools.OCRTool,
|
|
15
|
+
BuiltInTools.FaceSwapTool,
|
|
16
|
+
BuiltInTools.Img2ImgTool,
|
|
17
|
+
BuiltInTools.TextToSpeechTool,
|
|
18
|
+
BuiltInTools.SpeechToTextTool,
|
|
19
|
+
BuiltInTools.WebSearchTool,
|
|
20
|
+
BuiltInTools.FilesystemTool,
|
|
21
|
+
BuiltInTools.TerminalTool,
|
|
22
|
+
BuiltInTools.GitTool,
|
|
23
|
+
];
|
|
24
|
+
const toolsData = [];
|
|
25
|
+
for (const ToolClass of toolClasses) {
|
|
26
|
+
if (ToolClass) {
|
|
27
|
+
try {
|
|
28
|
+
const instance = new ToolClass();
|
|
29
|
+
const def = instance.definition;
|
|
30
|
+
toolsData.push([def.function.name, def.function.description || 'No description', 'builtin']);
|
|
31
|
+
}
|
|
32
|
+
catch (e) {
|
|
33
|
+
// ignore instantiation errors
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
console.log();
|
|
38
|
+
table(['Name', 'Description', 'Category'], toolsData);
|
|
39
|
+
console.log();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAElD,MAAM,OAAO,YAAY;IACvB,IAAI,GAAG,OAAO,CAAC;IACf,WAAW,GAAG,sBAAsB,CAAC;IAErC,KAAK,CAAC,OAAO,CAAC,IAAc,EAAE,KAA6B;QACzD,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAEpC,MAAM,WAAW,GAAG;YAClB,YAAY,CAAC,cAAc;YAC3B,YAAY,CAAC,UAAU;YACvB,YAAY,CAAC,eAAe;YAC5B,YAAY,CAAC,YAAY;YACzB,YAAY,CAAC,YAAY;YACzB,YAAY,CAAC,OAAO;YACpB,YAAY,CAAC,YAAY;YACzB,YAAY,CAAC,WAAW;YACxB,YAAY,CAAC,gBAAgB;YAC7B,YAAY,CAAC,gBAAgB;YAC7B,YAAY,CAAC,aAAa;YAC1B,YAAY,CAAC,cAAc;YAC3B,YAAY,CAAC,YAAY;YACzB,YAAY,CAAC,OAAO;SACrB,CAAC;QAEF,MAAM,SAAS,GAAe,EAAE,CAAC;QAEjC,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE,CAAC;YACpC,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;oBACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC;oBAChC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,WAAW,IAAI,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC/F,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,8BAA8B;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,KAAK,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Command } from '../cli.js';
|
|
2
|
+
export declare class VersionCommand implements Command {
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
aliases: string[];
|
|
6
|
+
execute(args: string[], flags: Record<string, string>): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,qBAAa,cAAe,YAAW,OAAO;IAC5C,IAAI,SAAa;IACjB,WAAW,SAA8B;IACzC,OAAO,WAAuB;IAExB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAa5E"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { info, bold } from '../ui.js';
|
|
2
|
+
import * as fs from 'fs/promises';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
export class VersionCommand {
|
|
6
|
+
name = 'version';
|
|
7
|
+
description = 'Show version information';
|
|
8
|
+
aliases = ['-v', '--version'];
|
|
9
|
+
async execute(args, flags) {
|
|
10
|
+
try {
|
|
11
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
12
|
+
const pkgPath = path.resolve(__dirname, '../../package.json');
|
|
13
|
+
const pkgData = await fs.readFile(pkgPath, 'utf-8');
|
|
14
|
+
const pkg = JSON.parse(pkgData);
|
|
15
|
+
console.log(`${bold('AstriveAI CLI')} v${pkg.version}`);
|
|
16
|
+
console.log(`Node.js ${process.version}`);
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
info('AstriveAI CLI version unknown (could not read package.json)');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=version.js.map
|