@edgible-team/cli 1.2.15 → 1.2.19

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 (212) hide show
  1. package/README.md +5 -3
  2. package/dist/client/api-client.d.ts +26 -1
  3. package/dist/client/api-client.d.ts.map +1 -1
  4. package/dist/client/api-client.js +31 -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/create-stubs.d.ts +0 -1
  28. package/dist/commands/application/create-stubs.d.ts.map +1 -1
  29. package/dist/commands/application/create-stubs.js +0 -4
  30. package/dist/commands/application/create-vm.d.ts +19 -0
  31. package/dist/commands/application/create-vm.d.ts.map +1 -0
  32. package/dist/commands/application/create-vm.js +390 -0
  33. package/dist/commands/application/delete.d.ts +2 -1
  34. package/dist/commands/application/delete.d.ts.map +1 -1
  35. package/dist/commands/application/delete.js +19 -5
  36. package/dist/commands/application/get.d.ts.map +1 -1
  37. package/dist/commands/application/get.js +29 -1
  38. package/dist/commands/application/ssh.d.ts +7 -0
  39. package/dist/commands/application/ssh.d.ts.map +1 -0
  40. package/dist/commands/application/ssh.js +146 -0
  41. package/dist/commands/application/update.d.ts +3 -0
  42. package/dist/commands/application/update.d.ts.map +1 -1
  43. package/dist/commands/application/update.js +45 -1
  44. package/dist/commands/application.d.ts.map +1 -1
  45. package/dist/commands/application.js +81 -26
  46. package/dist/commands/auth.d.ts.map +1 -1
  47. package/dist/commands/auth.js +44 -0
  48. package/dist/commands/debug.js +1 -1
  49. package/dist/commands/device/application-health.d.ts +7 -0
  50. package/dist/commands/device/application-health.d.ts.map +1 -0
  51. package/dist/commands/device/application-health.js +103 -0
  52. package/dist/commands/device/delete.d.ts +7 -0
  53. package/dist/commands/device/delete.d.ts.map +1 -0
  54. package/dist/commands/device/delete.js +69 -0
  55. package/dist/commands/device/health.d.ts +7 -0
  56. package/dist/commands/device/health.d.ts.map +1 -0
  57. package/dist/commands/device/health.js +78 -0
  58. package/dist/commands/device/list.d.ts +5 -0
  59. package/dist/commands/device/list.d.ts.map +1 -0
  60. package/dist/commands/device/list.js +46 -0
  61. package/dist/commands/device/telemetry.d.ts +8 -0
  62. package/dist/commands/device/telemetry.d.ts.map +1 -0
  63. package/dist/commands/device/telemetry.js +59 -0
  64. package/dist/commands/device.d.ts +6 -0
  65. package/dist/commands/device.d.ts.map +1 -0
  66. package/dist/commands/device.js +86 -0
  67. package/dist/commands/stack/deploy.d.ts +3 -1
  68. package/dist/commands/stack/deploy.d.ts.map +1 -1
  69. package/dist/commands/stack/deploy.js +5 -2
  70. package/dist/commands/stack/diff.d.ts +1 -1
  71. package/dist/commands/stack/diff.d.ts.map +1 -1
  72. package/dist/commands/stack/diff.js +4 -2
  73. package/dist/commands/stack/status.d.ts +1 -1
  74. package/dist/commands/stack/status.d.ts.map +1 -1
  75. package/dist/commands/stack/status.js +4 -2
  76. package/dist/commands/stack/teardown.d.ts +3 -1
  77. package/dist/commands/stack/teardown.d.ts.map +1 -1
  78. package/dist/commands/stack/teardown.js +5 -2
  79. package/dist/commands/stack/validate.d.ts +1 -1
  80. package/dist/commands/stack/validate.d.ts.map +1 -1
  81. package/dist/commands/stack/validate.js +4 -2
  82. package/dist/commands/stack.d.ts.map +1 -1
  83. package/dist/commands/stack.js +10 -5
  84. package/dist/commands/utils/auth-prompt.d.ts +25 -0
  85. package/dist/commands/utils/auth-prompt.d.ts.map +1 -0
  86. package/dist/commands/utils/auth-prompt.js +115 -0
  87. package/dist/commands/utils/device-prompt.d.ts +18 -0
  88. package/dist/commands/utils/device-prompt.d.ts.map +1 -0
  89. package/dist/commands/utils/device-prompt.js +58 -0
  90. package/dist/commands/utils/output-formatter.d.ts +13 -0
  91. package/dist/commands/utils/output-formatter.d.ts.map +1 -1
  92. package/dist/commands/utils/output-formatter.js +21 -0
  93. package/dist/index.js +2 -0
  94. package/dist/services/LocalAgentManager.d.ts +2 -1
  95. package/dist/services/LocalAgentManager.d.ts.map +1 -1
  96. package/dist/services/LocalAgentManager.js +6 -4
  97. package/dist/services/application/ApplicationService.d.ts +41 -2
  98. package/dist/services/application/ApplicationService.d.ts.map +1 -1
  99. package/dist/services/application/ApplicationService.js +49 -1
  100. package/dist/services/device/DeviceService.d.ts +62 -0
  101. package/dist/services/device/DeviceService.d.ts.map +1 -0
  102. package/dist/services/device/DeviceService.js +235 -0
  103. package/dist/services/edgible.d.ts +3 -1
  104. package/dist/services/edgible.d.ts.map +1 -1
  105. package/dist/services/edgible.js +5 -4
  106. package/dist/services/instances.d.ts +4 -1
  107. package/dist/services/instances.d.ts.map +1 -1
  108. package/dist/services/instances.js +8 -4
  109. package/dist/types/AgentConfig.d.ts +26 -0
  110. package/dist/types/AgentConfig.d.ts.map +1 -1
  111. package/dist/types/ApiRequests.d.ts +5 -1
  112. package/dist/types/ApiRequests.d.ts.map +1 -1
  113. package/dist/types/ApiResponses.d.ts +9 -0
  114. package/dist/types/ApiResponses.d.ts.map +1 -1
  115. package/dist/types/JobTypes.d.ts +103 -0
  116. package/dist/types/JobTypes.d.ts.map +1 -0
  117. package/dist/types/JobTypes.js +80 -0
  118. package/dist/types/WebSocketMessages.d.ts +89 -0
  119. package/dist/types/WebSocketMessages.d.ts.map +1 -0
  120. package/dist/types/WebSocketMessages.js +5 -0
  121. package/dist/types/Workload.d.ts +1 -1
  122. package/dist/types/Workload.d.ts.map +1 -1
  123. package/dist/types/backendJobs.d.ts +102 -0
  124. package/dist/types/backendJobs.d.ts.map +1 -0
  125. package/dist/types/backendJobs.js +5 -0
  126. package/dist/types/models/ApplicationData.d.ts +1 -1
  127. package/dist/types/models/ApplicationData.d.ts.map +1 -1
  128. package/dist/types/models/DeviceData.d.ts +4 -0
  129. package/dist/types/models/DeviceData.d.ts.map +1 -1
  130. package/dist/types/stack.d.ts +9 -1
  131. package/dist/types/stack.d.ts.map +1 -1
  132. package/dist/types/validation/schemas.d.ts +5 -5
  133. package/dist/types/validation/schemas.js +1 -1
  134. package/dist/utils/stack-file.d.ts +11 -0
  135. package/dist/utils/stack-file.d.ts.map +1 -0
  136. package/dist/utils/stack-file.js +66 -0
  137. package/dist/validation/stack-schemas.d.ts +319 -27
  138. package/dist/validation/stack-schemas.d.ts.map +1 -1
  139. package/dist/validation/stack-schemas.js +20 -5
  140. package/package.json +1 -1
  141. package/dist/commands/agent/agent-handlers.d.ts +0 -45
  142. package/dist/commands/agent/agent-handlers.d.ts.map +0 -1
  143. package/dist/commands/agent/agent-handlers.js +0 -1159
  144. package/dist/commands/application/api-keys.d.ts +0 -3
  145. package/dist/commands/application/api-keys.d.ts.map +0 -1
  146. package/dist/commands/application/api-keys.js +0 -227
  147. package/dist/commands/application/create-compose.d.ts +0 -3
  148. package/dist/commands/application/create-compose.d.ts.map +0 -1
  149. package/dist/commands/application/create-compose.js +0 -381
  150. package/dist/commands/application/create-interactive.d.ts +0 -3
  151. package/dist/commands/application/create-interactive.d.ts.map +0 -1
  152. package/dist/commands/application/create-interactive.js +0 -326
  153. package/dist/commands/application/create-workload.d.ts +0 -5
  154. package/dist/commands/application/create-workload.d.ts.map +0 -1
  155. package/dist/commands/application/create-workload.js +0 -48
  156. package/dist/commands/application/short-codes.d.ts +0 -3
  157. package/dist/commands/application/short-codes.d.ts.map +0 -1
  158. package/dist/commands/application/short-codes.js +0 -226
  159. package/dist/commands/application/toggle.d.ts +0 -2
  160. package/dist/commands/application/toggle.d.ts.map +0 -1
  161. package/dist/commands/application/toggle.js +0 -78
  162. package/dist/commands/examples/migrated-command-example.d.ts +0 -31
  163. package/dist/commands/examples/migrated-command-example.d.ts.map +0 -1
  164. package/dist/commands/examples/migrated-command-example.js +0 -180
  165. package/dist/commands/managedGateway/create.d.ts +0 -6
  166. package/dist/commands/managedGateway/create.d.ts.map +0 -1
  167. package/dist/commands/managedGateway/create.js +0 -50
  168. package/dist/commands/managedGateway/delete.d.ts +0 -5
  169. package/dist/commands/managedGateway/delete.d.ts.map +0 -1
  170. package/dist/commands/managedGateway/delete.js +0 -57
  171. package/dist/commands/managedGateway/get.d.ts +0 -4
  172. package/dist/commands/managedGateway/get.d.ts.map +0 -1
  173. package/dist/commands/managedGateway/get.js +0 -71
  174. package/dist/commands/managedGateway/haproxy-stats.d.ts +0 -6
  175. package/dist/commands/managedGateway/haproxy-stats.d.ts.map +0 -1
  176. package/dist/commands/managedGateway/haproxy-stats.js +0 -131
  177. package/dist/commands/managedGateway/list.d.ts +0 -4
  178. package/dist/commands/managedGateway/list.d.ts.map +0 -1
  179. package/dist/commands/managedGateway/list.js +0 -50
  180. package/dist/commands/managedGateway/logs.d.ts +0 -10
  181. package/dist/commands/managedGateway/logs.d.ts.map +0 -1
  182. package/dist/commands/managedGateway/logs.js +0 -100
  183. package/dist/commands/managedGateway/reboot.d.ts +0 -5
  184. package/dist/commands/managedGateway/reboot.d.ts.map +0 -1
  185. package/dist/commands/managedGateway/reboot.js +0 -95
  186. package/dist/commands/managedGateway/resync.d.ts +0 -10
  187. package/dist/commands/managedGateway/resync.d.ts.map +0 -1
  188. package/dist/commands/managedGateway/resync.js +0 -69
  189. package/dist/commands/managedGateway/ssh.d.ts +0 -4
  190. package/dist/commands/managedGateway/ssh.d.ts.map +0 -1
  191. package/dist/commands/managedGateway/ssh.js +0 -130
  192. package/dist/commands/managedGateway/wipe-logs.d.ts +0 -4
  193. package/dist/commands/managedGateway/wipe-logs.d.ts.map +0 -1
  194. package/dist/commands/managedGateway/wipe-logs.js +0 -67
  195. package/dist/commands/managedGateway/wireguard.d.ts +0 -4
  196. package/dist/commands/managedGateway/wireguard.d.ts.map +0 -1
  197. package/dist/commands/managedGateway/wireguard.js +0 -68
  198. package/dist/di/bindings.d.ts +0 -15
  199. package/dist/di/bindings.d.ts.map +0 -1
  200. package/dist/di/bindings.js +0 -99
  201. package/dist/di/container.d.ts +0 -44
  202. package/dist/di/container.d.ts.map +0 -1
  203. package/dist/di/container.js +0 -88
  204. package/dist/di/types.d.ts +0 -23
  205. package/dist/di/types.d.ts.map +0 -1
  206. package/dist/di/types.js +0 -32
  207. package/dist/repositories/config-repository.d.ts +0 -46
  208. package/dist/repositories/config-repository.d.ts.map +0 -1
  209. package/dist/repositories/config-repository.js +0 -62
  210. package/dist/repositories/gateway-repository.d.ts +0 -37
  211. package/dist/repositories/gateway-repository.d.ts.map +0 -1
  212. package/dist/repositories/gateway-repository.js +0 -35
