@edgible-team/cli 1.2.13 → 1.2.17

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 (219) hide show
  1. package/README.md +5 -3
  2. package/dist/client/api-client.d.ts +13 -1
  3. package/dist/client/api-client.d.ts.map +1 -1
  4. package/dist/client/api-client.js +19 -0
  5. package/dist/commands/agent/install.d.ts +2 -1
  6. package/dist/commands/agent/install.d.ts.map +1 -1
  7. package/dist/commands/agent/install.js +24 -7
  8. package/dist/commands/agent/start.d.ts +5 -1
  9. package/dist/commands/agent/start.d.ts.map +1 -1
  10. package/dist/commands/agent/start.js +19 -280
  11. package/dist/commands/agent/uninstall.d.ts.map +1 -1
  12. package/dist/commands/agent/uninstall.js +14 -7
  13. package/dist/commands/agent.d.ts.map +1 -1
  14. package/dist/commands/agent.js +3 -2
  15. package/dist/commands/ai/setup.d.ts +1 -1
  16. package/dist/commands/ai/setup.d.ts.map +1 -1
  17. package/dist/commands/ai.js +1 -1
  18. package/dist/commands/application/create-docker-compose.d.ts +3 -1
  19. package/dist/commands/application/create-docker-compose.d.ts.map +1 -1
  20. package/dist/commands/application/create-docker-compose.js +25 -69
  21. package/dist/commands/application/create-existing.d.ts +2 -2
  22. package/dist/commands/application/create-existing.d.ts.map +1 -1
  23. package/dist/commands/application/create-existing.js +27 -132
  24. package/dist/commands/application/create-managed-process.d.ts +3 -1
  25. package/dist/commands/application/create-managed-process.d.ts.map +1 -1
  26. package/dist/commands/application/create-managed-process.js +31 -75
  27. package/dist/commands/application/delete.d.ts +2 -1
  28. package/dist/commands/application/delete.d.ts.map +1 -1
  29. package/dist/commands/application/delete.js +19 -5
  30. package/dist/commands/application/update.d.ts +3 -0
  31. package/dist/commands/application/update.d.ts.map +1 -1
  32. package/dist/commands/application/update.js +45 -1
  33. package/dist/commands/application.d.ts.map +1 -1
  34. package/dist/commands/application.js +33 -19
  35. package/dist/commands/auth.d.ts.map +1 -1
  36. package/dist/commands/auth.js +44 -0
  37. package/dist/commands/debug.js +1 -1
  38. package/dist/commands/device/application-health.d.ts +7 -0
  39. package/dist/commands/device/application-health.d.ts.map +1 -0
  40. package/dist/commands/device/application-health.js +103 -0
  41. package/dist/commands/device/delete.d.ts +7 -0
  42. package/dist/commands/device/delete.d.ts.map +1 -0
  43. package/dist/commands/device/delete.js +69 -0
  44. package/dist/commands/device/health.d.ts +7 -0
  45. package/dist/commands/device/health.d.ts.map +1 -0
  46. package/dist/commands/device/health.js +78 -0
  47. package/dist/commands/device/list.d.ts +5 -0
  48. package/dist/commands/device/list.d.ts.map +1 -0
  49. package/dist/commands/device/list.js +46 -0
  50. package/dist/commands/device/telemetry.d.ts +8 -0
  51. package/dist/commands/device/telemetry.d.ts.map +1 -0
  52. package/dist/commands/device/telemetry.js +59 -0
  53. package/dist/commands/device.d.ts +6 -0
  54. package/dist/commands/device.d.ts.map +1 -0
  55. package/dist/commands/device.js +86 -0
  56. package/dist/commands/stack/deploy.d.ts +8 -0
  57. package/dist/commands/stack/deploy.d.ts.map +1 -0
  58. package/dist/commands/stack/deploy.js +61 -0
  59. package/dist/commands/stack/diff.d.ts +7 -0
  60. package/dist/commands/stack/diff.d.ts.map +1 -0
  61. package/dist/commands/stack/diff.js +66 -0
  62. package/dist/commands/stack/status.d.ts +9 -0
  63. package/dist/commands/stack/status.d.ts.map +1 -0
  64. package/dist/commands/stack/status.js +55 -0
  65. package/dist/commands/stack/teardown.d.ts +8 -0
  66. package/dist/commands/stack/teardown.d.ts.map +1 -0
  67. package/dist/commands/stack/teardown.js +107 -0
  68. package/dist/commands/stack/validate.d.ts +7 -0
  69. package/dist/commands/stack/validate.d.ts.map +1 -0
  70. package/dist/commands/stack/validate.js +44 -0
  71. package/dist/commands/stack.d.ts +10 -0
  72. package/dist/commands/stack.d.ts.map +1 -0
  73. package/dist/commands/stack.js +117 -0
  74. package/dist/commands/utils/auth-prompt.d.ts +25 -0
  75. package/dist/commands/utils/auth-prompt.d.ts.map +1 -0
  76. package/dist/commands/utils/auth-prompt.js +115 -0
  77. package/dist/commands/utils/device-prompt.d.ts +18 -0
  78. package/dist/commands/utils/device-prompt.d.ts.map +1 -0
  79. package/dist/commands/utils/device-prompt.js +58 -0
  80. package/dist/commands/utils/output-formatter.d.ts +13 -0
  81. package/dist/commands/utils/output-formatter.d.ts.map +1 -1
  82. package/dist/commands/utils/output-formatter.js +21 -0
  83. package/dist/index.js +4 -0
  84. package/dist/services/LocalAgentManager.d.ts +2 -1
  85. package/dist/services/LocalAgentManager.d.ts.map +1 -1
  86. package/dist/services/LocalAgentManager.js +6 -4
  87. package/dist/services/application/ApplicationService.d.ts +19 -0
  88. package/dist/services/application/ApplicationService.d.ts.map +1 -1
  89. package/dist/services/application/ApplicationService.js +14 -1
  90. package/dist/services/device/DeviceService.d.ts +62 -0
  91. package/dist/services/device/DeviceService.d.ts.map +1 -0
  92. package/dist/services/device/DeviceService.js +235 -0
  93. package/dist/services/edgible.d.ts +3 -1
  94. package/dist/services/edgible.d.ts.map +1 -1
  95. package/dist/services/edgible.js +5 -4
  96. package/dist/services/instances.d.ts +27 -1
  97. package/dist/services/instances.d.ts.map +1 -1
  98. package/dist/services/instances.js +53 -4
  99. package/dist/services/stack/DependencyGraphManager.d.ts +69 -0
  100. package/dist/services/stack/DependencyGraphManager.d.ts.map +1 -0
  101. package/dist/services/stack/DependencyGraphManager.js +204 -0
  102. package/dist/services/stack/DeviceResolver.d.ts +63 -0
  103. package/dist/services/stack/DeviceResolver.d.ts.map +1 -0
  104. package/dist/services/stack/DeviceResolver.js +147 -0
  105. package/dist/services/stack/GatewayResolver.d.ts +84 -0
  106. package/dist/services/stack/GatewayResolver.d.ts.map +1 -0
  107. package/dist/services/stack/GatewayResolver.js +179 -0
  108. package/dist/services/stack/StackParser.d.ts +38 -0
  109. package/dist/services/stack/StackParser.d.ts.map +1 -0
  110. package/dist/services/stack/StackParser.js +234 -0
  111. package/dist/services/stack/StackService.d.ts +76 -0
  112. package/dist/services/stack/StackService.d.ts.map +1 -0
  113. package/dist/services/stack/StackService.js +476 -0
  114. package/dist/types/AgentConfig.d.ts +26 -0
  115. package/dist/types/AgentConfig.d.ts.map +1 -1
  116. package/dist/types/ApiRequests.d.ts +5 -1
  117. package/dist/types/ApiRequests.d.ts.map +1 -1
  118. package/dist/types/ApiResponses.d.ts +5 -0
  119. package/dist/types/ApiResponses.d.ts.map +1 -1
  120. package/dist/types/JobTypes.d.ts +103 -0
  121. package/dist/types/JobTypes.d.ts.map +1 -0
  122. package/dist/types/JobTypes.js +80 -0
  123. package/dist/types/WebSocketMessages.d.ts +89 -0
  124. package/dist/types/WebSocketMessages.d.ts.map +1 -0
  125. package/dist/types/WebSocketMessages.js +5 -0
  126. package/dist/types/backendJobs.d.ts +102 -0
  127. package/dist/types/backendJobs.d.ts.map +1 -0
  128. package/dist/types/backendJobs.js +5 -0
  129. package/dist/types/models/ApplicationData.d.ts +1 -1
  130. package/dist/types/models/ApplicationData.d.ts.map +1 -1
  131. package/dist/types/models/DeviceData.d.ts +4 -0
  132. package/dist/types/models/DeviceData.d.ts.map +1 -1
  133. package/dist/types/stack.d.ts +191 -0
  134. package/dist/types/stack.d.ts.map +1 -0
  135. package/dist/types/stack.js +5 -0
  136. package/dist/types/validation/schemas.d.ts +20 -20
  137. package/dist/types/validation/schemas.js +1 -1
  138. package/dist/utils/stack-errors.d.ts +103 -0
  139. package/dist/utils/stack-errors.d.ts.map +1 -0
  140. package/dist/utils/stack-errors.js +158 -0
  141. package/dist/utils/stack-file.d.ts +11 -0
  142. package/dist/utils/stack-file.d.ts.map +1 -0
  143. package/dist/utils/stack-file.js +66 -0
  144. package/dist/validation/stack-schemas.d.ts +535 -0
  145. package/dist/validation/stack-schemas.d.ts.map +1 -0
  146. package/dist/validation/stack-schemas.js +178 -0
  147. package/package.json +4 -2
  148. package/dist/commands/agent/agent-handlers.d.ts +0 -45
  149. package/dist/commands/agent/agent-handlers.d.ts.map +0 -1
  150. package/dist/commands/agent/agent-handlers.js +0 -1159
  151. package/dist/commands/application/api-keys.d.ts +0 -3
  152. package/dist/commands/application/api-keys.d.ts.map +0 -1
  153. package/dist/commands/application/api-keys.js +0 -227
  154. package/dist/commands/application/create-compose.d.ts +0 -3
  155. package/dist/commands/application/create-compose.d.ts.map +0 -1
  156. package/dist/commands/application/create-compose.js +0 -381
  157. package/dist/commands/application/create-interactive.d.ts +0 -3
  158. package/dist/commands/application/create-interactive.d.ts.map +0 -1
  159. package/dist/commands/application/create-interactive.js +0 -326
  160. package/dist/commands/application/create-workload.d.ts +0 -5
  161. package/dist/commands/application/create-workload.d.ts.map +0 -1
  162. package/dist/commands/application/create-workload.js +0 -48
  163. package/dist/commands/application/short-codes.d.ts +0 -3
  164. package/dist/commands/application/short-codes.d.ts.map +0 -1
  165. package/dist/commands/application/short-codes.js +0 -226
  166. package/dist/commands/application/toggle.d.ts +0 -2
  167. package/dist/commands/application/toggle.d.ts.map +0 -1
  168. package/dist/commands/application/toggle.js +0 -78
  169. package/dist/commands/examples/migrated-command-example.d.ts +0 -31
  170. package/dist/commands/examples/migrated-command-example.d.ts.map +0 -1
  171. package/dist/commands/examples/migrated-command-example.js +0 -180
  172. package/dist/commands/managedGateway/create.d.ts +0 -6
  173. package/dist/commands/managedGateway/create.d.ts.map +0 -1
  174. package/dist/commands/managedGateway/create.js +0 -50
  175. package/dist/commands/managedGateway/delete.d.ts +0 -5
  176. package/dist/commands/managedGateway/delete.d.ts.map +0 -1
  177. package/dist/commands/managedGateway/delete.js +0 -57
  178. package/dist/commands/managedGateway/get.d.ts +0 -4
  179. package/dist/commands/managedGateway/get.d.ts.map +0 -1
  180. package/dist/commands/managedGateway/get.js +0 -71
  181. package/dist/commands/managedGateway/haproxy-stats.d.ts +0 -6
  182. package/dist/commands/managedGateway/haproxy-stats.d.ts.map +0 -1
  183. package/dist/commands/managedGateway/haproxy-stats.js +0 -131
  184. package/dist/commands/managedGateway/list.d.ts +0 -4
  185. package/dist/commands/managedGateway/list.d.ts.map +0 -1
  186. package/dist/commands/managedGateway/list.js +0 -50
  187. package/dist/commands/managedGateway/logs.d.ts +0 -10
  188. package/dist/commands/managedGateway/logs.d.ts.map +0 -1
  189. package/dist/commands/managedGateway/logs.js +0 -100
  190. package/dist/commands/managedGateway/reboot.d.ts +0 -5
  191. package/dist/commands/managedGateway/reboot.d.ts.map +0 -1
  192. package/dist/commands/managedGateway/reboot.js +0 -95
  193. package/dist/commands/managedGateway/resync.d.ts +0 -10
  194. package/dist/commands/managedGateway/resync.d.ts.map +0 -1
  195. package/dist/commands/managedGateway/resync.js +0 -69
  196. package/dist/commands/managedGateway/ssh.d.ts +0 -4
  197. package/dist/commands/managedGateway/ssh.d.ts.map +0 -1
  198. package/dist/commands/managedGateway/ssh.js +0 -130
  199. package/dist/commands/managedGateway/wipe-logs.d.ts +0 -4
  200. package/dist/commands/managedGateway/wipe-logs.d.ts.map +0 -1
  201. package/dist/commands/managedGateway/wipe-logs.js +0 -67
  202. package/dist/commands/managedGateway/wireguard.d.ts +0 -4
  203. package/dist/commands/managedGateway/wireguard.d.ts.map +0 -1
  204. package/dist/commands/managedGateway/wireguard.js +0 -68
  205. package/dist/di/bindings.d.ts +0 -15
  206. package/dist/di/bindings.d.ts.map +0 -1
  207. package/dist/di/bindings.js +0 -99
  208. package/dist/di/container.d.ts +0 -44
  209. package/dist/di/container.d.ts.map +0 -1
  210. package/dist/di/container.js +0 -88
  211. package/dist/di/types.d.ts +0 -23
  212. package/dist/di/types.d.ts.map +0 -1
  213. package/dist/di/types.js +0 -32
  214. package/dist/repositories/config-repository.d.ts +0 -46
  215. package/dist/repositories/config-repository.d.ts.map +0 -1
  216. package/dist/repositories/config-repository.js +0 -62
  217. package/dist/repositories/gateway-repository.d.ts +0 -37
  218. package/dist/repositories/gateway-repository.d.ts.map +0 -1
  219. package/dist/repositories/gateway-repository.js +0 -35
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ /**
3
+ * Stack teardown command handler
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.handleStackTeardown = handleStackTeardown;
43
+ const chalk_1 = __importDefault(require("chalk"));
44
+ const readline = __importStar(require("readline"));
45
+ const instances_1 = require("../../services/instances");
46
+ const stack_file_1 = require("../../utils/stack-file");
47
+ async function promptConfirmation(message) {
48
+ const rl = readline.createInterface({
49
+ input: process.stdin,
50
+ output: process.stdout,
51
+ });
52
+ return new Promise((resolve) => {
53
+ rl.question(message + ' (yes/no): ', (answer) => {
54
+ rl.close();
55
+ resolve(answer.toLowerCase() === 'yes' || answer.toLowerCase() === 'y');
56
+ });
57
+ });
58
+ }
59
+ async function handleStackTeardown(options) {
60
+ const { stackService, logger } = (0, instances_1.getServiceInstances)();
61
+ try {
62
+ const file = (0, stack_file_1.findStackFile)(options.file);
63
+ const teardownOptions = { ...options, file };
64
+ logger.info(`Tearing down stack from: ${file}`);
65
+ // Prompt for confirmation unless --force
66
+ if (!options.force) {
67
+ const confirmed = await promptConfirmation(chalk_1.default.yellow('\n⚠ This will remove all applications in the stack. Continue?'));
68
+ if (!confirmed) {
69
+ console.log(chalk_1.default.gray('Teardown cancelled.'));
70
+ return;
71
+ }
72
+ }
73
+ const result = await stackService.teardownStack(teardownOptions);
74
+ // Display results
75
+ console.log('\n' + chalk_1.default.bold('Teardown Results:'));
76
+ console.log(chalk_1.default.gray('─'.repeat(50)));
77
+ if (result.removed.length > 0) {
78
+ console.log(chalk_1.default.green('\n✓ Successfully removed:'));
79
+ for (const appName of result.removed) {
80
+ console.log(chalk_1.default.green(` - ${appName}`));
81
+ }
82
+ }
83
+ if (result.failed.length > 0) {
84
+ console.log(chalk_1.default.red('\n✗ Failed to remove:'));
85
+ for (const app of result.failed) {
86
+ console.log(chalk_1.default.red(` - ${app.name}: ${app.error}`));
87
+ }
88
+ }
89
+ if (result.skipped.length > 0) {
90
+ console.log(chalk_1.default.yellow('\n⊘ Skipped (not deployed):'));
91
+ for (const appName of result.skipped) {
92
+ console.log(chalk_1.default.yellow(` - ${appName}`));
93
+ }
94
+ }
95
+ console.log(chalk_1.default.gray('\n' + '─'.repeat(50)));
96
+ console.log(chalk_1.default.bold(`Total: ${result.removed.length} removed, ${result.failed.length} failed, ${result.skipped.length} skipped`));
97
+ if (!result.success) {
98
+ process.exit(1);
99
+ }
100
+ }
101
+ catch (error) {
102
+ logger.error(`Teardown error: ${error instanceof Error ? error.message : 'Unknown error'}`);
103
+ console.log(chalk_1.default.red(`\n✗ Teardown failed: ${error instanceof Error ? error.message : 'Unknown error'}`));
104
+ process.exit(1);
105
+ }
106
+ }
107
+ //# sourceMappingURL=teardown.js.map
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Stack validate command handler
3
+ */
4
+ export declare function handleStackValidate(options: {
5
+ file?: string;
6
+ }): Promise<void>;
7
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/commands/stack/validate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCnF"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ /**
3
+ * Stack validate command handler
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.handleStackValidate = handleStackValidate;
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const instances_1 = require("../../services/instances");
12
+ const stack_file_1 = require("../../utils/stack-file");
13
+ async function handleStackValidate(options) {
14
+ const { stackService, logger } = (0, instances_1.getServiceInstances)();
15
+ try {
16
+ const file = (0, stack_file_1.findStackFile)(options.file);
17
+ logger.info(`Validating stack file: ${file}`);
18
+ const result = await stackService.validateStack(file);
19
+ if (result.valid) {
20
+ console.log(chalk_1.default.green('✓ Stack validation passed'));
21
+ if (result.warnings.length > 0) {
22
+ console.log(chalk_1.default.yellow('\nWarnings:'));
23
+ for (const warning of result.warnings) {
24
+ console.log(chalk_1.default.yellow(` - ${warning.path}: ${warning.message}`));
25
+ }
26
+ }
27
+ }
28
+ else {
29
+ console.log(chalk_1.default.red('✗ Stack validation failed'));
30
+ console.log(chalk_1.default.red('\nErrors:'));
31
+ for (const error of result.errors) {
32
+ const location = error.line ? `${error.path} (line ${error.line})` : error.path;
33
+ console.log(chalk_1.default.red(` - ${location}: ${error.message}`));
34
+ }
35
+ process.exit(1);
36
+ }
37
+ }
38
+ catch (error) {
39
+ logger.error(`Validation error: ${error instanceof Error ? error.message : 'Unknown error'}`);
40
+ console.log(chalk_1.default.red(`\n✗ Validation failed: ${error instanceof Error ? error.message : 'Unknown error'}`));
41
+ process.exit(1);
42
+ }
43
+ }
44
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Stack command group
3
+ * Commands for managing application stacks
4
+ */
5
+ import { Command } from 'commander';
6
+ /**
7
+ * Setup stack commands
8
+ */
9
+ export declare function setupStackCommands(program: Command): void;
10
+ //# sourceMappingURL=stack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../../src/commands/stack.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiIzD"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ /**
3
+ * Stack command group
4
+ * Commands for managing application stacks
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.setupStackCommands = setupStackCommands;
8
+ const command_wrapper_1 = require("./base/command-wrapper");
9
+ const deploy_1 = require("./stack/deploy");
10
+ const teardown_1 = require("./stack/teardown");
11
+ const status_1 = require("./stack/status");
12
+ const validate_1 = require("./stack/validate");
13
+ const diff_1 = require("./stack/diff");
14
+ /**
15
+ * Setup stack commands
16
+ */
17
+ function setupStackCommands(program) {
18
+ const stackCommand = program
19
+ .command('stack')
20
+ .description('Manage application stacks (declarative multi-app deployments)');
21
+ // Deploy command
22
+ stackCommand
23
+ .command('deploy')
24
+ .description('Deploy or update applications from a stack file')
25
+ .option('-f, --file <path>', 'Path to stack file (default: edgible.yml in current directory)')
26
+ .option('--app <name>', 'Deploy only specified application')
27
+ .option('--dry-run', 'Show what would change without deploying')
28
+ .option('--skip-dependencies', "Don't deploy dependencies")
29
+ .option('--force', 'Force redeployment even if unchanged')
30
+ .addHelpText('after', `
31
+ Examples:
32
+ $ edgible stack deploy
33
+ $ edgible stack deploy -f production.yml
34
+ $ edgible stack deploy -f production.yml --app api-server
35
+ $ edgible stack deploy -f production.yml --dry-run
36
+ `)
37
+ .action((0, command_wrapper_1.wrapCommand)(async (options) => {
38
+ await (0, deploy_1.handleStackDeploy)(options);
39
+ }, {
40
+ requireAuth: true,
41
+ requireOrganization: true,
42
+ }));
43
+ // Teardown command
44
+ stackCommand
45
+ .command('teardown')
46
+ .description('Remove applications defined in a stack')
47
+ .option('-f, --file <path>', 'Path to stack file (default: edgible.yml in current directory)')
48
+ .option('--app <name>', 'Teardown only specified application')
49
+ .option('--force', 'Skip confirmation prompts')
50
+ .option('--keep-dependencies', "Don't teardown dependencies")
51
+ .addHelpText('after', `
52
+ Examples:
53
+ $ edgible stack teardown
54
+ $ edgible stack teardown -f production.yml
55
+ $ edgible stack teardown -f production.yml --app worker
56
+ $ edgible stack teardown -f production.yml --force
57
+ `)
58
+ .action((0, command_wrapper_1.wrapCommand)(async (options) => {
59
+ await (0, teardown_1.handleStackTeardown)(options);
60
+ }, {
61
+ requireAuth: true,
62
+ requireOrganization: true,
63
+ }));
64
+ // Status command
65
+ stackCommand
66
+ .command('status')
67
+ .description('Check the status of applications in a stack')
68
+ .option('-f, --file <path>', 'Path to stack file (default: edgible.yml in current directory)')
69
+ .option('--json', 'Output as JSON')
70
+ .option('--app <name>', 'Show status for specific application')
71
+ .addHelpText('after', `
72
+ Examples:
73
+ $ edgible stack status
74
+ $ edgible stack status -f production.yml
75
+ $ edgible stack status -f production.yml --json
76
+ $ edgible stack status -f production.yml --app database
77
+ `)
78
+ .action((0, command_wrapper_1.wrapCommand)(async (options) => {
79
+ await (0, status_1.handleStackStatus)(options);
80
+ }, {
81
+ requireAuth: true,
82
+ requireOrganization: true,
83
+ }));
84
+ // Validate command
85
+ stackCommand
86
+ .command('validate')
87
+ .description('Validate a stack file without deploying')
88
+ .option('-f, --file <path>', 'Path to stack file (default: edgible.yml in current directory)')
89
+ .addHelpText('after', `
90
+ Examples:
91
+ $ edgible stack validate
92
+ $ edgible stack validate -f production.yml
93
+ `)
94
+ .action((0, command_wrapper_1.wrapCommand)(async (options) => {
95
+ await (0, validate_1.handleStackValidate)(options);
96
+ }, {
97
+ requireAuth: false,
98
+ requireOrganization: false,
99
+ }));
100
+ // Diff command
101
+ stackCommand
102
+ .command('diff')
103
+ .description('Show differences between stack and deployed state')
104
+ .option('-f, --file <path>', 'Path to stack file (default: edgible.yml in current directory)')
105
+ .addHelpText('after', `
106
+ Examples:
107
+ $ edgible stack diff
108
+ $ edgible stack diff -f production.yml
109
+ `)
110
+ .action((0, command_wrapper_1.wrapCommand)(async (options) => {
111
+ await (0, diff_1.handleStackDiff)(options);
112
+ }, {
113
+ requireAuth: true,
114
+ requireOrganization: true,
115
+ }));
116
+ }
117
+ //# sourceMappingURL=stack.js.map
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Shared auth mode selection for application create flows.
3
+ * Uses authModes (none | org | api-key | org+api-key) instead of deprecated requireOrgAuth.
4
+ */
5
+ export type AuthModeChoice = 'none' | 'org' | 'api-key' | 'org-and-api-key';
6
+ export type AuthMode = 'none' | 'org' | 'api-key';
7
+ export interface AuthPromptResult {
8
+ authModes: AuthMode[];
9
+ allowedOrganizations?: string[];
10
+ }
11
+ /**
12
+ * Parse --auth-modes string (e.g. "org", "org,api-key") into AuthMode[].
13
+ * Used for non-interactive and flags.
14
+ */
15
+ export declare function parseAuthModes(value: string | undefined): AuthMode[] | undefined;
16
+ /**
17
+ * Prompt for auth mode (and optionally allowed orgs) in interactive mode.
18
+ * Returns authModes and allowedOrganizations (only when org is in authModes).
19
+ */
20
+ export declare function promptAuthModes(options: {
21
+ authModesFromFlag?: AuthMode[];
22
+ allowedOrgsFromFlag?: string[];
23
+ nonInteractive?: boolean;
24
+ }): Promise<AuthPromptResult>;
25
+ //# sourceMappingURL=auth-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-prompt.d.ts","sourceRoot":"","sources":["../../../src/commands/utils/auth-prompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,iBAAiB,CAAC;AAC5E,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;AAwBlD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,EAAE,GAAG,SAAS,CAahF;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgE5B"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ /**
3
+ * Shared auth mode selection for application create flows.
4
+ * Uses authModes (none | org | api-key | org+api-key) instead of deprecated requireOrgAuth.
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.parseAuthModes = parseAuthModes;
11
+ exports.promptAuthModes = promptAuthModes;
12
+ const inquirer_1 = __importDefault(require("inquirer"));
13
+ const AUTH_CHOICES = [
14
+ { name: 'None (public access)', value: 'none', short: 'None' },
15
+ { name: 'Organization (logged-in org members)', value: 'org', short: 'Org' },
16
+ { name: 'API key (programmatic access)', value: 'api-key', short: 'API key' },
17
+ { name: 'Organization + API key (either)', value: 'org-and-api-key', short: 'Org + API key' },
18
+ ];
19
+ function choiceToAuthModes(choice) {
20
+ switch (choice) {
21
+ case 'none':
22
+ return ['none'];
23
+ case 'org':
24
+ return ['org'];
25
+ case 'api-key':
26
+ return ['api-key'];
27
+ case 'org-and-api-key':
28
+ return ['org', 'api-key'];
29
+ default:
30
+ return ['none'];
31
+ }
32
+ }
33
+ /**
34
+ * Parse --auth-modes string (e.g. "org", "org,api-key") into AuthMode[].
35
+ * Used for non-interactive and flags.
36
+ */
37
+ function parseAuthModes(value) {
38
+ if (!value || !value.trim())
39
+ return undefined;
40
+ const parts = value.split(',').map((s) => s.trim().toLowerCase());
41
+ const valid = [];
42
+ for (const p of parts) {
43
+ if (p === 'none' || p === 'org' || p === 'api-key') {
44
+ if (p === 'none' && valid.length > 0)
45
+ continue;
46
+ if (p !== 'none' && valid.includes('none'))
47
+ valid.length = 0;
48
+ if (!valid.includes(p))
49
+ valid.push(p);
50
+ }
51
+ }
52
+ if (valid.length === 0)
53
+ return undefined;
54
+ return valid;
55
+ }
56
+ /**
57
+ * Prompt for auth mode (and optionally allowed orgs) in interactive mode.
58
+ * Returns authModes and allowedOrganizations (only when org is in authModes).
59
+ */
60
+ async function promptAuthModes(options) {
61
+ const { authModesFromFlag, allowedOrgsFromFlag, nonInteractive } = options;
62
+ if (nonInteractive) {
63
+ const authModes = authModesFromFlag && authModesFromFlag.length > 0 ? authModesFromFlag : ['none'];
64
+ return {
65
+ authModes,
66
+ allowedOrganizations: authModes.includes('org') && allowedOrgsFromFlag && allowedOrgsFromFlag.length > 0
67
+ ? allowedOrgsFromFlag
68
+ : undefined,
69
+ };
70
+ }
71
+ if (authModesFromFlag && authModesFromFlag.length > 0) {
72
+ const allowedOrganizations = authModesFromFlag.includes('org') && allowedOrgsFromFlag && allowedOrgsFromFlag.length > 0
73
+ ? allowedOrgsFromFlag
74
+ : undefined;
75
+ return { authModes: authModesFromFlag, allowedOrganizations };
76
+ }
77
+ const { authChoice } = await inquirer_1.default.prompt([
78
+ {
79
+ type: 'list',
80
+ name: 'authChoice',
81
+ message: 'How should access to this application be protected?',
82
+ choices: AUTH_CHOICES,
83
+ default: 'none',
84
+ },
85
+ ]);
86
+ const authModes = choiceToAuthModes(authChoice);
87
+ let allowedOrganizations;
88
+ if (authModes.includes('org')) {
89
+ const { allowOtherOrgs } = await inquirer_1.default.prompt([
90
+ {
91
+ type: 'confirm',
92
+ name: 'allowOtherOrgs',
93
+ message: 'Allow other organizations to access this application?',
94
+ default: false,
95
+ },
96
+ ]);
97
+ if (allowOtherOrgs) {
98
+ const { orgIds } = await inquirer_1.default.prompt([
99
+ {
100
+ type: 'input',
101
+ name: 'orgIds',
102
+ message: 'Enter comma-separated organization IDs to allow access:',
103
+ },
104
+ ]);
105
+ if (orgIds && typeof orgIds === 'string' && orgIds.trim()) {
106
+ allowedOrganizations = orgIds
107
+ .split(',')
108
+ .map((s) => s.trim())
109
+ .filter(Boolean);
110
+ }
111
+ }
112
+ }
113
+ return { authModes, allowedOrganizations };
114
+ }
115
+ //# sourceMappingURL=auth-prompt.js.map
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Shared device selection utilities
3
+ */
4
+ import type { DeviceService } from '../../services/device/DeviceService';
5
+ export interface DeviceSelectionOptions {
6
+ allowNone?: boolean;
7
+ message?: string;
8
+ required?: boolean;
9
+ }
10
+ /**
11
+ * Prompt user to select a device from available devices
12
+ */
13
+ export declare function promptDeviceSelection(deviceService: DeviceService, options?: DeviceSelectionOptions): Promise<string | null>;
14
+ /**
15
+ * Get device ID from option or prompt if not provided
16
+ */
17
+ export declare function getDeviceId(deviceService: DeviceService, providedId: string | undefined, options?: DeviceSelectionOptions): Promise<string | null>;
18
+ //# sourceMappingURL=device-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-prompt.d.ts","sourceRoot":"","sources":["../../../src/commands/utils/device-prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAGzE,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,aAAa,EAAE,aAAa,EAC5B,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsCxB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKxB"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ /**
3
+ * Shared device selection utilities
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.promptDeviceSelection = promptDeviceSelection;
10
+ exports.getDeviceId = getDeviceId;
11
+ const inquirer_1 = __importDefault(require("inquirer"));
12
+ const chalk_1 = __importDefault(require("chalk"));
13
+ /**
14
+ * Prompt user to select a device from available devices
15
+ */
16
+ async function promptDeviceSelection(deviceService, options = {}) {
17
+ const { allowNone = false, message = 'Select device:', required = true } = options;
18
+ const { devices } = await deviceService.listDevices();
19
+ if (devices.length === 0) {
20
+ if (allowNone) {
21
+ return null;
22
+ }
23
+ console.log(chalk_1.default.yellow('⚠ No devices found in organization'));
24
+ if (required) {
25
+ throw new Error('No devices available');
26
+ }
27
+ return null;
28
+ }
29
+ const choices = devices.map((d) => ({
30
+ name: `${d.name} (${d.id}) - ${d.type}`,
31
+ value: d.id,
32
+ }));
33
+ if (allowNone) {
34
+ choices.push({
35
+ name: 'None',
36
+ value: '',
37
+ });
38
+ }
39
+ const answer = await inquirer_1.default.prompt([
40
+ {
41
+ type: 'list',
42
+ name: 'deviceId',
43
+ message,
44
+ choices,
45
+ },
46
+ ]);
47
+ return answer.deviceId === '' ? null : answer.deviceId;
48
+ }
49
+ /**
50
+ * Get device ID from option or prompt if not provided
51
+ */
52
+ async function getDeviceId(deviceService, providedId, options = {}) {
53
+ if (providedId) {
54
+ return providedId;
55
+ }
56
+ return await promptDeviceSelection(deviceService, options);
57
+ }
58
+ //# sourceMappingURL=device-prompt.js.map
@@ -40,6 +40,19 @@ export declare function formatGateway(gateway: {
40
40
  };
41
41
  applicationCount?: number;
42
42
  }): string;
