@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.
Files changed (228) hide show
  1. package/LICENSE +16 -0
  2. package/README.md +114 -1
  3. package/dist/client/api-client.d.ts +575 -0
  4. package/dist/client/api-client.d.ts.map +1 -0
  5. package/dist/client/api-client.js +196 -2
  6. package/dist/client/index.d.ts +10 -0
  7. package/dist/client/index.d.ts.map +1 -0
  8. package/dist/commands/agent.d.ts +3 -0
  9. package/dist/commands/agent.d.ts.map +1 -0
  10. package/dist/commands/agent.js +18 -34
  11. package/dist/commands/ai.d.ts +3 -0
  12. package/dist/commands/ai.d.ts.map +1 -0
  13. package/dist/commands/ai.js +1660 -274
  14. package/dist/commands/application.d.ts +6 -0
  15. package/dist/commands/application.d.ts.map +1 -0
  16. package/dist/commands/application.js +377 -0
  17. package/dist/commands/auth.d.ts +3 -0
  18. package/dist/commands/auth.d.ts.map +1 -0
  19. package/dist/commands/base/BaseCommand.d.ts +53 -0
  20. package/dist/commands/base/BaseCommand.d.ts.map +1 -0
  21. package/dist/commands/base/CommandHandler.d.ts +28 -0
  22. package/dist/commands/base/CommandHandler.d.ts.map +1 -0
  23. package/dist/commands/base/command-wrapper.d.ts +21 -0
  24. package/dist/commands/base/command-wrapper.d.ts.map +1 -0
  25. package/dist/commands/base/middleware.d.ts +34 -0
  26. package/dist/commands/base/middleware.d.ts.map +1 -0
  27. package/dist/commands/config.d.ts +3 -0
  28. package/dist/commands/config.d.ts.map +1 -0
  29. package/dist/commands/connectivity.d.ts +3 -0
  30. package/dist/commands/connectivity.d.ts.map +1 -0
  31. package/dist/commands/debug.d.ts +3 -0
  32. package/dist/commands/debug.d.ts.map +1 -0
  33. package/dist/commands/debug.js +336 -0
  34. package/dist/commands/discover.d.ts +3 -0
  35. package/dist/commands/discover.d.ts.map +1 -0
  36. package/dist/commands/examples/migrated-command-example.d.ts +31 -0
  37. package/dist/commands/examples/migrated-command-example.d.ts.map +1 -0
  38. package/dist/commands/gateway.d.ts +6 -0
  39. package/dist/commands/gateway.d.ts.map +1 -0
  40. package/dist/commands/managedGateway.d.ts +6 -0
  41. package/dist/commands/managedGateway.d.ts.map +1 -0
  42. package/dist/commands/managedGateway.js +132 -0
  43. package/dist/commands/utils/config-validator.d.ts +29 -0
  44. package/dist/commands/utils/config-validator.d.ts.map +1 -0
  45. package/dist/commands/utils/gateway-prompt.d.ts +23 -0
  46. package/dist/commands/utils/gateway-prompt.d.ts.map +1 -0
  47. package/dist/commands/utils/input-parser.d.ts +34 -0
  48. package/dist/commands/utils/input-parser.d.ts.map +1 -0
  49. package/dist/commands/utils/output-formatter.d.ts +62 -0
  50. package/dist/commands/utils/output-formatter.d.ts.map +1 -0
  51. package/dist/config/app-config.d.ts +44 -0
  52. package/dist/config/app-config.d.ts.map +1 -0
  53. package/dist/detection/SystemCapabilityDetector.d.ts +139 -0
  54. package/dist/detection/SystemCapabilityDetector.d.ts.map +1 -0
  55. package/dist/detection/ToolDetector.d.ts +16 -0
  56. package/dist/detection/ToolDetector.d.ts.map +1 -0
  57. package/dist/detection/WorkloadDetector.d.ts +62 -0
  58. package/dist/detection/WorkloadDetector.d.ts.map +1 -0
  59. package/dist/di/bindings.d.ts +15 -0
  60. package/dist/di/bindings.d.ts.map +1 -0
  61. package/dist/di/container.d.ts +44 -0
  62. package/dist/di/container.d.ts.map +1 -0
  63. package/dist/di/types.d.ts +23 -0
  64. package/dist/di/types.d.ts.map +1 -0
  65. package/dist/index.d.ts +3 -0
  66. package/dist/index.d.ts.map +1 -0
  67. package/dist/index.js +8 -1
  68. package/dist/interfaces/IDaemonManager.d.ts +67 -0
  69. package/dist/interfaces/IDaemonManager.d.ts.map +1 -0
  70. package/dist/repositories/config-repository.d.ts +46 -0
  71. package/dist/repositories/config-repository.d.ts.map +1 -0
  72. package/dist/repositories/gateway-repository.d.ts +37 -0
  73. package/dist/repositories/gateway-repository.d.ts.map +1 -0
  74. package/dist/services/AgentStatusManager.d.ts +30 -0
  75. package/dist/services/AgentStatusManager.d.ts.map +1 -0
  76. package/dist/services/ConnectivityTester.d.ts +30 -0
  77. package/dist/services/ConnectivityTester.d.ts.map +1 -0
  78. package/dist/services/DependencyInstaller.d.ts +32 -0
  79. package/dist/services/DependencyInstaller.d.ts.map +1 -0
  80. package/dist/services/LocalAgentManager.d.ts +220 -0
  81. package/dist/services/LocalAgentManager.d.ts.map +1 -0
  82. package/dist/services/LocalAgentManager.js +2 -2
  83. package/dist/services/application/ApplicationService.d.ts +54 -0
  84. package/dist/services/application/ApplicationService.d.ts.map +1 -0
  85. package/dist/services/application/ApplicationService.js +10 -3
  86. package/dist/services/auth/AuthService.d.ts +42 -0
  87. package/dist/services/auth/AuthService.d.ts.map +1 -0
  88. package/dist/services/aws.d.ts +136 -0
  89. package/dist/services/aws.d.ts.map +1 -0
  90. package/dist/services/aws.js +2 -2
  91. package/dist/services/daemon/DaemonManagerFactory.d.ts +17 -0
  92. package/dist/services/daemon/DaemonManagerFactory.d.ts.map +1 -0
  93. package/dist/services/daemon/DockerDaemonManager.d.ts +26 -0
  94. package/dist/services/daemon/DockerDaemonManager.d.ts.map +1 -0
  95. package/dist/services/daemon/LaunchdDaemonManager.d.ts +20 -0
  96. package/dist/services/daemon/LaunchdDaemonManager.d.ts.map +1 -0
  97. package/dist/services/daemon/LaunchdDaemonManager.js +6 -0
  98. package/dist/services/daemon/PodmanDaemonManager.d.ts +24 -0
  99. package/dist/services/daemon/PodmanDaemonManager.d.ts.map +1 -0
  100. package/dist/services/daemon/SystemdDaemonManager.d.ts +20 -0
  101. package/dist/services/daemon/SystemdDaemonManager.d.ts.map +1 -0
  102. package/dist/services/daemon/WindowsServiceDaemonManager.d.ts +19 -0
  103. package/dist/services/daemon/WindowsServiceDaemonManager.d.ts.map +1 -0
  104. package/dist/services/daemon/index.d.ts +7 -0
  105. package/dist/services/daemon/index.d.ts.map +1 -0
  106. package/dist/services/edgible.d.ts +304 -0
  107. package/dist/services/edgible.d.ts.map +1 -0
  108. package/dist/services/edgible.js +53 -4
  109. package/dist/services/gateway/GatewayService.d.ts +88 -0
  110. package/dist/services/gateway/GatewayService.d.ts.map +1 -0
  111. package/dist/state/config.d.ts +96 -0
  112. package/dist/state/config.d.ts.map +1 -0
  113. package/dist/types/AgentConfig.d.ts +126 -0
  114. package/dist/types/AgentConfig.d.ts.map +1 -0
  115. package/dist/types/AgentStatus.d.ts +30 -0
  116. package/dist/types/AgentStatus.d.ts.map +1 -0
  117. package/dist/types/ApiClient.d.ts +36 -0
  118. package/dist/types/ApiClient.d.ts.map +1 -0
  119. package/dist/types/ApiRequests.d.ts +269 -0
  120. package/dist/types/ApiRequests.d.ts.map +1 -0
  121. package/dist/types/ApiResponses.d.ts +348 -0
  122. package/dist/types/ApiResponses.d.ts.map +1 -0
  123. package/dist/types/Application.d.ts +13 -0
  124. package/dist/types/Application.d.ts.map +1 -0
  125. package/dist/types/CaddyJson.d.ts +231 -0
  126. package/dist/types/CaddyJson.d.ts.map +1 -0
  127. package/dist/types/DeviceMetrics.d.ts +95 -0
  128. package/dist/types/DeviceMetrics.d.ts.map +1 -0
  129. package/dist/types/DeviceMetrics.js +5 -0
  130. package/dist/types/LogAggregation.d.ts +106 -0
  131. package/dist/types/LogAggregation.d.ts.map +1 -0
  132. package/dist/types/LogAggregation.js +5 -0
  133. package/dist/types/LogEntry.d.ts +60 -0
  134. package/dist/types/LogEntry.d.ts.map +1 -0
  135. package/dist/types/LogEntry.js +5 -0
  136. package/dist/types/UnifiedAgentStatus.d.ts +28 -0
  137. package/dist/types/UnifiedAgentStatus.d.ts.map +1 -0
  138. package/dist/types/WireGuard.d.ts +36 -0
  139. package/dist/types/WireGuard.d.ts.map +1 -0
  140. package/dist/types/Workload.d.ts +9 -0
  141. package/dist/types/Workload.d.ts.map +1 -0
  142. package/dist/types/agent.d.ts +120 -0
  143. package/dist/types/agent.d.ts.map +1 -0
  144. package/dist/types/command-options.d.ts +115 -0
  145. package/dist/types/command-options.d.ts.map +1 -0
  146. package/dist/types/connectivity.d.ts +80 -0
  147. package/dist/types/connectivity.d.ts.map +1 -0
  148. package/dist/types/errors.d.ts +97 -0
  149. package/dist/types/errors.d.ts.map +1 -0
  150. package/dist/types/gateway-types.d.ts +46 -0
  151. package/dist/types/gateway-types.d.ts.map +1 -0
  152. package/dist/types/index.d.ts +28 -0
  153. package/dist/types/index.d.ts.map +1 -0
  154. package/dist/types/models/ApplicationData.d.ts +78 -0
  155. package/dist/types/models/ApplicationData.d.ts.map +1 -0
  156. package/dist/types/models/CertificateData.d.ts +44 -0
  157. package/dist/types/models/CertificateData.d.ts.map +1 -0
  158. package/dist/types/models/DeviceData.d.ts +29 -0
  159. package/dist/types/models/DeviceData.d.ts.map +1 -0
  160. package/dist/types/models/DevicePoolData.d.ts +47 -0
  161. package/dist/types/models/DevicePoolData.d.ts.map +1 -0
  162. package/dist/types/models/LifecycleEvent.d.ts +27 -0
  163. package/dist/types/models/LifecycleEvent.d.ts.map +1 -0
  164. package/dist/types/models/LifecycleEvent.js +5 -0
  165. package/dist/types/models/OrganizationData.d.ts +53 -0
  166. package/dist/types/models/OrganizationData.d.ts.map +1 -0
  167. package/dist/types/models/OrganizationInviteData.d.ts +39 -0
  168. package/dist/types/models/OrganizationInviteData.d.ts.map +1 -0
  169. package/dist/types/models/ProviderConfiguration.d.ts +37 -0
  170. package/dist/types/models/ProviderConfiguration.d.ts.map +1 -0
  171. package/dist/types/models/ResourceData.d.ts +18 -0
  172. package/dist/types/models/ResourceData.d.ts.map +1 -0
  173. package/dist/types/models/ServiceResourceData.d.ts +5 -0
  174. package/dist/types/models/ServiceResourceData.d.ts.map +1 -0
  175. package/dist/types/models/UserData.d.ts +12 -0
  176. package/dist/types/models/UserData.d.ts.map +1 -0
  177. package/dist/types/route.d.ts +67 -0
  178. package/dist/types/route.d.ts.map +1 -0
  179. package/dist/types/validation/schemas.d.ts +606 -0
  180. package/dist/types/validation/schemas.d.ts.map +1 -0
  181. package/dist/types/validation/schemas.js +46 -4
  182. package/dist/types/validation.d.ts +68 -0
  183. package/dist/types/validation.d.ts.map +1 -0
  184. package/dist/utils/FileIntegrityManager.d.ts +37 -0
  185. package/dist/utils/FileIntegrityManager.d.ts.map +1 -0
  186. package/dist/utils/PathMigration.d.ts +45 -0
  187. package/dist/utils/PathMigration.d.ts.map +1 -0
  188. package/dist/utils/PathResolver.d.ts +76 -0
  189. package/dist/utils/PathResolver.d.ts.map +1 -0
  190. package/dist/utils/PlatformDetector.d.ts +60 -0
  191. package/dist/utils/PlatformDetector.d.ts.map +1 -0
  192. package/dist/utils/console-logger.d.ts +37 -0
  193. package/dist/utils/console-logger.d.ts.map +1 -0
  194. package/dist/utils/docker-compose-parser.d.ts +28 -0
  195. package/dist/utils/docker-compose-parser.d.ts.map +1 -0
  196. package/dist/utils/errors.d.ts +63 -0
  197. package/dist/utils/errors.d.ts.map +1 -0
  198. package/dist/utils/health-checker.d.ts +34 -0
  199. package/dist/utils/health-checker.d.ts.map +1 -0
  200. package/dist/utils/json-logger.d.ts +23 -0
  201. package/dist/utils/json-logger.d.ts.map +1 -0
  202. package/dist/utils/log-formatter.d.ts +85 -0
  203. package/dist/utils/log-formatter.d.ts.map +1 -0
  204. package/dist/utils/log-formatter.js +39 -11
  205. package/dist/utils/logger.d.ts +34 -0
  206. package/dist/utils/logger.d.ts.map +1 -0
  207. package/dist/utils/network-utils.d.ts +56 -0
  208. package/dist/utils/network-utils.d.ts.map +1 -0
  209. package/dist/utils/output.d.ts +73 -0
  210. package/dist/utils/output.d.ts.map +1 -0
  211. package/dist/utils/passwordValidation.d.ts +32 -0
  212. package/dist/utils/passwordValidation.d.ts.map +1 -0
  213. package/dist/utils/progress.d.ts +74 -0
  214. package/dist/utils/progress.d.ts.map +1 -0
  215. package/dist/utils/sudo-checker.d.ts +9 -0
  216. package/dist/utils/sudo-checker.d.ts.map +1 -0
  217. package/dist/utils/urls.d.ts +19 -0
  218. package/dist/utils/urls.d.ts.map +1 -0
  219. package/dist/utils/urls.js +3 -3
  220. package/dist/utils/validation.d.ts +19 -0
  221. package/dist/utils/validation.d.ts.map +1 -0
  222. package/dist/validation/schemas.d.ts +197 -0
  223. package/dist/validation/schemas.d.ts.map +1 -0
  224. package/dist/validation/schemas.js +1 -1
  225. package/dist/validation/validator.d.ts +22 -0
  226. package/dist/validation/validator.d.ts.map +1 -0
  227. package/package.json +8 -3
  228. 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 production\n\n` +
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 production\n\n` +
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 === 'running' ? 'active' : 'inactive',
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 === 'running' ? 'active' : 'inactive',
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: { port: params.port, protocol: params.protocol },
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"}