@fleettools/cli 0.2.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.

Potentially problematic release.


This version of @fleettools/cli might be problematic. Click here for more details.

@@ -0,0 +1,109 @@
1
+ /**
2
+ * Fleet Services Command
3
+ *
4
+ * Manage individual FleetTools services
5
+ */
6
+ import chalk from 'chalk';
7
+ import { spawn } from 'node:child_process';
8
+ import { join } from 'node:path';
9
+ import { loadProjectConfig, isFleetProject, detectRuntime } from '@fleettools/fleet-shared';
10
+ export function registerServiceCommands(program) {
11
+ const servicesCmd = program
12
+ .command('services')
13
+ .description('Manage FleetTools services');
14
+ servicesCmd
15
+ .command('start [service]')
16
+ .description('Start a specific service (squawk, api, postgres) or all')
17
+ .action(async (serviceName) => {
18
+ try {
19
+ if (!isFleetProject()) {
20
+ console.error(chalk.red('❌ Not in a FleetTools project.'));
21
+ process.exit(1);
22
+ }
23
+ const config = loadProjectConfig();
24
+ if (!config) {
25
+ console.error(chalk.red('❌ Failed to load project configuration.'));
26
+ process.exit(1);
27
+ }
28
+ const runtime = detectRuntime();
29
+ const services = serviceName ? [serviceName] :
30
+ config.services.squawk.enabled ? ['squawk'] : [];
31
+ if (services.length === 0) {
32
+ console.log(chalk.yellow('⚠️ No services enabled in configuration.'));
33
+ return;
34
+ }
35
+ for (const service of services) {
36
+ switch (service) {
37
+ case 'squawk':
38
+ if (!config.services.squawk.enabled) {
39
+ console.log(chalk.yellow(`⚠️ Squawk service is disabled in configuration.`));
40
+ continue;
41
+ }
42
+ console.log(chalk.blue('Starting Squawk service...'));
43
+ spawn(runtime, [
44
+ 'bun',
45
+ join(process.cwd(), 'node_modules', '@fleettools/server', 'dist', 'index.js')
46
+ ], { stdio: 'inherit' });
47
+ break;
48
+ case 'api':
49
+ if (!config.services.api.enabled) {
50
+ console.log(chalk.yellow(`⚠️ API service is disabled in configuration.`));
51
+ continue;
52
+ }
53
+ console.log(chalk.blue('Starting API service...'));
54
+ spawn(runtime, [
55
+ join(process.cwd(), 'node_modules', '@fleettools', 'server-api', 'dist', 'index.js')
56
+ ], {
57
+ stdio: 'inherit',
58
+ env: { ...process.env, PORT: config.services.api.port.toString() }
59
+ });
60
+ break;
61
+ default:
62
+ console.error(chalk.red(`❌ Unknown service: ${service}`));
63
+ console.log(chalk.yellow('Available services: squawk, api, postgres'));
64
+ }
65
+ }
66
+ }
67
+ catch (error) {
68
+ console.error(chalk.red('❌ Failed to start service:'), error.message);
69
+ }
70
+ });
71
+ servicesCmd
72
+ .command('stop [service]')
73
+ .description('Stop a specific service or all')
74
+ .action(async (serviceName) => {
75
+ try {
76
+ console.log(chalk.yellow('⚠️ Service stopping not implemented yet.'));
77
+ console.log(chalk.gray('Use Ctrl+C to stop running services, or use fleet stop command.'));
78
+ }
79
+ catch (error) {
80
+ console.error(chalk.red('❌ Failed to stop service:'), error.message);
81
+ }
82
+ });
83
+ servicesCmd
84
+ .command('restart [service]')
85
+ .description('Restart a specific service or all')
86
+ .action(async (serviceName) => {
87
+ try {
88
+ console.log(chalk.yellow('⚠️ Service restart not implemented yet.'));
89
+ console.log(chalk.gray('Use fleet stop && fleet start to restart services.'));
90
+ }
91
+ catch (error) {
92
+ console.error(chalk.red('❌ Failed to restart service:'), error.message);
93
+ }
94
+ });
95
+ servicesCmd
96
+ .command('logs [service]')
97
+ .description('Show logs for a specific service')
98
+ .option('-f, --follow', 'Follow log output')
99
+ .action(async (serviceName, options) => {
100
+ try {
101
+ console.log(chalk.yellow('⚠️ Service logs not implemented yet.'));
102
+ console.log(chalk.gray('Check individual service logs in .fleet/logs/ directory.'));
103
+ }
104
+ catch (error) {
105
+ console.error(chalk.red('❌ Failed to show logs:'), error.message);
106
+ }
107
+ });
108
+ }
109
+ //# sourceMappingURL=services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/commands/services.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Fleet Start Command
3
+ *
4
+ * Start FleetTools services
5
+ */
6
+ import { Command } from 'commander';
7
+ export declare function registerStartCommand(program: Command): void;
8
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2I3D"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Fleet Start Command
3
+ *
4
+ * Start FleetTools services
5
+ */
6
+ import chalk from 'chalk';
7
+ import { spawn } from 'node:child_process';
8
+ import { join } from 'node:path';
9
+ import { loadProjectConfig, isFleetProject, detectRuntime, getRuntimeInfo, sleep } from '@fleettools/fleet-shared';
10
+ export function registerStartCommand(program) {
11
+ program
12
+ .command('start')
13
+ .description('Start FleetTools services')
14
+ .option('-s, --services <services>', 'Specific services to start (comma-separated)')
15
+ .option('-w, --watch', 'Watch for changes and restart')
16
+ .option('-d, --daemon', 'Run in background')
17
+ .action(async (options) => {
18
+ try {
19
+ console.log(chalk.blue.bold('🚀 Starting FleetTools Services'));
20
+ console.log(chalk.gray('═'.repeat(40)));
21
+ console.log();
22
+ // Check if we're in a FleetTools project
23
+ if (!isFleetProject()) {
24
+ console.error(chalk.red('❌ Not a FleetTools project.'));
25
+ console.log(chalk.yellow('Run: fleet init to initialize a new project.'));
26
+ process.exit(1);
27
+ }
28
+ const config = loadProjectConfig();
29
+ if (!config) {
30
+ console.error(chalk.red('❌ Failed to load project configuration.'));
31
+ process.exit(1);
32
+ }
33
+ const runtime = detectRuntime();
34
+ const runtimeInfo = getRuntimeInfo();
35
+ console.log(chalk.blue(`Runtime: ${runtimeInfo.type} ${runtimeInfo.version}`));
36
+ console.log();
37
+ // Parse services to start
38
+ let servicesToStart = ['squawk', 'api'];
39
+ if (options.services) {
40
+ servicesToStart = options.services.split(',').map((s) => s.trim());
41
+ }
42
+ // Determine services based on config and request
43
+ const enabledServices = [];
44
+ const processes = [];
45
+ if (servicesToStart.includes('squawk') && config.services.squawk.enabled) {
46
+ enabledServices.push('squawk');
47
+ console.log(chalk.blue('Starting Squawk coordination service...'));
48
+ const squawkProcess = spawn(runtime, [
49
+ 'bun',
50
+ join(process.cwd(), 'node_modules', '@fleettools/squawk', 'dist', 'index.js')
51
+ ], {
52
+ stdio: options.daemon ? 'ignore' : 'inherit',
53
+ detached: options.daemon
54
+ });
55
+ if (options.daemon) {
56
+ squawkProcess.unref();
57
+ }
58
+ processes.push({ name: 'squawk', process: squawkProcess });
59
+ if (!options.daemon) {
60
+ await sleep(1000); // Give it time to start
61
+ }
62
+ }
63
+ if (servicesToStart.includes('api') && config.services.api.enabled) {
64
+ enabledServices.push('api');
65
+ console.log(chalk.blue('Starting API server...'));
66
+ const apiProcess = spawn(runtime, [
67
+ 'bun',
68
+ join(process.cwd(), 'node_modules', '@fleettools/server', 'dist', 'index.js')
69
+ ], {
70
+ stdio: options.daemon ? 'ignore' : 'inherit',
71
+ detached: options.daemon,
72
+ env: {
73
+ ...process.env,
74
+ PORT: config.services.api.port.toString()
75
+ }
76
+ });
77
+ if (options.daemon) {
78
+ apiProcess.unref();
79
+ }
80
+ processes.push({ name: 'api', process: apiProcess });
81
+ if (!options.daemon) {
82
+ await sleep(1000); // Give it time to start
83
+ }
84
+ }
85
+ console.log();
86
+ if (enabledServices.length > 0) {
87
+ console.log(chalk.green.bold(`✅ Started services: ${enabledServices.join(', ')}`));
88
+ if (!options.daemon) {
89
+ console.log(chalk.gray('Services are running. Press Ctrl+C to stop.'));
90
+ // Handle graceful shutdown
91
+ const handleShutdown = (signal) => {
92
+ console.log(chalk.yellow(`\n🛑 Received ${signal}, stopping services...`));
93
+ processes.forEach(({ process, name }) => {
94
+ if (process && !process.killed) {
95
+ console.log(chalk.blue(`Stopping ${name}...`));
96
+ process.kill('SIGTERM');
97
+ }
98
+ });
99
+ setTimeout(() => {
100
+ process.exit(0);
101
+ }, 2000);
102
+ };
103
+ process.on('SIGINT', () => handleShutdown('SIGINT'));
104
+ process.on('SIGTERM', () => handleShutdown('SIGTERM'));
105
+ // Keep the process alive
106
+ if (options.watch) {
107
+ console.log(chalk.blue('👀 Watching for changes...'));
108
+ }
109
+ }
110
+ else {
111
+ console.log(chalk.gray('Services are running in the background.'));
112
+ console.log(chalk.yellow('Use: fleet status to check service status'));
113
+ console.log(chalk.yellow('Use: fleet stop to stop services'));
114
+ }
115
+ }
116
+ else {
117
+ console.log(chalk.yellow('⚠️ No services enabled in configuration.'));
118
+ }
119
+ }
120
+ catch (error) {
121
+ console.error(chalk.red('❌ Failed to start services:'), error.message);
122
+ if (process.argv.includes('--verbose')) {
123
+ console.error(error.stack);
124
+ }
125
+ process.exit(1);
126
+ }
127
+ });
128
+ }
129
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Fleet Status Command
3
+ *
4
+ * Show FleetTools status and information
5
+ */
6
+ import { Command } from 'commander';
7
+ export declare function registerStatusCommand(program: Command): void;
8
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmK5D"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Fleet Status Command
3
+ *
4
+ * Show FleetTools status and information
5
+ */
6
+ import chalk from 'chalk';
7
+ import { loadGlobalConfig, loadProjectConfig, isFleetProject, getRuntimeInfo, commandExists } from '@fleettools/fleet-shared';
8
+ export function registerStatusCommand(program) {
9
+ program
10
+ .command('status')
11
+ .description('Show FleetTools status and configuration')
12
+ .option('--json', 'Output in JSON format')
13
+ .action(async (options) => {
14
+ try {
15
+ const runtimeInfo = getRuntimeInfo();
16
+ const globalConfig = loadGlobalConfig();
17
+ const statusData = {
18
+ runtime: {
19
+ type: runtimeInfo.type,
20
+ version: runtimeInfo.version,
21
+ supported: runtimeInfo.supported,
22
+ platform: runtimeInfo.platform,
23
+ arch: runtimeInfo.arch
24
+ },
25
+ global: {
26
+ configPath: globalConfig.paths.configDir,
27
+ version: globalConfig.version,
28
+ defaultRuntime: globalConfig.defaultRuntime
29
+ },
30
+ project: null,
31
+ services: {
32
+ squawk: 'unknown',
33
+ api: 'unknown'
34
+ }
35
+ };
36
+ if (isFleetProject()) {
37
+ const projectConfig = loadProjectConfig();
38
+ if (projectConfig) {
39
+ statusData.project = {
40
+ name: projectConfig.name,
41
+ version: projectConfig.version,
42
+ mode: projectConfig.fleet.mode,
43
+ services: {
44
+ squawk: {
45
+ enabled: projectConfig.services.squawk.enabled,
46
+ port: projectConfig.services.squawk.port
47
+ },
48
+ api: {
49
+ enabled: projectConfig.services.api.enabled,
50
+ port: projectConfig.services.api.port
51
+ },
52
+ postgres: {
53
+ enabled: projectConfig.services.postgres.enabled,
54
+ provider: projectConfig.services.postgres.provider,
55
+ port: projectConfig.services.postgres.port
56
+ }
57
+ },
58
+ plugins: {
59
+ claudeCode: projectConfig.plugins.claudeCode,
60
+ openCode: projectConfig.plugins.openCode
61
+ }
62
+ };
63
+ // Check service status (basic check)
64
+ if (projectConfig.services.squawk.enabled) {
65
+ try {
66
+ const response = await fetch(`http://localhost:${projectConfig.services.squawk.port}/health`);
67
+ statusData.services.squawk = response.ok ? 'running' : 'stopped';
68
+ }
69
+ catch {
70
+ statusData.services.squawk = 'stopped';
71
+ }
72
+ }
73
+ if (projectConfig.services.api.enabled) {
74
+ try {
75
+ const response = await fetch(`http://localhost:${projectConfig.services.api.port}/health`);
76
+ statusData.services.api = response.ok ? 'running' : 'stopped';
77
+ }
78
+ catch {
79
+ statusData.services.api = 'stopped';
80
+ }
81
+ }
82
+ }
83
+ }
84
+ if (options.json) {
85
+ console.log(JSON.stringify(statusData, null, 2));
86
+ }
87
+ else {
88
+ console.log(chalk.blue.bold('FleetTools Status'));
89
+ console.log(chalk.gray('═'.repeat(40)));
90
+ console.log();
91
+ // Runtime Information
92
+ console.log(chalk.blue('Runtime:'));
93
+ console.log(` Type: ${runtimeInfo.type} ${runtimeInfo.version}`);
94
+ console.log(` Platform: ${runtimeInfo.platform} (${runtimeInfo.arch})`);
95
+ console.log(` Supported: ${runtimeInfo.supported ? '✅' : '❌'}`);
96
+ console.log();
97
+ // Global Configuration
98
+ console.log(chalk.blue('Global Configuration:'));
99
+ console.log(` Config Dir: ${globalConfig.paths.configDir}`);
100
+ console.log(` Default Runtime: ${globalConfig.defaultRuntime}`);
101
+ console.log(` Auto-start Services: ${globalConfig.services.autoStart ? '✅' : '❌'}`);
102
+ console.log();
103
+ // Project Information
104
+ if (statusData.project) {
105
+ console.log(chalk.blue('Project:'));
106
+ console.log(` Name: ${statusData.project.name}`);
107
+ console.log(` Mode: ${statusData.project.mode}`);
108
+ console.log();
109
+ console.log(chalk.blue('Services:'));
110
+ console.log(` Squawk: ${statusData.services.squawk === 'running' ? '✅ Running' : '❌ Stopped'} ${statusData.project.services.squawk.enabled ? `(${statusData.project.services.squawk.port})` : '(disabled)'}`);
111
+ console.log(` API: ${statusData.services.api === 'running' ? '✅ Running' : '❌ Stopped'} ${statusData.project.services.api.enabled ? `(${statusData.project.services.api.port})` : '(disabled)'}`);
112
+ console.log(` PostgreSQL: ${statusData.project.services.postgres.enabled ? '✅ Enabled' : '❌ Disabled'} ${statusData.project.services.postgres.provider} (${statusData.project.services.postgres.port})`);
113
+ console.log();
114
+ console.log(chalk.blue('Plugins:'));
115
+ console.log(` Claude Code: ${statusData.project.plugins.claudeCode ? '✅' : '❌'}`);
116
+ console.log(` OpenCode: ${statusData.project.plugins.openCode ? '✅' : '❌'}`);
117
+ console.log();
118
+ }
119
+ else {
120
+ console.log(chalk.yellow('⚠️ Not in a FleetTools project'));
121
+ console.log(chalk.gray('Run: fleet init <project-name> to create a new project'));
122
+ console.log();
123
+ }
124
+ // Environment Check
125
+ console.log(chalk.blue('Environment:'));
126
+ console.log(` Node.js: ${commandExists('node') ? '✅' : '❌'}`);
127
+ console.log(` Bun: ${commandExists('bun') ? '✅' : '❌'}`);
128
+ console.log(` Podman: ${commandExists('podman') ? '✅' : '❌'}`);
129
+ console.log(` Docker: ${commandExists('docker') ? '✅' : '❌'}`);
130
+ console.log();
131
+ // Quick Actions
132
+ if (statusData.project) {
133
+ console.log(chalk.blue('Quick Actions:'));
134
+ if (statusData.services.squawk === 'stopped' && statusData.project.services.squawk.enabled) {
135
+ console.log(' fleet start squawk - Start Squawk service');
136
+ }
137
+ if (statusData.services.api === 'stopped' && statusData.project.services.api.enabled) {
138
+ console.log(' fleet start api - Start API service');
139
+ }
140
+ if (statusData.services.squawk === 'stopped' && statusData.services.api === 'stopped') {
141
+ console.log(' fleet start - Start all services');
142
+ }
143
+ if (statusData.services.squawk === 'running' || statusData.services.api === 'running') {
144
+ console.log(' fleet stop - Stop all services');
145
+ }
146
+ console.log(' fleet config - Manage configuration');
147
+ console.log();
148
+ }
149
+ else {
150
+ console.log(chalk.blue('Quick Actions:'));
151
+ console.log(' fleet init - Create new project');
152
+ console.log(' fleet config --global - Manage global config');
153
+ console.log();
154
+ }
155
+ }
156
+ }
157
+ catch (error) {
158
+ console.error(chalk.red('❌ Failed to get status:'), error.message);
159
+ if (process.argv.includes('--verbose')) {
160
+ console.error(error.stack);
161
+ }
162
+ }
163
+ });
164
+ }
165
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * FleetTools Global CLI
4
+ *
5
+ * Fleet management and project bootstrapping for FleetTools
6
+ * Supports both Bun and Node.js runtimes
7
+ *
8
+ * Run: fleet <command> [options]
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG"}
package/dist/index.js ADDED
@@ -0,0 +1,108 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * FleetTools Global CLI
4
+ *
5
+ * Fleet management and project bootstrapping for FleetTools
6
+ * Supports both Bun and Node.js runtimes
7
+ *
8
+ * Run: fleet <command> [options]
9
+ */
10
+ import { program } from 'commander';
11
+ import { detectRuntime, getRuntimeInfo } from '@fleettools/fleet-shared';
12
+ import chalk from 'chalk';
13
+ import { registerInitCommand } from './commands/init.js';
14
+ import { registerStartCommand } from './commands/start.js';
15
+ import { registerConfigCommand } from './commands/config.js';
16
+ import { registerProjectCommands } from './commands/project.js';
17
+ import { registerServiceCommands } from './commands/services.js';
18
+ import { registerStatusCommand } from './commands/status.js';
19
+ // CLI Bootstrap
20
+ const runtime = detectRuntime();
21
+ const runtimeInfo = getRuntimeInfo();
22
+ // Display runtime information in debug mode
23
+ if (process.argv.includes('--debug-runtime')) {
24
+ console.log(chalk.blue('FleetTools Runtime Information:'));
25
+ console.log(` Runtime: ${runtimeInfo.type} ${runtimeInfo.version}`);
26
+ console.log(` Platform: ${runtimeInfo.platform}`);
27
+ console.log(` Architecture: ${runtimeInfo.arch}`);
28
+ console.log(` Supported: ${runtimeInfo.supported ? '✅' : '❌'}`);
29
+ process.exit(0);
30
+ }
31
+ // Global Options
32
+ program
33
+ .name('fleet')
34
+ .description('FleetTools - AI Agent Coordination System CLI')
35
+ .version('0.1.0')
36
+ .option('--config <path>', 'Path to global config file')
37
+ .option('--verbose', 'Enable verbose output')
38
+ .option('--debug-runtime', 'Show runtime information and exit')
39
+ .hook('preAction', (thisCommand) => {
40
+ const options = thisCommand.opts();
41
+ if (options.verbose) {
42
+ console.log(chalk.blue(`Running: ${thisCommand.name()}`));
43
+ console.log(chalk.blue(`Runtime: ${runtime} (${runtimeInfo.version})`));
44
+ }
45
+ });
46
+ // Error Handling
47
+ process.on('uncaughtException', (error) => {
48
+ console.error(chalk.red('❌ Uncaught Exception:'), error.message);
49
+ if (process.argv.includes('--verbose')) {
50
+ console.error(error.stack);
51
+ }
52
+ process.exit(1);
53
+ });
54
+ process.on('unhandledRejection', (reason, promise) => {
55
+ console.error(chalk.red('❌ Unhandled Rejection:'), reason);
56
+ if (process.argv.includes('--verbose')) {
57
+ console.error(promise);
58
+ }
59
+ process.exit(1);
60
+ });
61
+ // Graceful Shutdown
62
+ let shuttingDown = false;
63
+ const gracefulShutdown = (signal) => {
64
+ if (shuttingDown)
65
+ return;
66
+ shuttingDown = true;
67
+ console.log(chalk.yellow(`\n🛑 Received ${signal}, shutting down gracefully...`));
68
+ process.exit(0);
69
+ };
70
+ process.on('SIGINT', () => gracefulShutdown('SIGINT'));
71
+ process.on('SIGTERM', () => gracefulShutdown('SIGTERM'));
72
+ // ============================================================================
73
+ // Register Commands
74
+ // ============================================================================
75
+ // Project Management Commands
76
+ registerInitCommand(program);
77
+ registerStartCommand(program);
78
+ registerConfigCommand(program);
79
+ // Project-specific Commands (require initialized project)
80
+ registerProjectCommands(program);
81
+ // Service Management Commands
82
+ registerServiceCommands(program);
83
+ // Status and Information
84
+ registerStatusCommand(program);
85
+ // ============================================================================
86
+ // Parse and Execute
87
+ // ============================================================================
88
+ // Display welcome message for help
89
+ program.on('command:*', () => {
90
+ if (program.args.length === 0) {
91
+ console.log(chalk.blue.bold('FleetTools CLI'));
92
+ console.log(chalk.gray('AI Agent Coordination System'));
93
+ console.log('');
94
+ console.log('Quick start:');
95
+ console.log(' fleet init Initialize a new FleetTools project');
96
+ console.log(' fleet start Start FleetTools services');
97
+ console.log(' fleet status Show fleet status');
98
+ console.log('');
99
+ console.log('Use --help for detailed command information.');
100
+ }
101
+ });
102
+ // Parse command line arguments
103
+ program.parse(process.argv);
104
+ // If no command provided, show help
105
+ if (!process.argv.slice(2).length) {
106
+ program.outputHelp();
107
+ }
108
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAsC,MAAM,0BAA0B,CAAC;AAC7G,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,gBAAgB;AAEhB,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;AAChC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;AAErC,4CAA4C;AAC5C,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,eAAe,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,mBAAmB,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,gBAAgB,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,iBAAiB;AAEjB,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,+CAA+C,CAAC;KAC5D,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;KACvD,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC;KAC5C,MAAM,CAAC,iBAAiB,EAAE,mCAAmC,CAAC;KAC9D,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE;IACjC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,KAAK,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,iBAAiB;AAEjB,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;IACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACjE,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3D,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,oBAAoB;AAEpB,IAAI,YAAY,GAAG,KAAK,CAAC;AAEzB,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAE,EAAE;IAC1C,IAAI,YAAY;QAAE,OAAO;IACzB,YAAY,GAAG,IAAI,CAAC;IAEpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,MAAM,+BAA+B,CAAC,CAAC,CAAC;IAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;AAEzD,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,8BAA8B;AAC9B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAE/B,0DAA0D;AAC1D,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAEjC,8BAA8B;AAC9B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAEjC,yBAAyB;AACzB,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAE/B,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,mCAAmC;AACnC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;IAC3B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,+BAA+B;AAC/B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,oCAAoC;AACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Runtime-compatible entry point for FleetTools CLI
4
+ *
5
+ * This wrapper detects the runtime and executes the appropriate
6
+ * optimized version of the CLI, falling back to a universal version.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=runtime-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-wrapper.d.ts","sourceRoot":"","sources":["../src/runtime-wrapper.ts"],"names":[],"mappings":";AAEA;;;;;GAKG"}