43
+ /**
44
+ * Format device output (for device list)
45
+ */
46
+ export declare function formatDevice(device: {
47
+ id: string;
48
+ name: string;
49
+ type: string;
50
+ status: string;
51
+ organizationId: string;
52
+ createdAt: string;
53
+ lastSeen?: string;
54
+ description?: string;
55
+ }): string;
43
56
  /**
44
57
  * Format list of items as table-like output
45
58
  */
@@ -1 +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;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,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"}
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;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,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,YAAY,CAAC,MAAM,EAAE;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAkBT;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"}
@@ -9,6 +9,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.formatApplication = formatApplication;
11
11
  exports.formatGateway = formatGateway;
12
+ exports.formatDevice = formatDevice;
12
13
  exports.formatList = formatList;
13
14
  exports.formatError = formatError;
14
15
  exports.formatSuccess = formatSuccess;
@@ -61,6 +62,26 @@ function formatGateway(gateway) {
61
62
  output += chalk_1.default.gray(` Created: ${new Date(gateway.device.createdAt).toLocaleString()}\n`);
62
63
  return output;
63
64
  }
65
+ /**
66
+ * Format device output (for device list)
67
+ */
68
+ function formatDevice(device) {
69
+ const statusColor = device.status === 'active' ? chalk_1.default.green : chalk_1.default.yellow;
70
+ const statusIcon = device.status === 'active' ? '●' : '○';
71
+ let output = '';
72
+ output += `${statusIcon} ${device.name}\n`;
73
+ output += chalk_1.default.gray(` ID: ${device.id}\n`);
74
+ output += chalk_1.default.gray(` Type: ${device.type}\n`);
75
+ output += chalk_1.default.gray(` Status: ${statusColor(device.status)}\n`);
76
+ output += chalk_1.default.gray(` Created: ${new Date(device.createdAt).toLocaleString()}\n`);
77
+ if (device.lastSeen) {
78
+ output += chalk_1.default.gray(` Last seen: ${new Date(device.lastSeen).toLocaleString()}\n`);
79
+ }
80
+ if (device.description) {
81
+ output += chalk_1.default.gray(` Description: ${device.description}\n`);
82
+ }
83
+ return output;
84
+ }
64
85
  /**
65
86
  * Format list of items as table-like output
66
87
  */
