@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.
Files changed (67) hide show
  1. package/dist/bin.d.ts +3 -0
  2. package/dist/bin.d.ts.map +1 -0
  3. package/dist/bin.js +4 -0
  4. package/dist/bin.js.map +1 -0
  5. package/dist/cli.d.ts +20 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +74 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/commands/chat.d.ts +8 -0
  10. package/dist/commands/chat.d.ts.map +1 -0
  11. package/dist/commands/chat.js +84 -0
  12. package/dist/commands/chat.js.map +1 -0
  13. package/dist/commands/dev.d.ts +7 -0
  14. package/dist/commands/dev.d.ts.map +1 -0
  15. package/dist/commands/dev.js +51 -0
  16. package/dist/commands/dev.js.map +1 -0
  17. package/dist/commands/doctor.d.ts +7 -0
  18. package/dist/commands/doctor.d.ts.map +1 -0
  19. package/dist/commands/doctor.js +46 -0
  20. package/dist/commands/doctor.js.map +1 -0
  21. package/dist/commands/init.d.ts +7 -0
  22. package/dist/commands/init.d.ts.map +1 -0
  23. package/dist/commands/init.js +56 -0
  24. package/dist/commands/init.js.map +1 -0
  25. package/dist/commands/inspect.d.ts +7 -0
  26. package/dist/commands/inspect.d.ts.map +1 -0
  27. package/dist/commands/inspect.js +24 -0
  28. package/dist/commands/inspect.js.map +1 -0
  29. package/dist/commands/plugins.d.ts +7 -0
  30. package/dist/commands/plugins.d.ts.map +1 -0
  31. package/dist/commands/plugins.js +32 -0
  32. package/dist/commands/plugins.js.map +1 -0
  33. package/dist/commands/tools.d.ts +7 -0
  34. package/dist/commands/tools.d.ts.map +1 -0
  35. package/dist/commands/tools.js +42 -0
  36. package/dist/commands/tools.js.map +1 -0
  37. package/dist/commands/version.d.ts +8 -0
  38. package/dist/commands/version.d.ts.map +1 -0
  39. package/dist/commands/version.js +23 -0
  40. package/dist/commands/version.js.map +1 -0
  41. package/dist/index.d.ts +4 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +7 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/parser.d.ts +6 -0
  46. package/dist/parser.d.ts.map +1 -0
  47. package/dist/parser.js +43 -0
  48. package/dist/parser.js.map +1 -0
  49. package/dist/ui.d.ts +32 -0
  50. package/dist/ui.d.ts.map +1 -0
  51. package/dist/ui.js +95 -0
  52. package/dist/ui.js.map +1 -0
  53. package/package.json +29 -0
  54. package/src/bin.ts +3 -0
  55. package/src/cli.ts +97 -0
  56. package/src/commands/chat.ts +94 -0
  57. package/src/commands/dev.ts +61 -0
  58. package/src/commands/doctor.ts +50 -0
  59. package/src/commands/init.ts +64 -0
  60. package/src/commands/inspect.ts +28 -0
  61. package/src/commands/plugins.ts +35 -0
  62. package/src/commands/tools.ts +47 -0
  63. package/src/commands/version.ts +25 -0
  64. package/src/index.ts +8 -0
  65. package/src/parser.ts +41 -0
  66. package/src/ui.ts +109 -0
  67. package/tsconfig.json +8 -0
package/dist/bin.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
package/dist/bin.js ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import { run } from './index.js';
3
+ run(process.argv.slice(2));
4
+ //# sourceMappingURL=bin.js.map
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -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,7 @@
1
+ import { Command } from '../cli.js';
2
+ export declare class DevCommand implements Command {
3
+ name: string;
4
+ description: string;
5
+ execute(args: string[], flags: Record<string, string>): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=dev.d.ts.map
@@ -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,7 @@
1
+ import { Command } from '../cli.js';
2
+ export declare class DoctorCommand implements Command {
3
+ name: string;
4
+ description: string;
5
+ execute(args: string[], flags: Record<string, string>): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=doctor.d.ts.map
@@ -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,7 @@
1
+ import { Command } from '../cli.js';
2
+ export declare class InitCommand implements Command {
3
+ name: string;
4
+ description: string;
5
+ execute(args: string[], flags: Record<string, string>): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=init.d.ts.map
@@ -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,7 @@
1
+ import { Command } from '../cli.js';
2
+ export declare class InspectCommand implements Command {
3
+ name: string;
4
+ description: string;
5
+ execute(args: string[], flags: Record<string, string>): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=inspect.d.ts.map
@@ -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,7 @@
1
+ import { Command } from '../cli.js';
2
+ export declare class PluginsCommand implements Command {
3
+ name: string;
4
+ description: string;
5
+ execute(args: string[], flags: Record<string, string>): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=plugins.d.ts.map
@@ -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,7 @@
1
+ import { Command } from '../cli.js';
2
+ export declare class ToolsCommand implements Command {
3
+ name: string;
4
+ description: string;
5
+ execute(args: string[], flags: Record<string, string>): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=tools.d.ts.map
@@ -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