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