package/dist/index.js CHANGED
@@ -6,11 +6,13 @@ const errors_1 = require("./utils/errors");
6
6
  const output_1 = require("./utils/output");
7
7
  const application_1 = require("./commands/application");
8
8
  const gateway_1 = require("./commands/gateway");
9
+ const device_1 = require("./commands/device");
9
10
  const auth_1 = require("./commands/auth");
10
11
  const config_1 = require("./commands/config");
11
12
  const discover_1 = require("./commands/discover");
12
13
  const connectivity_1 = require("./commands/connectivity");
13
14
  const ai_1 = require("./commands/ai");
15
+ const stack_1 = require("./commands/stack");
14
16
  const agent_1 = require("./commands/agent");
15
17
  const debug_1 = require("./commands/debug");
16
18
  const managedGateway_1 = require("./commands/managedGateway");
@@ -36,6 +38,8 @@ program
36
38
  (0, auth_1.setupAuthCommands)(program);
37
39
  (0, application_1.setupApplicationCommands)(program);
38
40
  (0, gateway_1.setupGatewayCommands)(program);
41
+ (0, device_1.setupDeviceCommands)(program);
42
+ (0, stack_1.setupStackCommands)(program);
39
43
  (0, config_1.setupConfigCommands)(program);
40
44
  (0, discover_1.setupDiscoverCommands)(program);
