@edgible-team/cli 1.2.15 → 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.
- package/README.md +5 -3
- package/dist/client/api-client.d.ts +13 -1
- package/dist/client/api-client.d.ts.map +1 -1
- package/dist/client/api-client.js +19 -0
- package/dist/commands/agent/install.d.ts +2 -1
- package/dist/commands/agent/install.d.ts.map +1 -1
- package/dist/commands/agent/install.js +24 -7
- package/dist/commands/agent/start.d.ts +5 -1
- package/dist/commands/agent/start.d.ts.map +1 -1
- package/dist/commands/agent/start.js +19 -280
- package/dist/commands/agent/uninstall.d.ts.map +1 -1
- package/dist/commands/agent/uninstall.js +14 -7
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +3 -2
- package/dist/commands/ai/setup.d.ts +1 -1
- package/dist/commands/ai/setup.d.ts.map +1 -1
- package/dist/commands/ai.js +1 -1
- package/dist/commands/application/create-docker-compose.d.ts +3 -1
- package/dist/commands/application/create-docker-compose.d.ts.map +1 -1
- package/dist/commands/application/create-docker-compose.js +25 -69
- package/dist/commands/application/create-existing.d.ts +2 -2
- package/dist/commands/application/create-existing.d.ts.map +1 -1
- package/dist/commands/application/create-existing.js +27 -132
- package/dist/commands/application/create-managed-process.d.ts +3 -1
- package/dist/commands/application/create-managed-process.d.ts.map +1 -1
- package/dist/commands/application/create-managed-process.js +31 -75
- package/dist/commands/application/delete.d.ts +2 -1
- package/dist/commands/application/delete.d.ts.map +1 -1
- package/dist/commands/application/delete.js +19 -5
- package/dist/commands/application/update.d.ts +3 -0
- package/dist/commands/application/update.d.ts.map +1 -1
- package/dist/commands/application/update.js +45 -1
- package/dist/commands/application.d.ts.map +1 -1
- package/dist/commands/application.js +33 -19
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +44 -0
- package/dist/commands/debug.js +1 -1
- package/dist/commands/device/application-health.d.ts +7 -0
- package/dist/commands/device/application-health.d.ts.map +1 -0
- package/dist/commands/device/application-health.js +103 -0
- package/dist/commands/device/delete.d.ts +7 -0
- package/dist/commands/device/delete.d.ts.map +1 -0
- package/dist/commands/device/delete.js +69 -0
- package/dist/commands/device/health.d.ts +7 -0
- package/dist/commands/device/health.d.ts.map +1 -0
- package/dist/commands/device/health.js +78 -0
- package/dist/commands/device/list.d.ts +5 -0
- package/dist/commands/device/list.d.ts.map +1 -0
- package/dist/commands/device/list.js +46 -0
- package/dist/commands/device/telemetry.d.ts +8 -0
- package/dist/commands/device/telemetry.d.ts.map +1 -0
- package/dist/commands/device/telemetry.js +59 -0
- package/dist/commands/device.d.ts +6 -0
- package/dist/commands/device.d.ts.map +1 -0
- package/dist/commands/device.js +86 -0
- package/dist/commands/stack/deploy.d.ts +3 -1
- package/dist/commands/stack/deploy.d.ts.map +1 -1
- package/dist/commands/stack/deploy.js +5 -2
- package/dist/commands/stack/diff.d.ts +1 -1
- package/dist/commands/stack/diff.d.ts.map +1 -1
- package/dist/commands/stack/diff.js +4 -2
- package/dist/commands/stack/status.d.ts +1 -1
- package/dist/commands/stack/status.d.ts.map +1 -1
- package/dist/commands/stack/status.js +4 -2
- package/dist/commands/stack/teardown.d.ts +3 -1
- package/dist/commands/stack/teardown.d.ts.map +1 -1
- package/dist/commands/stack/teardown.js +5 -2
- package/dist/commands/stack/validate.d.ts +1 -1
- package/dist/commands/stack/validate.d.ts.map +1 -1
- package/dist/commands/stack/validate.js +4 -2
- package/dist/commands/stack.d.ts.map +1 -1
- package/dist/commands/stack.js +10 -5
- package/dist/commands/utils/auth-prompt.d.ts +25 -0
- package/dist/commands/utils/auth-prompt.d.ts.map +1 -0
- package/dist/commands/utils/auth-prompt.js +115 -0
- package/dist/commands/utils/device-prompt.d.ts +18 -0
- package/dist/commands/utils/device-prompt.d.ts.map +1 -0
- package/dist/commands/utils/device-prompt.js +58 -0
- package/dist/commands/utils/output-formatter.d.ts +13 -0
- package/dist/commands/utils/output-formatter.d.ts.map +1 -1
- package/dist/commands/utils/output-formatter.js +21 -0
- package/dist/index.js +2 -0
- package/dist/services/LocalAgentManager.d.ts +2 -1
- package/dist/services/LocalAgentManager.d.ts.map +1 -1
- package/dist/services/LocalAgentManager.js +6 -4
- package/dist/services/application/ApplicationService.d.ts +19 -0
- package/dist/services/application/ApplicationService.d.ts.map +1 -1
- package/dist/services/application/ApplicationService.js +14 -1
- package/dist/services/device/DeviceService.d.ts +62 -0
- package/dist/services/device/DeviceService.d.ts.map +1 -0
- package/dist/services/device/DeviceService.js +235 -0
- package/dist/services/edgible.d.ts +3 -1
- package/dist/services/edgible.d.ts.map +1 -1
- package/dist/services/edgible.js +5 -4
- package/dist/services/instances.d.ts +4 -1
- package/dist/services/instances.d.ts.map +1 -1
- package/dist/services/instances.js +8 -4
- package/dist/types/AgentConfig.d.ts +26 -0
- package/dist/types/AgentConfig.d.ts.map +1 -1
- package/dist/types/ApiRequests.d.ts +5 -1
- package/dist/types/ApiRequests.d.ts.map +1 -1
- package/dist/types/ApiResponses.d.ts +5 -0
- package/dist/types/ApiResponses.d.ts.map +1 -1
- package/dist/types/JobTypes.d.ts +103 -0
- package/dist/types/JobTypes.d.ts.map +1 -0
- package/dist/types/JobTypes.js +80 -0
- package/dist/types/WebSocketMessages.d.ts +89 -0
- package/dist/types/WebSocketMessages.d.ts.map +1 -0
- package/dist/types/WebSocketMessages.js +5 -0
- package/dist/types/backendJobs.d.ts +102 -0
- package/dist/types/backendJobs.d.ts.map +1 -0
- package/dist/types/backendJobs.js +5 -0
- package/dist/types/models/ApplicationData.d.ts +1 -1
- package/dist/types/models/ApplicationData.d.ts.map +1 -1
- package/dist/types/models/DeviceData.d.ts +4 -0
- package/dist/types/models/DeviceData.d.ts.map +1 -1
- package/dist/types/validation/schemas.d.ts +3 -3
- package/dist/types/validation/schemas.js +1 -1
- package/dist/utils/stack-file.d.ts +11 -0
- package/dist/utils/stack-file.d.ts.map +1 -0
- package/dist/utils/stack-file.js +66 -0
- package/package.json +1 -1
- package/dist/commands/agent/agent-handlers.d.ts +0 -45
- package/dist/commands/agent/agent-handlers.d.ts.map +0 -1
- package/dist/commands/agent/agent-handlers.js +0 -1159
- package/dist/commands/application/api-keys.d.ts +0 -3
- package/dist/commands/application/api-keys.d.ts.map +0 -1
- package/dist/commands/application/api-keys.js +0 -227
- package/dist/commands/application/create-compose.d.ts +0 -3
- package/dist/commands/application/create-compose.d.ts.map +0 -1
- package/dist/commands/application/create-compose.js +0 -381
- package/dist/commands/application/create-interactive.d.ts +0 -3
- package/dist/commands/application/create-interactive.d.ts.map +0 -1
- package/dist/commands/application/create-interactive.js +0 -326
- package/dist/commands/application/create-workload.d.ts +0 -5
- package/dist/commands/application/create-workload.d.ts.map +0 -1
- package/dist/commands/application/create-workload.js +0 -48
- package/dist/commands/application/short-codes.d.ts +0 -3
- package/dist/commands/application/short-codes.d.ts.map +0 -1
- package/dist/commands/application/short-codes.js +0 -226
- package/dist/commands/application/toggle.d.ts +0 -2
- package/dist/commands/application/toggle.d.ts.map +0 -1
- package/dist/commands/application/toggle.js +0 -78
- package/dist/commands/examples/migrated-command-example.d.ts +0 -31
- package/dist/commands/examples/migrated-command-example.d.ts.map +0 -1
- package/dist/commands/examples/migrated-command-example.js +0 -180
- package/dist/commands/managedGateway/create.d.ts +0 -6
- package/dist/commands/managedGateway/create.d.ts.map +0 -1
- package/dist/commands/managedGateway/create.js +0 -50
- package/dist/commands/managedGateway/delete.d.ts +0 -5
- package/dist/commands/managedGateway/delete.d.ts.map +0 -1
- package/dist/commands/managedGateway/delete.js +0 -57
- package/dist/commands/managedGateway/get.d.ts +0 -4
- package/dist/commands/managedGateway/get.d.ts.map +0 -1
- package/dist/commands/managedGateway/get.js +0 -71
- package/dist/commands/managedGateway/haproxy-stats.d.ts +0 -6
- package/dist/commands/managedGateway/haproxy-stats.d.ts.map +0 -1
- package/dist/commands/managedGateway/haproxy-stats.js +0 -131
- package/dist/commands/managedGateway/list.d.ts +0 -4
- package/dist/commands/managedGateway/list.d.ts.map +0 -1
- package/dist/commands/managedGateway/list.js +0 -50
- package/dist/commands/managedGateway/logs.d.ts +0 -10
- package/dist/commands/managedGateway/logs.d.ts.map +0 -1
- package/dist/commands/managedGateway/logs.js +0 -100
- package/dist/commands/managedGateway/reboot.d.ts +0 -5
- package/dist/commands/managedGateway/reboot.d.ts.map +0 -1
- package/dist/commands/managedGateway/reboot.js +0 -95
- package/dist/commands/managedGateway/resync.d.ts +0 -10
- package/dist/commands/managedGateway/resync.d.ts.map +0 -1
- package/dist/commands/managedGateway/resync.js +0 -69
- package/dist/commands/managedGateway/ssh.d.ts +0 -4
- package/dist/commands/managedGateway/ssh.d.ts.map +0 -1
- package/dist/commands/managedGateway/ssh.js +0 -130
- package/dist/commands/managedGateway/wipe-logs.d.ts +0 -4
- package/dist/commands/managedGateway/wipe-logs.d.ts.map +0 -1
- package/dist/commands/managedGateway/wipe-logs.js +0 -67
- package/dist/commands/managedGateway/wireguard.d.ts +0 -4
- package/dist/commands/managedGateway/wireguard.d.ts.map +0 -1
- package/dist/commands/managedGateway/wireguard.js +0 -68
- package/dist/di/bindings.d.ts +0 -15
- package/dist/di/bindings.d.ts.map +0 -1
- package/dist/di/bindings.js +0 -99
- package/dist/di/container.d.ts +0 -44
- package/dist/di/container.d.ts.map +0 -1
- package/dist/di/container.js +0 -88
- package/dist/di/types.d.ts +0 -23
- package/dist/di/types.d.ts.map +0 -1
- package/dist/di/types.js +0 -32
- package/dist/repositories/config-repository.d.ts +0 -46
- package/dist/repositories/config-repository.d.ts.map +0 -1
- package/dist/repositories/config-repository.js +0 -62
- package/dist/repositories/gateway-repository.d.ts +0 -37
- package/dist/repositories/gateway-repository.d.ts.map +0 -1
- package/dist/repositories/gateway-repository.js +0 -35
|
@@ -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,6 +6,7 @@ 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");
|
|
@@ -37,6 +38,7 @@ program
|
|
|
37
38
|
(0, auth_1.setupAuthCommands)(program);
|
|
38
39
|
(0, application_1.setupApplicationCommands)(program);
|
|
39
40
|
(0, gateway_1.setupGatewayCommands)(program);
|
|
41
|
+
(0, device_1.setupDeviceCommands)(program);
|
|
40
42
|
(0, stack_1.setupStackCommands)(program);
|
|
41
43
|
(0, config_1.setupConfigCommands)(program);
|
|
42
44
|
(0, discover_1.setupDiscoverCommands)(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":"AAWA,OAAO,EACL,kBAAkB,EAGnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EAEtB,wBAAwB,EACxB,kBAAkB,EAGnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"LocalAgentManager.d.ts","sourceRoot":"","sources":["../../src/services/LocalAgentManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,11 +55,12 @@ const writeFile = (0, util_1.promisify)(fs.writeFile);
|
|
|
55
55
|
const readFile = (0, util_1.promisify)(fs.readFile);
|
|
56
56
|
const mkdir = (0, util_1.promisify)(fs.mkdir);
|
|
57
57
|
class LocalAgentManager {
|
|
58
|
-
constructor() {
|
|
58
|
+
constructor(configManager) {
|
|
59
59
|
this.agentProcess = null;
|
|
60
|
+
// Use provided configManager or create a new one (for backwards compatibility)
|
|
61
|
+
this.configManager = configManager || new config_1.ConfigManager();
|
|
60
62
|
// Get user config to determine installation type
|
|
61
|
-
const
|
|
62
|
-
const userConfig = tempConfigManager.getConfig();
|
|
63
|
+
const userConfig = this.configManager.getConfig();
|
|
63
64
|
// Resolve agent config path based on installation type
|
|
64
65
|
this.configPath = PathResolver_1.PathResolver.resolveAgentConfigPath(userConfig.agentInstallationType);
|
|
65
66
|
// Check for the actual agent binary location
|
|
@@ -71,7 +72,6 @@ class LocalAgentManager {
|
|
|
71
72
|
this.agentPath = possibleAgentPaths.find(p => fs.existsSync(p)) || possibleAgentPaths[0];
|
|
72
73
|
this.serviceName = 'edgible-agent';
|
|
73
74
|
this.statePath = path.join(this.configPath, 'state.json');
|
|
74
|
-
this.configManager = new config_1.ConfigManager();
|
|
75
75
|
this.statusManager = new AgentStatusManager_1.AgentStatusManager();
|
|
76
76
|
}
|
|
77
77
|
/**
|
|
@@ -91,6 +91,7 @@ class LocalAgentManager {
|
|
|
91
91
|
devicePassword: cliConfig.devicePassword,
|
|
92
92
|
deviceType: cliConfig.deviceType || 'serving',
|
|
93
93
|
apiBaseUrl: (0, urls_1.getApiBaseUrl)(),
|
|
94
|
+
stage: (0, urls_1.getStage)(),
|
|
94
95
|
organizationId: cliConfig.organizationId,
|
|
95
96
|
firewallEnabled: true,
|
|
96
97
|
pollingInterval: 60000,
|
|
@@ -1484,6 +1485,7 @@ class LocalAgentManager {
|
|
|
1484
1485
|
devicePassword: cliConfig.devicePassword || 'edgible-password-' + Math.random().toString(36).substr(2, 9),
|
|
1485
1486
|
deviceType: cliConfig.deviceType || 'serving',
|
|
1486
1487
|
apiBaseUrl: (0, urls_1.getApiBaseUrl)(),
|
|
1488
|
+
stage: (0, urls_1.getStage)(),
|
|
1487
1489
|
firewallEnabled: true,
|
|
1488
1490
|
pollingInterval: 60000,
|
|
1489
1491
|
healthCheckTimeout: 5000,
|
|
@@ -36,6 +36,14 @@ export interface ApplicationService {
|
|
|
36
36
|
createShortCode(applicationId: string, name: string, expiresAt?: string, maxUses?: number): Promise<any>;
|
|
37
37
|
updateShortCode(applicationId: string, codeId: string, updates: any): Promise<any>;
|
|
38
38
|
deleteShortCode(applicationId: string, codeId: string): Promise<void>;
|
|
39
|
+
updateApplication(applicationId: string, updates: {
|
|
40
|
+
name?: string;
|
|
41
|
+
description?: string;
|
|
42
|
+
authModes?: Array<'none' | 'org' | 'api-key'>;
|
|
43
|
+
allowedOrganizations?: string[];
|
|
44
|
+
targetState?: string;
|
|
45
|
+
dependsOnApplicationIds?: string[];
|
|
46
|
+
}): Promise<unknown>;
|
|
39
47
|
}
|
|
40
48
|
export declare class ApplicationServiceImpl implements ApplicationService {
|
|
41
49
|
private apiClient;
|
|
@@ -95,5 +103,16 @@ export declare class ApplicationServiceImpl implements ApplicationService {
|
|
|
95
103
|
* Delete a short code
|
|
96
104
|
*/
|
|
97
105
|
deleteShortCode(applicationId: string, codeId: string): Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* Update application (e.g. auth modes, name, description)
|
|
108
|
+
*/
|
|
109
|
+
updateApplication(applicationId: string, updates: {
|
|
110
|
+
name?: string;
|
|
111
|
+
description?: string;
|
|
112
|
+
authModes?: Array<'none' | 'org' | 'api-key'>;
|
|
113
|
+
allowedOrganizations?: string[];
|
|
114
|
+
targetState?: 'running' | 'suspended';
|
|
115
|
+
dependsOnApplicationIds?: string[];
|
|
116
|
+
}): Promise<unknown>;
|
|
98
117
|
}
|
|
99
118
|
//# sourceMappingURL=ApplicationService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationService.d.ts","sourceRoot":"","sources":["../../../src/services/application/ApplicationService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAEzE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,CACd,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,EAC1C,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,CAAC,CAAC;IACxB,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1C,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACjD,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,iCAAiC,CAAC,MAAM,EAAE;QACxC,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC;QAC3C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,OAAO,EAAE,mBAAmB,GAAG,gBAAgB,GAAG,SAAS,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;QACnG,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC;QAC9C,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;QAChC,2FAA2F;QAC3F,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;KACpC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrB,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACnD,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACpF,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACtD,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACzG,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACnF,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ApplicationService.d.ts","sourceRoot":"","sources":["../../../src/services/application/ApplicationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -293,7 +293,6 @@ class ApplicationServiceImpl {
|
|
|
293
293
|
if (params.dependsOnApplicationIds !== undefined && params.dependsOnApplicationIds.length > 0) {
|
|
294
294
|
createRequest.dependsOnApplicationIds = params.dependsOnApplicationIds;
|
|
295
295
|
}
|
|
296
|
-
console.log(`application: ${params}`);
|
|
297
296
|
const response = await this.apiClient.createApplication(createRequest);
|
|
298
297
|
return response.application;
|
|
299
298
|
}
|
|
@@ -398,6 +397,20 @@ class ApplicationServiceImpl {
|
|
|
398
397
|
throw new Error(`Failed to delete short code: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
399
398
|
}
|
|
400
399
|
}
|
|
400
|
+
/**
|
|
401
|
+
* Update application (e.g. auth modes, name, description)
|
|
402
|
+
*/
|
|
403
|
+
async updateApplication(applicationId, updates) {
|
|
404
|
+
try {
|
|
405
|
+
await this.tokenManager.ensureValidToken(this.apiClient, this.authService.loginDevice.bind(this.authService));
|
|
406
|
+
const response = await this.apiClient.updateApplication({ applicationId, ...updates });
|
|
407
|
+
return response.application;
|
|
408
|
+
}
|
|
409
|
+
catch (error) {
|
|
410
|
+
this.logger.error('Failed to update application', error);
|
|
411
|
+
throw new Error(`Failed to update application: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
401
414
|
}
|
|
402
415
|
exports.ApplicationServiceImpl = ApplicationServiceImpl;
|
|
403
416
|
//# 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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"}
|