@alwaysai/device-agent 0.0.12 → 0.0.14
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/lib/application-control/backup.d.ts.map +1 -1
- package/lib/application-control/backup.js +11 -5
- package/lib/application-control/backup.js.map +1 -1
- package/lib/application-control/config.d.ts +12 -4
- package/lib/application-control/config.d.ts.map +1 -1
- package/lib/application-control/config.js +59 -16
- package/lib/application-control/config.js.map +1 -1
- package/lib/application-control/environment-variables.d.ts.map +1 -1
- package/lib/application-control/environment-variables.js.map +1 -1
- package/lib/application-control/index.d.ts +5 -5
- package/lib/application-control/index.d.ts.map +1 -1
- package/lib/application-control/index.js +4 -6
- package/lib/application-control/index.js.map +1 -1
- package/lib/application-control/install.d.ts +1 -1
- package/lib/application-control/install.d.ts.map +1 -1
- package/lib/application-control/install.js +58 -57
- package/lib/application-control/install.js.map +1 -1
- package/lib/application-control/models.d.ts +7 -5
- package/lib/application-control/models.d.ts.map +1 -1
- package/lib/application-control/models.js +78 -57
- package/lib/application-control/models.js.map +1 -1
- package/lib/application-control/status.d.ts +0 -6
- package/lib/application-control/status.d.ts.map +1 -1
- package/lib/application-control/status.js +21 -33
- package/lib/application-control/status.js.map +1 -1
- package/lib/application-control/utils.d.ts +3 -2
- package/lib/application-control/utils.d.ts.map +1 -1
- package/lib/application-control/utils.js +54 -34
- package/lib/application-control/utils.js.map +1 -1
- package/lib/cloud-connection/app-install-status.d.ts +16 -0
- package/lib/cloud-connection/app-install-status.d.ts.map +1 -0
- package/lib/cloud-connection/app-install-status.js +53 -0
- package/lib/cloud-connection/app-install-status.js.map +1 -0
- package/lib/cloud-connection/bootstrap-provision.d.ts +2 -0
- package/lib/cloud-connection/bootstrap-provision.d.ts.map +1 -0
- package/lib/cloud-connection/bootstrap-provision.js +34 -0
- package/lib/cloud-connection/bootstrap-provision.js.map +1 -0
- package/lib/cloud-connection/cmd-status.d.ts +16 -0
- package/lib/cloud-connection/cmd-status.d.ts.map +1 -0
- package/lib/cloud-connection/cmd-status.js +49 -0
- package/lib/cloud-connection/cmd-status.js.map +1 -0
- package/lib/cloud-connection/device-agent-cloud-connection.d.ts +21 -34
- package/lib/cloud-connection/device-agent-cloud-connection.d.ts.map +1 -1
- package/lib/cloud-connection/device-agent-cloud-connection.js +211 -387
- package/lib/cloud-connection/device-agent-cloud-connection.js.map +1 -1
- package/lib/cloud-connection/device-agent.d.ts.map +1 -1
- package/lib/cloud-connection/device-agent.js +22 -26
- package/lib/cloud-connection/device-agent.js.map +1 -1
- package/lib/cloud-connection/live-updates-handler.d.ts +34 -0
- package/lib/cloud-connection/live-updates-handler.d.ts.map +1 -0
- package/lib/cloud-connection/live-updates-handler.js +167 -0
- package/lib/cloud-connection/live-updates-handler.js.map +1 -0
- package/lib/cloud-connection/messages.d.ts +14 -0
- package/lib/cloud-connection/messages.d.ts.map +1 -0
- package/lib/cloud-connection/messages.js +38 -0
- package/lib/cloud-connection/messages.js.map +1 -0
- package/lib/cloud-connection/passthrough-handler.d.ts +11 -0
- package/lib/cloud-connection/passthrough-handler.d.ts.map +1 -0
- package/lib/cloud-connection/passthrough-handler.js +59 -0
- package/lib/cloud-connection/passthrough-handler.js.map +1 -0
- package/lib/cloud-connection/publisher.d.ts +15 -0
- package/lib/cloud-connection/publisher.d.ts.map +1 -0
- package/lib/cloud-connection/publisher.js +58 -0
- package/lib/cloud-connection/publisher.js.map +1 -0
- package/lib/cloud-connection/shadow-handler.d.ts +33 -0
- package/lib/cloud-connection/shadow-handler.d.ts.map +1 -0
- package/lib/cloud-connection/shadow-handler.js +108 -0
- package/lib/cloud-connection/shadow-handler.js.map +1 -0
- package/lib/cloud-connection/shadow-handler.test.d.ts +2 -0
- package/lib/cloud-connection/shadow-handler.test.d.ts.map +1 -0
- package/lib/cloud-connection/shadow-handler.test.js +321 -0
- package/lib/cloud-connection/shadow-handler.test.js.map +1 -0
- package/lib/cloud-connection/shadow.d.ts +16 -0
- package/lib/cloud-connection/shadow.d.ts.map +1 -0
- package/lib/cloud-connection/shadow.js +36 -0
- package/lib/cloud-connection/shadow.js.map +1 -0
- package/lib/device-control/device-control.d.ts.map +1 -1
- package/lib/device-control/device-control.js +1 -0
- package/lib/device-control/device-control.js.map +1 -1
- package/lib/docker/docker-cmd.js +1 -1
- package/lib/docker/docker-compose-cmd.d.ts.map +1 -1
- package/lib/docker/docker-compose-cmd.js +1 -1
- package/lib/docker/docker-compose-cmd.js.map +1 -1
- package/lib/endpoints.js +10 -10
- package/lib/endpoints.js.map +1 -1
- package/lib/environment.d.ts +1 -0
- package/lib/environment.d.ts.map +1 -1
- package/lib/environment.js +2 -1
- package/lib/environment.js.map +1 -1
- package/lib/infrastructure/agent-config.d.ts +15 -58
- package/lib/infrastructure/agent-config.d.ts.map +1 -1
- package/lib/infrastructure/agent-config.js +22 -15
- package/lib/infrastructure/agent-config.js.map +1 -1
- package/lib/infrastructure/agent-config.test.js +25 -23
- package/lib/infrastructure/agent-config.test.js.map +1 -1
- package/lib/infrastructure/system-id.d.ts +2 -0
- package/lib/infrastructure/system-id.d.ts.map +1 -0
- package/lib/infrastructure/system-id.js +21 -0
- package/lib/infrastructure/system-id.js.map +1 -0
- package/lib/infrastructure/tokens-and-device-cfg.d.ts +4 -0
- package/lib/infrastructure/tokens-and-device-cfg.d.ts.map +1 -0
- package/lib/infrastructure/tokens-and-device-cfg.js +27 -0
- package/lib/infrastructure/tokens-and-device-cfg.js.map +1 -0
- package/lib/infrastructure/urls.d.ts.map +1 -1
- package/lib/infrastructure/urls.js +3 -3
- package/lib/infrastructure/urls.js.map +1 -1
- package/lib/local-connection/rabbitmq-connection.d.ts +4 -0
- package/lib/local-connection/rabbitmq-connection.d.ts.map +1 -0
- package/lib/local-connection/rabbitmq-connection.js +58 -0
- package/lib/local-connection/rabbitmq-connection.js.map +1 -0
- package/lib/root.d.ts.map +1 -1
- package/lib/root.js +2 -7
- package/lib/root.js.map +1 -1
- package/lib/subcommands/app/app.d.ts +2 -1
- package/lib/subcommands/app/app.d.ts.map +1 -1
- package/lib/subcommands/app/app.js +112 -77
- package/lib/subcommands/app/app.js.map +1 -1
- package/lib/subcommands/app/index.js +2 -2
- package/lib/subcommands/device/clean.d.ts +2 -0
- package/lib/subcommands/device/clean.d.ts.map +1 -0
- package/lib/subcommands/device/clean.js +29 -0
- package/lib/subcommands/device/clean.js.map +1 -0
- package/lib/subcommands/device/device.d.ts +1 -1
- package/lib/subcommands/device/device.d.ts.map +1 -1
- package/lib/subcommands/device/device.js +44 -33
- package/lib/subcommands/device/device.js.map +1 -1
- package/lib/subcommands/device/index.d.ts.map +1 -1
- package/lib/subcommands/device/index.js +2 -1
- package/lib/subcommands/device/index.js.map +1 -1
- package/lib/subcommands/get-model-package.js +5 -5
- package/lib/subcommands/index.d.ts +0 -1
- package/lib/subcommands/index.d.ts.map +1 -1
- package/lib/subcommands/index.js +1 -1
- package/lib/subcommands/login.d.ts +0 -1
- package/lib/subcommands/login.d.ts.map +1 -1
- package/lib/subcommands/login.js +6 -14
- package/lib/subcommands/login.js.map +1 -1
- package/lib/util/clean-certs.d.ts +2 -0
- package/lib/util/clean-certs.d.ts.map +1 -0
- package/lib/util/clean-certs.js +16 -0
- package/lib/util/clean-certs.js.map +1 -0
- package/lib/util/directories.d.ts +16 -15
- package/lib/util/directories.d.ts.map +1 -1
- package/lib/util/directories.js +45 -26
- package/lib/util/directories.js.map +1 -1
- package/lib/util/fetch-with-timeout.d.ts +4 -0
- package/lib/util/fetch-with-timeout.d.ts.map +1 -0
- package/lib/util/fetch-with-timeout.js +15 -0
- package/lib/util/fetch-with-timeout.js.map +1 -0
- package/lib/util/get-device-id.d.ts +1 -1
- package/lib/util/get-device-id.d.ts.map +1 -1
- package/lib/util/get-device-id.js +14 -19
- package/lib/util/get-device-id.js.map +1 -1
- package/lib/util/http-client.d.ts +1 -1
- package/lib/util/http-client.d.ts.map +1 -1
- package/lib/util/http-client.js +10 -8
- package/lib/util/http-client.js.map +1 -1
- package/lib/util/logger.d.ts.map +1 -1
- package/lib/util/logger.js +4 -5
- package/lib/util/logger.js.map +1 -1
- package/lib/util/require-logged-in-and-paid-plan.d.ts +2 -0
- package/lib/util/require-logged-in-and-paid-plan.d.ts.map +1 -0
- package/lib/util/require-logged-in-and-paid-plan.js +18 -0
- package/lib/util/require-logged-in-and-paid-plan.js.map +1 -0
- package/lib/util/run-in-dir.d.ts.map +1 -1
- package/lib/util/run-in-dir.js +1 -0
- package/lib/util/run-in-dir.js.map +1 -1
- package/lib/util/timer.d.ts +2 -0
- package/lib/util/timer.d.ts.map +1 -0
- package/lib/util/timer.js +6 -0
- package/lib/util/timer.js.map +1 -0
- package/package.json +32 -35
- package/readme.md +100 -89
- package/src/application-control/backup.ts +11 -6
- package/src/application-control/config.ts +75 -13
- package/src/application-control/environment-variables.ts +3 -3
- package/src/application-control/index.ts +18 -11
- package/src/application-control/install.ts +82 -78
- package/src/application-control/models.ts +104 -72
- package/src/application-control/status.ts +29 -40
- package/src/application-control/utils.ts +66 -38
- package/src/cloud-connection/app-install-status.ts +62 -0
- package/src/cloud-connection/bootstrap-provision.ts +40 -0
- package/src/cloud-connection/cmd-status.ts +52 -0
- package/src/cloud-connection/device-agent-cloud-connection.ts +302 -526
- package/src/cloud-connection/device-agent.ts +31 -38
- package/src/cloud-connection/live-updates-handler.ts +226 -0
- package/src/cloud-connection/messages.ts +39 -0
- package/src/cloud-connection/passthrough-handler.ts +67 -0
- package/src/cloud-connection/publisher.ts +86 -0
- package/src/cloud-connection/shadow-handler.test.ts +361 -0
- package/src/cloud-connection/shadow-handler.ts +175 -0
- package/src/cloud-connection/shadow.ts +50 -0
- package/src/device-control/device-control.ts +1 -0
- package/src/docker/docker-cmd.ts +1 -1
- package/src/docker/docker-compose-cmd.ts +5 -2
- package/src/endpoints.ts +9 -9
- package/src/environment.ts +11 -3
- package/src/infrastructure/agent-config.test.ts +33 -29
- package/src/infrastructure/agent-config.ts +57 -22
- package/src/infrastructure/system-id.ts +18 -0
- package/src/infrastructure/tokens-and-device-cfg.ts +34 -0
- package/src/infrastructure/urls.ts +4 -2
- package/src/local-connection/rabbitmq-connection.ts +53 -0
- package/src/root.ts +2 -8
- package/src/subcommands/app/app.ts +119 -83
- package/src/subcommands/app/index.ts +3 -3
- package/src/subcommands/device/clean.ts +26 -0
- package/src/subcommands/device/device.ts +67 -54
- package/src/subcommands/device/index.ts +2 -1
- package/src/subcommands/get-model-package.ts +5 -5
- package/src/subcommands/index.ts +1 -1
- package/src/subcommands/login.ts +6 -14
- package/src/util/clean-certs.ts +12 -0
- package/src/util/directories.ts +68 -52
- package/src/util/fetch-with-timeout.ts +18 -0
- package/src/util/get-device-id.ts +16 -18
- package/src/util/http-client.ts +18 -13
- package/src/util/logger.ts +6 -6
- package/src/util/require-logged-in-and-paid-plan.ts +16 -0
- package/src/util/run-in-dir.ts +2 -1
- package/src/util/timer.ts +1 -0
- package/lib/infrastructure/certificates-and-tokens.d.ts +0 -6
- package/lib/infrastructure/certificates-and-tokens.d.ts.map +0 -1
- package/lib/infrastructure/certificates-and-tokens.js +0 -43
- package/lib/infrastructure/certificates-and-tokens.js.map +0 -1
- package/src/infrastructure/certificates-and-tokens.ts +0 -53
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.updateModelsWithPresignedUrls = exports.installModelsWithPresignedURLs = exports.updateModels = exports.replaceModels = exports.removeModel = exports.
|
|
4
|
-
const
|
|
3
|
+
exports.updateModelsWithPresignedUrls = exports.installModelsWithPresignedURLs = exports.updateModels = exports.replaceModels = exports.removeModel = exports.getAppModels = void 0;
|
|
4
|
+
const path = require("path");
|
|
5
5
|
const app_1 = require("alwaysai/lib/components/app");
|
|
6
6
|
const util_1 = require("alwaysai/lib/util");
|
|
7
7
|
const logger_1 = require("../util/logger");
|
|
@@ -12,6 +12,9 @@ const copy_dir_1 = require("../util/copy-dir");
|
|
|
12
12
|
const run_in_dir_1 = require("../util/run-in-dir");
|
|
13
13
|
const status_1 = require("./status");
|
|
14
14
|
const utils_1 = require("./utils");
|
|
15
|
+
const model_1 = require("alwaysai/lib/core/model");
|
|
16
|
+
const constants_1 = require("alwaysai/lib/constants");
|
|
17
|
+
const config_1 = require("./config");
|
|
15
18
|
async function getAppModels(props) {
|
|
16
19
|
const { projectId } = props;
|
|
17
20
|
if (!(await (0, agent_config_1.AgentConfigFile)().isAppPresent({ projectId }))) {
|
|
@@ -33,48 +36,35 @@ async function getAppModels(props) {
|
|
|
33
36
|
return modelDetails;
|
|
34
37
|
}
|
|
35
38
|
exports.getAppModels = getAppModels;
|
|
36
|
-
async function addModel(props) {
|
|
37
|
-
const { projectId, modelId } = props;
|
|
38
|
-
await (0, utils_1.requireAppInstalled)({ projectId });
|
|
39
|
-
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
40
|
-
await (0, app_1.appModelsAddComponent)({
|
|
41
|
-
yes: false,
|
|
42
|
-
dir: appDir,
|
|
43
|
-
id: modelId,
|
|
44
|
-
addToProject: false,
|
|
45
|
-
});
|
|
46
|
-
await (0, utils_1.buildApp)({ appDir });
|
|
47
|
-
}
|
|
48
|
-
exports.addModel = addModel;
|
|
49
39
|
async function removeModel(props) {
|
|
50
40
|
const { projectId, modelId } = props;
|
|
51
|
-
await (0, utils_1.
|
|
41
|
+
await (0, utils_1.requireAppReady)({ projectId });
|
|
52
42
|
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
53
43
|
await (0, run_in_dir_1.runInDir)(app_1.appModelsRemoveComponent, [
|
|
54
44
|
{
|
|
55
45
|
id: modelId,
|
|
56
46
|
purge: true,
|
|
57
|
-
removeFromProject: false
|
|
58
|
-
}
|
|
47
|
+
removeFromProject: false
|
|
48
|
+
}
|
|
59
49
|
], appDir);
|
|
60
50
|
}
|
|
61
51
|
exports.removeModel = removeModel;
|
|
62
52
|
async function replaceModels(props) {
|
|
63
53
|
const { projectId, modelIds } = props;
|
|
64
|
-
await (0, utils_1.
|
|
54
|
+
await (0, utils_1.requireAppReady)({ projectId });
|
|
65
55
|
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
66
56
|
await (0, run_in_dir_1.runInDir)(app_1.appModelsRemoveAllComponent, [
|
|
67
57
|
{
|
|
68
58
|
purge: true,
|
|
69
|
-
removeFromProject: false
|
|
70
|
-
}
|
|
59
|
+
removeFromProject: false
|
|
60
|
+
}
|
|
71
61
|
], appDir);
|
|
72
62
|
for (const modelId of modelIds) {
|
|
73
63
|
await (0, app_1.appModelsAddComponent)({
|
|
74
64
|
yes: false,
|
|
75
65
|
dir: appDir,
|
|
76
66
|
id: modelId,
|
|
77
|
-
addToProject: false
|
|
67
|
+
addToProject: false
|
|
78
68
|
});
|
|
79
69
|
}
|
|
80
70
|
await (0, utils_1.buildApp)({ appDir });
|
|
@@ -82,72 +72,103 @@ async function replaceModels(props) {
|
|
|
82
72
|
exports.replaceModels = replaceModels;
|
|
83
73
|
async function updateModels(props) {
|
|
84
74
|
const { projectId } = props;
|
|
85
|
-
await (0, utils_1.
|
|
75
|
+
await (0, utils_1.requireAppReady)({ projectId });
|
|
86
76
|
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
87
77
|
await (0, app_1.appModelsUpdateComponent)({
|
|
88
78
|
yes: false,
|
|
89
|
-
dir: appDir
|
|
79
|
+
dir: appDir
|
|
90
80
|
});
|
|
91
81
|
await (0, utils_1.buildApp)({ appDir });
|
|
92
82
|
}
|
|
93
83
|
exports.updateModels = updateModels;
|
|
94
84
|
async function installModelsWithPresignedURLs(modelPayloads, targetDir) {
|
|
95
85
|
const spawner = (0, util_1.JsSpawner)();
|
|
86
|
+
await spawner.mkdirp(targetDir);
|
|
96
87
|
await Promise.all(modelPayloads.map(async (payload) => {
|
|
88
|
+
logger_1.logger.info(`Installing ${payload.id}: ${payload.version}`);
|
|
89
|
+
const version = payload.version;
|
|
97
90
|
const modelDest = `${targetDir}/${payload.id}`;
|
|
98
91
|
await spawner.mkdirp(modelDest);
|
|
99
92
|
const localDest = `${modelDest}/${payload.version}.tar.gz`;
|
|
100
93
|
await (0, utils_1.downloadPackageUsingPresignedUrl)({
|
|
101
94
|
localDest,
|
|
102
|
-
presignedUrl: payload.modelSignedUrl
|
|
95
|
+
presignedUrl: payload.modelSignedUrl
|
|
103
96
|
});
|
|
104
97
|
await spawner.untar((0, fs_1.createReadStream)(localDest), (0, path_1.dirname)(modelDest));
|
|
98
|
+
await updateModelJson(modelDest, (modelJson) => (Object.assign(Object.assign({}, modelJson), { version })));
|
|
105
99
|
await spawner.rimraf(localDest);
|
|
106
100
|
}));
|
|
101
|
+
async function readModelJson(dir) {
|
|
102
|
+
const filePath = spawner.resolvePath(dir, model_1.MODEL_JSON_FILE_NAME);
|
|
103
|
+
const output = await spawner.readFile(filePath);
|
|
104
|
+
const parsed = JSON.parse(output);
|
|
105
|
+
return parsed;
|
|
106
|
+
}
|
|
107
|
+
async function updateModelJson(dir, updater) {
|
|
108
|
+
const parsed = await readModelJson(dir);
|
|
109
|
+
const updated = updater(parsed);
|
|
110
|
+
const filePath = spawner.resolvePath(dir, model_1.MODEL_JSON_FILE_NAME);
|
|
111
|
+
const serialized = JSON.stringify(updated, null, 2);
|
|
112
|
+
await spawner.writeFile(filePath, serialized);
|
|
113
|
+
}
|
|
107
114
|
}
|
|
108
115
|
exports.installModelsWithPresignedURLs = installModelsWithPresignedURLs;
|
|
109
|
-
async function updateModelsWithPresignedUrls(
|
|
110
|
-
|
|
116
|
+
async function updateModelsWithPresignedUrls(props) {
|
|
117
|
+
const { projectId, modelInstallPayloads, appReleaseHash, newAppCfg } = props;
|
|
118
|
+
logger_1.logger.info(`Installing models for ${projectId}`);
|
|
111
119
|
const spawner = (0, util_1.JsSpawner)();
|
|
112
|
-
const appDir = (0, utils_1.getAppDir)(
|
|
113
|
-
|
|
114
|
-
|
|
120
|
+
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
121
|
+
if (await (0, agent_config_1.AgentConfigFile)().isAppPresent({ projectId })) {
|
|
122
|
+
if (!(await (0, agent_config_1.AgentConfigFile)().isAppReady({ projectId }))) {
|
|
123
|
+
throw new Error('Application already has installation in progress!');
|
|
124
|
+
}
|
|
125
|
+
logger_1.logger.info('Updating installed application');
|
|
126
|
+
await (0, agent_config_1.AgentConfigFile)().setAppInstalling({
|
|
127
|
+
projectId,
|
|
128
|
+
version: appReleaseHash
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
throw new Error('Application is not installed!');
|
|
133
|
+
}
|
|
134
|
+
const ogAppCfg = await (0, config_1.readAppCfgFile)({ projectId });
|
|
135
|
+
const ogDir = path.join(appDir, constants_1.APP_MODELS_DIRECTORY_NAME);
|
|
136
|
+
// Copy all current models to restore dir in case of failure
|
|
115
137
|
const restoreDir = `${ogDir}.restore`;
|
|
138
|
+
await spawner.rimraf(restoreDir);
|
|
116
139
|
await (0, copy_dir_1.copyDir)({ srcPath: ogDir, destPath: restoreDir });
|
|
117
|
-
|
|
140
|
+
// Create temp dir to install new models
|
|
141
|
+
const tmpDir = `${ogDir}.tmp`;
|
|
118
142
|
try {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
for (const model of existingModels) {
|
|
122
|
-
if (!modelInstallPayloads
|
|
123
|
-
.map((newModel) => newModel.id)
|
|
124
|
-
.includes(model.modelId)) {
|
|
125
|
-
// model does not need to be updated
|
|
126
|
-
await (0, copy_dir_1.copyDir)({
|
|
127
|
-
srcPath: `${ogDir}/${model.modelId}`,
|
|
128
|
-
destPath: `${tmpDir}/${model.modelId}`,
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
// install model packages
|
|
143
|
+
await spawner.rimraf(tmpDir);
|
|
144
|
+
await (0, copy_dir_1.copyDir)({ srcPath: ogDir, destPath: tmpDir });
|
|
133
145
|
await installModelsWithPresignedURLs(modelInstallPayloads, tmpDir);
|
|
146
|
+
// TODO: Purge outdated models
|
|
134
147
|
await spawner.rimraf(ogDir);
|
|
135
148
|
await (0, copy_dir_1.copyDir)({ srcPath: tmpDir, destPath: ogDir });
|
|
136
149
|
await spawner.rimraf(tmpDir);
|
|
137
|
-
await (0,
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
}
|
|
144
|
-
logger_1.logger.info(`Models installed for project ${
|
|
150
|
+
await (0, config_1.writeAppCfgFile)({ projectId, appCfg: newAppCfg });
|
|
151
|
+
await (0, utils_1.buildApp)({ appDir });
|
|
152
|
+
await (0, agent_config_1.AgentConfigFile)().setAppInstalled({
|
|
153
|
+
projectId,
|
|
154
|
+
version: appReleaseHash
|
|
155
|
+
});
|
|
156
|
+
await (0, status_1.restartApp)({ projectId });
|
|
157
|
+
logger_1.logger.info(`Models installed for project ${projectId}`);
|
|
158
|
+
/* Leave error handling to higher level so errors are sent to cloud
|
|
159
|
+
} catch (e) {
|
|
160
|
+
logger.error(
|
|
161
|
+
'Error updating app models from presigned URL, restoring models.',
|
|
162
|
+
e
|
|
163
|
+
);
|
|
164
|
+
await spawner.rimraf(ogDir);
|
|
165
|
+
await copyDir({ srcPath: restoreDir, destPath: ogDir });
|
|
166
|
+
await writeAppCfgFile({ projectId, appCfg: ogAppCfg });
|
|
167
|
+
*/
|
|
145
168
|
}
|
|
146
|
-
|
|
147
|
-
logger_1.logger.error(e, 'Error updating app models from presigned URL, restoring models.');
|
|
169
|
+
finally {
|
|
148
170
|
await spawner.rimraf(tmpDir);
|
|
149
|
-
await spawner.rimraf(
|
|
150
|
-
await (0, copy_dir_1.copyDir)({ srcPath: restoreDir, destPath: ogDir });
|
|
171
|
+
await spawner.rimraf(restoreDir);
|
|
151
172
|
}
|
|
152
173
|
}
|
|
153
174
|
exports.updateModelsWithPresignedUrls = updateModelsWithPresignedUrls;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/application-control/models.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/application-control/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { AppStatePacket } from '@alwaysai/device-agent-schemas';
|
|
3
|
-
export declare function listAppReleases(props: {
|
|
4
|
-
projectId: string;
|
|
5
|
-
}): Promise<import("alwaysai/lib/infrastructure").ReleaseHistoryArray>;
|
|
6
|
-
export declare function listAppLatestRelease(props: {
|
|
7
|
-
projectId: string;
|
|
8
|
-
}): Promise<string | undefined>;
|
|
9
3
|
export declare function getAppStatus(props: {
|
|
10
4
|
projectId: string;
|
|
11
5
|
}): Promise<AppStatePacket>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/application-control/status.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/application-control/status.ts"],"names":[],"mappings":";AAKA,OAAO,EAEL,cAAc,EAGf,MAAM,gCAAgC,CAAC;AAIxC,wBAAsB,YAAY,CAAC,KAAK,EAAE;IACxC,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,cAAc,CAAC,CA+E1B;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAqBjC;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBhB;AAED,wBAAsB,OAAO,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBzE;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5E"}
|
|
@@ -1,29 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.restartApp = exports.stopApp = exports.startApp = exports.getAppLogs = exports.getAppStatus =
|
|
3
|
+
exports.restartApp = exports.stopApp = exports.startApp = exports.getAppLogs = exports.getAppStatus = void 0;
|
|
4
4
|
const docker_compose_1 = require("docker-compose");
|
|
5
|
-
const infrastructure_1 = require("alwaysai/lib/infrastructure");
|
|
6
5
|
const util_1 = require("alwaysai/lib/util");
|
|
7
6
|
const docker_cmd_1 = require("../docker/docker-cmd");
|
|
8
7
|
const utils_1 = require("./utils");
|
|
9
8
|
const device_agent_schemas_1 = require("@alwaysai/device-agent-schemas");
|
|
10
9
|
const agent_config_1 = require("../infrastructure/agent-config");
|
|
11
10
|
const logger_1 = require("../util/logger");
|
|
12
|
-
async function listAppReleases(props) {
|
|
13
|
-
const { projectId } = props;
|
|
14
|
-
const releaseHistory = await (0, infrastructure_1.fetchAppReleaseHistory)(projectId);
|
|
15
|
-
return releaseHistory;
|
|
16
|
-
}
|
|
17
|
-
exports.listAppReleases = listAppReleases;
|
|
18
|
-
async function listAppLatestRelease(props) {
|
|
19
|
-
const { projectId } = props;
|
|
20
|
-
const releaseHistory = await (0, infrastructure_1.fetchAppReleaseHistory)(projectId);
|
|
21
|
-
if (releaseHistory.length >= 1) {
|
|
22
|
-
return releaseHistory[0]['releaseHash'];
|
|
23
|
-
}
|
|
24
|
-
return undefined;
|
|
25
|
-
}
|
|
26
|
-
exports.listAppLatestRelease = listAppLatestRelease;
|
|
27
11
|
async function getAppStatus(props) {
|
|
28
12
|
const { projectId } = props;
|
|
29
13
|
if (!(await (0, agent_config_1.AgentConfigFile)().isAppPresent({ projectId }))) {
|
|
@@ -31,7 +15,7 @@ async function getAppStatus(props) {
|
|
|
31
15
|
}
|
|
32
16
|
const appDetails = {
|
|
33
17
|
projectId,
|
|
34
|
-
version: await (0, agent_config_1.AgentConfigFile)().getAppVersion({ projectId })
|
|
18
|
+
version: await (0, agent_config_1.AgentConfigFile)().getAppVersion({ projectId })
|
|
35
19
|
};
|
|
36
20
|
if (!(await (0, agent_config_1.AgentConfigFile)().isAppReady({ projectId }))) {
|
|
37
21
|
// App is being installed or updated
|
|
@@ -51,7 +35,7 @@ async function getAppStatus(props) {
|
|
|
51
35
|
const containerId = await spawner.run({
|
|
52
36
|
exe: 'docker-compose',
|
|
53
37
|
cwd: appDir,
|
|
54
|
-
args: ['ps', '-q', name]
|
|
38
|
+
args: ['ps', '-q', name]
|
|
55
39
|
});
|
|
56
40
|
if (containerId === '') {
|
|
57
41
|
// The service was not yet started or failed to start
|
|
@@ -60,7 +44,7 @@ async function getAppStatus(props) {
|
|
|
60
44
|
else {
|
|
61
45
|
const slashContainerName = await spawner.run({
|
|
62
46
|
exe: 'docker',
|
|
63
|
-
args: ['inspect', '-f', '{{.Name}}', containerId]
|
|
47
|
+
args: ['inspect', '-f', '{{.Name}}', containerId]
|
|
64
48
|
});
|
|
65
49
|
const containerName = slashContainerName.substring(1);
|
|
66
50
|
let foundContainer = false;
|
|
@@ -95,7 +79,7 @@ async function getAppStatus(props) {
|
|
|
95
79
|
exports.getAppStatus = getAppStatus;
|
|
96
80
|
async function getAppLogs(props) {
|
|
97
81
|
const { projectId, services, args } = props;
|
|
98
|
-
await (0, utils_1.
|
|
82
|
+
await (0, utils_1.requireAppReady)({ projectId });
|
|
99
83
|
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
100
84
|
const serviceList = services
|
|
101
85
|
? services
|
|
@@ -108,40 +92,44 @@ async function getAppLogs(props) {
|
|
|
108
92
|
return await (0, util_1.JsSpawner)().runStreaming({
|
|
109
93
|
exe: 'docker-compose',
|
|
110
94
|
args: ['logs', '-f', ...argsList, ...serviceList],
|
|
111
|
-
cwd: appDir
|
|
95
|
+
cwd: appDir
|
|
112
96
|
});
|
|
113
97
|
}
|
|
114
98
|
exports.getAppLogs = getAppLogs;
|
|
115
99
|
async function startApp(props) {
|
|
116
100
|
const { projectId, dockerLoginToken } = props;
|
|
117
|
-
await (0, utils_1.
|
|
101
|
+
await (0, utils_1.requireAppReady)({ projectId });
|
|
118
102
|
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
119
103
|
if (dockerLoginToken !== undefined) {
|
|
120
104
|
const result = await (0, docker_cmd_1.runDockerLogin)({ token: dockerLoginToken });
|
|
121
|
-
logger_1.logger.
|
|
105
|
+
logger_1.logger.debug(`docker login: ${result}`);
|
|
122
106
|
}
|
|
123
107
|
// TODO: Check if app is running
|
|
124
108
|
// Start app
|
|
125
109
|
const upOut = await docker_compose_1.default.upAll({ cwd: appDir });
|
|
126
|
-
logger_1.logger.
|
|
110
|
+
logger_1.logger.debug(`docker-compose up: ${JSON.stringify(upOut, null, 2)}`);
|
|
127
111
|
if (upOut.exitCode !== 0) {
|
|
128
112
|
throw new Error(`Failed to start application! stdout=${upOut.out} stderr=${upOut.err}`);
|
|
129
113
|
}
|
|
130
|
-
logger_1.logger.info(
|
|
114
|
+
logger_1.logger.info(`Started ${projectId}`);
|
|
131
115
|
}
|
|
132
116
|
exports.startApp = startApp;
|
|
133
117
|
async function stopApp(props) {
|
|
134
118
|
const { projectId } = props;
|
|
135
119
|
await (0, utils_1.requireAppInstalled)({ projectId });
|
|
136
120
|
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
121
|
+
const appStatus = await getAppStatus({ projectId });
|
|
122
|
+
const appIsRunning = appStatus.services.length &&
|
|
123
|
+
appStatus.services[0].state !== device_agent_schemas_1.keyMirrors.appState.stopped;
|
|
124
|
+
if (appIsRunning) {
|
|
125
|
+
// Stop app
|
|
126
|
+
const output = await docker_compose_1.default.down({ cwd: appDir });
|
|
127
|
+
logger_1.logger.debug(`docker-compose down: ${JSON.stringify(output, null, 2)}`);
|
|
128
|
+
if (output.exitCode !== 0) {
|
|
129
|
+
throw new Error(`Failed to stop application! stdout=${output.out} stderr=${output.err}`);
|
|
130
|
+
}
|
|
131
|
+
logger_1.logger.info(`Stopped ${projectId}`);
|
|
143
132
|
}
|
|
144
|
-
logger_1.logger.info('Stopped', projectId);
|
|
145
133
|
}
|
|
146
134
|
exports.stopApp = stopApp;
|
|
147
135
|
async function restartApp(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/application-control/status.ts"],"names":[],"mappings":";;;AAAA,mDAAqC;AACrC,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/application-control/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
export declare const APP_ROOT: string;
|
|
2
1
|
export declare function getAppDir(projectId: string): string;
|
|
3
2
|
export declare function requireAppInstalled(props: {
|
|
4
3
|
projectId: string;
|
|
5
4
|
}): Promise<void>;
|
|
5
|
+
export declare function requireAppReady(props: {
|
|
6
|
+
projectId: string;
|
|
7
|
+
}): Promise<void>;
|
|
6
8
|
export declare function buildApp(props: {
|
|
7
9
|
appDir: string;
|
|
8
10
|
}): Promise<void>;
|
|
@@ -10,5 +12,4 @@ export declare function downloadPackageUsingPresignedUrl(props: {
|
|
|
10
12
|
localDest: string;
|
|
11
13
|
presignedUrl: string;
|
|
12
14
|
}): Promise<void>;
|
|
13
|
-
export declare function getAppConfig(project: string): Promise<any>;
|
|
14
15
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/application-control/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/application-control/utils.ts"],"names":[],"mappings":"AAsBA,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,iBAMrE;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,iBAMjE;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,iBAoCvD;AAmBD,wBAAsB,gCAAgC,CAAC,KAAK,EAAE;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBhB"}
|
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.downloadPackageUsingPresignedUrl = exports.buildApp = exports.requireAppReady = exports.requireAppInstalled = exports.getAppDir = void 0;
|
|
4
4
|
const docker_compose_1 = require("docker-compose");
|
|
5
5
|
const path = require("path");
|
|
6
6
|
const fs = require("fs");
|
|
7
7
|
const constants_1 = require("alwaysai/lib/constants");
|
|
8
8
|
const agent_config_1 = require("../infrastructure/agent-config");
|
|
9
|
-
const
|
|
9
|
+
const fetch_with_timeout_1 = require("../util/fetch-with-timeout");
|
|
10
10
|
const app_1 = require("alwaysai/lib/core/app");
|
|
11
|
-
const app_2 = require("alwaysai/lib/components/app");
|
|
12
11
|
const run_in_dir_1 = require("../util/run-in-dir");
|
|
13
|
-
const util_1 = require("alwaysai/lib/util");
|
|
14
12
|
const logger_1 = require("../util/logger");
|
|
15
|
-
|
|
13
|
+
const directories_1 = require("../util/directories");
|
|
14
|
+
const spawner_1 = require("alwaysai/lib/util/spawner");
|
|
16
15
|
function getAppDir(projectId) {
|
|
17
|
-
return path.join(
|
|
16
|
+
return path.join(directories_1.APP_ROOT, projectId);
|
|
18
17
|
}
|
|
19
18
|
exports.getAppDir = getAppDir;
|
|
20
19
|
async function requireAppInstalled(props) {
|
|
@@ -23,43 +22,72 @@ async function requireAppInstalled(props) {
|
|
|
23
22
|
if (!(await (0, agent_config_1.AgentConfigFile)().isAppPresent({ projectId }))) {
|
|
24
23
|
throw new Error('Application is not installed');
|
|
25
24
|
}
|
|
25
|
+
}
|
|
26
|
+
exports.requireAppInstalled = requireAppInstalled;
|
|
27
|
+
async function requireAppReady(props) {
|
|
28
|
+
const { projectId } = props;
|
|
29
|
+
await requireAppInstalled({ projectId });
|
|
26
30
|
if (!(await (0, agent_config_1.AgentConfigFile)().isAppReady({ projectId }))) {
|
|
27
31
|
throw new Error('Application is not done installing or updating');
|
|
28
32
|
}
|
|
29
33
|
}
|
|
30
|
-
exports.
|
|
34
|
+
exports.requireAppReady = requireAppReady;
|
|
31
35
|
async function buildApp(props) {
|
|
32
36
|
const { appDir } = props;
|
|
33
37
|
// Build standalone image and docker-compose
|
|
34
|
-
const
|
|
35
|
-
const
|
|
36
|
-
if (
|
|
38
|
+
const targetJsonFile = (0, app_1.TargetJsonFile)(appDir);
|
|
39
|
+
const targetCfg = targetJsonFile.read();
|
|
40
|
+
if (targetCfg.targetProtocol !== 'docker:') {
|
|
37
41
|
throw new Error(`${constants_1.TARGET_JSON_FILE_NAME} is not properly configured!`);
|
|
38
42
|
}
|
|
39
|
-
await (0, run_in_dir_1.runInDir)(
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
|
|
43
|
+
await (0, run_in_dir_1.runInDir)(async () => {
|
|
44
|
+
await (0, app_1.writeStandaloneDockerfile)();
|
|
45
|
+
const spawner = (0, spawner_1.JsSpawner)();
|
|
46
|
+
const targetHardware = targetCfg.targetHardware;
|
|
47
|
+
if (await spawner.exists(constants_1.DOCKER_COMPOSE_FILE)) {
|
|
48
|
+
await (0, app_1.updateDockerComposeTargetHw)({
|
|
49
|
+
targetHardware
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
await (0, app_1.writeDockerComposeFile)({
|
|
54
|
+
spawner: (0, spawner_1.JsSpawner)(),
|
|
55
|
+
cmd: await (0, app_1.getDockerComposeCmdForApp)({ targetHardware })
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}, [], appDir);
|
|
49
59
|
const buildOut = await docker_compose_1.default.buildAll({ cwd: appDir });
|
|
50
|
-
logger_1.logger.
|
|
60
|
+
logger_1.logger.debug(`docker-compose build: ${JSON.stringify(buildOut, null, 2)}`);
|
|
51
61
|
if (buildOut.exitCode !== 0) {
|
|
52
62
|
throw new Error(`Failed to build application! stdout=${buildOut.out} stderr=${buildOut.err}`);
|
|
53
63
|
}
|
|
54
64
|
}
|
|
55
65
|
exports.buildApp = buildApp;
|
|
66
|
+
class HTTPResponseError extends Error {
|
|
67
|
+
constructor(response) {
|
|
68
|
+
super(`HTTP Error Response: ${response.status} ${response.statusText}`);
|
|
69
|
+
this.response = response;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const checkStatus = (response) => {
|
|
73
|
+
if (response.ok) {
|
|
74
|
+
// response.status >= 200 && response.status < 300
|
|
75
|
+
return response;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
throw new HTTPResponseError(response);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
56
81
|
async function downloadPackageUsingPresignedUrl(props) {
|
|
57
|
-
logger_1.logger.info('downloading URL');
|
|
58
82
|
const { localDest, presignedUrl } = props;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
83
|
+
logger_1.logger.debug(`Downloading package from ${presignedUrl}`);
|
|
84
|
+
let response;
|
|
85
|
+
try {
|
|
86
|
+
response = await (0, fetch_with_timeout_1.fetchWithTimeout)(presignedUrl);
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
const errorBody = error.type === 'aborted' ? error : await error.response.text();
|
|
90
|
+
throw new Error(`downloadPackageUsingPresignedUrl: Error=${error}\n${errorBody}`);
|
|
63
91
|
}
|
|
64
92
|
/**
|
|
65
93
|
* Write the app package to the hash directory
|
|
@@ -71,12 +99,4 @@ async function downloadPackageUsingPresignedUrl(props) {
|
|
|
71
99
|
});
|
|
72
100
|
}
|
|
73
101
|
exports.downloadPackageUsingPresignedUrl = downloadPackageUsingPresignedUrl;
|
|
74
|
-
async function getAppConfig(project) {
|
|
75
|
-
const appCfgPath = path.join(getAppDir(project), 'alwaysai.app.json');
|
|
76
|
-
if (!fs.existsSync(appCfgPath)) {
|
|
77
|
-
throw new Error(`Application config not found for project ${project}`);
|
|
78
|
-
}
|
|
79
|
-
return JSON.parse(await (0, util_1.JsSpawner)().readFile(appCfgPath));
|
|
80
|
-
}
|
|
81
|
-
exports.getAppConfig = getAppConfig;
|
|
82
102
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/application-control/utils.ts"],"names":[],"mappings":";;;AAAA,mDAAqC;AACrC,6BAA6B;AAC7B,yBAAyB;AACzB,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/application-control/utils.ts"],"names":[],"mappings":";;;AAAA,mDAAqC;AACrC,6BAA6B;AAC7B,yBAAyB;AACzB,sDAGgC;AAEhC,iEAAiE;AACjE,mEAA8D;AAC9D,+CAM+B;AAC/B,mDAA8C;AAC9C,2CAAwC;AACxC,qDAA+C;AAC/C,uDAAsD;AAEtD,SAAgB,SAAS,CAAC,SAAiB;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,sBAAQ,EAAE,SAAS,CAAC,CAAC;AACxC,CAAC;AAFD,8BAEC;AAEM,KAAK,UAAU,mBAAmB,CAAC,KAA4B;IACpE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5B,mEAAmE;IACnE,IAAI,CAAC,CAAC,MAAM,IAAA,8BAAe,GAAE,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE;QAC1D,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;KACjD;AACH,CAAC;AAND,kDAMC;AAEM,KAAK,UAAU,eAAe,CAAC,KAA4B;IAChE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5B,MAAM,mBAAmB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,CAAC,MAAM,IAAA,8BAAe,GAAE,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE;QACxD,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;KACnE;AACH,CAAC;AAND,0CAMC;AAEM,KAAK,UAAU,QAAQ,CAAC,KAAyB;IACtD,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEzB,4CAA4C;IAC5C,MAAM,cAAc,GAAG,IAAA,oBAAc,EAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,SAAS,CAAC,cAAc,KAAK,SAAS,EAAE;QAC1C,MAAM,IAAI,KAAK,CAAC,GAAG,iCAAqB,8BAA8B,CAAC,CAAC;KACzE;IACD,MAAM,IAAA,qBAAQ,EACZ,KAAK,IAAI,EAAE;QACT,MAAM,IAAA,+BAAyB,GAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAA,mBAAS,GAAE,CAAC;QAC5B,MAAM,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;QAChD,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,+BAAmB,CAAC,EAAE;YAC7C,MAAM,IAAA,iCAA2B,EAAC;gBAChC,cAAc;aACf,CAAC,CAAC;SACJ;aAAM;YACL,MAAM,IAAA,4BAAsB,EAAC;gBAC3B,OAAO,EAAE,IAAA,mBAAS,GAAE;gBACpB,GAAG,EAAE,MAAM,IAAA,+BAAyB,EAAC,EAAE,cAAc,EAAE,CAAC;aACzD,CAAC,CAAC;SACJ;IACH,CAAC,EACD,EAAE,EACF,MAAM,CACP,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,wBAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IACzD,eAAM,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3E,IAAI,QAAQ,CAAC,QAAQ,KAAK,CAAC,EAAE;QAC3B,MAAM,IAAI,KAAK,CACb,uCAAuC,QAAQ,CAAC,GAAG,WAAW,QAAQ,CAAC,GAAG,EAAE,CAC7E,CAAC;KACH;AACH,CAAC;AApCD,4BAoCC;AAED,MAAM,iBAAkB,SAAQ,KAAK;IAEnC,YAAY,QAAQ;QAClB,KAAK,CAAC,wBAAwB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,EAAE;IAC/B,IAAI,QAAQ,CAAC,EAAE,EAAE;QACf,kDAAkD;QAClD,OAAO,QAAQ,CAAC;KACjB;SAAM;QACL,MAAM,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;KACvC;AACH,CAAC,CAAC;AAEK,KAAK,UAAU,gCAAgC,CAAC,KAGtD;IACC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAC1C,eAAM,CAAC,KAAK,CAAC,4BAA4B,YAAY,EAAE,CAAC,CAAC;IACzD,IAAI,QAAa,CAAC;IAClB,IAAI;QACF,QAAQ,GAAG,MAAM,IAAA,qCAAgB,EAAC,YAAY,CAAC,CAAC;KACjD;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,SAAS,GACb,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CACb,2CAA2C,KAAK,KAAK,SAAS,EAAE,CACjE,CAAC;KACH;IAED;;OAEG;IACH,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;IACnE,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACpC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAzBD,4EAyBC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AppInstallStatusPacket } from '@alwaysai/device-agent-schemas';
|
|
2
|
+
export declare class AppInstallStatus {
|
|
3
|
+
private appReleaseHash;
|
|
4
|
+
private status;
|
|
5
|
+
private message?;
|
|
6
|
+
constructor(appReleaseHash: any, status: any, message?: any);
|
|
7
|
+
getAppReleaseHash(): string;
|
|
8
|
+
update(status: any, message?: any): void;
|
|
9
|
+
getStatusPacket(): AppInstallStatusPacket;
|
|
10
|
+
}
|
|
11
|
+
export declare class AppInstallStatusManager {
|
|
12
|
+
private appList;
|
|
13
|
+
update(appReleaseHash: any, status: any, message?: any): void;
|
|
14
|
+
getStatusPacket(appReleaseHash: any): AppInstallStatusPacket;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=app-install-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-install-status.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/app-install-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,OAAO,CAAC,CAAS;gBAEb,cAAc,KAAA,EAAE,MAAM,KAAA,EAAE,OAAO,CAAC,KAAA;IAMrC,iBAAiB;IAIjB,MAAM,CAAC,MAAM,KAAA,EAAE,OAAO,CAAC,KAAA;IAKvB,eAAe,IAAI,sBAAsB;CAOjD;AAED,qBAAa,uBAAuB;IAClC,OAAO,CAAC,OAAO,CAA0B;IAElC,MAAM,CAAC,cAAc,KAAA,EAAE,MAAM,KAAA,EAAE,OAAO,CAAC,KAAA;IAkBvC,eAAe,CAAC,cAAc,KAAA;CAQtC"}
|