@@ -235,6 +235,23 @@ class ApplicationServiceImpl {
235
235
  throw error;
236
236
  }
237
237
  }
238
+ async getApplicationDetails(id) {
239
+ try {
240
+ const response = await this.apiClient.getApplication(id);
241
+ const appData = response.application;
242
+ return {
243
+ id: appData.id,
244
+ name: appData.name,
245
+ subtype: appData.subtype,
246
+ configuration: appData.configuration,
247
+ deviceApplicationConfigs: appData.deviceApplicationConfigs,
248
+ };
249
+ }
250
+ catch (error) {
251
+ this.logger.error('Error getting application details', error);
252
+ throw error;
253
+ }
254
+ }
238
255
  async deleteApplication(id) {
239
256
  try {
240
257
  // Attempt auto re-login if tokens are missing but credentials are available
@@ -293,7 +310,6 @@ class ApplicationServiceImpl {
293
310
  if (params.dependsOnApplicationIds !== undefined && params.dependsOnApplicationIds.length > 0) {
294
311
  createRequest.dependsOnApplicationIds = params.dependsOnApplicationIds;
295
312
  }
296
- console.log(`application: ${params}`);
297
313
  const response = await this.apiClient.createApplication(createRequest);
298
314
  return response.application;
299
315
  }
@@ -398,6 +414,38 @@ class ApplicationServiceImpl {
398
414
  throw new Error(`Failed to delete short code: ${error instanceof Error ? error.message : 'Unknown error'}`);
399
415
  }
400
416
  }
417
+ /**
418
+ * Update application (e.g. auth modes, name, description)
419
+ */
420
+ async updateApplication(applicationId, updates) {
421
+ try {
422
+ await this.tokenManager.ensureValidToken(this.apiClient, this.authService.loginDevice.bind(this.authService));
423
+ const response = await this.apiClient.updateApplication({ applicationId, ...updates });
424
+ return response.application;
425
+ }
426
+ catch (error) {
427
+ this.logger.error('Failed to update application', error);
428
+ throw new Error(`Failed to update application: ${error instanceof Error ? error.message : 'Unknown error'}`);
429
+ }
430
+ }
431
+ /**
432
+ * Fetch the SSH private key stored for a VM application.
433
+ * Returns null if no key is stored (user must provide --key themselves).
434
+ */
435
+ async getApplicationVmSshKey(applicationId) {
436
+ try {
437
+ await this.tokenManager.ensureValidToken(this.apiClient, this.authService.loginDevice.bind(this.authService));
438
+ const response = await this.apiClient.getApplicationVmSshKey(applicationId);
439
+ return response.sshPrivateKey ?? null;
440
+ }
441
+ catch (error) {
442
+ // 404 means no key was stored (user supplied their own at creation time)
443
+ if (error?.statusCode === 404 || error?.status === 404 || String(error?.message).includes('404')) {
444
+ return null;
445
+ }
446
+ throw error;
447
+ }
448
+ }
401
449
  }
