@edgible-team/cli 1.0.1 → 1.0.2
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 +1660 -274
- 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/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 +2 -2
- 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 +6 -0
- 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 +8 -3
- package/recipes/compose/open-webui/docker-compose.yml +17 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
import { UnifiedAgentStatus, UnifiedAgentStatusResult } from '../types/UnifiedAgentStatus';
|
|
3
|
+
export declare class AgentStatusManager extends EventEmitter {
|
|
4
|
+
private statusFile;
|
|
5
|
+
private configFile;
|
|
6
|
+
private watchInterval?;
|
|
7
|
+
private isWatching;
|
|
8
|
+
private lastStatus;
|
|
9
|
+
private readonly watchIntervalMs;
|
|
10
|
+
private readonly maxRetries;
|
|
11
|
+
private readonly retryDelay;
|
|
12
|
+
constructor();
|
|
13
|
+
getStatus(): Promise<UnifiedAgentStatusResult>;
|
|
14
|
+
updateConfig(config: any): Promise<void>;
|
|
15
|
+
startWatching(callback: (result: UnifiedAgentStatusResult) => void): void;
|
|
16
|
+
stopWatching(): void;
|
|
17
|
+
private fileExists;
|
|
18
|
+
private readStatusFileWithRetry;
|
|
19
|
+
private validateStatusFile;
|
|
20
|
+
private calculateChecksum;
|
|
21
|
+
getStatusFilePath(): string;
|
|
22
|
+
getConfigFilePath(): string;
|
|
23
|
+
isAgentRunning(): Promise<boolean>;
|
|
24
|
+
getAgentPID(): Promise<number | null>;
|
|
25
|
+
getAgentUptime(): Promise<number>;
|
|
26
|
+
getAgentVersion(): Promise<string | null>;
|
|
27
|
+
getAgentHealth(): Promise<'healthy' | 'unhealthy' | 'degraded' | 'unknown'>;
|
|
28
|
+
getCurrentStatus(): Promise<UnifiedAgentStatus | null>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=AgentStatusManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentStatusManager.d.ts","sourceRoot":"","sources":["../../src/services/AgentStatusManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAA4C,MAAM,6BAA6B,CAAC;AAKrI,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAC,CAAiB;IACvC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAK;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAO;;IAmB5B,SAAS,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAgE9C,YAAY,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB9C,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,wBAAwB,KAAK,IAAI,GAAG,IAAI;IAqBzE,YAAY,IAAI,IAAI;YAUN,UAAU;YASV,uBAAuB;YAoBvB,kBAAkB;IA4ChC,OAAO,CAAC,iBAAiB;IAMzB,iBAAiB,IAAI,MAAM;IAK3B,iBAAiB,IAAI,MAAM;IAKrB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAUlC,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAUrC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAUjC,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAUzC,cAAc,IAAI,OAAO,CAAC,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;IAU3E,gBAAgB,IAAI,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;CAQ7D"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ConnectivityResult, HttpTestResult, ApplicationTestResult, ConnectivityReport, DiagnosticReport } from '../types/connectivity';
|
|
2
|
+
import { Application, Gateway } from '../types/validation';
|
|
3
|
+
import { Workload } from '../detection/WorkloadDetector';
|
|
4
|
+
export declare class ConnectivityTester {
|
|
5
|
+
/**
|
|
6
|
+
* Test TCP/UDP port connectivity
|
|
7
|
+
*/
|
|
8
|
+
testPortConnectivity(host: string, port: number, protocol: 'tcp' | 'udp', timeout?: number): Promise<ConnectivityResult>;
|
|
9
|
+
/**
|
|
10
|
+
* Test HTTP/HTTPS endpoint health
|
|
11
|
+
*/
|
|
12
|
+
testHttpEndpoint(url: string, expectedStatus?: number, timeout?: number): Promise<HttpTestResult>;
|
|
13
|
+
/**
|
|
14
|
+
* Test application-specific endpoints
|
|
15
|
+
*/
|
|
16
|
+
testApplicationEndpoint(application: Application, gatewayIp: string): Promise<ApplicationTestResult>;
|
|
17
|
+
/**
|
|
18
|
+
* Comprehensive connectivity test from gateway to workload
|
|
19
|
+
*/
|
|
20
|
+
testGatewayToWorkloadConnectivity(gateway: Gateway, workload: Workload, port: number): Promise<ConnectivityReport>;
|
|
21
|
+
/**
|
|
22
|
+
* Network diagnostics and troubleshooting
|
|
23
|
+
*/
|
|
24
|
+
diagnoseConnectivityIssues(application: Application): Promise<DiagnosticReport>;
|
|
25
|
+
/**
|
|
26
|
+
* Generate diagnostics from test results
|
|
27
|
+
*/
|
|
28
|
+
private generateDiagnostics;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=ConnectivityTester.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectivityTester.d.ts","sourceRoot":"","sources":["../../src/services/ConnectivityTester.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAKjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD,qBAAa,kBAAkB;IAC7B;;OAEG;IACG,oBAAoB,CACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,KAAK,GAAG,KAAK,EACvB,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,kBAAkB,CAAC;IAsB9B;;OAEG;IACG,gBAAgB,CACpB,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,MAAM,EACvB,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,cAAc,CAAC;IAiB1B;;OAEG;IACG,uBAAuB,CAC3B,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,qBAAqB,CAAC;IAiBjC;;OAEG;IACG,iCAAiC,CACrC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,kBAAkB,CAAC;IAmG9B;;OAEG;IACG,0BAA0B,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuFrF;;OAEG;YACW,mBAAmB;CA+ClC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export declare class DependencyInstaller {
|
|
2
|
+
/**
|
|
3
|
+
* Get the original user when running under sudo
|
|
4
|
+
* @returns The SUDO_USER if running as root via sudo, otherwise undefined
|
|
5
|
+
*/
|
|
6
|
+
private getSudoUser;
|
|
7
|
+
/**
|
|
8
|
+
* Execute a command, running as the original user if executed via sudo
|
|
9
|
+
* This is particularly important for Homebrew, which refuses to run as root
|
|
10
|
+
* @param command The command to execute
|
|
11
|
+
* @returns The stdout from execSync
|
|
12
|
+
*/
|
|
13
|
+
private execAsRealUser;
|
|
14
|
+
checkAndInstallDependencies(options?: {
|
|
15
|
+
includeWireGuardGo?: boolean;
|
|
16
|
+
includeIptables?: boolean;
|
|
17
|
+
autoInstall?: boolean;
|
|
18
|
+
}): Promise<void>;
|
|
19
|
+
private promptForInstallation;
|
|
20
|
+
private detectPackageManager;
|
|
21
|
+
private isWireGuardInstalled;
|
|
22
|
+
private isCaddyInstalled;
|
|
23
|
+
private installWireGuard;
|
|
24
|
+
private installCaddy;
|
|
25
|
+
private isHAProxyInstalled;
|
|
26
|
+
private installHAProxy;
|
|
27
|
+
private isWireGuardGoInstalled;
|
|
28
|
+
private installWireGuardGo;
|
|
29
|
+
private isIptablesInstalled;
|
|
30
|
+
private installIptables;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=DependencyInstaller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DependencyInstaller.d.ts","sourceRoot":"","sources":["../../src/services/DependencyInstaller.ts"],"names":[],"mappings":"AAQA,qBAAa,mBAAmB;IAC9B;;;OAGG;IACH,OAAO,CAAC,WAAW;IAYnB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAehB,2BAA2B,CAAC,OAAO,GAAE;QAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YA2CpI,qBAAqB;YAYrB,oBAAoB;YA6CpB,oBAAoB;YAkBpB,gBAAgB;YAkBhB,gBAAgB;YAuChB,YAAY;YAuCZ,kBAAkB;YAkBlB,cAAc;YAmCd,sBAAsB;YAkBtB,kBAAkB;YA2ClB,mBAAmB;YAoBnB,eAAe;CAgC9B"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { UnifiedAgentStatus } from '../types/UnifiedAgentStatus';
|
|
2
|
+
import { InstallationResult, UpdateResult, ConfigurationResult, LocalAgentHealthStatus, AgentInstallationOptions, AgentUpdateOptions } from '../types/agent';
|
|
3
|
+
import { Application } from '../types/validation';
|
|
4
|
+
export declare class LocalAgentManager {
|
|
5
|
+
private configPath;
|
|
6
|
+
private agentPath;
|
|
7
|
+
private serviceName;
|
|
8
|
+
private statePath;
|
|
9
|
+
private agentProcess;
|
|
10
|
+
private configManager;
|
|
11
|
+
private statusManager;
|
|
12
|
+
constructor();
|
|
13
|
+
/**
|
|
14
|
+
* Update agent configuration with current CLI device credentials
|
|
15
|
+
* @param configPath Optional config path to use. If not provided, uses the instance's configPath.
|
|
16
|
+
*/
|
|
17
|
+
updateAgentConfig(configPath?: string): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Check if agent is running in Docker
|
|
20
|
+
*/
|
|
21
|
+
private isDockerAgentRunning;
|
|
22
|
+
/**
|
|
23
|
+
* Check if local agent is installed and running using file-based status
|
|
24
|
+
*/
|
|
25
|
+
checkLocalAgentStatus(): Promise<UnifiedAgentStatus>;
|
|
26
|
+
/**
|
|
27
|
+
* Check if agent process is running (cross-platform method)
|
|
28
|
+
* Prioritizes status file PID validation over process detection
|
|
29
|
+
*/
|
|
30
|
+
private isProcessRunning;
|
|
31
|
+
/**
|
|
32
|
+
* Check if a specific PID is currently running
|
|
33
|
+
*/
|
|
34
|
+
private isPidRunning;
|
|
35
|
+
/**
|
|
36
|
+
* Validate agent configuration before starting
|
|
37
|
+
*/
|
|
38
|
+
private validateAgentConfig;
|
|
39
|
+
/**
|
|
40
|
+
* Install local serving agent
|
|
41
|
+
*/
|
|
42
|
+
installLocalAgent(options?: AgentInstallationOptions): Promise<InstallationResult>;
|
|
43
|
+
/**
|
|
44
|
+
* Start local agent service
|
|
45
|
+
*/
|
|
46
|
+
startLocalAgent(options?: {
|
|
47
|
+
passthrough?: boolean;
|
|
48
|
+
debug?: boolean;
|
|
49
|
+
docker?: boolean;
|
|
50
|
+
root?: boolean;
|
|
51
|
+
}): Promise<boolean>;
|
|
52
|
+
/**
|
|
53
|
+
* Spawn the agent process
|
|
54
|
+
*/
|
|
55
|
+
private spawnAgentProcess;
|
|
56
|
+
/**
|
|
57
|
+
* Wait for agent to be ready
|
|
58
|
+
*/
|
|
59
|
+
private waitForAgentReady;
|
|
60
|
+
/**
|
|
61
|
+
* Provide troubleshooting steps based on error message
|
|
62
|
+
*/
|
|
63
|
+
private provideTroubleshootingSteps;
|
|
64
|
+
/**
|
|
65
|
+
* Log debug information
|
|
66
|
+
*/
|
|
67
|
+
private logDebugInfo;
|
|
68
|
+
/**
|
|
69
|
+
* Wait for status file to be created and valid
|
|
70
|
+
*/
|
|
71
|
+
private waitForStatusFile;
|
|
72
|
+
/**
|
|
73
|
+
* Stop local agent service using hybrid approach
|
|
74
|
+
*/
|
|
75
|
+
stopLocalAgent(): Promise<boolean>;
|
|
76
|
+
/**
|
|
77
|
+
* Wait for status file to show agent is stopped
|
|
78
|
+
*/
|
|
79
|
+
private waitForStoppedStatus;
|
|
80
|
+
/**
|
|
81
|
+
* Restart local agent service
|
|
82
|
+
*/
|
|
83
|
+
restartLocalAgent(): Promise<boolean>;
|
|
84
|
+
/**
|
|
85
|
+
* Update local agent to latest version
|
|
86
|
+
*/
|
|
87
|
+
updateLocalAgent(options?: AgentUpdateOptions): Promise<UpdateResult>;
|
|
88
|
+
/**
|
|
89
|
+
* Configure local agent for specific applications
|
|
90
|
+
*/
|
|
91
|
+
configureAgentForApplication(application: Application): Promise<ConfigurationResult>;
|
|
92
|
+
/**
|
|
93
|
+
* Monitor local agent health
|
|
94
|
+
*/
|
|
95
|
+
monitorAgentHealth(): Promise<LocalAgentHealthStatus>;
|
|
96
|
+
private saveAgentState;
|
|
97
|
+
private loadAgentState;
|
|
98
|
+
private detectPlatform;
|
|
99
|
+
private isAgentRunning;
|
|
100
|
+
private getAgentVersion;
|
|
101
|
+
private getAgentPID;
|
|
102
|
+
private getAgentUptime;
|
|
103
|
+
private performHealthCheck;
|
|
104
|
+
private copyDirectory;
|
|
105
|
+
private copyDirectoryManual;
|
|
106
|
+
private installAgentForPlatform;
|
|
107
|
+
private installFromS3;
|
|
108
|
+
private installFromLocalBuild;
|
|
109
|
+
private createDefaultConfig;
|
|
110
|
+
private setupService;
|
|
111
|
+
private backupCurrentInstallation;
|
|
112
|
+
private migrateConfiguration;
|
|
113
|
+
private startMacOSService;
|
|
114
|
+
private stopMacOSService;
|
|
115
|
+
private isMacOSServiceRunning;
|
|
116
|
+
private getMacOSServicePID;
|
|
117
|
+
private getMacOSProcessUptime;
|
|
118
|
+
private startLinuxService;
|
|
119
|
+
private stopLinuxService;
|
|
120
|
+
private isLinuxServiceRunning;
|
|
121
|
+
private getLinuxServicePID;
|
|
122
|
+
private getLinuxProcessUptime;
|
|
123
|
+
private startWindowsService;
|
|
124
|
+
private stopWindowsService;
|
|
125
|
+
private isWindowsServiceRunning;
|
|
126
|
+
private getWindowsServicePID;
|
|
127
|
+
private getWindowsProcessUptime;
|
|
128
|
+
private startDockerService;
|
|
129
|
+
private stopDockerService;
|
|
130
|
+
private isDockerServiceRunning;
|
|
131
|
+
private checkProcessHealth;
|
|
132
|
+
private validateConfiguration;
|
|
133
|
+
private checkNetworkHealth;
|
|
134
|
+
private determineOverallHealth;
|
|
135
|
+
/**
|
|
136
|
+
* Display agent status in a user-friendly format
|
|
137
|
+
*/
|
|
138
|
+
displayAgentStatus(status: UnifiedAgentStatus): void;
|
|
139
|
+
/**
|
|
140
|
+
* Kill a process by PID using cross-platform approach
|
|
141
|
+
*/
|
|
142
|
+
private killProcessByPid;
|
|
143
|
+
/**
|
|
144
|
+
* Find and kill any running agent processes using cross-platform process search
|
|
145
|
+
*/
|
|
146
|
+
private findAndKillAgentProcess;
|
|
147
|
+
/**
|
|
148
|
+
* Clean up any existing agent processes
|
|
149
|
+
*/
|
|
150
|
+
private cleanupExistingAgents;
|
|
151
|
+
/**
|
|
152
|
+
* Get current log configuration
|
|
153
|
+
*/
|
|
154
|
+
getLogConfiguration(): Promise<{
|
|
155
|
+
globalLevel: string;
|
|
156
|
+
moduleLevels: Map<string, string>;
|
|
157
|
+
}>;
|
|
158
|
+
/**
|
|
159
|
+
* Update global log level
|
|
160
|
+
*/
|
|
161
|
+
updateGlobalLogLevel(level: string): Promise<void>;
|
|
162
|
+
/**
|
|
163
|
+
* Update module-specific log level
|
|
164
|
+
*/
|
|
165
|
+
updateModuleLogLevel(module: string, level: string): Promise<void>;
|
|
166
|
+
/**
|
|
167
|
+
* Reset module to use global log level
|
|
168
|
+
*/
|
|
169
|
+
resetModuleLogLevel(module: string): Promise<void>;
|
|
170
|
+
/**
|
|
171
|
+
* Reset all modules to use global log level
|
|
172
|
+
*/
|
|
173
|
+
resetAllModuleLogLevels(): Promise<void>;
|
|
174
|
+
getStartCommand(): Promise<string>;
|
|
175
|
+
/**
|
|
176
|
+
* Get the path to the agent log file
|
|
177
|
+
*/
|
|
178
|
+
getLogFilePath(): string;
|
|
179
|
+
/**
|
|
180
|
+
* Check if Docker is available
|
|
181
|
+
*/
|
|
182
|
+
private checkDockerAvailable;
|
|
183
|
+
/**
|
|
184
|
+
* Check if Docker image exists locally
|
|
185
|
+
*/
|
|
186
|
+
private checkDockerImageExists;
|
|
187
|
+
/**
|
|
188
|
+
* Recursively copy a directory
|
|
189
|
+
*/
|
|
190
|
+
private copyDirectorySync;
|
|
191
|
+
/**
|
|
192
|
+
* Copy backend directories to temp-sst-copy (required for Docker build)
|
|
193
|
+
*/
|
|
194
|
+
private copySstDirectories;
|
|
195
|
+
/**
|
|
196
|
+
* Build Docker image
|
|
197
|
+
*/
|
|
198
|
+
private buildDockerImage;
|
|
199
|
+
/**
|
|
200
|
+
* Get Docker container name for device
|
|
201
|
+
*/
|
|
202
|
+
private getDockerContainerName;
|
|
203
|
+
/**
|
|
204
|
+
* Spawn agent in Docker container
|
|
205
|
+
*/
|
|
206
|
+
private spawnDockerAgent;
|
|
207
|
+
/**
|
|
208
|
+
* Stop Docker agent container
|
|
209
|
+
*/
|
|
210
|
+
private stopDockerAgent;
|
|
211
|
+
/**
|
|
212
|
+
* Check Docker agent container status
|
|
213
|
+
*/
|
|
214
|
+
private checkDockerAgentStatus;
|
|
215
|
+
/**
|
|
216
|
+
* Get Docker agent container logs
|
|
217
|
+
*/
|
|
218
|
+
private getDockerAgentLogs;
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=LocalAgentManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LocalAgentManager.d.ts","sourceRoot":"","sources":["../../src/services/LocalAgentManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1288,14 +1288,14 @@ class LocalAgentManager {
|
|
|
1288
1288
|
`To deploy the agent:\n` +
|
|
1289
1289
|
` 1. Navigate to agent-v2 directory\n` +
|
|
1290
1290
|
` 2. Run: npm run build\n` +
|
|
1291
|
-
` 3. Run: ./scripts/deploy-to-s3.sh --env
|
|
1291
|
+
` 3. Run: ./scripts/deploy-to-s3.sh --env prod\n\n` +
|
|
1292
1292
|
`Expected path: ${version}.zip`;
|
|
1293
1293
|
}
|
|
1294
1294
|
else if (response.status === 403) {
|
|
1295
1295
|
errorMessage = `Access denied to ${downloadUrl}\n\n` +
|
|
1296
1296
|
`This usually means:\n` +
|
|
1297
1297
|
` 1. Agent not deployed: The file doesn't exist\n` +
|
|
1298
|
-
` → Deploy agent: cd agent-v2 && ./scripts/deploy-to-s3.sh --env
|
|
1298
|
+
` → Deploy agent: cd agent-v2 && ./scripts/deploy-to-s3.sh --env prod\n\n` +
|
|
1299
1299
|
` 2. CloudFront misconfiguration: OAC or bucket policy issue\n` +
|
|
1300
1300
|
` → Check backend Pulumi outputs for distribution status`;
|
|
1301
1301
|
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application service
|
|
3
|
+
* Handles application management operations
|
|
4
|
+
*/
|
|
5
|
+
import { Application, Workload } from '../../detection/WorkloadDetector';
|
|
6
|
+
import { ConfigRepository } from '../../repositories/config-repository';
|
|
7
|
+
import { AuthService } from '../auth/AuthService';
|
|
8
|
+
import { Logger } from '../../utils/logger';
|
|
9
|
+
export interface ApplicationService {
|
|
10
|
+
setupApplication(workload: Workload, port: number, protocol: 'http' | 'https' | 'tcp' | 'udp', description?: string, gatewayId?: string): Promise<Application>;
|
|
11
|
+
getApplications(): Promise<Application[]>;
|
|
12
|
+
getApplication(id: string): Promise<Application>;
|
|
13
|
+
deleteApplication(id: string): Promise<boolean>;
|
|
14
|
+
createApplicationProgrammatically(params: {
|
|
15
|
+
name: string;
|
|
16
|
+
description: string;
|
|
17
|
+
port: number;
|
|
18
|
+
protocol: 'http' | 'https' | 'tcp' | 'udp';
|
|
19
|
+
hostnames?: string[];
|
|
20
|
+
deviceIds: string[];
|
|
21
|
+
gatewayIds?: string[];
|
|
22
|
+
useManagedGateway?: boolean;
|
|
23
|
+
subtype: 'local-preexisting' | 'managed-docker' | 'systemd' | 'docker-compose' | 'managed-process';
|
|
24
|
+
configuration?: Record<string, unknown>;
|
|
25
|
+
}): Promise<unknown>;
|
|
26
|
+
}
|
|
27
|
+
export declare class ApplicationServiceImpl implements ApplicationService {
|
|
28
|
+
private apiClient;
|
|
29
|
+
private configRepository;
|
|
30
|
+
private authService;
|
|
31
|
+
private logger;
|
|
32
|
+
private baseUrl;
|
|
33
|
+
private applications;
|
|
34
|
+
constructor(baseUrl: string, configRepository: ConfigRepository, authService: AuthService, logger: Logger);
|
|
35
|
+
private restoreTokensFromApiClient;
|
|
36
|
+
private generateServingIp;
|
|
37
|
+
setupApplication(workload: Workload, port: number, protocol?: 'http' | 'https' | 'tcp' | 'udp', description?: string, gatewayId?: string): Promise<Application>;
|
|
38
|
+
getApplications(): Promise<Application[]>;
|
|
39
|
+
getApplication(id: string): Promise<Application>;
|
|
40
|
+
deleteApplication(id: string): Promise<boolean>;
|
|
41
|
+
createApplicationProgrammatically(params: {
|
|
42
|
+
name: string;
|
|
43
|
+
description: string;
|
|
44
|
+
port: number;
|
|
45
|
+
protocol: 'http' | 'https' | 'tcp' | 'udp';
|
|
46
|
+
hostnames?: string[];
|
|
47
|
+
deviceIds: string[];
|
|
48
|
+
gatewayIds?: string[];
|
|
49
|
+
useManagedGateway?: boolean;
|
|
50
|
+
subtype: 'local-preexisting' | 'managed-docker' | 'systemd' | 'docker-compose' | 'managed-process';
|
|
51
|
+
configuration?: Record<string, unknown>;
|
|
52
|
+
}): Promise<unknown>;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=ApplicationService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApplicationService.d.ts","sourceRoot":"","sources":["../../../src/services/application/ApplicationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -199,7 +199,7 @@ class ApplicationServiceImpl {
|
|
|
199
199
|
servingIp,
|
|
200
200
|
port,
|
|
201
201
|
protocol,
|
|
202
|
-
status: app.status === '
|
|
202
|
+
status: app.status === 'deployed' ? 'active' : 'inactive',
|
|
203
203
|
createdAt: app.createdAt,
|
|
204
204
|
description: app.description,
|
|
205
205
|
};
|
|
@@ -228,7 +228,7 @@ class ApplicationServiceImpl {
|
|
|
228
228
|
servingIp: this.generateServingIp(),
|
|
229
229
|
port: typeof port === 'number' ? port : 3000,
|
|
230
230
|
protocol: protocol,
|
|
231
|
-
status: appData.status === '
|
|
231
|
+
status: appData.status === 'deployed' ? 'active' : 'inactive',
|
|
232
232
|
workloadId: workloadId || undefined,
|
|
233
233
|
createdAt: appData.createdAt || new Date().toISOString(),
|
|
234
234
|
url: appData.url,
|
|
@@ -272,11 +272,17 @@ class ApplicationServiceImpl {
|
|
|
272
272
|
if (!config.organizationId) {
|
|
273
273
|
throw new Error('Not logged in. Please run "edgible login" first.');
|
|
274
274
|
}
|
|
275
|
+
// Build configuration object, merging provided configuration with port and protocol
|
|
276
|
+
const configuration = {
|
|
277
|
+
port: params.port,
|
|
278
|
+
protocol: params.protocol,
|
|
279
|
+
...(params.configuration || {}),
|
|
280
|
+
};
|
|
275
281
|
const createRequest = {
|
|
276
282
|
name: params.name,
|
|
277
283
|
description: params.description,
|
|
278
284
|
organizationId: config.organizationId,
|
|
279
|
-
configuration
|
|
285
|
+
configuration,
|
|
280
286
|
hostnames: params.hostnames,
|
|
281
287
|
deviceIds: params.deviceIds,
|
|
282
288
|
gatewayIds: params.gatewayIds,
|
|
@@ -286,6 +292,7 @@ class ApplicationServiceImpl {
|
|
|
286
292
|
if (params.useManagedGateway !== undefined) {
|
|
287
293
|
createRequest.useManagedGateway = params.useManagedGateway;
|
|
288
294
|
}
|
|
295
|
+
console.log(`application: ${params}`);
|
|
289
296
|
const response = await this.apiClient.createApplication(createRequest);
|
|
290
297
|
return response.application;
|
|
291
298
|
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authentication service
|
|
3
|
+
* Handles user and device authentication operations
|
|
4
|
+
*/
|
|
5
|
+
import { LoginResponse } from '../../client';
|
|
6
|
+
import { CreateDeviceWithOrphanedOrganizationResponse, GetUserOrganizationsResponse } from '../../types/ApiResponses';
|
|
7
|
+
import { ConfigRepository } from '../../repositories/config-repository';
|
|
8
|
+
import { Logger } from '../../utils/logger';
|
|
9
|
+
export interface AuthService {
|
|
10
|
+
loginUser(email: string, password: string): Promise<LoginResponse>;
|
|
11
|
+
loginDevice(deviceId: string, password: string): Promise<LoginResponse>;
|
|
12
|
+
verifyDeviceCredentials(deviceId: string, password: string): Promise<boolean>;
|
|
13
|
+
checkAccount(email: string): Promise<boolean>;
|
|
14
|
+
createDeviceWithOrganization(deviceName: string, password: string, userEmail?: string): Promise<CreateDeviceWithOrphanedOrganizationResponse>;
|
|
15
|
+
refreshToken(refreshToken: string): Promise<unknown>;
|
|
16
|
+
getUserOrganizations(email: string): Promise<GetUserOrganizationsResponse>;
|
|
17
|
+
getAccessToken(): string | undefined;
|
|
18
|
+
getIdToken(): string | undefined;
|
|
19
|
+
getRefreshToken(): string | undefined;
|
|
20
|
+
attemptAutoRelogin(): Promise<boolean>;
|
|
21
|
+
}
|
|
22
|
+
export declare class AuthServiceImpl implements AuthService {
|
|
23
|
+
private apiClient;
|
|
24
|
+
private configRepository;
|
|
25
|
+
private logger;
|
|
26
|
+
private baseUrl;
|
|
27
|
+
constructor(baseUrl: string, configRepository: ConfigRepository, logger: Logger);
|
|
28
|
+
private restoreTokensFromConfig;
|
|
29
|
+
attemptAutoRelogin(): Promise<boolean>;
|
|
30
|
+
private saveTokensToConfig;
|
|
31
|
+
loginUser(email: string, password: string): Promise<LoginResponse>;
|
|
32
|
+
createDeviceWithOrganization(deviceName: string, password: string, userEmail?: string): Promise<CreateDeviceWithOrphanedOrganizationResponse>;
|
|
33
|
+
checkAccount(email: string): Promise<boolean>;
|
|
34
|
+
loginDevice(deviceId: string, password: string): Promise<LoginResponse>;
|
|
35
|
+
verifyDeviceCredentials(deviceId: string, password: string): Promise<boolean>;
|
|
36
|
+
refreshToken(refreshToken: string): Promise<unknown>;
|
|
37
|
+
getAccessToken(): string | undefined;
|
|
38
|
+
getIdToken(): string | undefined;
|
|
39
|
+
getRefreshToken(): string | undefined;
|
|
40
|
+
getUserOrganizations(email: string): Promise<GetUserOrganizationsResponse>;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=AuthService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthService.d.ts","sourceRoot":"","sources":["../../../src/services/auth/AuthService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA4C,aAAa,EAAE,MAAM,cAAc,CAAC;AAEvF,OAAO,EAAE,4CAA4C,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAEtH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnE,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACxE,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9E,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,4BAA4B,CAC1B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,4CAA4C,CAAC,CAAC;IACzD,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAC3E,cAAc,IAAI,MAAM,GAAG,SAAS,CAAC;IACrC,UAAU,IAAI,MAAM,GAAG,SAAS,CAAC;IACjC,eAAe,IAAI,MAAM,GAAG,SAAS,CAAC;IACtC,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACxC;AAED,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;gBAGtB,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM;IAShB,OAAO,CAAC,uBAAuB;IAsBzB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAkB5C,OAAO,CAAC,kBAAkB;IAkBpB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAYlE,4BAA4B,CAChC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,4CAA4C,CAAC;IA0BlD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyB7C,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAYvE,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA8C7E,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW1D,cAAc,IAAI,MAAM,GAAG,SAAS;IAIpC,UAAU,IAAI,MAAM,GAAG,SAAS;IAIhC,eAAe,IAAI,MAAM,GAAG,SAAS;IAI/B,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,4BAA4B,CAAC;CAQjF"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
export interface AWSProfile {
|
|
2
|
+
name: string;
|
|
3
|
+
region: string;
|
|
4
|
+
accessKeyId?: string;
|
|
5
|
+
secretAccessKey?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface EC2Instance {
|
|
8
|
+
instanceId: string;
|
|
9
|
+
publicIp: string;
|
|
10
|
+
privateIp: string;
|
|
11
|
+
state: string;
|
|
12
|
+
keyPairName: string;
|
|
13
|
+
region: string;
|
|
14
|
+
launchTime: Date;
|
|
15
|
+
}
|
|
16
|
+
export interface KeyPair {
|
|
17
|
+
keyName: string;
|
|
18
|
+
keyFingerprint: string;
|
|
19
|
+
privateKey: string;
|
|
20
|
+
publicKey: string;
|
|
21
|
+
}
|
|
22
|
+
export interface SSHConnection {
|
|
23
|
+
host: string;
|
|
24
|
+
port: number;
|
|
25
|
+
username: string;
|
|
26
|
+
privateKey: string;
|
|
27
|
+
}
|
|
28
|
+
export declare class AWSService {
|
|
29
|
+
private ec2Client;
|
|
30
|
+
private s3Client;
|
|
31
|
+
private ssmClient;
|
|
32
|
+
private profile;
|
|
33
|
+
private region;
|
|
34
|
+
constructor(profile?: string, region?: string);
|
|
35
|
+
/**
|
|
36
|
+
* Check if AWS CLI is available and get available profiles
|
|
37
|
+
*/
|
|
38
|
+
checkAWSCLI(): Promise<{
|
|
39
|
+
available: boolean;
|
|
40
|
+
profiles: string[];
|
|
41
|
+
}>;
|
|
42
|
+
/**
|
|
43
|
+
* Validate AWS credentials for a profile
|
|
44
|
+
*/
|
|
45
|
+
validateCredentials(profile?: string): Promise<boolean>;
|
|
46
|
+
/**
|
|
47
|
+
* Create a key pair for EC2 instance
|
|
48
|
+
*/
|
|
49
|
+
createKeyPair(keyName: string): Promise<KeyPair>;
|
|
50
|
+
/**
|
|
51
|
+
* Check if key pair exists
|
|
52
|
+
*/
|
|
53
|
+
keyPairExists(keyName: string): Promise<boolean>;
|
|
54
|
+
/**
|
|
55
|
+
* Create EC2 instance for gateway
|
|
56
|
+
*/
|
|
57
|
+
createEC2Instance(config: {
|
|
58
|
+
name: string;
|
|
59
|
+
instanceType?: string;
|
|
60
|
+
keyPairName: string;
|
|
61
|
+
securityGroupIds?: string[];
|
|
62
|
+
subnetId?: string;
|
|
63
|
+
userData?: string;
|
|
64
|
+
}): Promise<EC2Instance>;
|
|
65
|
+
/**
|
|
66
|
+
* Get instance details
|
|
67
|
+
*/
|
|
68
|
+
getInstanceDetails(instanceId: string): Promise<{
|
|
69
|
+
publicIp: string;
|
|
70
|
+
privateIp: string;
|
|
71
|
+
state: string;
|
|
72
|
+
}>;
|
|
73
|
+
/**
|
|
74
|
+
* Wait for instance to be running
|
|
75
|
+
*/
|
|
76
|
+
private waitForInstanceRunning;
|
|
77
|
+
/**
|
|
78
|
+
* Terminate EC2 instance
|
|
79
|
+
*/
|
|
80
|
+
terminateInstance(instanceId: string): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Check if instance is ready for SSH connections
|
|
83
|
+
*/
|
|
84
|
+
waitForSSHReady(instanceId: string, maxWaitTime?: number): Promise<boolean>;
|
|
85
|
+
/**
|
|
86
|
+
* Create or get security group with SSH access
|
|
87
|
+
*/
|
|
88
|
+
getOrCreateSSHSecurityGroup(): Promise<string>;
|
|
89
|
+
/**
|
|
90
|
+
* Delete key pair
|
|
91
|
+
*/
|
|
92
|
+
deleteKeyPair(keyName: string): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* Execute SSH command on instance
|
|
95
|
+
*/
|
|
96
|
+
executeSSHCommand(connection: SSHConnection, command: string, timeout?: number): Promise<{
|
|
97
|
+
stdout: string;
|
|
98
|
+
stderr: string;
|
|
99
|
+
exitCode: number;
|
|
100
|
+
}>;
|
|
101
|
+
/**
|
|
102
|
+
* Upload file via SSH
|
|
103
|
+
*/
|
|
104
|
+
uploadFile(connection: SSHConnection, localPath: string, remotePath: string): Promise<void>;
|
|
105
|
+
/**
|
|
106
|
+
* Generate user data script for EC2 instance
|
|
107
|
+
*/
|
|
108
|
+
private generateUserData;
|
|
109
|
+
/**
|
|
110
|
+
* Save SSH key to file
|
|
111
|
+
*/
|
|
112
|
+
saveSSHKey(keyPair: KeyPair, keyName: string): string;
|
|
113
|
+
/**
|
|
114
|
+
* Load SSH key from file
|
|
115
|
+
*/
|
|
116
|
+
loadSSHKey(keyPath: string): string;
|
|
117
|
+
/**
|
|
118
|
+
* Download agent from S3 bucket
|
|
119
|
+
* @param bucketName S3 bucket name
|
|
120
|
+
* @param keyPath S3 object key (path within bucket)
|
|
121
|
+
* @param destinationPath Local file path to save the downloaded file
|
|
122
|
+
* @param useCloudFront Whether to use CloudFront URL instead of direct S3
|
|
123
|
+
* @param cloudFrontUrl CloudFront distribution URL (e.g., https://distribution.edgible.com)
|
|
124
|
+
*/
|
|
125
|
+
downloadAgentFromS3(bucketName: string, keyPath: string, destinationPath: string, useCloudFront?: boolean, cloudFrontUrl?: string): Promise<void>;
|
|
126
|
+
/**
|
|
127
|
+
* Get S3 download URL (for use in SSH commands on remote server)
|
|
128
|
+
* @param bucketName S3 bucket name
|
|
129
|
+
* @param keyPath S3 object key
|
|
130
|
+
* @param useCloudFront Whether to use CloudFront URL
|
|
131
|
+
* @param cloudFrontUrl CloudFront distribution URL
|
|
132
|
+
* @returns URL string for downloading
|
|
133
|
+
*/
|
|
134
|
+
getS3DownloadUrl(bucketName: string, keyPath: string, useCloudFront?: boolean, cloudFrontUrl?: string): string;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=aws.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws.d.ts","sourceRoot":"","sources":["../../src/services/aws.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,GAAE,MAAoB;IAwB1D;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAWxE;;OAEG;IACG,mBAAmB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB7D;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA+BtD;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYtD;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE;QAC9B,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,WAAW,CAAC;IAwDxB;;OAEG;IACG,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAmB7G;;OAEG;YACW,sBAAsB;IAkBpC;;OAEG;IACG,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa1D;;OAEG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,GAAE,MAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAqBtF;;OAEG;IACG,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAAC;IAkDpD;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAanD;;OAEG;IACG,iBAAiB,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAe,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IA2D5J;;OAEG;IACG,UAAU,CAAC,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoFjG;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA4DxB;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAerD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAQnC;;;;;;;OAOG;IACG,mBAAmB,CACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,aAAa,GAAE,OAAe,EAC9B,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC;IA2EhB;;;;;;;OAOG;IACH,gBAAgB,CACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,aAAa,GAAE,OAAe,EAC9B,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM;CAQV"}
|