41
45
  (0, connectivity_1.setupConnectivityCommands)(program);
@@ -1,6 +1,7 @@
1
1
  import { UnifiedAgentStatus } from '../types/UnifiedAgentStatus';
2
2
  import { InstallationResult, UpdateResult, ConfigurationResult, LocalAgentHealthStatus, AgentInstallationOptions, AgentUpdateOptions } from '../types/agent';
3
3
  import { Application } from '../types/validation';
4
+ import { ConfigManager } from '../state/config';
4
5
  export declare class LocalAgentManager {
5
6
  private configPath;
6
7
  private agentPath;
@@ -9,7 +10,7 @@ export declare class LocalAgentManager {
9
10
  private agentProcess;
10
11
  private configManager;
11
12
  private statusManager;
12
- constructor();
13
+ constructor(configManager?: ConfigManager);
13
14
  /**
14
15
  * Update agent configuration with current CLI device credentials
15
16
  * @param configPath Optional config path to use. If not provided, uses the instance's configPath.
@@ -1 +1 @@
1
- {"version":3,"file":"LocalAgentManager.d.ts","sourceRoot":"","sources":["../../src/services/LocalAgentManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LocalAgentManager.d.ts","sourceRoot":"","sources":["../../src/services/LocalAgentManager.ts"],"names":[],"mappings":"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"}