402
450
  exports.ApplicationServiceImpl = ApplicationServiceImpl;
403
451
  //# sourceMappingURL=ApplicationService.js.map
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Device service
3
+ * Handles device list and delete operations for the organization
4
+ */
5
+ import { ConfigManager } from '../../state/config';
6
+ import { AuthService } from '../auth/AuthService';
7
+ import { TokenManager } from '../token/TokenManager';
8
+ import { Logger } from '../../utils/logger';
9
+ import { DeviceData } from '../../types/models/DeviceData';
10
+ import type { DeviceHealthStatus, DeviceApplicationHealthResponse } from '../../types/AgentConfig';
11
+ export type DeviceTypeFilter = 'serving' | 'gateway';
12
+ export interface ListDevicesOptions {
13
+ type?: DeviceTypeFilter;
14
+ }
15
+ export interface DeviceListResult {
16
+ devices: DeviceData[];
17
+ }
18
+ export interface DeviceTelemetryResult {
19
+ data: unknown;
20
+ status: number;
21
+ }
22
+ export interface DeviceService {
23
+ listDevices(options?: ListDevicesOptions): Promise<DeviceListResult>;
24
+ deleteDevice(deviceId: string): Promise<void>;
25
+ /** Get a single device by ID (includes telemetryUrl when set). */
26
+ getDevice(deviceId: string): Promise<DeviceData | null>;
27
+ /** Fetch JSON from a device telemetry endpoint using current auth token. */
28
+ fetchTelemetry(telemetryBaseUrl: string, endpoint: string): Promise<DeviceTelemetryResult>;
29
+ /** Resolve device by ID or name; returns device ID or null if not found / not selected. */
30
+ resolveDeviceId(options: {
31
+ deviceId?: string;
32
+ name?: string;
33
+ interactive?: boolean;
34
+ message?: string;
35
+ }): Promise<string | null>;
36
+ /** Fetch device health from telemetry endpoint (uses telemetry session token). */
37
+ getDeviceHealth(deviceId: string): Promise<DeviceHealthStatus>;
38
+ /** Fetch application health for a device from telemetry GET /health/applications (uses telemetry session). */
39
+ getDeviceApplicationHealth(deviceId: string): Promise<DeviceApplicationHealthResponse>;
40
+ }
41
+ export declare class DeviceServiceImpl implements DeviceService {
42
+ private apiClient;
43
+ private configManager;
44
+ private authService;
45
+ private tokenManager;
46
+ private logger;
47
+ private baseUrl;
48
+ constructor(baseUrl: string, configManager: ConfigManager, authService: AuthService, tokenManager: TokenManager, logger: Logger);
49
+ listDevices(options?: ListDevicesOptions): Promise<DeviceListResult>;
50
+ deleteDevice(deviceId: string): Promise<void>;
51
+ getDevice(deviceId: string): Promise<DeviceData | null>;
52
+ fetchTelemetry(telemetryBaseUrl: string, endpoint: string): Promise<DeviceTelemetryResult>;
53
+ resolveDeviceId(options: {
54
+ deviceId?: string;
55
+ name?: string;
56
+ interactive?: boolean;
57
+ message?: string;
58
+ }): Promise<string | null>;
59
+ getDeviceHealth(deviceId: string): Promise<DeviceHealthStatus>;
60
+ getDeviceApplicationHealth(deviceId: string): Promise<DeviceApplicationHealthResponse>;
61
+ }
62
+ //# sourceMappingURL=DeviceService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeviceService.d.ts","sourceRoot":"","sources":["../../../src/services/device/DeviceService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ /**
3
+ * Device service
4
+ * Handles device list and delete operations for the organization
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.DeviceServiceImpl = void 0;
8
+ const client_1 = require("../../client");
9
+ class DeviceServiceImpl {
10
+ constructor(baseUrl, configManager, authService, tokenManager, logger) {
11
+ this.baseUrl = baseUrl;
12
+ this.configManager = configManager;
13
+ this.authService = authService;
14
+ this.tokenManager = tokenManager;
15
+ this.logger = logger;
16
+ this.apiClient = (0, client_1.createApiClient)(baseUrl);
17
+ this.tokenManager.restoreTokensFromConfig(this.apiClient);
18
+ }
19
+ async listDevices(options) {
20
+ await this.tokenManager.ensureValidToken(this.apiClient, this.authService.loginDevice.bind(this.authService));
21
+ this.tokenManager.restoreTokensFromConfig(this.apiClient);
22
+ const config = this.configManager.getConfig();
23
+ if (!config.organizationId) {
24
+ throw new Error('No organization ID found. Please login first.');
25
+ }
26
+ this.logger.debug('Fetching organization devices', { organizationId: config.organizationId });
27
+ const response = await this.apiClient.getOrganizationDevices(config.organizationId);
28
+ let devices = response.devices || [];
29
+ if (options?.type) {
30
+ if (options.type === 'serving') {
31
+ devices = devices.filter((d) => d.type === 'server');
32
+ }
33
+ else if (options.type === 'gateway') {
34
+ devices = devices.filter((d) => d.type === 'gateway');
35
+ }
36
+ }
37
+ return { devices };
38
+ }
39
+ async deleteDevice(deviceId) {
40
+ await this.tokenManager.ensureValidToken(this.apiClient, this.authService.loginDevice.bind(this.authService));
41
+ this.tokenManager.restoreTokensFromConfig(this.apiClient);
42
+ this.logger.debug('Deleting device', { deviceId });
43
+ await this.apiClient.deleteDevice(deviceId);
44
+ const config = this.configManager.getConfig();
45
+ if (config.deviceId === deviceId) {
46
+ this.configManager.updateConfig({
47
+ deviceId: undefined,
48
+ deviceName: undefined,
49
+ devicePassword: undefined,
50
+ deviceType: undefined,
51
+ });
52
+ this.logger.debug('Cleared current device from config after deletion');
53
+ }
54
+ this.configManager.removeGateway(deviceId);
55
+ }
56
+ async getDevice(deviceId) {
57
+ await this.tokenManager.ensureValidToken(this.apiClient, this.authService.loginDevice.bind(this.authService));
58
+ this.tokenManager.restoreTokensFromConfig(this.apiClient);
59
+ this.logger.debug('Fetching device', { deviceId });
60
+ const response = await this.apiClient.getDevice(deviceId);
61
+ return response.device ?? null;
62
+ }
63
+ async fetchTelemetry(telemetryBaseUrl, endpoint) {
64
+ await this.tokenManager.ensureValidToken(this.apiClient, this.authService.loginDevice.bind(this.authService));
65
+ this.tokenManager.restoreTokensFromConfig(this.apiClient);
66
+ const token = this.apiClient.getIdToken() ?? this.apiClient.getAccessToken();
67
+ if (!token) {
68
+ throw new Error('No auth token available. Please run "edgible login" first.');
69
+ }
70
+ const base = telemetryBaseUrl.replace(/\/$/, '');
71
+ const path = endpoint.startsWith('/') ? endpoint : `/${endpoint}`;
72
+ const url = `${base}${path}`;
73
+ this.logger.debug('Fetching device telemetry', { url });
74
+ const controller = new AbortController();
75
+ const timeoutId = setTimeout(() => controller.abort(), 15000);
76
+ let response;
77
+ try {
78
+ response = await fetch(url, {
79
+ method: 'GET',
80
+ headers: {
81
+ Accept: 'application/json',
82
+ Authorization: `Bearer ${token}`,
83
+ },
84
+ signal: controller.signal,
85
+ });
86
+ }
87
+ catch (err) {
88
+ clearTimeout(timeoutId);
89
+ if (err instanceof Error && err.name === 'AbortError') {
90
+ throw new Error('Telemetry request timed out after 15 seconds.');
91
+ }
92
+ throw new Error(`Failed to reach telemetry endpoint: ${err instanceof Error ? err.message : String(err)}`);
93
+ }
94
+ clearTimeout(timeoutId);
95
+ const text = await response.text();
96
+ let data;
97
+ try {
98
+ data = text ? JSON.parse(text) : {};
99
+ }
100
+ catch {
101
+ data = { raw: text };
102
+ }
103
+ if (!response.ok) {
104
+ throw new Error(`Telemetry request failed (${response.status}): ${response.statusText}${text ? ` - ${text.slice(0, 200)}` : ''}`);
105
+ }
106
+ return { data, status: response.status };
107
+ }
108
+ async resolveDeviceId(options) {
109
+ if (options.name && !options.deviceId) {
110
+ const { devices } = await this.listDevices();
111
+ const device = devices.find((d) => d.name === options.name);
112
+ if (!device) {
113
+ throw new Error(`Device with name "${options.name}" not found. Use "edgible device list" to see available devices.`);
114
+ }
115
+ this.logger.debug('Resolved device name to ID', { name: options.name, deviceId: device.id });
116
+ return device.id;
117
+ }
118
+ if (options.deviceId) {
119
+ return options.deviceId;
120
+ }
121
+ return null;
122
+ }
123
+ async getDeviceHealth(deviceId) {
124
+ await this.tokenManager.ensureValidToken(this.apiClient, this.authService.loginDevice.bind(this.authService));
125
+ this.tokenManager.restoreTokensFromConfig(this.apiClient);
126
+ const device = await this.getDevice(deviceId);
127
+ if (!device) {
128
+ throw new Error(`Device not found: ${deviceId}`);
129
+ }
130
+ if (!device.telemetryUrl?.trim()) {
131
+ throw new Error(`No telemetry URL configured for device "${device.name}" (${deviceId}). Telemetry may not be set up for this device.`);
132
+ }
133
+ // Use same token as rest of CLI (config is source of truth; restore again before backend call)
134
+ this.tokenManager.restoreTokensFromConfig(this.apiClient);
135
+ const { sessionToken } = await this.apiClient.createTelemetrySession(deviceId);
136
+ const base = device.telemetryUrl.trim().replace(/\/$/, '');
137
+ const url = `${base}/health/device`;
138
+ this.logger.debug('Fetching device health via telemetry session', { deviceId, url });
139
+ const controller = new AbortController();
140
+ const timeoutId = setTimeout(() => controller.abort(), 15000);
141
+ let response;
142
+ try {
143
+ response = await fetch(url, {
144
+ method: 'GET',
145
+ headers: {
146
+ Accept: 'application/json',
147
+ 'X-Session-Token': sessionToken,
148
+ },
149
+ signal: controller.signal,
150
+ });
151
+ }
152
+ catch (err) {
153
+ clearTimeout(timeoutId);
154
+ if (err instanceof Error && err.name === 'AbortError') {
155
+ throw new Error('Device health request timed out after 15 seconds.');
156
+ }
157
+ throw new Error(`Failed to reach device health endpoint: ${err instanceof Error ? err.message : String(err)}`);
158
+ }
159
+ clearTimeout(timeoutId);
160
+ const text = await response.text();
161
+ let data;
162
+ try {
163
+ data = text ? JSON.parse(text) : {};
164
+ }
165
+ catch {
166
+ throw new Error(`Invalid JSON from device health endpoint: ${text.slice(0, 200)}`);
167
+ }
168
+ if (!response.ok) {
169
+ throw new Error(`Device health request failed (${response.status}): ${response.statusText}${text ? ` - ${text.slice(0, 200)}` : ''}`);
170
+ }
171
+ const health = data;
172
+ if (typeof health.cpuUsage !== 'number' ||
173
+ typeof health.memoryUsage !== 'number' ||
174
+ typeof health.diskUsage !== 'number' ||
175
+ typeof health.uptime !== 'number') {
176
+ throw new Error('Device health endpoint returned unexpected shape (missing cpuUsage, memoryUsage, diskUsage, or uptime).');
177
+ }
178
+ return health;
179
+ }
180
+ async getDeviceApplicationHealth(deviceId) {
181
+ await this.tokenManager.ensureValidToken(this.apiClient, this.authService.loginDevice.bind(this.authService));
182
+ this.tokenManager.restoreTokensFromConfig(this.apiClient);
183
+ const device = await this.getDevice(deviceId);
184
+ if (!device) {
185
+ throw new Error(`Device not found: ${deviceId}`);
186
+ }
187
+ if (!device.telemetryUrl?.trim()) {
188
+ throw new Error(`No telemetry URL configured for device "${device.name}" (${deviceId}). Telemetry may not be set up for this device.`);
189
+ }
190
+ this.tokenManager.restoreTokensFromConfig(this.apiClient);
191
+ const { sessionToken } = await this.apiClient.createTelemetrySession(deviceId);
192
+ const base = device.telemetryUrl.trim().replace(/\/$/, '');
193
+ const url = `${base}/health/applications`;
194
+ this.logger.debug('Fetching device application health via telemetry session', { deviceId, url });
195
+ const controller = new AbortController();
196
+ const timeoutId = setTimeout(() => controller.abort(), 15000);
197
+ let response;
198
+ try {
199
+ response = await fetch(url, {
200
+ method: 'GET',
201
+ headers: {
202
+ Accept: 'application/json',
203
+ 'X-Session-Token': sessionToken,
204
+ },
205
+ signal: controller.signal,
206
+ });
207
+ }
208
+ catch (err) {
209
+ clearTimeout(timeoutId);
210
+ if (err instanceof Error && err.name === 'AbortError') {
211
+ throw new Error('Application health request timed out after 15 seconds.');
212
+ }
213
+ throw new Error(`Failed to reach application health endpoint: ${err instanceof Error ? err.message : String(err)}`);
214
+ }
215
+ clearTimeout(timeoutId);
216
+ const text = await response.text();
217
+ let data;
218
+ try {
219
+ data = text ? JSON.parse(text) : {};
220
+ }
221
+ catch {
222
+ throw new Error(`Invalid JSON from application health endpoint: ${text.slice(0, 200)}`);
223
+ }
224
+ if (!response.ok) {
225
+ throw new Error(`Application health request failed (${response.status}): ${response.statusText}${text ? ` - ${text.slice(0, 200)}` : ''}`);
226
+ }
227
+ const body = data;
228
+ if (!Array.isArray(body?.applications)) {
229
+ throw new Error('Application health endpoint returned unexpected shape (missing applications array).');
230
+ }
231
+ return body;
232
+ }
233
+ }
234
+ exports.DeviceServiceImpl = DeviceServiceImpl;
235
+ //# sourceMappingURL=DeviceService.js.map
@@ -4,6 +4,7 @@ import { CreateDeviceWithOrphanedOrganizationResponse, GetUserOrganizationsRespo
4
4
  import { ConfigManager } from '../state/config';
5
5
  import { TokenManager } from './token/TokenManager';
6
6
  import { Logger } from '../utils/logger';
7
+ import { LocalAgentManager } from './LocalAgentManager';
7
8
  import { ApplicationSetupResult, ValidationResult } from '../types/validation';
8
9
  import { LocalAgentHealthStatus } from '../types/agent';
9
10
  /**
@@ -17,7 +18,8 @@ export declare class EdgibleService {
17
18
  private tokenManager;
18
19
  private logger;
19
20
  private baseUrl;
20
- constructor(baseUrl: string, configManager: ConfigManager, tokenManager: TokenManager, logger: Logger);
21
+ private localAgentManager?;
22
+ constructor(baseUrl: string, configManager: ConfigManager, tokenManager: TokenManager, logger: Logger, localAgentManager?: LocalAgentManager);
21
23
  /**
22
24
  * Authenticate user with email and password
23
25
  * @param email - Email address
@@ -1 +1 @@
1
- {"version":3,"file":"edgible.d.ts","sourceRoot":"","sources":["../../src/services/edgible.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edgible.d.ts","sourceRoot":"","sources":["../../src/services/edgible.ts"],"names":[],"mappings":"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"}
@@ -53,12 +53,13 @@ const PathResolver_1 = require("../utils/PathResolver");
53
53
  * Uses the real API client for authentication and device management
54
54
  */
55
55
  class EdgibleService {
56
- constructor(baseUrl, configManager, tokenManager, logger) {
56
+ constructor(baseUrl, configManager, tokenManager, logger, localAgentManager) {
57
57
  this.applications = [];
58
58
  this.baseUrl = baseUrl;
59
59
  this.configManager = configManager;
60
60
  this.tokenManager = tokenManager;
61
61
  this.logger = logger;
62
+ this.localAgentManager = localAgentManager;
62
63
  this.apiClient = (0, client_1.createApiClient)(this.baseUrl);
63
64
  // Restore tokens from config if available
64
65
  this.tokenManager.restoreTokensFromConfig(this.apiClient);
@@ -2642,7 +2643,7 @@ console.log('Edgible Agent started successfully');
2642
2643
  console.log(chalk_1.default.blue('Setting up application with validation...'));
2643
2644
  // Step 1: Check local agent status
2644
2645
  console.log(chalk_1.default.gray('Checking local agent status...'));
2645
- const localAgentManager = new LocalAgentManager_1.LocalAgentManager();
2646
+ const localAgentManager = this.localAgentManager || new LocalAgentManager_1.LocalAgentManager(this.configManager);
2646
2647
  let localAgentStatus = await localAgentManager.checkLocalAgentStatus();
2647
2648
  if (!localAgentStatus.installed) {
2648
2649
  warnings.push('Local serving agent is not installed');
@@ -2915,7 +2916,7 @@ console.log('Edgible Agent started successfully');
2915
2916
  });
2916
2917
  }
2917
2918
  // Check 4: Local agent status
2918
- const localAgentManager = new LocalAgentManager_1.LocalAgentManager();
2919
+ const localAgentManager = this.localAgentManager || new LocalAgentManager_1.LocalAgentManager(this.configManager);
2919
2920
  const agentStatus = await localAgentManager.checkLocalAgentStatus();
2920
2921
  checks.push({
2921
2922
  name: 'local_agent',
@@ -2959,7 +2960,7 @@ console.log('Edgible Agent started successfully');
2959
2960
  */
2960
2961
  async getApplicationHealth(applicationId) {
2961
2962
  try {
2962
- const localAgentManager = new LocalAgentManager_1.LocalAgentManager();
2963
+ const localAgentManager = this.localAgentManager || new LocalAgentManager_1.LocalAgentManager(this.configManager);
2963
2964
  return await localAgentManager.monitorAgentHealth();
2964
2965
  }
2965
2966
  catch (error) {
@@ -16,6 +16,7 @@ import type { TokenManager } from './token/TokenManager';
16
16
  import type { AuthService } from './auth/AuthService';
17
17
  import type { ApplicationService } from './application/ApplicationService';
18
18
  import type { GatewayService } from './gateway/GatewayService';
19
+ import type { DeviceService } from './device/DeviceService';
19
20
  import type { ManagedGatewayService } from './managedGateway/ManagedGatewayService';
20
21
  import type { DiagnosticsService } from './diagnostics/DiagnosticsService';
21
22
  import type { AgentDeploymentService } from './agentDeployment/AgentDeploymentService';
@@ -25,8 +26,9 @@ export declare const tokenManager: TokenManager;
25
26
  export declare const authService: AuthService;
26
27
  export declare const applicationService: ApplicationService;
27
28
  export declare const gatewayService: GatewayService;
28
- export declare const edgibleService: EdgibleService;
29
+ export declare const deviceService: DeviceService;
29
30
  export declare const localAgentManager: LocalAgentManager;
31
+ export declare const edgibleService: EdgibleService;
30
32
  export declare const managedGatewayService: ManagedGatewayService;
31
33
  export declare const diagnosticsService: DiagnosticsService;
32
34
  export declare const agentDeploymentService: AgentDeploymentService;
@@ -47,6 +49,7 @@ export declare function getServiceInstances(): {
47
49
  authService: AuthService;
48
50
  applicationService: ApplicationService;
49
51
  gatewayService: GatewayService;
52
+ deviceService: DeviceService;
50
53
  edgibleService: EdgibleService;
51
54
  localAgentManager: LocalAgentManager;
52
55
  managedGatewayService: ManagedGatewayService;
@@ -1 +1 @@
1
- {"version":3,"file":"instances.d.ts","sourceRoot":"","sources":["../../src/services/instances.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKhD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAIjE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAMvF,eAAO,MAAM,MAAM,EAAE,MAInB,CAAC;AAGH,eAAO,MAAM,aAAa,eAAsB,CAAC;AAGjD,eAAO,MAAM,YAAY,EAAE,YAA0D,CAAC;AAGtF,eAAO,MAAM,WAAW,EAAE,WAKzB,CAAC;AAGF,eAAO,MAAM,kBAAkB,EAAE,kBAMhC,CAAC;AAGF,eAAO,MAAM,cAAc,EAAE,cAM5B,CAAC;AAGF,eAAO,MAAM,cAAc,gBAK1B,CAAC;AAGF,eAAO,MAAM,iBAAiB,mBAA0B,CAAC;AAGzD,eAAO,MAAM,qBAAqB,EAAE,qBAAqE,CAAC;AAG1G,eAAO,MAAM,kBAAkB,EAAE,kBAA+D,CAAC;AAGjG,eAAO,MAAM,sBAAsB,EAAE,sBAAuE,CAAC;AAI7G,wBAAgB,eAAe,IAAI,YAAY,CAoB9C;AAGD,eAAO,MAAM,YAAY;;CAIxB,CAAC;AAGF,wBAAgB,wBAAwB,IAAI,kBAAkB,CAE7D;AAGD,wBAAgB,sBAAsB,IAAI,gBAAgB,CAEzD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB;;;;;;;;;;;;;EAelC"}
1
+ {"version":3,"file":"instances.d.ts","sourceRoot":"","sources":["../../src/services/instances.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMhD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAIjE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAMvF,eAAO,MAAM,MAAM,EAAE,MAInB,CAAC;AAGH,eAAO,MAAM,aAAa,eAAsB,CAAC;AAGjD,eAAO,MAAM,YAAY,EAAE,YAA0D,CAAC;AAGtF,eAAO,MAAM,WAAW,EAAE,WAKzB,CAAC;AAGF,eAAO,MAAM,kBAAkB,EAAE,kBAMhC,CAAC;AAGF,eAAO,MAAM,cAAc,EAAE,cAM5B,CAAC;AAGF,eAAO,MAAM,aAAa,EAAE,aAM3B,CAAC;AAGF,eAAO,MAAM,iBAAiB,mBAAuC,CAAC;AAGtE,eAAO,MAAM,cAAc,gBAM1B,CAAC;AAGF,eAAO,MAAM,qBAAqB,EAAE,qBAAqE,CAAC;AAG1G,eAAO,MAAM,kBAAkB,EAAE,kBAA+D,CAAC;AAGjG,eAAO,MAAM,sBAAsB,EAAE,sBAAuE,CAAC;AAI7G,wBAAgB,eAAe,IAAI,YAAY,CAoB9C;AAGD,eAAO,MAAM,YAAY;;CAIxB,CAAC;AAGF,wBAAgB,wBAAwB,IAAI,kBAAkB,CAE7D;AAGD,wBAAgB,sBAAsB,IAAI,gBAAgB,CAEzD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB;;;;;;;;;;;;;;EAgBlC"}
@@ -7,7 +7,7 @@
7
7
  * Services are instantiated once and shared across the application.
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.stackService = exports.agentDeploymentService = exports.diagnosticsService = exports.managedGatewayService = exports.localAgentManager = exports.edgibleService = exports.gatewayService = exports.applicationService = exports.authService = exports.tokenManager = exports.configManager = exports.logger = void 0;
10
+ exports.stackService = exports.agentDeploymentService = exports.diagnosticsService = exports.managedGatewayService = exports.edgibleService = exports.localAgentManager = exports.deviceService = exports.gatewayService = exports.applicationService = exports.authService = exports.tokenManager = exports.configManager = exports.logger = void 0;
11
11
  exports.getStackService = getStackService;
12
12
  exports.createConnectivityTester = createConnectivityTester;
13
13
  exports.createWorkloadDetector = createWorkloadDetector;
@@ -18,6 +18,7 @@ const TokenManager_1 = require("./token/TokenManager");
18
18
  const AuthService_1 = require("./auth/AuthService");
19
19
  const ApplicationService_1 = require("./application/ApplicationService");
20
20
  const GatewayService_1 = require("./gateway/GatewayService");
21
+ const DeviceService_1 = require("./device/DeviceService");
21
22
  const edgible_1 = require("./edgible");
22
23
  const LocalAgentManager_1 = require("./LocalAgentManager");
23
24
  const ConnectivityTester_1 = require("./ConnectivityTester");
@@ -47,10 +48,12 @@ exports.authService = new AuthService_1.AuthServiceImpl(appConfig.apiBaseUrl, ex
47
48
  exports.applicationService = new ApplicationService_1.ApplicationServiceImpl(appConfig.apiBaseUrl, exports.configManager, exports.authService, exports.tokenManager, exports.logger);
48
49
  // Create gateway service
49
50
  exports.gatewayService = new GatewayService_1.GatewayServiceImpl(appConfig.apiBaseUrl, exports.configManager, exports.authService, exports.tokenManager, exports.logger);
51
+ // Create device service
52
+ exports.deviceService = new DeviceService_1.DeviceServiceImpl(appConfig.apiBaseUrl, exports.configManager, exports.authService, exports.tokenManager, exports.logger);
53
+ // Create local agent manager (pass shared configManager)
54
+ exports.localAgentManager = new LocalAgentManager_1.LocalAgentManager(exports.configManager);
50
55
  // Create Edgible service (legacy - being refactored in phases)
51
- exports.edgibleService = new edgible_1.EdgibleService(appConfig.apiBaseUrl, exports.configManager, exports.tokenManager, exports.logger);
52
- // Create local agent manager
53
- exports.localAgentManager = new LocalAgentManager_1.LocalAgentManager();
56
+ exports.edgibleService = new edgible_1.EdgibleService(appConfig.apiBaseUrl, exports.configManager, exports.tokenManager, exports.logger, exports.localAgentManager);
54
57
  // Create managed gateway service
55
58
  exports.managedGatewayService = new ManagedGatewayService_1.ManagedGatewayServiceImpl(exports.edgibleService);
56
59
  // Create diagnostics service
@@ -98,6 +101,7 @@ function getServiceInstances() {
98
101
  authService: exports.authService,
99
102
  applicationService: exports.applicationService,
100
103
  gatewayService: exports.gatewayService,
104
+ deviceService: exports.deviceService,
101
105
  edgibleService: exports.edgibleService,
102
106
  localAgentManager: exports.localAgentManager,
103
107
  managedGatewayService: exports.managedGatewayService,
@@ -14,6 +14,10 @@ export interface AgentConfig {
14
14
  devicePassword: string;
15
15
  deviceType: 'gateway' | 'serving';
16
16
  apiBaseUrl: string;
17
+ /**
18
+ * Stage (dev, test, uat, prod) - set by CLI on install so auth redirects use the correct webapp URL.
19
+ */
20
+ stage?: string;
17
21
  organizationId?: string;
18
22
  firewallEnabled: boolean;
19
23
  pollingInterval: number;
@@ -74,6 +78,28 @@ export interface ConnectivityStatus {
74
78
  error?: string;
75
79
  timestamp: string;
76
80
  }
81
+ /** Per-application entry from device telemetry GET /health/applications */
82
+ export interface ApplicationHealthItem {
83
+ appId: string;
84
+ name: string;
85
+ subtype?: string;
86
+ deploymentState?: string;
87
+ deploymentStateTimestamp?: string;
88
+ url?: string;
89
+ hostnames?: string[];
90
+ targetState?: string;
91
+ health: HealthStatus;
92
+ workload?: {
93
+ running: boolean;
94
+ healthy: boolean;
95
+ port?: number;
96
+ error?: string;
97
+ };
98
+ }
99
+ /** Response from device telemetry GET /health/applications */
100
+ export interface DeviceApplicationHealthResponse {
101
+ applications: ApplicationHealthItem[];
102
+ }
77
103
  export interface CaddyConfig {
78
104
  applications: Array<{
79
105
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"AgentConfig.d.ts","sourceRoot":"","sources":["../../src/types/AgentConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentConfig.d.ts","sourceRoot":"","sources":["../../src/types/AgentConfig.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC5C,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACnD,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC9C,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/C,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC7C,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC7C,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC7C,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CACjD;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC9C,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,aAAa,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IACvC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,2EAA2E;AAC3E,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClF;AAED,8DAA8D;AAC9D,MAAM,WAAW,+BAA+B;IAC9C,YAAY,EAAE,qBAAqB,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,KAAK,CAAC;QAClB,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,8BAA8B;QAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE,OAAO,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,wBAAwB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YACxC,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;YACnC,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,CAAC,CAAC;KACJ,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,KAAK,GAAG,KAAK,CAAC;IACxB,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mEAAmE;IACnE,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gEAAgE;IAChE,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gDAAgD;IAChD,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,uCAAuC;IACvC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,uDAAuD;IACvD,kBAAkB,EAAE,OAAO,CAAC;CAC7B"}
@@ -118,7 +118,7 @@ export interface CreateApplicationRequest {
118
118
  deviceIds: string[];
119
119
  gatewayIds?: string[];
120
120
  useManagedGateway?: boolean;
121
- subtype: 'local-preexisting' | 'managed-docker' | 'systemd' | 'docker-compose' | 'managed-process';
121
+ subtype: 'local-preexisting' | 'managed-docker' | 'systemd' | 'docker-compose' | 'managed-process' | 'telemetry' | 'vm';
122
122
  organizationId: string;
123
123
  /** Authentication modes for this application */
124
124
  authModes?: Array<'none' | 'org' | 'api-key'>;
@@ -141,6 +141,10 @@ export interface UpdateApplicationRequest {
141
141
  name?: string;
142
142
  description?: string;
143
143
  allowedSourceIPs?: string[];
144
+ /** Authentication modes: none, org, api-key (can include multiple). */
145
+ authModes?: Array<'none' | 'org' | 'api-key'>;
146
+ /** Organization IDs allowed to access (when org is in authModes). */
147
+ allowedOrganizations?: string[];
144
148
  targetState?: 'running' | 'suspended';
145
149
  /** Application IDs this application depends on. If any are not deployed, target state is set to suspended. */
146
150
  dependsOnApplicationIds?: string[];