@edgible-team/cli 1.0.1 → 1.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.
- package/LICENSE +16 -0
- package/README.md +114 -1
- package/dist/client/api-client.d.ts +575 -0
- package/dist/client/api-client.d.ts.map +1 -0
- package/dist/client/api-client.js +196 -2
- package/dist/client/index.d.ts +10 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/commands/agent.d.ts +3 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +18 -34
- package/dist/commands/ai.d.ts +3 -0
- package/dist/commands/ai.d.ts.map +1 -0
- package/dist/commands/ai.js +1661 -275
- package/dist/commands/application.d.ts +6 -0
- package/dist/commands/application.d.ts.map +1 -0
- package/dist/commands/application.js +377 -0
- package/dist/commands/auth.d.ts +3 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/base/BaseCommand.d.ts +53 -0
- package/dist/commands/base/BaseCommand.d.ts.map +1 -0
- package/dist/commands/base/CommandHandler.d.ts +28 -0
- package/dist/commands/base/CommandHandler.d.ts.map +1 -0
- package/dist/commands/base/command-wrapper.d.ts +21 -0
- package/dist/commands/base/command-wrapper.d.ts.map +1 -0
- package/dist/commands/base/middleware.d.ts +34 -0
- package/dist/commands/base/middleware.d.ts.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/connectivity.d.ts +3 -0
- package/dist/commands/connectivity.d.ts.map +1 -0
- package/dist/commands/debug.d.ts +3 -0
- package/dist/commands/debug.d.ts.map +1 -0
- package/dist/commands/debug.js +336 -0
- package/dist/commands/discover.d.ts +3 -0
- package/dist/commands/discover.d.ts.map +1 -0
- package/dist/commands/examples/migrated-command-example.d.ts +31 -0
- package/dist/commands/examples/migrated-command-example.d.ts.map +1 -0
- package/dist/commands/gateway.d.ts +6 -0
- package/dist/commands/gateway.d.ts.map +1 -0
- package/dist/commands/managedGateway.d.ts +6 -0
- package/dist/commands/managedGateway.d.ts.map +1 -0
- package/dist/commands/managedGateway.js +132 -0
- package/dist/commands/utils/config-validator.d.ts +29 -0
- package/dist/commands/utils/config-validator.d.ts.map +1 -0
- package/dist/commands/utils/gateway-prompt.d.ts +23 -0
- package/dist/commands/utils/gateway-prompt.d.ts.map +1 -0
- package/dist/commands/utils/input-parser.d.ts +34 -0
- package/dist/commands/utils/input-parser.d.ts.map +1 -0
- package/dist/commands/utils/output-formatter.d.ts +62 -0
- package/dist/commands/utils/output-formatter.d.ts.map +1 -0
- package/dist/config/app-config.d.ts +44 -0
- package/dist/config/app-config.d.ts.map +1 -0
- package/dist/detection/SystemCapabilityDetector.d.ts +139 -0
- package/dist/detection/SystemCapabilityDetector.d.ts.map +1 -0
- package/dist/detection/ToolDetector.d.ts +16 -0
- package/dist/detection/ToolDetector.d.ts.map +1 -0
- package/dist/detection/WorkloadDetector.d.ts +62 -0
- package/dist/detection/WorkloadDetector.d.ts.map +1 -0
- package/dist/detection/tools.d.ts +16 -0
- package/dist/detection/tools.d.ts.map +1 -0
- package/dist/detection/tools.js +305 -0
- package/dist/di/bindings.d.ts +15 -0
- package/dist/di/bindings.d.ts.map +1 -0
- package/dist/di/container.d.ts +44 -0
- package/dist/di/container.d.ts.map +1 -0
- package/dist/di/types.d.ts +23 -0
- package/dist/di/types.d.ts.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -1
- package/dist/interfaces/IDaemonManager.d.ts +67 -0
- package/dist/interfaces/IDaemonManager.d.ts.map +1 -0
- package/dist/repositories/config-repository.d.ts +46 -0
- package/dist/repositories/config-repository.d.ts.map +1 -0
- package/dist/repositories/gateway-repository.d.ts +37 -0
- package/dist/repositories/gateway-repository.d.ts.map +1 -0
- package/dist/services/AgentStatusManager.d.ts +30 -0
- package/dist/services/AgentStatusManager.d.ts.map +1 -0
- package/dist/services/ConnectivityTester.d.ts +30 -0
- package/dist/services/ConnectivityTester.d.ts.map +1 -0
- package/dist/services/DependencyInstaller.d.ts +32 -0
- package/dist/services/DependencyInstaller.d.ts.map +1 -0
- package/dist/services/LocalAgentManager.d.ts +220 -0
- package/dist/services/LocalAgentManager.d.ts.map +1 -0
- package/dist/services/LocalAgentManager.js +3 -5
- package/dist/services/application/ApplicationService.d.ts +54 -0
- package/dist/services/application/ApplicationService.d.ts.map +1 -0
- package/dist/services/application/ApplicationService.js +10 -3
- package/dist/services/auth/AuthService.d.ts +42 -0
- package/dist/services/auth/AuthService.d.ts.map +1 -0
- package/dist/services/aws.d.ts +136 -0
- package/dist/services/aws.d.ts.map +1 -0
- package/dist/services/aws.js +2 -2
- package/dist/services/daemon/DaemonManagerFactory.d.ts +17 -0
- package/dist/services/daemon/DaemonManagerFactory.d.ts.map +1 -0
- package/dist/services/daemon/DockerDaemonManager.d.ts +26 -0
- package/dist/services/daemon/DockerDaemonManager.d.ts.map +1 -0
- package/dist/services/daemon/LaunchdDaemonManager.d.ts +20 -0
- package/dist/services/daemon/LaunchdDaemonManager.d.ts.map +1 -0
- package/dist/services/daemon/LaunchdDaemonManager.js +54 -6
- package/dist/services/daemon/PodmanDaemonManager.d.ts +24 -0
- package/dist/services/daemon/PodmanDaemonManager.d.ts.map +1 -0
- package/dist/services/daemon/SystemdDaemonManager.d.ts +20 -0
- package/dist/services/daemon/SystemdDaemonManager.d.ts.map +1 -0
- package/dist/services/daemon/WindowsServiceDaemonManager.d.ts +19 -0
- package/dist/services/daemon/WindowsServiceDaemonManager.d.ts.map +1 -0
- package/dist/services/daemon/index.d.ts +7 -0
- package/dist/services/daemon/index.d.ts.map +1 -0
- package/dist/services/edgible.d.ts +304 -0
- package/dist/services/edgible.d.ts.map +1 -0
- package/dist/services/edgible.js +53 -4
- package/dist/services/gateway/GatewayService.d.ts +88 -0
- package/dist/services/gateway/GatewayService.d.ts.map +1 -0
- package/dist/state/config.d.ts +96 -0
- package/dist/state/config.d.ts.map +1 -0
- package/dist/types/AgentConfig.d.ts +126 -0
- package/dist/types/AgentConfig.d.ts.map +1 -0
- package/dist/types/AgentStatus.d.ts +30 -0
- package/dist/types/AgentStatus.d.ts.map +1 -0
- package/dist/types/ApiClient.d.ts +36 -0
- package/dist/types/ApiClient.d.ts.map +1 -0
- package/dist/types/ApiRequests.d.ts +269 -0
- package/dist/types/ApiRequests.d.ts.map +1 -0
- package/dist/types/ApiResponses.d.ts +348 -0
- package/dist/types/ApiResponses.d.ts.map +1 -0
- package/dist/types/Application.d.ts +13 -0
- package/dist/types/Application.d.ts.map +1 -0
- package/dist/types/CaddyJson.d.ts +231 -0
- package/dist/types/CaddyJson.d.ts.map +1 -0
- package/dist/types/DeviceMetrics.d.ts +95 -0
- package/dist/types/DeviceMetrics.d.ts.map +1 -0
- package/dist/types/DeviceMetrics.js +5 -0
- package/dist/types/LogAggregation.d.ts +106 -0
- package/dist/types/LogAggregation.d.ts.map +1 -0
- package/dist/types/LogAggregation.js +5 -0
- package/dist/types/LogEntry.d.ts +60 -0
- package/dist/types/LogEntry.d.ts.map +1 -0
- package/dist/types/LogEntry.js +5 -0
- package/dist/types/UnifiedAgentStatus.d.ts +28 -0
- package/dist/types/UnifiedAgentStatus.d.ts.map +1 -0
- package/dist/types/WireGuard.d.ts +36 -0
- package/dist/types/WireGuard.d.ts.map +1 -0
- package/dist/types/Workload.d.ts +9 -0
- package/dist/types/Workload.d.ts.map +1 -0
- package/dist/types/agent.d.ts +120 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/command-options.d.ts +115 -0
- package/dist/types/command-options.d.ts.map +1 -0
- package/dist/types/connectivity.d.ts +80 -0
- package/dist/types/connectivity.d.ts.map +1 -0
- package/dist/types/errors.d.ts +97 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/gateway-types.d.ts +46 -0
- package/dist/types/gateway-types.d.ts.map +1 -0
- package/dist/types/index.d.ts +28 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/models/ApplicationData.d.ts +78 -0
- package/dist/types/models/ApplicationData.d.ts.map +1 -0
- package/dist/types/models/CertificateData.d.ts +44 -0
- package/dist/types/models/CertificateData.d.ts.map +1 -0
- package/dist/types/models/DeviceData.d.ts +29 -0
- package/dist/types/models/DeviceData.d.ts.map +1 -0
- package/dist/types/models/DevicePoolData.d.ts +47 -0
- package/dist/types/models/DevicePoolData.d.ts.map +1 -0
- package/dist/types/models/LifecycleEvent.d.ts +27 -0
- package/dist/types/models/LifecycleEvent.d.ts.map +1 -0
- package/dist/types/models/LifecycleEvent.js +5 -0
- package/dist/types/models/OrganizationData.d.ts +53 -0
- package/dist/types/models/OrganizationData.d.ts.map +1 -0
- package/dist/types/models/OrganizationInviteData.d.ts +39 -0
- package/dist/types/models/OrganizationInviteData.d.ts.map +1 -0
- package/dist/types/models/ProviderConfiguration.d.ts +37 -0
- package/dist/types/models/ProviderConfiguration.d.ts.map +1 -0
- package/dist/types/models/ResourceData.d.ts +18 -0
- package/dist/types/models/ResourceData.d.ts.map +1 -0
- package/dist/types/models/ServiceResourceData.d.ts +5 -0
- package/dist/types/models/ServiceResourceData.d.ts.map +1 -0
- package/dist/types/models/UserData.d.ts +12 -0
- package/dist/types/models/UserData.d.ts.map +1 -0
- package/dist/types/route.d.ts +67 -0
- package/dist/types/route.d.ts.map +1 -0
- package/dist/types/validation/schemas.d.ts +606 -0
- package/dist/types/validation/schemas.d.ts.map +1 -0
- package/dist/types/validation/schemas.js +46 -4
- package/dist/types/validation.d.ts +68 -0
- package/dist/types/validation.d.ts.map +1 -0
- package/dist/utils/FileIntegrityManager.d.ts +37 -0
- package/dist/utils/FileIntegrityManager.d.ts.map +1 -0
- package/dist/utils/PathMigration.d.ts +45 -0
- package/dist/utils/PathMigration.d.ts.map +1 -0
- package/dist/utils/PathResolver.d.ts +76 -0
- package/dist/utils/PathResolver.d.ts.map +1 -0
- package/dist/utils/PlatformDetector.d.ts +60 -0
- package/dist/utils/PlatformDetector.d.ts.map +1 -0
- package/dist/utils/console-logger.d.ts +37 -0
- package/dist/utils/console-logger.d.ts.map +1 -0
- package/dist/utils/docker-compose-parser.d.ts +28 -0
- package/dist/utils/docker-compose-parser.d.ts.map +1 -0
- package/dist/utils/errors.d.ts +63 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/health-checker.d.ts +34 -0
- package/dist/utils/health-checker.d.ts.map +1 -0
- package/dist/utils/json-logger.d.ts +23 -0
- package/dist/utils/json-logger.d.ts.map +1 -0
- package/dist/utils/log-formatter.d.ts +85 -0
- package/dist/utils/log-formatter.d.ts.map +1 -0
- package/dist/utils/log-formatter.js +39 -11
- package/dist/utils/logger.d.ts +34 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/network-utils.d.ts +56 -0
- package/dist/utils/network-utils.d.ts.map +1 -0
- package/dist/utils/output.d.ts +73 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/passwordValidation.d.ts +32 -0
- package/dist/utils/passwordValidation.d.ts.map +1 -0
- package/dist/utils/progress.d.ts +74 -0
- package/dist/utils/progress.d.ts.map +1 -0
- package/dist/utils/sudo-checker.d.ts +9 -0
- package/dist/utils/sudo-checker.d.ts.map +1 -0
- package/dist/utils/urls.d.ts +19 -0
- package/dist/utils/urls.d.ts.map +1 -0
- package/dist/utils/urls.js +3 -3
- package/dist/utils/validation.d.ts +19 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/validation/schemas.d.ts +197 -0
- package/dist/validation/schemas.d.ts.map +1 -0
- package/dist/validation/schemas.js +1 -1
- package/dist/validation/validator.d.ts +22 -0
- package/dist/validation/validator.d.ts.map +1 -0
- package/package.json +9 -4
- package/recipes/compose/open-webui/.env +1 -0
- package/recipes/compose/open-webui/docker-compose.yml +17 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-parser.d.ts","sourceRoot":"","sources":["../../../src/commands/utils/input-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAepE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,CAMzF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAM/D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAOnE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAWzE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CA4BlG;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,CAAC,CAaH"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Output formatting utilities
|
|
3
|
+
* Provides consistent formatting across commands
|
|
4
|
+
*/
|
|
5
|
+
export interface FormatOptions {
|
|
6
|
+
json?: boolean;
|
|
7
|
+
plain?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Format application output
|
|
11
|
+
*/
|
|
12
|
+
export declare function formatApplication(app: {
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
servingIp: string;
|
|
16
|
+
port: number;
|
|
17
|
+
protocol: string;
|
|
18
|
+
status: string;
|
|
19
|
+
workloadId?: string;
|
|
20
|
+
createdAt: string;
|
|
21
|
+
description?: string;
|
|
22
|
+
}): string;
|
|
23
|
+
/**
|
|
24
|
+
* Format gateway output
|
|
25
|
+
*/
|
|
26
|
+
export declare function formatGateway(gateway: {
|
|
27
|
+
device: {
|
|
28
|
+
id: string;
|
|
29
|
+
name: string;
|
|
30
|
+
description: string;
|
|
31
|
+
createdAt: string;
|
|
32
|
+
};
|
|
33
|
+
ec2Instance?: {
|
|
34
|
+
instanceId: string;
|
|
35
|
+
publicIp: string;
|
|
36
|
+
privateIp: string;
|
|
37
|
+
state: string;
|
|
38
|
+
region: string;
|
|
39
|
+
};
|
|
40
|
+
applicationCount?: number;
|
|
41
|
+
}): string;
|
|
42
|
+
/**
|
|
43
|
+
* Format list of items as table-like output
|
|
44
|
+
*/
|
|
45
|
+
export declare function formatList<T>(items: T[], formatItem: (item: T, index: number) => string, header?: string, emptyMessage?: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Format error message with context
|
|
48
|
+
*/
|
|
49
|
+
export declare function formatError(message: string, suggestion?: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* Format success message
|
|
52
|
+
*/
|
|
53
|
+
export declare function formatSuccess(message: string): string;
|
|
54
|
+
/**
|
|
55
|
+
* Format warning message
|
|
56
|
+
*/
|
|
57
|
+
export declare function formatWarning(message: string): string;
|
|
58
|
+
/**
|
|
59
|
+
* Format info message
|
|
60
|
+
*/
|
|
61
|
+
export declare function formatInfo(message: string): string;
|
|
62
|
+
//# sourceMappingURL=output-formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output-formatter.d.ts","sourceRoot":"","sources":["../../../src/commands/utils/output-formatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAqBT;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE;IACrC,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,MAAM,CAuBT;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC1B,KAAK,EAAE,CAAC,EAAE,EACV,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,EAC9C,MAAM,CAAC,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAgBR;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAMxE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application configuration management
|
|
3
|
+
* Centralizes all configuration loading and validation
|
|
4
|
+
*/
|
|
5
|
+
export interface AppConfig {
|
|
6
|
+
apiBaseUrl: string;
|
|
7
|
+
logLevel: string;
|
|
8
|
+
colorEnabled: boolean;
|
|
9
|
+
plain: boolean;
|
|
10
|
+
defaultRegion: string;
|
|
11
|
+
defaultInstanceType: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Load configuration from environment variables and defaults
|
|
15
|
+
*
|
|
16
|
+
* Environment variable precedence:
|
|
17
|
+
* 1. User's environment variables (process.env.*) - highest priority
|
|
18
|
+
* 2. Production defaults (constants above) - fallback
|
|
19
|
+
*
|
|
20
|
+
* Note: Environment variables are read directly from process.env at runtime.
|
|
21
|
+
* Users can set these via shell/system environment variables.
|
|
22
|
+
*
|
|
23
|
+
* Available environment variables:
|
|
24
|
+
* - LOG_LEVEL: Set log level (default: 'INFO')
|
|
25
|
+
* Note: API_BASE_URL is now hardcoded based on stage (STAGE or SST_STAGE env var)
|
|
26
|
+
* - NO_COLOR: Disable colored output (set to '1' or 'true')
|
|
27
|
+
* - PLAIN_OUTPUT: Enable plain text output (set to '1' or 'true')
|
|
28
|
+
* - DEFAULT_REGION: Default AWS region (default: 'us-east-1')
|
|
29
|
+
* - DEFAULT_INSTANCE_TYPE: Default EC2 instance type (default: 't3.micro')
|
|
30
|
+
*/
|
|
31
|
+
export declare function loadConfig(): AppConfig;
|
|
32
|
+
/**
|
|
33
|
+
* Validate configuration
|
|
34
|
+
*/
|
|
35
|
+
export declare function validateConfig(config: AppConfig): {
|
|
36
|
+
valid: boolean;
|
|
37
|
+
errors: string[];
|
|
38
|
+
};
|
|
39
|
+
export declare function getConfig(): AppConfig;
|
|
40
|
+
/**
|
|
41
|
+
* Reset configuration (useful for testing)
|
|
42
|
+
*/
|
|
43
|
+
export declare function resetConfig(): void;
|
|
44
|
+
//# sourceMappingURL=app-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-config.d.ts","sourceRoot":"","sources":["../../src/config/app-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,IAAI,SAAS,CAgBtC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CA8BtF;AAOD,wBAAgB,SAAS,IAAI,SAAS,CASrC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
export interface CpuInfo {
|
|
2
|
+
model: string;
|
|
3
|
+
cores: number;
|
|
4
|
+
threads: number;
|
|
5
|
+
architecture: string;
|
|
6
|
+
speed: number;
|
|
7
|
+
}
|
|
8
|
+
export interface MemoryInfo {
|
|
9
|
+
total: number;
|
|
10
|
+
free: number;
|
|
11
|
+
used: number;
|
|
12
|
+
totalGB: number;
|
|
13
|
+
freeGB: number;
|
|
14
|
+
usedGB: number;
|
|
15
|
+
}
|
|
16
|
+
export interface GpuInfo {
|
|
17
|
+
name: string;
|
|
18
|
+
vendor: string;
|
|
19
|
+
vramGB?: number;
|
|
20
|
+
driverVersion?: string;
|
|
21
|
+
available: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface GpuDriverSupport {
|
|
24
|
+
cuda: {
|
|
25
|
+
available: boolean;
|
|
26
|
+
version?: string;
|
|
27
|
+
toolkitAvailable: boolean;
|
|
28
|
+
};
|
|
29
|
+
rocm: {
|
|
30
|
+
available: boolean;
|
|
31
|
+
version?: string;
|
|
32
|
+
};
|
|
33
|
+
metal: {
|
|
34
|
+
available: boolean;
|
|
35
|
+
};
|
|
36
|
+
dockerGpuSupport: {
|
|
37
|
+
available: boolean;
|
|
38
|
+
runtime?: string;
|
|
39
|
+
nvidiaContainerRuntime?: boolean;
|
|
40
|
+
nvidiaDocker?: boolean;
|
|
41
|
+
};
|
|
42
|
+
ollamaGpuReady: boolean;
|
|
43
|
+
ollamaGpuReason?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface SystemCapabilities {
|
|
46
|
+
cpu: CpuInfo;
|
|
47
|
+
memory: MemoryInfo;
|
|
48
|
+
gpu: GpuInfo | null;
|
|
49
|
+
platform: string;
|
|
50
|
+
hasEnoughResources: boolean;
|
|
51
|
+
recommendedModels: LLMModelRecommendation[];
|
|
52
|
+
gpuDriverSupport: GpuDriverSupport;
|
|
53
|
+
}
|
|
54
|
+
export interface LLMModelRecommendation {
|
|
55
|
+
modelName: string;
|
|
56
|
+
size: string;
|
|
57
|
+
parameters: string;
|
|
58
|
+
minRamGB: number;
|
|
59
|
+
minVramGB?: number;
|
|
60
|
+
recommendedRamGB: number;
|
|
61
|
+
recommendedVramGB?: number;
|
|
62
|
+
suitability: 'excellent' | 'good' | 'marginal' | 'insufficient';
|
|
63
|
+
reasoning: string;
|
|
64
|
+
}
|
|
65
|
+
export declare class SystemCapabilityDetector {
|
|
66
|
+
/**
|
|
67
|
+
* Detect all system capabilities
|
|
68
|
+
*/
|
|
69
|
+
static detectCapabilities(): Promise<SystemCapabilities>;
|
|
70
|
+
/**
|
|
71
|
+
* Detect CPU information
|
|
72
|
+
*/
|
|
73
|
+
private static detectCpu;
|
|
74
|
+
/**
|
|
75
|
+
* Detect memory information
|
|
76
|
+
*/
|
|
77
|
+
private static detectMemory;
|
|
78
|
+
/**
|
|
79
|
+
* Detect GPU information
|
|
80
|
+
*/
|
|
81
|
+
private static detectGpu;
|
|
82
|
+
/**
|
|
83
|
+
* Detect NVIDIA GPU using nvidia-smi
|
|
84
|
+
*/
|
|
85
|
+
private static detectNvidiaGpu;
|
|
86
|
+
/**
|
|
87
|
+
* Detect AMD GPU using rocm-smi (ROCm drivers, typically data center GPUs)
|
|
88
|
+
*/
|
|
89
|
+
private static detectAmdGpu;
|
|
90
|
+
/**
|
|
91
|
+
* Detect AMD GPU on Linux using amdgpu driver (consumer GPUs)
|
|
92
|
+
*/
|
|
93
|
+
private static detectAmdGpuLinux;
|
|
94
|
+
/**
|
|
95
|
+
* Detect GPU via lspci (Linux)
|
|
96
|
+
*/
|
|
97
|
+
private static detectGpuViaLspci;
|
|
98
|
+
/**
|
|
99
|
+
* Detect GPU on macOS (Apple Silicon or Intel)
|
|
100
|
+
*/
|
|
101
|
+
private static detectMacOSGpu;
|
|
102
|
+
/**
|
|
103
|
+
* Detect GPU via WMIC (Windows) - includes VRAM for AMD and NVIDIA
|
|
104
|
+
*/
|
|
105
|
+
private static detectGpuViaWmic;
|
|
106
|
+
/**
|
|
107
|
+
* Detect GPU driver support and Docker GPU runtime availability
|
|
108
|
+
*/
|
|
109
|
+
private static detectGpuDriverSupport;
|
|
110
|
+
/**
|
|
111
|
+
* Check if a command is available
|
|
112
|
+
*/
|
|
113
|
+
private static hasCommand;
|
|
114
|
+
/**
|
|
115
|
+
* Recommend LLM models based on system capabilities
|
|
116
|
+
*/
|
|
117
|
+
private static recommendLLMModels;
|
|
118
|
+
/**
|
|
119
|
+
* Calculate suitability for a model
|
|
120
|
+
*/
|
|
121
|
+
private static calculateSuitability;
|
|
122
|
+
/**
|
|
123
|
+
* Generate reasoning for recommendation
|
|
124
|
+
*/
|
|
125
|
+
private static generateReasoning;
|
|
126
|
+
/**
|
|
127
|
+
* Convert bytes to GB
|
|
128
|
+
*/
|
|
129
|
+
private static bytesToGB;
|
|
130
|
+
/**
|
|
131
|
+
* Display system capabilities
|
|
132
|
+
*/
|
|
133
|
+
static displayCapabilities(capabilities: SystemCapabilities): void;
|
|
134
|
+
/**
|
|
135
|
+
* Get summary of capabilities
|
|
136
|
+
*/
|
|
137
|
+
static getCapabilitySummary(capabilities: SystemCapabilities): string;
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=SystemCapabilityDetector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SystemCapabilityDetector.d.ts","sourceRoot":"","sources":["../../src/detection/SystemCapabilityDetector.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE;QACJ,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,gBAAgB,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF,IAAI,EAAE;QACJ,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACL,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,gBAAgB,EAAE;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,sBAAsB,CAAC,EAAE,OAAO,CAAC;QACjC,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,sBAAsB,EAAE,CAAC;IAC5C,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,cAAc,CAAC;IAChE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,wBAAwB;IACnC;;OAEG;WACiB,kBAAkB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAuBrE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAkBxB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAe3B;;OAEG;mBACkB,SAAS;IAuC9B;;OAEG;mBACkB,eAAe;IAmCpC;;OAEG;mBACkB,YAAY;IAwBjC;;OAEG;mBACkB,iBAAiB;IAkHtC;;OAEG;mBACkB,iBAAiB;IAuCtC;;OAEG;mBACkB,cAAc;IAuHnC;;OAEG;mBACkB,gBAAgB;IA6ErC;;OAEG;mBACkB,sBAAsB;IAyN3C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAezB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IA2KjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAiFnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA4EhC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAIxB;;OAEG;WACW,mBAAmB,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI;IA4JzE;;OAEG;WACW,oBAAoB,CAAC,YAAY,EAAE,kBAAkB,GAAG,MAAM;CAmB7E"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface DetectedTool {
|
|
2
|
+
name: string;
|
|
3
|
+
version?: string;
|
|
4
|
+
available: boolean;
|
|
5
|
+
command: string;
|
|
6
|
+
category: 'container' | 'vm' | 'orchestration' | 'cloud' | 'other';
|
|
7
|
+
description: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class ToolDetector {
|
|
10
|
+
private static tools;
|
|
11
|
+
static detectTools(): Promise<DetectedTool[]>;
|
|
12
|
+
private static getToolVersion;
|
|
13
|
+
static displayDetectedTools(tools: DetectedTool[]): void;
|
|
14
|
+
static getToolSummary(tools: DetectedTool[]): string;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=ToolDetector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolDetector.d.ts","sourceRoot":"","sources":["../../src/detection/ToolDetector.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,WAAW,GAAG,IAAI,GAAG,eAAe,GAAG,OAAO,GAAG,OAAO,CAAC;IACnE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAkLlB;WAEkB,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IA8B1D,OAAO,CAAC,MAAM,CAAC,cAAc;WA6Df,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI;WAqCjD,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM;CAM5D"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export interface Workload {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
type: 'docker' | 'kubernetes' | 'vm' | 'process';
|
|
5
|
+
status: 'running' | 'stopped' | 'paused' | 'unknown';
|
|
6
|
+
image?: string;
|
|
7
|
+
ports?: PortMapping[];
|
|
8
|
+
ipAddress?: string;
|
|
9
|
+
namespace?: string;
|
|
10
|
+
labels?: Record<string, string>;
|
|
11
|
+
createdAt?: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface PortMapping {
|
|
15
|
+
hostPort?: number;
|
|
16
|
+
containerPort: number;
|
|
17
|
+
protocol: 'tcp' | 'udp';
|
|
18
|
+
hostIp?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface Application {
|
|
21
|
+
id: string;
|
|
22
|
+
name: string;
|
|
23
|
+
workloadId?: string;
|
|
24
|
+
servingIp: string;
|
|
25
|
+
port: number;
|
|
26
|
+
protocol: 'http' | 'https' | 'tcp' | 'udp';
|
|
27
|
+
status: 'active' | 'inactive' | 'pending';
|
|
28
|
+
createdAt: string;
|
|
29
|
+
description?: string;
|
|
30
|
+
url?: string;
|
|
31
|
+
}
|
|
32
|
+
export declare class WorkloadDetector {
|
|
33
|
+
/**
|
|
34
|
+
* Detect all running workloads from various sources
|
|
35
|
+
*/
|
|
36
|
+
static detectWorkloads(): Promise<Workload[]>;
|
|
37
|
+
/**
|
|
38
|
+
* Detect Docker containers
|
|
39
|
+
*/
|
|
40
|
+
private static detectDockerWorkloads;
|
|
41
|
+
/**
|
|
42
|
+
* Detect Kubernetes workloads
|
|
43
|
+
*/
|
|
44
|
+
private static detectKubernetesWorkloads;
|
|
45
|
+
/**
|
|
46
|
+
* Detect VM workloads
|
|
47
|
+
*/
|
|
48
|
+
private static detectVMWorkloads;
|
|
49
|
+
/**
|
|
50
|
+
* Detect process-based workloads (web servers, databases, etc.)
|
|
51
|
+
*/
|
|
52
|
+
private static detectProcessWorkloads;
|
|
53
|
+
/**
|
|
54
|
+
* Display detected workloads
|
|
55
|
+
*/
|
|
56
|
+
static displayWorkloads(workloads: Workload[]): void;
|
|
57
|
+
/**
|
|
58
|
+
* Get workload summary
|
|
59
|
+
*/
|
|
60
|
+
static getWorkloadSummary(workloads: Workload[]): string;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=WorkloadDetector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkloadDetector.d.ts","sourceRoot":"","sources":["../../src/detection/WorkloadDetector.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC;IACjD,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,KAAK,GAAG,KAAK,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC;IAC3C,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,gBAAgB;IAC3B;;OAEG;WACiB,eAAe,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IA2B1D;;OAEG;mBACkB,qBAAqB;IAmE1C;;OAEG;mBACkB,yBAAyB;IA4D9C;;OAEG;mBACkB,iBAAiB;IAsDtC;;OAEG;mBACkB,sBAAsB;IAyD3C;;OAEG;WACW,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI;IAwD3D;;OAEG;WACW,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM;CAMhE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface DetectedTool {
|
|
2
|
+
name: string;
|
|
3
|
+
version?: string;
|
|
4
|
+
available: boolean;
|
|
5
|
+
command: string;
|
|
6
|
+
category: 'container' | 'vm' | 'orchestration' | 'cloud' | 'other';
|
|
7
|
+
description: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class ToolDetector {
|
|
10
|
+
private static tools;
|
|
11
|
+
static detectTools(): Promise<DetectedTool[]>;
|
|
12
|
+
private static getToolVersion;
|
|
13
|
+
static displayDetectedTools(tools: DetectedTool[]): void;
|
|
14
|
+
static getToolSummary(tools: DetectedTool[]): string;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/detection/tools.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,WAAW,GAAG,IAAI,GAAG,eAAe,GAAG,OAAO,GAAG,OAAO,CAAC;IACnE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAkLlB;WAEkB,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IA8B1D,OAAO,CAAC,MAAM,CAAC,cAAc;WA6Df,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI;WAqCjD,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM;CAM5D"}
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ToolDetector = void 0;
|
|
7
|
+
const child_process_1 = require("child_process");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
class ToolDetector {
|
|
10
|
+
static async detectTools() {
|
|
11
|
+
const detectedTools = [];
|
|
12
|
+
for (const tool of this.tools) {
|
|
13
|
+
try {
|
|
14
|
+
const version = this.getToolVersion(tool.command);
|
|
15
|
+
if (version !== null) {
|
|
16
|
+
detectedTools.push({
|
|
17
|
+
...tool,
|
|
18
|
+
available: true,
|
|
19
|
+
version: version
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
detectedTools.push({
|
|
24
|
+
...tool,
|
|
25
|
+
available: false
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
// Tool not available
|
|
31
|
+
detectedTools.push({
|
|
32
|
+
...tool,
|
|
33
|
+
available: false
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return detectedTools;
|
|
38
|
+
}
|
|
39
|
+
static getToolVersion(command) {
|
|
40
|
+
try {
|
|
41
|
+
// Special handling for different tools
|
|
42
|
+
if (command === 'docker') {
|
|
43
|
+
const output = (0, child_process_1.execSync)('docker --version', { encoding: 'utf8', timeout: 5000 });
|
|
44
|
+
return output.trim().replace('Docker version ', '');
|
|
45
|
+
}
|
|
46
|
+
if (command === 'kubectl') {
|
|
47
|
+
const output = (0, child_process_1.execSync)('kubectl version --client', { encoding: 'utf8', timeout: 5000 });
|
|
48
|
+
const lines = output.split('\n');
|
|
49
|
+
const versionLine = lines.find(line => line.includes('Client Version:'));
|
|
50
|
+
return versionLine ? versionLine.trim().replace('Client Version: ', '') : 'Unknown';
|
|
51
|
+
}
|
|
52
|
+
if (command === 'aws') {
|
|
53
|
+
const output = (0, child_process_1.execSync)('aws --version', { encoding: 'utf8', timeout: 5000 });
|
|
54
|
+
return output.trim().replace('aws-cli/', '');
|
|
55
|
+
}
|
|
56
|
+
if (command === 'az') {
|
|
57
|
+
const output = (0, child_process_1.execSync)('az --version', { encoding: 'utf8', timeout: 5000 });
|
|
58
|
+
const lines = output.split('\n');
|
|
59
|
+
const versionLine = lines.find(line => line.includes('azure-cli'));
|
|
60
|
+
return versionLine ? versionLine.trim().replace('azure-cli ', '') : 'Unknown';
|
|
61
|
+
}
|
|
62
|
+
if (command === 'gcloud') {
|
|
63
|
+
const output = (0, child_process_1.execSync)('gcloud --version', { encoding: 'utf8', timeout: 5000 });
|
|
64
|
+
const lines = output.split('\n');
|
|
65
|
+
const versionLine = lines.find(line => line.includes('Google Cloud SDK'));
|
|
66
|
+
return versionLine ? versionLine.trim().replace('Google Cloud SDK ', '') : 'Unknown';
|
|
67
|
+
}
|
|
68
|
+
if (command === 'terraform') {
|
|
69
|
+
const output = (0, child_process_1.execSync)('terraform --version', { encoding: 'utf8', timeout: 5000 });
|
|
70
|
+
const lines = output.split('\n');
|
|
71
|
+
const versionLine = lines.find(line => line.includes('Terraform v'));
|
|
72
|
+
return versionLine ? versionLine.trim().replace('Terraform v', '') : 'Unknown';
|
|
73
|
+
}
|
|
74
|
+
if (command === 'powershell') {
|
|
75
|
+
// Check if we're on Windows and PowerShell is available
|
|
76
|
+
if (process.platform === 'win32') {
|
|
77
|
+
const output = (0, child_process_1.execSync)('powershell -Command "$PSVersionTable.PSVersion"', { encoding: 'utf8', timeout: 5000 });
|
|
78
|
+
return output.trim();
|
|
79
|
+
}
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
// Generic version detection
|
|
83
|
+
const output = (0, child_process_1.execSync)(`${command} --version`, { encoding: 'utf8', timeout: 5000 });
|
|
84
|
+
const lines = output.split('\n');
|
|
85
|
+
const versionLine = lines[0];
|
|
86
|
+
return versionLine ? versionLine.trim() : 'Unknown';
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
static displayDetectedTools(tools) {
|
|
93
|
+
const availableTools = tools.filter(tool => tool.available);
|
|
94
|
+
const unavailableTools = tools.filter(tool => !tool.available);
|
|
95
|
+
if (availableTools.length === 0) {
|
|
96
|
+
console.log(chalk_1.default.yellow('⚠ No container/VM/workload management tools detected'));
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
console.log(chalk_1.default.blue.bold('\n🔧 Detected Infrastructure Tools:\n'));
|
|
100
|
+
// Group tools by category
|
|
101
|
+
const categories = {
|
|
102
|
+
container: availableTools.filter(tool => tool.category === 'container'),
|
|
103
|
+
vm: availableTools.filter(tool => tool.category === 'vm'),
|
|
104
|
+
orchestration: availableTools.filter(tool => tool.category === 'orchestration'),
|
|
105
|
+
cloud: availableTools.filter(tool => tool.category === 'cloud'),
|
|
106
|
+
other: availableTools.filter(tool => tool.category === 'other')
|
|
107
|
+
};
|
|
108
|
+
Object.entries(categories).forEach(([category, categoryTools]) => {
|
|
109
|
+
if (categoryTools.length > 0) {
|
|
110
|
+
console.log(chalk_1.default.cyan.bold(`📦 ${category.charAt(0).toUpperCase() + category.slice(1)}:`));
|
|
111
|
+
categoryTools.forEach(tool => {
|
|
112
|
+
const versionText = tool.version ? ` (${tool.version})` : '';
|
|
113
|
+
console.log(chalk_1.default.green(` ✓ ${tool.name}${versionText}`));
|
|
114
|
+
console.log(chalk_1.default.gray(` ${tool.description}`));
|
|
115
|
+
});
|
|
116
|
+
console.log('');
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
if (unavailableTools.length > 0) {
|
|
120
|
+
console.log(chalk_1.default.gray(`💡 ${unavailableTools.length} additional tools not detected (${unavailableTools.map(t => t.name).join(', ')})`));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
static getToolSummary(tools) {
|
|
124
|
+
const availableTools = tools.filter(tool => tool.available);
|
|
125
|
+
const categories = new Set(availableTools.map(tool => tool.category));
|
|
126
|
+
return `${availableTools.length} tools detected across ${categories.size} categories`;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
exports.ToolDetector = ToolDetector;
|
|
130
|
+
ToolDetector.tools = [
|
|
131
|
+
// Container runtimes
|
|
132
|
+
{
|
|
133
|
+
name: 'Docker',
|
|
134
|
+
command: 'docker',
|
|
135
|
+
category: 'container',
|
|
136
|
+
description: 'Container runtime and platform',
|
|
137
|
+
available: false
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
name: 'Podman',
|
|
141
|
+
command: 'podman',
|
|
142
|
+
category: 'container',
|
|
143
|
+
description: 'Daemonless container engine',
|
|
144
|
+
available: false
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
name: 'Containerd',
|
|
148
|
+
command: 'ctr',
|
|
149
|
+
category: 'container',
|
|
150
|
+
description: 'Container runtime',
|
|
151
|
+
available: false
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
name: 'LXC',
|
|
155
|
+
command: 'lxc',
|
|
156
|
+
category: 'container',
|
|
157
|
+
description: 'Linux containers',
|
|
158
|
+
available: false
|
|
159
|
+
},
|
|
160
|
+
// VM Management
|
|
161
|
+
{
|
|
162
|
+
name: 'VirtualBox',
|
|
163
|
+
command: 'vboxmanage',
|
|
164
|
+
category: 'vm',
|
|
165
|
+
description: 'Virtual machine management',
|
|
166
|
+
available: false
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
name: 'VMware',
|
|
170
|
+
command: 'vmrun',
|
|
171
|
+
category: 'vm',
|
|
172
|
+
description: 'VMware virtualization',
|
|
173
|
+
available: false
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
name: 'QEMU',
|
|
177
|
+
command: 'qemu-system-x86_64',
|
|
178
|
+
category: 'vm',
|
|
179
|
+
description: 'Machine emulator and virtualizer',
|
|
180
|
+
available: false
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
name: 'KVM',
|
|
184
|
+
command: 'kvm',
|
|
185
|
+
category: 'vm',
|
|
186
|
+
description: 'Kernel-based Virtual Machine',
|
|
187
|
+
available: false
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
name: 'Hyper-V',
|
|
191
|
+
command: 'powershell',
|
|
192
|
+
category: 'vm',
|
|
193
|
+
description: 'Windows virtualization platform',
|
|
194
|
+
available: false
|
|
195
|
+
},
|
|
196
|
+
// Orchestration
|
|
197
|
+
{
|
|
198
|
+
name: 'Kubernetes',
|
|
199
|
+
command: 'kubectl',
|
|
200
|
+
category: 'orchestration',
|
|
201
|
+
description: 'Container orchestration platform',
|
|
202
|
+
available: false
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
name: 'Docker Compose',
|
|
206
|
+
command: 'docker-compose',
|
|
207
|
+
category: 'orchestration',
|
|
208
|
+
description: 'Multi-container Docker applications',
|
|
209
|
+
available: false
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
name: 'Docker Swarm',
|
|
213
|
+
command: 'docker',
|
|
214
|
+
category: 'orchestration',
|
|
215
|
+
description: 'Docker native clustering',
|
|
216
|
+
available: false
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
name: 'Nomad',
|
|
220
|
+
command: 'nomad',
|
|
221
|
+
category: 'orchestration',
|
|
222
|
+
description: 'Workload orchestrator',
|
|
223
|
+
available: false
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
name: 'Mesos',
|
|
227
|
+
command: 'mesos-master',
|
|
228
|
+
category: 'orchestration',
|
|
229
|
+
description: 'Distributed systems kernel',
|
|
230
|
+
available: false
|
|
231
|
+
},
|
|
232
|
+
// Cloud CLI Tools
|
|
233
|
+
{
|
|
234
|
+
name: 'AWS CLI',
|
|
235
|
+
command: 'aws',
|
|
236
|
+
category: 'cloud',
|
|
237
|
+
description: 'Amazon Web Services CLI',
|
|
238
|
+
available: false
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
name: 'Azure CLI',
|
|
242
|
+
command: 'az',
|
|
243
|
+
category: 'cloud',
|
|
244
|
+
description: 'Microsoft Azure CLI',
|
|
245
|
+
available: false
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
name: 'Google Cloud CLI',
|
|
249
|
+
command: 'gcloud',
|
|
250
|
+
category: 'cloud',
|
|
251
|
+
description: 'Google Cloud Platform CLI',
|
|
252
|
+
available: false
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
name: 'DigitalOcean CLI',
|
|
256
|
+
command: 'doctl',
|
|
257
|
+
category: 'cloud',
|
|
258
|
+
description: 'DigitalOcean CLI',
|
|
259
|
+
available: false
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
name: 'Terraform',
|
|
263
|
+
command: 'terraform',
|
|
264
|
+
category: 'cloud',
|
|
265
|
+
description: 'Infrastructure as Code',
|
|
266
|
+
available: false
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
name: 'Ansible',
|
|
270
|
+
command: 'ansible',
|
|
271
|
+
category: 'cloud',
|
|
272
|
+
description: 'Configuration management',
|
|
273
|
+
available: false
|
|
274
|
+
},
|
|
275
|
+
// Other Infrastructure Tools
|
|
276
|
+
{
|
|
277
|
+
name: 'Vagrant',
|
|
278
|
+
command: 'vagrant',
|
|
279
|
+
category: 'other',
|
|
280
|
+
description: 'Development environment management',
|
|
281
|
+
available: false
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
name: 'Packer',
|
|
285
|
+
command: 'packer',
|
|
286
|
+
category: 'other',
|
|
287
|
+
description: 'Machine image creation',
|
|
288
|
+
available: false
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
name: 'Helm',
|
|
292
|
+
command: 'helm',
|
|
293
|
+
category: 'other',
|
|
294
|
+
description: 'Kubernetes package manager',
|
|
295
|
+
available: false
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
name: 'Istio',
|
|
299
|
+
command: 'istioctl',
|
|
300
|
+
category: 'other',
|
|
301
|
+
description: 'Service mesh platform',
|
|
302
|
+
available: false
|
|
303
|
+
}
|
|
304
|
+
];
|
|
305
|
+
//# sourceMappingURL=tools.js.map
|