@alwaysai/device-agent 1.5.0 → 2.0.1
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/config.d.ts.map +1 -1
- package/lib/application-control/config.js +8 -3
- package/lib/application-control/config.js.map +1 -1
- package/lib/application-control/environment-variables.d.ts +5 -5
- package/lib/application-control/environment-variables.d.ts.map +1 -1
- package/lib/application-control/environment-variables.js +25 -38
- package/lib/application-control/environment-variables.js.map +1 -1
- package/lib/application-control/environment-variables.test.js +27 -7
- package/lib/application-control/environment-variables.test.js.map +1 -1
- package/lib/application-control/index.d.ts +4 -4
- package/lib/application-control/index.d.ts.map +1 -1
- package/lib/application-control/index.js +1 -4
- package/lib/application-control/index.js.map +1 -1
- package/lib/application-control/install.d.ts +4 -1
- package/lib/application-control/install.d.ts.map +1 -1
- package/lib/application-control/install.js +24 -8
- package/lib/application-control/install.js.map +1 -1
- package/lib/application-control/models.d.ts +0 -11
- package/lib/application-control/models.d.ts.map +1 -1
- package/lib/application-control/models.js +5 -54
- package/lib/application-control/models.js.map +1 -1
- package/lib/application-control/utils.d.ts +0 -4
- package/lib/application-control/utils.d.ts.map +1 -1
- package/lib/application-control/utils.js +12 -22
- package/lib/application-control/utils.js.map +1 -1
- package/lib/cloud-connection/base-message-handler.d.ts +27 -0
- package/lib/cloud-connection/base-message-handler.d.ts.map +1 -0
- package/lib/cloud-connection/base-message-handler.js +72 -0
- package/lib/cloud-connection/base-message-handler.js.map +1 -0
- package/lib/cloud-connection/bootstrap-provision.js +3 -2
- package/lib/cloud-connection/bootstrap-provision.js.map +1 -1
- package/lib/cloud-connection/connection-manager.d.ts +21 -0
- package/lib/cloud-connection/connection-manager.d.ts.map +1 -0
- package/lib/cloud-connection/connection-manager.js +158 -0
- package/lib/cloud-connection/connection-manager.js.map +1 -0
- package/lib/cloud-connection/device-agent-cloud-connection.d.ts +9 -30
- package/lib/cloud-connection/device-agent-cloud-connection.d.ts.map +1 -1
- package/lib/cloud-connection/device-agent-cloud-connection.js +69 -508
- package/lib/cloud-connection/device-agent-cloud-connection.js.map +1 -1
- package/lib/cloud-connection/device-agent-message-handler.d.ts +22 -0
- package/lib/cloud-connection/device-agent-message-handler.d.ts.map +1 -0
- package/lib/cloud-connection/device-agent-message-handler.js +357 -0
- package/lib/cloud-connection/device-agent-message-handler.js.map +1 -0
- package/lib/cloud-connection/device-agent.d.ts.map +1 -1
- package/lib/cloud-connection/device-agent.js +11 -9
- package/lib/cloud-connection/device-agent.js.map +1 -1
- package/lib/cloud-connection/live-updates-handler.d.ts +19 -28
- package/lib/cloud-connection/live-updates-handler.d.ts.map +1 -1
- package/lib/cloud-connection/live-updates-handler.js +60 -172
- package/lib/cloud-connection/live-updates-handler.js.map +1 -1
- package/lib/cloud-connection/live-updates-handler.test.js +71 -165
- package/lib/cloud-connection/live-updates-handler.test.js.map +1 -1
- package/lib/cloud-connection/message-dispatcher.d.ts +10 -0
- package/lib/cloud-connection/message-dispatcher.d.ts.map +1 -0
- package/lib/cloud-connection/message-dispatcher.js +27 -0
- package/lib/cloud-connection/message-dispatcher.js.map +1 -0
- package/lib/cloud-connection/passthrough-handler.d.ts +4 -1
- package/lib/cloud-connection/passthrough-handler.d.ts.map +1 -1
- package/lib/cloud-connection/passthrough-handler.js +30 -11
- package/lib/cloud-connection/passthrough-handler.js.map +1 -1
- package/lib/cloud-connection/shadow-handler.d.ts +11 -3
- package/lib/cloud-connection/shadow-handler.d.ts.map +1 -1
- package/lib/cloud-connection/shadow-handler.js +133 -28
- package/lib/cloud-connection/shadow-handler.js.map +1 -1
- package/lib/cloud-connection/shadow-handler.test.js +45 -57
- package/lib/cloud-connection/shadow-handler.test.js.map +1 -1
- package/lib/cloud-connection/shadow.d.ts.map +1 -1
- package/lib/cloud-connection/shadow.js +2 -1
- package/lib/cloud-connection/shadow.js.map +1 -1
- package/lib/cloud-connection/transaction-manager.d.ts +12 -3
- package/lib/cloud-connection/transaction-manager.d.ts.map +1 -1
- package/lib/cloud-connection/transaction-manager.js +29 -28
- package/lib/cloud-connection/transaction-manager.js.map +1 -1
- package/lib/cloud-connection/transaction-manager.test.js +46 -5
- package/lib/cloud-connection/transaction-manager.test.js.map +1 -1
- package/lib/device-control/device-control.d.ts +8 -8
- package/lib/device-control/device-control.d.ts.map +1 -1
- package/lib/device-control/device-control.js +95 -71
- package/lib/device-control/device-control.js.map +1 -1
- package/lib/docker/docker-compose.d.ts.map +1 -1
- package/lib/docker/docker-compose.js +2 -1
- package/lib/docker/docker-compose.js.map +1 -1
- package/lib/infrastructure/agent-config.d.ts +2 -1
- package/lib/infrastructure/agent-config.d.ts.map +1 -1
- package/lib/infrastructure/agent-config.js +7 -7
- package/lib/infrastructure/agent-config.js.map +1 -1
- package/lib/infrastructure/agent-config.test.js +3 -1
- package/lib/infrastructure/agent-config.test.js.map +1 -1
- package/lib/infrastructure/config-check-utility.d.ts +6 -0
- package/lib/infrastructure/config-check-utility.d.ts.map +1 -0
- package/lib/infrastructure/config-check-utility.js +67 -0
- package/lib/infrastructure/config-check-utility.js.map +1 -0
- package/lib/infrastructure/config-check-utility.test.d.ts +2 -0
- package/lib/infrastructure/config-check-utility.test.d.ts.map +1 -0
- package/lib/infrastructure/config-check-utility.test.js +109 -0
- package/lib/infrastructure/config-check-utility.test.js.map +1 -0
- package/lib/infrastructure/device-certificate.d.ts +10 -0
- package/lib/infrastructure/device-certificate.d.ts.map +1 -0
- package/lib/infrastructure/device-certificate.js +47 -0
- package/lib/infrastructure/device-certificate.js.map +1 -0
- package/lib/infrastructure/device-certificate.test.d.ts +2 -0
- package/lib/infrastructure/device-certificate.test.d.ts.map +1 -0
- package/lib/infrastructure/device-certificate.test.js +24 -0
- package/lib/infrastructure/device-certificate.test.js.map +1 -0
- package/lib/infrastructure/legacy-migration/legacy-file.test.d.ts +2 -0
- package/lib/infrastructure/legacy-migration/legacy-file.test.d.ts.map +1 -0
- package/lib/infrastructure/legacy-migration/legacy-file.test.js +61 -0
- package/lib/infrastructure/legacy-migration/legacy-file.test.js.map +1 -0
- package/lib/infrastructure/legacy-migration/legacy-files.d.ts +75 -0
- package/lib/infrastructure/legacy-migration/legacy-files.d.ts.map +1 -0
- package/lib/infrastructure/legacy-migration/legacy-files.js +75 -0
- package/lib/infrastructure/legacy-migration/legacy-files.js.map +1 -0
- package/lib/infrastructure/legacy-migration/legacy-migration.d.ts +6 -0
- package/lib/infrastructure/legacy-migration/legacy-migration.d.ts.map +1 -0
- package/lib/infrastructure/legacy-migration/legacy-migration.js +149 -0
- package/lib/infrastructure/legacy-migration/legacy-migration.js.map +1 -0
- package/lib/infrastructure/legacy-migration/legacy-migration.test.d.ts +2 -0
- package/lib/infrastructure/legacy-migration/legacy-migration.test.d.ts.map +1 -0
- package/lib/infrastructure/legacy-migration/legacy-migration.test.js +226 -0
- package/lib/infrastructure/legacy-migration/legacy-migration.test.js.map +1 -0
- package/lib/infrastructure/require-files-present-ready.test.d.ts +2 -0
- package/lib/infrastructure/require-files-present-ready.test.d.ts.map +1 -0
- package/lib/infrastructure/require-files-present-ready.test.js +44 -0
- package/lib/infrastructure/require-files-present-ready.test.js.map +1 -0
- package/lib/infrastructure/required-config-checks.d.ts +2 -0
- package/lib/infrastructure/required-config-checks.d.ts.map +1 -0
- package/lib/infrastructure/required-config-checks.js +30 -0
- package/lib/infrastructure/required-config-checks.js.map +1 -0
- package/lib/infrastructure/tokens-and-device-cfg.d.ts.map +1 -1
- package/lib/infrastructure/tokens-and-device-cfg.js +11 -8
- package/lib/infrastructure/tokens-and-device-cfg.js.map +1 -1
- package/lib/jobs/job-handler.d.ts +23 -0
- package/lib/jobs/job-handler.d.ts.map +1 -0
- package/lib/jobs/job-handler.js +131 -0
- package/lib/jobs/job-handler.js.map +1 -0
- package/lib/local-connection/rabbitmq-connection.d.ts.map +1 -1
- package/lib/local-connection/rabbitmq-connection.js +14 -14
- package/lib/local-connection/rabbitmq-connection.js.map +1 -1
- package/lib/secure-tunneling/secure-tunnel-message-handler.d.ts +8 -0
- package/lib/secure-tunneling/secure-tunnel-message-handler.d.ts.map +1 -0
- package/lib/secure-tunneling/secure-tunnel-message-handler.js +42 -0
- package/lib/secure-tunneling/secure-tunnel-message-handler.js.map +1 -0
- package/lib/secure-tunneling/secure-tunneling.d.ts +9 -9
- package/lib/secure-tunneling/secure-tunneling.d.ts.map +1 -1
- package/lib/secure-tunneling/secure-tunneling.js +21 -16
- package/lib/secure-tunneling/secure-tunneling.js.map +1 -1
- package/lib/secure-tunneling/secure-tunneling.test.js +11 -13
- package/lib/secure-tunneling/secure-tunneling.test.js.map +1 -1
- package/lib/subcommands/app/analytics.d.ts.map +1 -1
- package/lib/subcommands/app/analytics.js +1 -2
- package/lib/subcommands/app/analytics.js.map +1 -1
- package/lib/subcommands/app/env-vars.d.ts +4 -0
- package/lib/subcommands/app/env-vars.d.ts.map +1 -1
- package/lib/subcommands/app/env-vars.js +52 -6
- package/lib/subcommands/app/env-vars.js.map +1 -1
- package/lib/subcommands/app/index.d.ts.map +1 -1
- package/lib/subcommands/app/index.js +1 -3
- package/lib/subcommands/app/index.js.map +1 -1
- package/lib/subcommands/app/models.d.ts +0 -11
- package/lib/subcommands/app/models.d.ts.map +1 -1
- package/lib/subcommands/app/models.js +2 -58
- package/lib/subcommands/app/models.js.map +1 -1
- package/lib/subcommands/app/shadow.d.ts.map +1 -1
- package/lib/subcommands/app/shadow.js +6 -5
- package/lib/subcommands/app/shadow.js.map +1 -1
- package/lib/subcommands/app/version.d.ts +2 -0
- package/lib/subcommands/app/version.d.ts.map +1 -1
- package/lib/subcommands/app/version.js +16 -6
- package/lib/subcommands/app/version.js.map +1 -1
- package/lib/subcommands/config.d.ts +2 -0
- package/lib/subcommands/config.d.ts.map +1 -0
- package/lib/subcommands/config.js +39 -0
- package/lib/subcommands/config.js.map +1 -0
- package/lib/subcommands/device/clean.d.ts +1 -1
- package/lib/subcommands/device/clean.d.ts.map +1 -1
- package/lib/subcommands/device/clean.js +23 -13
- package/lib/subcommands/device/clean.js.map +1 -1
- package/lib/subcommands/device/index.d.ts.map +1 -1
- package/lib/subcommands/device/index.js +3 -1
- package/lib/subcommands/device/index.js.map +1 -1
- package/lib/subcommands/device/init.js +8 -8
- package/lib/subcommands/device/init.js.map +1 -1
- package/lib/subcommands/device/migrate.d.ts +2 -0
- package/lib/subcommands/device/migrate.d.ts.map +1 -0
- package/lib/subcommands/device/migrate.js +24 -0
- package/lib/subcommands/device/migrate.js.map +1 -0
- package/lib/subcommands/device/refresh.d.ts.map +1 -1
- package/lib/subcommands/device/refresh.js +1 -0
- package/lib/subcommands/device/refresh.js.map +1 -1
- package/lib/subcommands/index.d.ts +1 -1
- package/lib/subcommands/index.d.ts.map +1 -1
- package/lib/subcommands/index.js +3 -1
- package/lib/subcommands/index.js.map +1 -1
- package/lib/subcommands/rabbitmq-connection.d.ts +1 -1
- package/lib/subcommands/rabbitmq-connection.d.ts.map +1 -1
- package/lib/util/aai-error.d.ts +12 -0
- package/lib/util/aai-error.d.ts.map +1 -0
- package/lib/util/aai-error.js +11 -0
- package/lib/util/aai-error.js.map +1 -0
- package/lib/util/aws-regions.d.ts +2 -0
- package/lib/util/aws-regions.d.ts.map +1 -0
- package/lib/util/{cloud-mode-ready.js → aws-regions.js} +2 -20
- package/lib/util/aws-regions.js.map +1 -0
- package/lib/util/check-for-updates.d.ts.map +1 -1
- package/lib/util/check-for-updates.js +5 -28
- package/lib/util/check-for-updates.js.map +1 -1
- package/lib/util/clean-certs.d.ts.map +1 -1
- package/lib/util/clean-certs.js +5 -4
- package/lib/util/clean-certs.js.map +1 -1
- package/lib/util/directories.d.ts +4 -18
- package/lib/util/directories.d.ts.map +1 -1
- package/lib/util/directories.js +18 -32
- package/lib/util/directories.js.map +1 -1
- package/lib/util/file.d.ts +4 -0
- package/lib/util/file.d.ts.map +1 -1
- package/lib/util/file.js +65 -4
- package/lib/util/file.js.map +1 -1
- package/lib/util/get-device-id.d.ts.map +1 -1
- package/lib/util/get-device-id.js +7 -1
- package/lib/util/get-device-id.js.map +1 -1
- package/lib/util/http-client.js +3 -3
- package/lib/util/http-client.js.map +1 -1
- package/package.json +19 -17
- package/readme.md +12 -32
- package/src/application-control/config.ts +9 -12
- package/src/application-control/environment-variables.test.ts +28 -7
- package/src/application-control/environment-variables.ts +42 -59
- package/src/application-control/index.ts +3 -16
- package/src/application-control/install.ts +39 -13
- package/src/application-control/models.ts +6 -87
- package/src/application-control/utils.ts +10 -25
- package/src/cloud-connection/base-message-handler.ts +118 -0
- package/src/cloud-connection/bootstrap-provision.ts +7 -7
- package/src/cloud-connection/connection-manager.ts +187 -0
- package/src/cloud-connection/device-agent-cloud-connection.ts +130 -723
- package/src/cloud-connection/device-agent-message-handler.ts +642 -0
- package/src/cloud-connection/device-agent.ts +16 -7
- package/src/cloud-connection/live-updates-handler.test.ts +121 -189
- package/src/cloud-connection/live-updates-handler.ts +105 -232
- package/src/cloud-connection/message-dispatcher.ts +33 -0
- package/src/cloud-connection/passthrough-handler.ts +55 -18
- package/src/cloud-connection/shadow-handler.test.ts +45 -57
- package/src/cloud-connection/shadow-handler.ts +224 -54
- package/src/cloud-connection/shadow.ts +4 -1
- package/src/cloud-connection/transaction-manager.test.ts +68 -6
- package/src/cloud-connection/transaction-manager.ts +69 -41
- package/src/device-control/device-control.ts +102 -70
- package/src/docker/docker-compose.ts +3 -2
- package/src/infrastructure/agent-config.test.ts +6 -2
- package/src/infrastructure/agent-config.ts +8 -7
- package/src/infrastructure/config-check-utility.test.ts +154 -0
- package/src/infrastructure/config-check-utility.ts +77 -0
- package/src/infrastructure/device-certificate.test.ts +40 -0
- package/src/infrastructure/device-certificate.ts +58 -0
- package/src/infrastructure/legacy-migration/legacy-file.test.ts +88 -0
- package/src/infrastructure/legacy-migration/legacy-files.ts +101 -0
- package/src/infrastructure/legacy-migration/legacy-migration.test.ts +396 -0
- package/src/infrastructure/legacy-migration/legacy-migration.ts +229 -0
- package/src/infrastructure/require-files-present-ready.test.ts +53 -0
- package/src/infrastructure/required-config-checks.ts +33 -0
- package/src/infrastructure/tokens-and-device-cfg.ts +12 -10
- package/src/jobs/job-handler.ts +146 -0
- package/src/local-connection/rabbitmq-connection.ts +22 -17
- package/src/secure-tunneling/secure-tunnel-message-handler.ts +56 -0
- package/src/secure-tunneling/secure-tunneling.test.ts +20 -22
- package/src/secure-tunneling/secure-tunneling.ts +41 -29
- package/src/subcommands/app/analytics.ts +2 -4
- package/src/subcommands/app/env-vars.ts +72 -9
- package/src/subcommands/app/index.ts +3 -11
- package/src/subcommands/app/models.ts +5 -81
- package/src/subcommands/app/shadow.ts +6 -5
- package/src/subcommands/app/version.ts +23 -6
- package/src/subcommands/config.ts +42 -0
- package/src/subcommands/device/clean.ts +31 -17
- package/src/subcommands/device/index.ts +3 -1
- package/src/subcommands/device/init.ts +11 -11
- package/src/subcommands/device/migrate.ts +20 -0
- package/src/subcommands/device/refresh.ts +1 -0
- package/src/subcommands/index.ts +3 -1
- package/src/util/aai-error.ts +20 -0
- package/src/util/{cloud-mode-ready.ts → aws-regions.ts} +0 -24
- package/src/util/check-for-updates.ts +14 -30
- package/src/util/clean-certs.ts +8 -4
- package/src/util/directories.ts +23 -67
- package/src/util/file.ts +83 -3
- package/src/util/get-device-id.ts +7 -7
- package/src/util/http-client.ts +2 -2
- package/lib/util/cloud-mode-ready.d.ts +0 -3
- package/lib/util/cloud-mode-ready.d.ts.map +0 -1
- package/lib/util/cloud-mode-ready.js.map +0 -1
- package/lib/util/download-file.d.ts +0 -6
- package/lib/util/download-file.d.ts.map +0 -1
- package/lib/util/download-file.js +0 -25
- package/lib/util/download-file.js.map +0 -1
- package/lib/util/fetch-with-timeout.d.ts +0 -4
- package/lib/util/fetch-with-timeout.d.ts.map +0 -1
- package/lib/util/fetch-with-timeout.js +0 -30
- package/lib/util/fetch-with-timeout.js.map +0 -1
- package/lib/util/parsing.d.ts +0 -2
- package/lib/util/parsing.d.ts.map +0 -1
- package/lib/util/parsing.js +0 -17
- package/lib/util/parsing.js.map +0 -1
- package/src/util/download-file.ts +0 -25
- package/src/util/fetch-with-timeout.ts +0 -35
- package/src/util/parsing.ts +0 -11
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.pruneModels = exports.updateModelsWithPresignedUrls = exports.installModelsWithPresignedURLs = exports.
|
|
4
|
-
const app_1 = require("alwaysai/lib/components/app");
|
|
3
|
+
exports.pruneModels = exports.updateModelsWithPresignedUrls = exports.installModelsWithPresignedURLs = exports.getAppModels = void 0;
|
|
5
4
|
const util_1 = require("alwaysai/lib/util");
|
|
6
5
|
const logger_1 = require("../util/logger");
|
|
7
6
|
const fs_1 = require("fs");
|
|
8
7
|
const path_1 = require("path");
|
|
9
8
|
const agent_config_1 = require("../infrastructure/agent-config");
|
|
10
9
|
const copy_dir_1 = require("../util/copy-dir");
|
|
11
|
-
const run_in_dir_1 = require("../util/run-in-dir");
|
|
12
10
|
const status_1 = require("./status");
|
|
13
11
|
const utils_1 = require("./utils");
|
|
14
12
|
const model_1 = require("alwaysai/lib/core/model");
|
|
@@ -36,53 +34,6 @@ async function getAppModels(props) {
|
|
|
36
34
|
return modelDetails;
|
|
37
35
|
}
|
|
38
36
|
exports.getAppModels = getAppModels;
|
|
39
|
-
async function removeModel(props) {
|
|
40
|
-
const { projectId, modelId } = props;
|
|
41
|
-
await (0, utils_1.requireAppReady)({ projectId });
|
|
42
|
-
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
43
|
-
await (0, run_in_dir_1.runInDir)(app_1.appModelsRemoveComponent, [
|
|
44
|
-
{
|
|
45
|
-
id: modelId,
|
|
46
|
-
purge: true,
|
|
47
|
-
removeFromProject: false
|
|
48
|
-
}
|
|
49
|
-
], appDir);
|
|
50
|
-
}
|
|
51
|
-
exports.removeModel = removeModel;
|
|
52
|
-
async function replaceModels(props) {
|
|
53
|
-
const { projectId, modelIds } = props;
|
|
54
|
-
await (0, utils_1.requireAppReady)({ projectId });
|
|
55
|
-
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
56
|
-
await (0, run_in_dir_1.runInDir)(app_1.appModelsRemoveAllComponent, [
|
|
57
|
-
{
|
|
58
|
-
purge: true,
|
|
59
|
-
removeFromProject: false
|
|
60
|
-
}
|
|
61
|
-
], appDir);
|
|
62
|
-
const modelsAddPromises = [];
|
|
63
|
-
for (const modelId of modelIds) {
|
|
64
|
-
modelsAddPromises.push((0, app_1.appModelsAddComponent)({
|
|
65
|
-
yes: false,
|
|
66
|
-
dir: appDir,
|
|
67
|
-
id: modelId,
|
|
68
|
-
addToProject: false
|
|
69
|
-
}));
|
|
70
|
-
}
|
|
71
|
-
await Promise.all(modelsAddPromises);
|
|
72
|
-
await (0, utils_1.buildApp)({ appDir });
|
|
73
|
-
}
|
|
74
|
-
exports.replaceModels = replaceModels;
|
|
75
|
-
async function updateModels(props) {
|
|
76
|
-
const { projectId } = props;
|
|
77
|
-
await (0, utils_1.requireAppReady)({ projectId });
|
|
78
|
-
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
79
|
-
await (0, app_1.appModelsUpdateComponent)({
|
|
80
|
-
yes: false,
|
|
81
|
-
dir: appDir
|
|
82
|
-
});
|
|
83
|
-
await (0, utils_1.buildApp)({ appDir });
|
|
84
|
-
}
|
|
85
|
-
exports.updateModels = updateModels;
|
|
86
37
|
async function installModelsWithPresignedURLs(modelPayloads, targetDir) {
|
|
87
38
|
const spawner = (0, util_1.JsSpawner)();
|
|
88
39
|
await spawner.mkdirp(targetDir);
|
|
@@ -92,9 +43,9 @@ async function installModelsWithPresignedURLs(modelPayloads, targetDir) {
|
|
|
92
43
|
const modelDest = (0, path_1.join)(targetDir, payload.id);
|
|
93
44
|
await spawner.mkdirp(modelDest);
|
|
94
45
|
const localDest = (0, path_1.join)(modelDest, `${payload.version}.tar.gz`);
|
|
95
|
-
await (0,
|
|
96
|
-
localDest,
|
|
97
|
-
|
|
46
|
+
await (0, file_1.downloadToFile)({
|
|
47
|
+
path: localDest,
|
|
48
|
+
url: payload.modelSignedUrl
|
|
98
49
|
});
|
|
99
50
|
await spawner.untar((0, fs_1.createReadStream)(localDest), (0, path_1.dirname)(modelDest));
|
|
100
51
|
await updateModelJson(modelDest, (modelJson) => (Object.assign(Object.assign({}, modelJson), { version })));
|
|
@@ -160,7 +111,7 @@ async function updateModelsWithPresignedUrls(props) {
|
|
|
160
111
|
exports.updateModelsWithPresignedUrls = updateModelsWithPresignedUrls;
|
|
161
112
|
async function pruneModels(props) {
|
|
162
113
|
const { projectId, appCfg, path } = props;
|
|
163
|
-
const modelsPath = path
|
|
114
|
+
const modelsPath = path !== null && path !== void 0 ? path : (0, path_1.join)((0, utils_1.getAppDir)(projectId), 'models');
|
|
164
115
|
if (!(0, fs_1.existsSync)(modelsPath)) {
|
|
165
116
|
logger_1.logger.error(`Attempted to prune models from ${modelsPath} for project app ${projectId} that does not exist or has no models dir.`);
|
|
166
117
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/application-control/models.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/application-control/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,4 @@ export declare function requireAppReady(props: {
|
|
|
8
8
|
export declare function buildApp(props: {
|
|
9
9
|
appDir: string;
|
|
10
10
|
}): Promise<void>;
|
|
11
|
-
export declare function downloadPackageUsingPresignedUrl(props: {
|
|
12
|
-
localDest: string;
|
|
13
|
-
presignedUrl: string;
|
|
14
|
-
}): Promise<void>;
|
|
15
11
|
//# 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":"AAiBA,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,iBAQjE;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,iBAkDvD"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.buildApp = exports.requireAppReady = exports.requireAppInstalled = exports.getAppDir = void 0;
|
|
4
4
|
const docker_compose_1 = require("../docker/docker-compose");
|
|
5
5
|
const path = require("path");
|
|
6
|
-
const fs = require("fs");
|
|
7
6
|
const agent_config_1 = require("../infrastructure/agent-config");
|
|
8
|
-
const fetch_with_timeout_1 = require("../util/fetch-with-timeout");
|
|
9
7
|
const app_1 = require("alwaysai/lib/core/app");
|
|
10
8
|
const run_in_dir_1 = require("../util/run-in-dir");
|
|
11
9
|
const logger_1 = require("../util/logger");
|
|
@@ -62,27 +60,19 @@ async function buildApp(props) {
|
|
|
62
60
|
if (buildOut.exitCode !== 0) {
|
|
63
61
|
throw new Error(`Failed to build application! stdout=${buildOut.out} stderr=${buildOut.err}`);
|
|
64
62
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
async function downloadPackageUsingPresignedUrl(props) {
|
|
68
|
-
const { localDest, presignedUrl } = props;
|
|
69
|
-
logger_1.logger.debug(`Downloading package from ${presignedUrl}`);
|
|
70
|
-
let response;
|
|
63
|
+
// Prune unused Docker resources after a successful build
|
|
64
|
+
logger_1.logger.debug('Pruning docker system');
|
|
71
65
|
try {
|
|
72
|
-
|
|
66
|
+
const spawner = (0, spawner_1.JsSpawner)();
|
|
67
|
+
const pruneOut = await spawner.run({
|
|
68
|
+
exe: 'docker',
|
|
69
|
+
args: ['system', 'prune', '-f']
|
|
70
|
+
});
|
|
71
|
+
logger_1.logger.debug(pruneOut);
|
|
73
72
|
}
|
|
74
|
-
catch (
|
|
75
|
-
|
|
76
|
-
throw new Error(`downloadPackageUsingPresignedUrl: Error=${e}\n${errorBody}`);
|
|
73
|
+
catch (error) {
|
|
74
|
+
logger_1.logger.error(`Stderr occurred when pruning docker system: ${error}`);
|
|
77
75
|
}
|
|
78
|
-
/**
|
|
79
|
-
* Write the app package to the hash directory
|
|
80
|
-
*/
|
|
81
|
-
const stream = response.body.pipe(fs.createWriteStream(localDest));
|
|
82
|
-
await new Promise((resolve, reject) => {
|
|
83
|
-
stream.on('finish', resolve);
|
|
84
|
-
stream.on('error', reject);
|
|
85
|
-
});
|
|
86
76
|
}
|
|
87
|
-
exports.
|
|
77
|
+
exports.buildApp = buildApp;
|
|
88
78
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/application-control/utils.ts"],"names":[],"mappings":";;;AAAA,6DAAmD;AACnD,6BAA6B;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/application-control/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { SecureTunnelHandlerSingleton } from '../secure-tunneling/secure-tunneling';
|
|
2
|
+
import { LiveUpdatesHandler } from './live-updates-handler';
|
|
3
|
+
import { Publisher } from './publisher';
|
|
4
|
+
import { ShadowHandler } from './shadow-handler';
|
|
5
|
+
import { TransactionManager, ErrorFunction, SuccessFunction } from './transaction-manager';
|
|
6
|
+
export interface HandlerContext {
|
|
7
|
+
clientId: string;
|
|
8
|
+
txnMgr: TransactionManager;
|
|
9
|
+
publisher: Publisher;
|
|
10
|
+
shadowHandler: ShadowHandler;
|
|
11
|
+
liveUpdatesHandler: LiveUpdatesHandler;
|
|
12
|
+
secureTunnelHandler: SecureTunnelHandlerSingleton;
|
|
13
|
+
}
|
|
14
|
+
export declare abstract class BaseHandler {
|
|
15
|
+
protected clientId: string;
|
|
16
|
+
protected txnMgr: TransactionManager;
|
|
17
|
+
protected publisher: Publisher;
|
|
18
|
+
protected shadowHandler: ShadowHandler;
|
|
19
|
+
protected liveUpdatesHandler: LiveUpdatesHandler;
|
|
20
|
+
protected secureTunnelHandler: SecureTunnelHandlerSingleton;
|
|
21
|
+
protected readonly errorFn?: ErrorFunction;
|
|
22
|
+
protected readonly successFn?: SuccessFunction;
|
|
23
|
+
constructor(context: HandlerContext, errorFn?: ErrorFunction, successFn?: SuccessFunction);
|
|
24
|
+
protected atomicApplicationUninstall(projectId: string): Promise<void>;
|
|
25
|
+
protected atomicApplicationUpdate<F extends () => any>(func: F, projectId: string, skipUpdateShadow?: boolean): Promise<ReturnType<F>>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=base-message-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-message-handler.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/base-message-handler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAEpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,mBAAmB,EAAE,4BAA4B,CAAC;CACnD;AAED,8BAAsB,WAAW;IAC/B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACrC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;IAC/B,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IACvC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IACjD,SAAS,CAAC,mBAAmB,EAAE,4BAA4B,CAAC;IAC5D,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;IAC3C,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;gBAG7C,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE,aAAa,EACvB,SAAS,CAAC,EAAE,eAAe;cAYb,0BAA0B,CAAC,SAAS,EAAE,MAAM;cAU5C,uBAAuB,CAAC,CAAC,SAAS,MAAM,GAAG,EACzD,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,MAAM,EACjB,gBAAgB,CAAC,EAAE,OAAO,GACzB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;CAsD1B"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseHandler = void 0;
|
|
4
|
+
const util_1 = require("alwaysai/lib/util");
|
|
5
|
+
const application_control_1 = require("../application-control");
|
|
6
|
+
const backup_1 = require("../application-control/backup");
|
|
7
|
+
const agent_config_1 = require("../infrastructure/agent-config");
|
|
8
|
+
const aai_error_1 = require("../util/aai-error");
|
|
9
|
+
class BaseHandler {
|
|
10
|
+
constructor(context, errorFn, successFn) {
|
|
11
|
+
this.clientId = context.clientId;
|
|
12
|
+
this.txnMgr = context.txnMgr;
|
|
13
|
+
this.publisher = context.publisher;
|
|
14
|
+
this.shadowHandler = context.shadowHandler;
|
|
15
|
+
this.liveUpdatesHandler = context.liveUpdatesHandler;
|
|
16
|
+
this.secureTunnelHandler = context.secureTunnelHandler;
|
|
17
|
+
this.errorFn = errorFn;
|
|
18
|
+
this.successFn = successFn;
|
|
19
|
+
}
|
|
20
|
+
async atomicApplicationUninstall(projectId) {
|
|
21
|
+
try {
|
|
22
|
+
await (0, application_control_1.uninstallApp)({ projectId });
|
|
23
|
+
this.shadowHandler.clearProjectShadow(projectId);
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
util_1.logger.error(`Failed to uninstall ${projectId}!\n${(0, util_1.stringifyError)(e)}`);
|
|
27
|
+
throw e;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async atomicApplicationUpdate(func, projectId, skipUpdateShadow) {
|
|
31
|
+
if (await (0, agent_config_1.AgentConfigFile)().isAppPresent({ projectId })) {
|
|
32
|
+
// Reject the application update if app is present but not ready
|
|
33
|
+
if (!(await (0, agent_config_1.AgentConfigFile)().isAppReady({ projectId }))) {
|
|
34
|
+
throw new Error('Application already has installation in progress!');
|
|
35
|
+
}
|
|
36
|
+
// Try to create a backup, so that there is one available if something goes wrong in the next try:catch.
|
|
37
|
+
try {
|
|
38
|
+
await (0, backup_1.createAppBackup)({ projectId });
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
util_1.logger.error(`Could not create a backup for the project: ${projectId}!\n${(0, util_1.stringifyError)(e)}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
const out = await func();
|
|
46
|
+
if (!skipUpdateShadow)
|
|
47
|
+
await this.shadowHandler.updateProjectShadow(projectId);
|
|
48
|
+
return out;
|
|
49
|
+
}
|
|
50
|
+
catch (errorAppUpdate) {
|
|
51
|
+
util_1.logger.error(`Failed to update ${projectId}!\n${(0, util_1.stringifyError)(errorAppUpdate)}`);
|
|
52
|
+
// If something goes wrong, first try to rollback
|
|
53
|
+
try {
|
|
54
|
+
await (0, application_control_1.rollbackApp)({ projectId });
|
|
55
|
+
}
|
|
56
|
+
catch (errorRollbackApp) {
|
|
57
|
+
util_1.logger.error(`Application rollback failed for ${projectId}!\n${(0, util_1.stringifyError)(errorRollbackApp)}`);
|
|
58
|
+
// and if that fails, uninstall the app as a last resort.
|
|
59
|
+
try {
|
|
60
|
+
await this.atomicApplicationUninstall(projectId);
|
|
61
|
+
}
|
|
62
|
+
catch (_a) {
|
|
63
|
+
// atomicApplicationUninstall logs failure, so there's nothing to do here.
|
|
64
|
+
}
|
|
65
|
+
throw new aai_error_1.default('Application update and rollback failed, uninstalled the application!', { cause: errorAppUpdate });
|
|
66
|
+
}
|
|
67
|
+
throw new aai_error_1.default('Application update failed, rolled the application back!', { cause: errorAppUpdate });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.BaseHandler = BaseHandler;
|
|
72
|
+
//# sourceMappingURL=base-message-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-message-handler.js","sourceRoot":"","sources":["../../src/cloud-connection/base-message-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.bootstrapProvision = void 0;
|
|
4
|
+
const device_certificate_1 = require("../infrastructure/device-certificate");
|
|
4
5
|
const urls_1 = require("../infrastructure/urls");
|
|
5
6
|
const clean_certs_1 = require("../util/clean-certs");
|
|
6
7
|
const directories_1 = require("../util/directories");
|
|
@@ -11,8 +12,8 @@ async function bootstrapProvision() {
|
|
|
11
12
|
setTimeout(clean_certs_1.rmBootstrapCertsAndClose, 60000);
|
|
12
13
|
const clientId = (0, get_device_id_1.getDeviceUuid)();
|
|
13
14
|
const bootstrapConfig = {
|
|
14
|
-
keyPath: (0,
|
|
15
|
-
certPath: (0,
|
|
15
|
+
keyPath: (0, device_certificate_1.getBootstrapPrivateKeyFilePath)(),
|
|
16
|
+
certPath: (0, device_certificate_1.getBootstrapCertificateFilePath)(),
|
|
16
17
|
caPath: directories_1.AWS_ROOT_CERTIFICATE_FILE_PATH,
|
|
17
18
|
clientId,
|
|
18
19
|
host: (0, urls_1.getIoTCoreEndpointUrl)()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap-provision.js","sourceRoot":"","sources":["../../src/cloud-connection/bootstrap-provision.ts"],"names":[],"mappings":";;;AAAA,iDAA+D;AAC/D,qDAA+D;AAC/D,
|
|
1
|
+
{"version":3,"file":"bootstrap-provision.js","sourceRoot":"","sources":["../../src/cloud-connection/bootstrap-provision.ts"],"names":[],"mappings":";;;AAAA,6EAG8C;AAC9C,iDAA+D;AAC/D,qDAA+D;AAC/D,qDAAqE;AACrE,yDAAsD;AACtD,2CAAwC;AACxC,iDAAgD;AAEzC,KAAK,UAAU,kBAAkB;IACtC,UAAU,CAAC,sCAAwB,EAAE,KAAK,CAAC,CAAC;IAE5C,MAAM,QAAQ,GAAG,IAAA,6BAAa,GAAE,CAAC;IACjC,MAAM,eAAe,GAAG;QACtB,OAAO,EAAE,IAAA,mDAA8B,GAAE;QACzC,QAAQ,EAAE,IAAA,oDAA+B,GAAE;QAC3C,MAAM,EAAE,4CAA8B;QACtC,QAAQ;QACR,IAAI,EAAE,IAAA,4BAAqB,GAAE;KAC9B,CAAC;IAEF,MAAM,cAAc,GAAG,IAAI,6BAAc,CAAC,eAAe,CAAC,CAAC;IAC3D,MAAM,cAAc,CAAC,oBAAoB,EAAE,CAAC;IAE5C,cAAc,CAAC,cAAc,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC;IAEnE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACvC,eAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,cAAc,CAAC,MAAM,CAAC,EAAE,CACtB,SAAS,EACT,KAAK,EAAE,KAAa,EAAE,OAAe,EAAE,EAAE;QACvC,MAAM,cAAc,CAAC,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC,CACF,CAAC;IAEF,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAW,EAAE,EAAE;QACrD,eAAM,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC;AA/BD,gDA+BC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { MessageDispatcher, MessageHandler } from './message-dispatcher';
|
|
2
|
+
export declare class ConnectionManager extends MessageDispatcher<any> {
|
|
3
|
+
private clientId;
|
|
4
|
+
private host;
|
|
5
|
+
private port;
|
|
6
|
+
private device;
|
|
7
|
+
private subscribedTopics;
|
|
8
|
+
constructor(clientId: string, host: string, port: number);
|
|
9
|
+
getIoTDevice(): any;
|
|
10
|
+
setupConnection(): void;
|
|
11
|
+
connect(): void;
|
|
12
|
+
registerHandler(topic: string, handler: MessageHandler): void;
|
|
13
|
+
disconnect(): void;
|
|
14
|
+
subscribe(topic: string): void;
|
|
15
|
+
unsubscribe(topic: string): void;
|
|
16
|
+
isConnected(): boolean;
|
|
17
|
+
private handleReconnection;
|
|
18
|
+
private setupHandlers;
|
|
19
|
+
private logConnectionInfo;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=connection-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/connection-manager.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAIzE,qBAAa,iBAAkB,SAAQ,iBAAiB,CAAC,GAAG,CAAC;IAC3D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,gBAAgB,CAA0B;gBAEtC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAOjD,YAAY;IAIZ,eAAe,IAAI,IAAI;IAIvB,OAAO,IAAI,IAAI;IAkBf,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc;IAKtD,UAAU,IAAI,IAAI;IAOlB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ9B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQhC,WAAW,IAAI,OAAO;IAI7B,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,aAAa;YA2CP,iBAAiB;CAoDhC"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConnectionManager = void 0;
|
|
4
|
+
const awsIot = require("aws-iot-device-sdk");
|
|
5
|
+
const infrastructure_1 = require("alwaysai/lib/infrastructure");
|
|
6
|
+
const directories_1 = require("../util/directories");
|
|
7
|
+
const util_1 = require("alwaysai/lib/util");
|
|
8
|
+
const logger_1 = require("../util/logger");
|
|
9
|
+
const util_2 = require("util");
|
|
10
|
+
const child_process_1 = require("child_process");
|
|
11
|
+
const message_dispatcher_1 = require("./message-dispatcher");
|
|
12
|
+
const exec_promise = (0, util_2.promisify)(child_process_1.exec);
|
|
13
|
+
class ConnectionManager extends message_dispatcher_1.MessageDispatcher {
|
|
14
|
+
constructor(clientId, host, port) {
|
|
15
|
+
super();
|
|
16
|
+
this.device = awsIot.device;
|
|
17
|
+
this.subscribedTopics = new Set();
|
|
18
|
+
this.clientId = clientId;
|
|
19
|
+
this.host = host;
|
|
20
|
+
this.port = port;
|
|
21
|
+
}
|
|
22
|
+
getIoTDevice() {
|
|
23
|
+
return this.device;
|
|
24
|
+
}
|
|
25
|
+
setupConnection() {
|
|
26
|
+
this.connect();
|
|
27
|
+
}
|
|
28
|
+
connect() {
|
|
29
|
+
try {
|
|
30
|
+
this.device = awsIot.device({
|
|
31
|
+
keyPath: infrastructure_1.DEVICE_PRIVATE_KEY_FILE_PATH,
|
|
32
|
+
certPath: infrastructure_1.DEVICE_CERTIFICATE_FILE_PATH,
|
|
33
|
+
caPath: directories_1.AWS_ROOT_CERTIFICATE_FILE_PATH,
|
|
34
|
+
clientId: this.clientId,
|
|
35
|
+
host: this.host,
|
|
36
|
+
port: this.port,
|
|
37
|
+
keepalive: 10 // time before re-connect attempt on dropped connection, default is 400 seconds
|
|
38
|
+
});
|
|
39
|
+
this.setupHandlers();
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
logger_1.logger.error(`Error connecting to cloud!\n${(0, util_1.stringifyError)(error)}`);
|
|
43
|
+
this.handleReconnection();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
registerHandler(topic, handler) {
|
|
47
|
+
super.registerHandler(topic, handler);
|
|
48
|
+
this.subscribe(topic);
|
|
49
|
+
}
|
|
50
|
+
disconnect() {
|
|
51
|
+
if (this.device) {
|
|
52
|
+
this.device.end();
|
|
53
|
+
logger_1.logger.debug(`Device Agent has been disconnected from the AWS IoT Core.`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
subscribe(topic) {
|
|
57
|
+
if (this.device && !this.subscribedTopics.has(topic)) {
|
|
58
|
+
this.device.subscribe(topic);
|
|
59
|
+
this.subscribedTopics.add(topic);
|
|
60
|
+
logger_1.logger.debug(`Subscribed to topic: ${topic}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
unsubscribe(topic) {
|
|
64
|
+
if (this.device && this.subscribedTopics.has(topic)) {
|
|
65
|
+
this.device.unsubscribe(topic);
|
|
66
|
+
this.subscribedTopics.delete(topic);
|
|
67
|
+
logger_1.logger.debug(`Unsubscribed from topic: ${topic}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
isConnected() {
|
|
71
|
+
return this.device ? this.device.connected : false;
|
|
72
|
+
}
|
|
73
|
+
handleReconnection() {
|
|
74
|
+
logger_1.logger.debug(`Attempting to reconnect to AWS IoT Core...`);
|
|
75
|
+
setTimeout(() => this.connect(), 5000); // try in 5 seconds.
|
|
76
|
+
}
|
|
77
|
+
setupHandlers() {
|
|
78
|
+
this.device.on('connect', (connack) => {
|
|
79
|
+
logger_1.logger.info('Device Agent has connected to the cloud.');
|
|
80
|
+
});
|
|
81
|
+
this.device.on('disconnect', () => {
|
|
82
|
+
logger_1.logger.warn('Device Agent has been disconnected from the cloud');
|
|
83
|
+
});
|
|
84
|
+
this.device.on('reconnect', () => {
|
|
85
|
+
logger_1.logger.info(`Device Agent attempting to re-connect ${new Date().toLocaleString()}`);
|
|
86
|
+
});
|
|
87
|
+
this.device.on('error', function (e) {
|
|
88
|
+
logger_1.logger.error(`Error connecting to the AWS IoT Core!\n${(0, util_1.stringifyError)(e)}`);
|
|
89
|
+
});
|
|
90
|
+
this.device.on('close', () => {
|
|
91
|
+
logger_1.logger.warn('Device Agent AWS IoT Core connection closed.');
|
|
92
|
+
});
|
|
93
|
+
this.device.on('offline', () => {
|
|
94
|
+
logger_1.logger.warn(`Device Agent is offline ${new Date().toLocaleString()}`);
|
|
95
|
+
void this.logConnectionInfo();
|
|
96
|
+
});
|
|
97
|
+
this.device.on('message', async (topic, payload) => {
|
|
98
|
+
logger_1.logger.debug(`Message received on topic: ${topic}:\n${payload.toString()}`);
|
|
99
|
+
try {
|
|
100
|
+
const jsonPacket = JSON.parse(payload);
|
|
101
|
+
this.dispatch(topic, jsonPacket);
|
|
102
|
+
}
|
|
103
|
+
catch (e) {
|
|
104
|
+
logger_1.logger.error(`Error parsing message!\n${(0, util_1.stringifyError)(e)}`);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
async logConnectionInfo() {
|
|
109
|
+
try {
|
|
110
|
+
/**
|
|
111
|
+
* We're using the 'netcat' or 'nc' command to test the connection to the IoT Core endpoint.
|
|
112
|
+
* This command doesn't always exit (see below), so
|
|
113
|
+
* we use timeout to break out of the prompt
|
|
114
|
+
* and catch the resulting error/parse the resulting stderr
|
|
115
|
+
*
|
|
116
|
+
* Sample command for current host and port:
|
|
117
|
+
* nc -zv -w 1 a3tzi5g7sq5zsj-ats.iot.us-west-2.amazonaws.com 8883
|
|
118
|
+
*
|
|
119
|
+
* Sample output when port is not blocked and host is reachable:
|
|
120
|
+
* $ nc -zv -w 1 a3tzi5g7sq5zsj-ats.iot.us-west-2.amazonaws.com 443
|
|
121
|
+
* Connection to a3tzi5g7sq5zsj-ats.iot.us-west-2.amazonaws.com 443 port [tcp/https] succeeded!
|
|
122
|
+
*
|
|
123
|
+
*
|
|
124
|
+
* Sample output when port is blocked (will repeatedly try until ctrl-C out):
|
|
125
|
+
* $ nc -zv -w 1 a3tzi5g7sq5zsj-ats.iot.us-west-2.amazonaws.com 8883
|
|
126
|
+
* nc: connect to a3tzi5g7sq5zsj-ats.iot.us-west-2.amazonaws.com port 8883 (tcp) timed out: Operation now in progress
|
|
127
|
+
* nc: connect to a3tzi5g7sq5zsj-ats.iot.us-west-2.amazonaws.com port 8883 (tcp) timed out: Operation now in progress
|
|
128
|
+
* nc: connect to a3tzi5g7sq5zsj-ats.iot.us-west-2.amazonaws.com port 8883 (tcp) timed out: Operation now in progress
|
|
129
|
+
* ^C
|
|
130
|
+
*
|
|
131
|
+
*
|
|
132
|
+
* Sample command/output when the port isn't enable on that host:
|
|
133
|
+
* $ nc -zv -w 1 localhost 8883
|
|
134
|
+
* nc: connect to localhost port 8883 (tcp) failed: Connection refused
|
|
135
|
+
*/
|
|
136
|
+
await exec_promise(`nc -zv -w 1 ${this.host} ${this.port}`, {
|
|
137
|
+
timeout: 2000
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
catch (err) {
|
|
141
|
+
const output = JSON.stringify(err['stderr']);
|
|
142
|
+
if (output.indexOf('not known') !== -1) {
|
|
143
|
+
logger_1.logger.warn('Iot Core endpoint appears to be unreachable, internet connection may be unstable or the host may be down.');
|
|
144
|
+
}
|
|
145
|
+
else if (output.indexOf('timed out') !== -1) {
|
|
146
|
+
logger_1.logger.warn(`Internet connection appears fine, however the endpoint was not reachable on the current connection port: ${this.port}\nPlease check if a firewall is in place.`);
|
|
147
|
+
}
|
|
148
|
+
else if (output.indexOf('refused') !== -1) {
|
|
149
|
+
logger_1.logger.warn(`The connection was refused, likely ${this.host} is not running a service on ${this.port}.`);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
logger_1.logger.warn(`Output from checking connection to ${this.host} on ${this.port}: ${output}`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
exports.ConnectionManager = ConnectionManager;
|
|
158
|
+
//# sourceMappingURL=connection-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../src/cloud-connection/connection-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,42 +1,21 @@
|
|
|
1
|
-
import { ToDeviceAgentMessage } from '@alwaysai/device-agent-schemas';
|
|
2
1
|
import { Publisher } from './publisher';
|
|
2
|
+
import { ShadowHandler } from './shadow-handler';
|
|
3
3
|
export declare class DeviceAgentCloudConnection {
|
|
4
|
-
private
|
|
5
|
-
|
|
4
|
+
private connectionManager;
|
|
5
|
+
private transactionManager;
|
|
6
6
|
private liveUpdatesHandler;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
private clientId;
|
|
10
|
-
private host;
|
|
11
|
-
private port;
|
|
7
|
+
shadowHandler: ShadowHandler;
|
|
8
|
+
publisher: Publisher;
|
|
9
|
+
private readonly clientId;
|
|
10
|
+
private readonly host;
|
|
11
|
+
private readonly port;
|
|
12
12
|
private readonly toDeviceTopic;
|
|
13
|
-
private readonly secureTunnelNotifyTopic;
|
|
14
13
|
private readonly secureTunnelHandler;
|
|
15
|
-
private handleAppStateControl;
|
|
16
|
-
private handleAppVersionControl;
|
|
17
|
-
private handleAppInstallCloudResponsePayload;
|
|
18
|
-
private handleModelsInstallCloudResponsePayload;
|
|
19
|
-
private handleDeviceAction;
|
|
20
|
-
private publishCloudRequest;
|
|
21
|
-
private subscribe;
|
|
22
|
-
private atomicApplicationUninstall;
|
|
23
|
-
private atomicApplicationUpdate;
|
|
24
|
-
private handleProjectShadowConfigUpdate;
|
|
25
|
-
private handleProjectShadowMessage;
|
|
26
|
-
handleSecureTunnelMessage(payload: any): Promise<void>;
|
|
27
14
|
constructor();
|
|
28
15
|
getClientId(): string;
|
|
29
|
-
getToDeviceTopic(): string;
|
|
30
16
|
isCmdInProgress(projectId: string): boolean;
|
|
31
|
-
updateProjectShadow(projectId: string): Promise<void>;
|
|
32
|
-
handleDeviceAgentMessage({ topic, message }: {
|
|
33
|
-
topic: string;
|
|
34
|
-
message: ToDeviceAgentMessage;
|
|
35
|
-
}): Promise<void>;
|
|
36
|
-
handleMessage(topic: string, message: any): Promise<void>;
|
|
37
|
-
setupHandlers(): Promise<void>;
|
|
38
|
-
logConnectionInfo(): Promise<void>;
|
|
39
17
|
stop(): Promise<void>;
|
|
18
|
+
handleMessage(topic: string, message: any): Promise<void>;
|
|
40
19
|
}
|
|
41
20
|
export declare function runDeviceAgentCloudInterface(): Promise<void>;
|
|
42
21
|
//# sourceMappingURL=device-agent-cloud-connection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-agent-cloud-connection.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/device-agent-cloud-connection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"device-agent-cloud-connection.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/device-agent-cloud-connection.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAA+B,MAAM,kBAAkB,CAAC;AAO9E,qBAAa,0BAA0B;IACrC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,kBAAkB,CAAqB;IACxC,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC;IAE5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2B;IAChD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmC;IACjE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CACS;;IA+GtC,WAAW,IAAI,MAAM;IAIrB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIrC,IAAI;IAOJ,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG;CAGvD;AAED,wBAAsB,4BAA4B,kBA+BjD"}
|