@edgible-team/cli 1.2.4 → 1.2.8

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 (221) hide show
  1. package/dist/commands/agent/agent-handlers.d.ts +45 -0
  2. package/dist/commands/agent/agent-handlers.d.ts.map +1 -0
  3. package/dist/commands/agent/agent-handlers.js +1159 -0
  4. package/dist/commands/agent/install.d.ts +11 -0
  5. package/dist/commands/agent/install.d.ts.map +1 -0
  6. package/dist/commands/agent/install.js +399 -0
  7. package/dist/commands/agent/logs.d.ts +12 -0
  8. package/dist/commands/agent/logs.d.ts.map +1 -0
  9. package/dist/commands/agent/logs.js +77 -0
  10. package/dist/commands/agent/restart.d.ts +4 -0
  11. package/dist/commands/agent/restart.d.ts.map +1 -0
  12. package/dist/commands/agent/restart.js +33 -0
  13. package/dist/commands/agent/set-log-level.d.ts +8 -0
  14. package/dist/commands/agent/set-log-level.d.ts.map +1 -0
  15. package/dist/commands/agent/set-log-level.js +133 -0
  16. package/dist/commands/agent/setup.d.ts +9 -0
  17. package/dist/commands/agent/setup.d.ts.map +1 -0
  18. package/dist/commands/agent/setup.js +149 -0
  19. package/dist/commands/agent/start.d.ts +12 -0
  20. package/dist/commands/agent/start.d.ts.map +1 -0
  21. package/dist/commands/agent/start.js +308 -0
  22. package/dist/commands/agent/status.d.ts +7 -0
  23. package/dist/commands/agent/status.d.ts.map +1 -0
  24. package/dist/commands/agent/status.js +68 -0
  25. package/dist/commands/agent/stop.d.ts +4 -0
  26. package/dist/commands/agent/stop.d.ts.map +1 -0
  27. package/dist/commands/agent/stop.js +33 -0
  28. package/dist/commands/agent/uninstall.d.ts +7 -0
  29. package/dist/commands/agent/uninstall.d.ts.map +1 -0
  30. package/dist/commands/agent/uninstall.js +168 -0
  31. package/dist/commands/agent.d.ts.map +1 -1
  32. package/dist/commands/agent.js +24 -1190
  33. package/dist/commands/ai/helpers.d.ts +139 -0
  34. package/dist/commands/ai/helpers.d.ts.map +1 -0
  35. package/dist/commands/ai/helpers.js +1470 -0
  36. package/dist/commands/ai/serve.d.ts +6 -0
  37. package/dist/commands/ai/serve.d.ts.map +1 -0
  38. package/dist/commands/ai/serve.js +124 -0
  39. package/dist/commands/ai/setup.d.ts +14 -0
  40. package/dist/commands/ai/setup.d.ts.map +1 -0
  41. package/dist/commands/ai/setup.js +86 -0
  42. package/dist/commands/ai/status.d.ts +2 -0
  43. package/dist/commands/ai/status.d.ts.map +1 -0
  44. package/dist/commands/ai/status.js +160 -0
  45. package/dist/commands/ai/stop.d.ts +2 -0
  46. package/dist/commands/ai/stop.d.ts.map +1 -0
  47. package/dist/commands/ai/stop.js +21 -0
  48. package/dist/commands/ai/teardown.d.ts +5 -0
  49. package/dist/commands/ai/teardown.d.ts.map +1 -0
  50. package/dist/commands/ai/teardown.js +78 -0
  51. package/dist/commands/ai/test.d.ts +4 -0
  52. package/dist/commands/ai/test.d.ts.map +1 -0
  53. package/dist/commands/ai/test.js +65 -0
  54. package/dist/commands/ai.d.ts.map +1 -1
  55. package/dist/commands/ai.js +16 -1938
  56. package/dist/commands/application/api-keys/create.d.ts +6 -0
  57. package/dist/commands/application/api-keys/create.d.ts.map +1 -0
  58. package/dist/commands/application/api-keys/create.js +68 -0
  59. package/dist/commands/application/api-keys/delete.d.ts +6 -0
  60. package/dist/commands/application/api-keys/delete.d.ts.map +1 -0
  61. package/dist/commands/application/api-keys/delete.js +79 -0
  62. package/dist/commands/application/api-keys/list.d.ts +5 -0
  63. package/dist/commands/application/api-keys/list.d.ts.map +1 -0
  64. package/dist/commands/application/api-keys/list.js +65 -0
  65. package/dist/commands/application/api-keys.d.ts +3 -0
  66. package/dist/commands/application/api-keys.d.ts.map +1 -0
  67. package/dist/commands/application/api-keys.js +227 -0
  68. package/dist/commands/application/create-compose.d.ts +3 -0
  69. package/dist/commands/application/create-compose.d.ts.map +1 -0
  70. package/dist/commands/application/create-compose.js +381 -0
  71. package/dist/commands/application/create-docker-compose.d.ts +10 -0
  72. package/dist/commands/application/create-docker-compose.d.ts.map +1 -0
  73. package/dist/commands/application/create-docker-compose.js +334 -0
  74. package/dist/commands/application/create-existing.d.ts +14 -0
  75. package/dist/commands/application/create-existing.d.ts.map +1 -0
  76. package/dist/commands/application/create-existing.js +359 -0
  77. package/dist/commands/application/create-interactive.d.ts +3 -0
  78. package/dist/commands/application/create-interactive.d.ts.map +1 -0
  79. package/dist/commands/application/create-interactive.js +326 -0
  80. package/dist/commands/application/create-managed-process.d.ts +15 -0
  81. package/dist/commands/application/create-managed-process.d.ts.map +1 -0
  82. package/dist/commands/application/create-managed-process.js +371 -0
  83. package/dist/commands/application/create-stubs.d.ts +4 -0
  84. package/dist/commands/application/create-stubs.d.ts.map +1 -0
  85. package/dist/commands/application/create-stubs.js +19 -0
  86. package/dist/commands/application/create-workload.d.ts +5 -0
  87. package/dist/commands/application/create-workload.d.ts.map +1 -0
  88. package/dist/commands/application/create-workload.js +48 -0
  89. package/dist/commands/application/delete.d.ts +6 -0
  90. package/dist/commands/application/delete.d.ts.map +1 -0
  91. package/dist/commands/application/delete.js +76 -0
  92. package/dist/commands/application/get.d.ts +5 -0
  93. package/dist/commands/application/get.d.ts.map +1 -0
  94. package/dist/commands/application/get.js +35 -0
  95. package/dist/commands/application/list.d.ts +4 -0
  96. package/dist/commands/application/list.d.ts.map +1 -0
  97. package/dist/commands/application/list.js +41 -0
  98. package/dist/commands/application/short-codes/create.d.ts +7 -0
  99. package/dist/commands/application/short-codes/create.d.ts.map +1 -0
  100. package/dist/commands/application/short-codes/create.js +69 -0
  101. package/dist/commands/application/short-codes/delete.d.ts +6 -0
  102. package/dist/commands/application/short-codes/delete.d.ts.map +1 -0
  103. package/dist/commands/application/short-codes/delete.js +79 -0
  104. package/dist/commands/application/short-codes/list.d.ts +5 -0
  105. package/dist/commands/application/short-codes/list.d.ts.map +1 -0
  106. package/dist/commands/application/short-codes/list.js +63 -0
  107. package/dist/commands/application/short-codes/toggle.d.ts +5 -0
  108. package/dist/commands/application/short-codes/toggle.d.ts.map +1 -0
  109. package/dist/commands/application/short-codes/toggle.js +71 -0
  110. package/dist/commands/application/short-codes.d.ts +3 -0
  111. package/dist/commands/application/short-codes.d.ts.map +1 -0
  112. package/dist/commands/application/short-codes.js +226 -0
  113. package/dist/commands/application/toggle.d.ts +2 -0
  114. package/dist/commands/application/toggle.d.ts.map +1 -0
  115. package/dist/commands/application/toggle.js +78 -0
  116. package/dist/commands/application/update.d.ts +4 -0
  117. package/dist/commands/application/update.d.ts.map +1 -0
  118. package/dist/commands/application/update.js +11 -0
  119. package/dist/commands/application.d.ts.map +1 -1
  120. package/dist/commands/application.js +32 -1630
  121. package/dist/commands/auth.d.ts.map +1 -1
  122. package/dist/commands/auth.js +31 -49
  123. package/dist/commands/base/BaseCommand.d.ts +3 -3
  124. package/dist/commands/base/BaseCommand.d.ts.map +1 -1
  125. package/dist/commands/base/BaseCommand.js +3 -3
  126. package/dist/commands/base/command-wrapper.d.ts +0 -4
  127. package/dist/commands/base/command-wrapper.d.ts.map +1 -1
  128. package/dist/commands/base/command-wrapper.js +13 -14
  129. package/dist/commands/base/middleware.d.ts +3 -3
  130. package/dist/commands/base/middleware.d.ts.map +1 -1
  131. package/dist/commands/base/middleware.js +4 -4
  132. package/dist/commands/config.d.ts.map +1 -1
  133. package/dist/commands/config.js +15 -32
  134. package/dist/commands/connectivity.d.ts.map +1 -1
  135. package/dist/commands/connectivity.js +6 -11
  136. package/dist/commands/debug.d.ts.map +1 -1
  137. package/dist/commands/debug.js +187 -46
  138. package/dist/commands/discover.d.ts.map +1 -1
  139. package/dist/commands/discover.js +4 -17
  140. package/dist/commands/gateway.d.ts.map +1 -1
  141. package/dist/commands/gateway.js +37 -77
  142. package/dist/commands/managedGateway/create.d.ts +6 -0
  143. package/dist/commands/managedGateway/create.d.ts.map +1 -0
  144. package/dist/commands/managedGateway/create.js +50 -0
  145. package/dist/commands/managedGateway/delete.d.ts +5 -0
  146. package/dist/commands/managedGateway/delete.d.ts.map +1 -0
  147. package/dist/commands/managedGateway/delete.js +57 -0
  148. package/dist/commands/managedGateway/get.d.ts +4 -0
  149. package/dist/commands/managedGateway/get.d.ts.map +1 -0
  150. package/dist/commands/managedGateway/get.js +71 -0
  151. package/dist/commands/managedGateway/haproxy-stats.d.ts +6 -0
  152. package/dist/commands/managedGateway/haproxy-stats.d.ts.map +1 -0
  153. package/dist/commands/managedGateway/haproxy-stats.js +131 -0
  154. package/dist/commands/managedGateway/list.d.ts +4 -0
  155. package/dist/commands/managedGateway/list.d.ts.map +1 -0
  156. package/dist/commands/managedGateway/list.js +50 -0
  157. package/dist/commands/managedGateway/logs.d.ts +10 -0
  158. package/dist/commands/managedGateway/logs.d.ts.map +1 -0
  159. package/dist/commands/managedGateway/logs.js +100 -0
  160. package/dist/commands/managedGateway/reboot.d.ts +5 -0
  161. package/dist/commands/managedGateway/reboot.d.ts.map +1 -0
  162. package/dist/commands/managedGateway/reboot.js +95 -0
  163. package/dist/commands/managedGateway/resync.d.ts +10 -0
  164. package/dist/commands/managedGateway/resync.d.ts.map +1 -0
  165. package/dist/commands/managedGateway/resync.js +69 -0
  166. package/dist/commands/managedGateway/ssh.d.ts +4 -0
  167. package/dist/commands/managedGateway/ssh.d.ts.map +1 -0
  168. package/dist/commands/managedGateway/ssh.js +130 -0
  169. package/dist/commands/managedGateway/wipe-logs.d.ts +4 -0
  170. package/dist/commands/managedGateway/wipe-logs.d.ts.map +1 -0
  171. package/dist/commands/managedGateway/wipe-logs.js +67 -0
  172. package/dist/commands/managedGateway/wireguard.d.ts +4 -0
  173. package/dist/commands/managedGateway/wireguard.d.ts.map +1 -0
  174. package/dist/commands/managedGateway/wireguard.js +68 -0
  175. package/dist/commands/managedGateway.d.ts.map +1 -1
  176. package/dist/commands/managedGateway.js +61 -117
  177. package/dist/commands/utils/config-validator.d.ts +5 -5
  178. package/dist/commands/utils/config-validator.d.ts.map +1 -1
  179. package/dist/commands/utils/config-validator.js +8 -8
  180. package/dist/commands/utils/output-formatter.js +1 -1
  181. package/dist/config/app-config.d.ts +1 -1
  182. package/dist/config/app-config.js +2 -2
  183. package/dist/index.js +0 -3
  184. package/dist/services/LocalAgentManager.d.ts.map +1 -1
  185. package/dist/services/LocalAgentManager.js +4 -2
  186. package/dist/services/agentDeployment/AgentDeploymentService.d.ts +35 -0
  187. package/dist/services/agentDeployment/AgentDeploymentService.d.ts.map +1 -0
  188. package/dist/services/agentDeployment/AgentDeploymentService.js +35 -0
  189. package/dist/services/application/ApplicationService.d.ts +5 -4
  190. package/dist/services/application/ApplicationService.d.ts.map +1 -1
  191. package/dist/services/application/ApplicationService.js +22 -35
  192. package/dist/services/auth/AuthService.d.ts +5 -5
  193. package/dist/services/auth/AuthService.d.ts.map +1 -1
  194. package/dist/services/auth/AuthService.js +11 -58
  195. package/dist/services/daemon/DaemonManagerFactory.d.ts +2 -0
  196. package/dist/services/daemon/DaemonManagerFactory.d.ts.map +1 -1
  197. package/dist/services/daemon/DaemonManagerFactory.js +14 -6
  198. package/dist/services/diagnostics/DiagnosticsService.d.ts +89 -0
  199. package/dist/services/diagnostics/DiagnosticsService.d.ts.map +1 -0
  200. package/dist/services/diagnostics/DiagnosticsService.js +37 -0
  201. package/dist/services/edgible.d.ts +6 -4
  202. package/dist/services/edgible.d.ts.map +1 -1
  203. package/dist/services/edgible.js +36 -86
  204. package/dist/services/gateway/GatewayService.d.ts +5 -6
  205. package/dist/services/gateway/GatewayService.d.ts.map +1 -1
  206. package/dist/services/gateway/GatewayService.js +22 -36
  207. package/dist/services/instances.d.ts +34 -0
  208. package/dist/services/instances.d.ts.map +1 -0
  209. package/dist/services/instances.js +64 -0
  210. package/dist/services/managedGateway/ManagedGatewayService.d.ts +75 -0
  211. package/dist/services/managedGateway/ManagedGatewayService.d.ts.map +1 -0
  212. package/dist/services/managedGateway/ManagedGatewayService.js +44 -0
  213. package/dist/services/token/TokenManager.d.ts +56 -0
  214. package/dist/services/token/TokenManager.d.ts.map +1 -0
  215. package/dist/services/token/TokenManager.js +85 -0
  216. package/dist/types/validation/schemas.d.ts +22 -22
  217. package/dist/utils/PlatformDetector.d.ts +2 -0
  218. package/dist/utils/PlatformDetector.d.ts.map +1 -1
  219. package/dist/utils/PlatformDetector.js +5 -34
  220. package/dist/validation/schemas.d.ts +6 -6
  221. package/package.json +1 -1
@@ -0,0 +1,334 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.handleApplicationCreateDockerCompose = handleApplicationCreateDockerCompose;
40
+ const inquirer_1 = __importDefault(require("inquirer"));
41
+ const chalk_1 = __importDefault(require("chalk"));
42
+ const child_process_1 = require("child_process");
43
+ const path = __importStar(require("path"));
44
+ const instances_1 = require("../../services/instances");
45
+ const config_validator_1 = require("../utils/config-validator");
46
+ const input_parser_1 = require("../utils/input-parser");
47
+ const sudo_checker_1 = require("../../utils/sudo-checker");
48
+ const docker_compose_parser_1 = require("../../utils/docker-compose-parser");
49
+ async function handleApplicationCreateDockerCompose(options) {
50
+ (0, config_validator_1.validateConfig)(instances_1.configManager, {
51
+ requireAuth: true,
52
+ requireOrganization: true,
53
+ });
54
+ // Check sudo permissions
55
+ if (!(0, sudo_checker_1.checkSudoPermissions)()) {
56
+ console.log(chalk_1.default.yellow('⚠ Warning: Not running as sudo. Docker commands may fail without proper permissions.'));
57
+ }
58
+ // Find docker-compose file
59
+ let composeFilePath;
60
+ try {
61
+ composeFilePath = (0, docker_compose_parser_1.findDockerComposeFile)(options.composeFile);
62
+ }
63
+ catch (error) {
64
+ throw new Error(`Failed to find docker-compose file: ${error instanceof Error ? error.message : 'Unknown error'}`);
65
+ }
66
+ if (!composeFilePath) {
67
+ throw new Error('Docker compose file not found. Please provide --compose-file or ensure docker-compose.yml or docker-compose.yaml exists in the current directory.');
68
+ }
69
+ console.log(chalk_1.default.blue(`Using docker-compose file: ${composeFilePath}`));
70
+ console.log(chalk_1.default.gray('Note: Using Docker Compose v2 (docker compose command)'));
71
+ // Parse compose file
72
+ let composeData;
73
+ try {
74
+ composeData = (0, docker_compose_parser_1.parseDockerComposeFile)(composeFilePath);
75
+ }
76
+ catch (error) {
77
+ throw new Error(`Failed to parse docker-compose file: ${error instanceof Error ? error.message : 'Unknown error'}`);
78
+ }
79
+ if (composeData.containers.length === 0) {
80
+ throw new Error('No containers with exposed ports found in docker-compose file');
81
+ }
82
+ // Build port selection choices
83
+ const portChoices = [];
84
+ for (const containerInfo of composeData.containers) {
85
+ for (const portInfo of containerInfo.ports) {
86
+ portChoices.push({
87
+ name: `${containerInfo.name}:${portInfo.host}->${portInfo.container}/${portInfo.protocol}`,
88
+ value: { container: containerInfo.name, port: portInfo.host },
89
+ });
90
+ }
91
+ }
92
+ if (portChoices.length === 0) {
93
+ throw new Error('No ports found in docker-compose file');
94
+ }
95
+ // Get application name
96
+ let appName = options.name;
97
+ if (!appName && !options.noInteractive) {
98
+ const { name } = await inquirer_1.default.prompt([
99
+ {
100
+ type: 'input',
101
+ name: 'name',
102
+ message: 'Enter application name:',
103
+ validate: (i) => !!i.trim() || 'Application name is required',
104
+ },
105
+ ]);
106
+ appName = name.trim();
107
+ }
108
+ if (!appName) {
109
+ throw new Error('Application name is required');
110
+ }
111
+ // Select port
112
+ let selectedPort;
113
+ let selectedContainer;
114
+ if (!options.noInteractive) {
115
+ const { selected } = await inquirer_1.default.prompt([
116
+ {
117
+ type: 'list',
118
+ name: 'selected',
119
+ message: 'Select container and port to expose:',
120
+ choices: portChoices,
121
+ },
122
+ ]);
123
+ selectedPort = selected.port;
124
+ selectedContainer = selected.container;
125
+ }
126
+ else {
127
+ // In non-interactive mode, use first available port
128
+ selectedPort = portChoices[0].value.port;
129
+ selectedContainer = portChoices[0].value.container;
130
+ }
131
+ // Description
132
+ const description = options.description || `Application for ${appName} (docker-compose: ${selectedContainer})`;
133
+ // Device IDs and Gateway IDs
134
+ let deviceId = options.deviceId;
135
+ let gatewayIds = (0, input_parser_1.parseGatewayIds)(options.gatewayIds);
136
+ let hostnames = Array.isArray(options.hostnames)
137
+ ? options.hostnames
138
+ : (typeof options.hostnames === 'string' && options.hostnames.trim().length > 0
139
+ ? options.hostnames.split(',').map(s => s.trim()).filter(Boolean)
140
+ : []);
141
+ let useManagedGateway = false;
142
+ if (!options.noInteractive) {
143
+ // Optional: prompt for additional hostnames
144
+ const { addHostnames } = await inquirer_1.default.prompt([
145
+ {
146
+ type: 'input',
147
+ name: 'addHostnames',
148
+ message: 'Additional hostnames (comma-separated, optional):',
149
+ when: () => hostnames.length === 0,
150
+ },
151
+ ]);
152
+ if (addHostnames && typeof addHostnames === 'string') {
153
+ hostnames = addHostnames.split(',').map((s) => s.trim()).filter((s) => s.length > 0);
154
+ }
155
+ // Prompt for managed gateway option
156
+ if (gatewayIds.length === 0) {
157
+ const { useManaged } = await inquirer_1.default.prompt([
158
+ {
159
+ type: 'confirm',
160
+ name: 'useManaged',
161
+ message: 'Use Edgible managed gateway?',
162
+ default: false,
163
+ },
164
+ ]);
165
+ useManagedGateway = useManaged;
166
+ if (!useManagedGateway) {
167
+ // Ask if they want to assign a gateway at all
168
+ const { assignGateway } = await inquirer_1.default.prompt([
169
+ {
170
+ type: 'confirm',
171
+ name: 'assignGateway',
172
+ message: 'Assign a gateway to this application? (No = local/internal access only)',
173
+ default: true,
174
+ },
175
+ ]);
176
+ if (assignGateway) {
177
+ // Try to offer a list of gateways (via service), else fallback to manual input
178
+ try {
179
+ const gatewaysResp = await instances_1.gatewayService.listGateways();
180
+ const gatewayChoices = gatewaysResp.gateways.map((g) => ({
181
+ name: `${g.device.name} (${g.device.id})`,
182
+ value: g.device.id,
183
+ }));
184
+ if (gatewayChoices.length > 0) {
185
+ const { selectedGateways } = await inquirer_1.default.prompt([
186
+ {
187
+ type: 'checkbox',
188
+ name: 'selectedGateways',
189
+ message: 'Select gateway device(s):',
190
+ choices: gatewayChoices,
191
+ validate: (vals) => vals.length > 0 ? true : 'Select at least one gateway',
192
+ },
193
+ ]);
194
+ gatewayIds = selectedGateways;
195
+ }
196
+ }
197
+ catch (error) {
198
+ instances_1.logger.warn('Failed to list gateways', error);
199
+ }
200
+ if (gatewayIds.length === 0) {
201
+ const ans2 = await inquirer_1.default.prompt([
202
+ {
203
+ type: 'input',
204
+ name: 'gatewayIds',
205
+ message: 'Enter comma-separated gateway device IDs (or leave empty for no gateway):',
206
+ validate: (v) => true, // Allow empty input
207
+ },
208
+ ]);
209
+ if (ans2.gatewayIds && ans2.gatewayIds.trim()) {
210
+ gatewayIds = (0, input_parser_1.parseGatewayIds)(ans2.gatewayIds);
211
+ }
212
+ }
213
+ }
214
+ else {
215
+ instances_1.logger.info('Application will be created without gateway assignment (local/internal access only)');
216
+ }
217
+ }
218
+ }
219
+ // Serving device selection
220
+ if (!deviceId) {
221
+ try {
222
+ const servingDevicesResp = await instances_1.edgibleService.listServingDevices();
223
+ const servingDeviceChoices = Array.isArray(servingDevicesResp?.devices)
224
+ ? servingDevicesResp.devices.map((d) => ({
225
+ name: `${d.name || d.id}${d.description ? ` - ${d.description}` : ''}`,
226
+ value: d.id,
227
+ }))
228
+ : [];
229
+ if (servingDeviceChoices.length > 0) {
230
+ const { selectedDeviceId } = await inquirer_1.default.prompt([
231
+ {
232
+ type: 'list',
233
+ name: 'selectedDeviceId',
234
+ message: 'Select serving device:',
235
+ choices: servingDeviceChoices,
236
+ },
237
+ ]);
238
+ deviceId = selectedDeviceId;
239
+ }
240
+ else {
241
+ // Fallback to manual input if no serving devices found
242
+ const ans = await inquirer_1.default.prompt([
243
+ {
244
+ type: 'input',
245
+ name: 'deviceId',
246
+ message: 'Enter serving device ID:',
247
+ validate: (v) => v && v.trim().length > 0 ? true : 'Serving device ID is required',
248
+ },
249
+ ]);
250
+ deviceId = String(ans.deviceId).trim();
251
+ }
252
+ }
253
+ catch (error) {
254
+ instances_1.logger.warn('Failed to list serving devices', error);
255
+ // Fallback to manual input if listing fails
256
+ const ans = await inquirer_1.default.prompt([
257
+ {
258
+ type: 'input',
259
+ name: 'deviceId',
260
+ message: 'Enter serving device ID:',
261
+ validate: (v) => v && v.trim().length > 0 ? true : 'Serving device ID is required',
262
+ },
263
+ ]);
264
+ deviceId = String(ans.deviceId).trim();
265
+ }
266
+ }
267
+ }
268
+ if (!deviceId) {
269
+ throw new Error('--device-id (serving) is required');
270
+ }
271
+ if (!useManagedGateway && gatewayIds.length === 0) {
272
+ instances_1.logger.warn('No gateways assigned - application will only be accessible locally/internally');
273
+ }
274
+ // Run docker compose up
275
+ console.log(chalk_1.default.blue(`\nRunning docker compose up...`));
276
+ try {
277
+ const composeDir = path.dirname(composeFilePath);
278
+ const composeFileName = path.basename(composeFilePath);
279
+ (0, child_process_1.execSync)(`docker compose -f "${composeFileName}" up -d`, {
280
+ cwd: composeDir,
281
+ stdio: 'inherit',
282
+ });
283
+ console.log(chalk_1.default.green('✓ Docker compose up completed successfully'));
284
+ }
285
+ catch (error) {
286
+ console.log(chalk_1.default.red('✗ Docker compose up failed'));
287
+ throw new Error(`Failed to run docker compose up: ${error instanceof Error ? error.message : 'Unknown error'}`);
288
+ }
289
+ // Create application
290
+ instances_1.logger.info('Creating application', {
291
+ name: appName,
292
+ port: selectedPort,
293
+ protocol: 'https',
294
+ deviceId,
295
+ gatewayIds,
296
+ subtype: 'docker-compose',
297
+ });
298
+ console.log(chalk_1.default.blue(`\nCreating application: ${appName}`));
299
+ console.log(chalk_1.default.gray(`Port: ${selectedPort}`));
300
+ console.log(chalk_1.default.gray(`Protocol: HTTPS`));
301
+ console.log(chalk_1.default.gray(`Container: ${selectedContainer}`));
302
+ console.log(chalk_1.default.gray(`Serving device: ${deviceId}`));
303
+ if (useManagedGateway) {
304
+ console.log(chalk_1.default.gray(`Using Edgible managed gateway`));
305
+ }
306
+ else {
307
+ console.log(chalk_1.default.gray(`Gateways: ${gatewayIds.join(', ')}`));
308
+ }
309
+ if (hostnames.length > 0) {
310
+ console.log(chalk_1.default.gray(`Additional hostnames: ${hostnames.join(', ')}`));
311
+ }
312
+ const result = await instances_1.applicationService.createApplicationProgrammatically({
313
+ name: appName,
314
+ description,
315
+ port: selectedPort,
316
+ protocol: 'https',
317
+ hostnames,
318
+ deviceIds: [deviceId],
319
+ gatewayIds: useManagedGateway ? undefined : gatewayIds,
320
+ useManagedGateway,
321
+ subtype: 'docker-compose',
322
+ });
323
+ console.log(chalk_1.default.green('\n✓ Application created successfully!'));
324
+ console.log(chalk_1.default.blue('\n📋 Application Details:'));
325
+ if (result && typeof result === 'object' && 'name' in result) {
326
+ const app = result;
327
+ console.log(chalk_1.default.white(` Name: ${app.name}`));
328
+ console.log(chalk_1.default.white(` ID: ${app.id}`));
329
+ if (app.url)
330
+ console.log(chalk_1.default.white(` URL: ${chalk_1.default.cyan.bold(app.url)}`));
331
+ console.log(chalk_1.default.white(` Status: ${app.status}`));
332
+ }
333
+ }
334
+ //# sourceMappingURL=create-docker-compose.js.map
@@ -0,0 +1,14 @@
1
+ export declare function handleApplicationCreateExisting(options: {
2
+ name?: string;
3
+ description?: string;
4
+ port?: string;
5
+ protocol?: string;
6
+ httpsUpgrade?: boolean;
7
+ deviceId?: string;
8
+ gatewayIds?: string;
9
+ hostnames?: string;
10
+ requireOrgAuth?: boolean;
11
+ allowedOrgs?: string;
12
+ noInteractive?: boolean;
13
+ }): Promise<void>;
14
+ //# sourceMappingURL=create-existing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-existing.d.ts","sourceRoot":"","sources":["../../../src/commands/application/create-existing.ts"],"names":[],"mappings":"AASA,wBAAsB,+BAA+B,CAAC,OAAO,EAAE;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuWhB"}