@alwaysai/device-agent 0.0.14 → 0.0.16
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/install.d.ts.map +1 -1
- package/lib/application-control/install.js +1 -0
- package/lib/application-control/install.js.map +1 -1
- package/lib/application-control/status.d.ts.map +1 -1
- package/lib/application-control/status.js +8 -13
- package/lib/application-control/status.js.map +1 -1
- package/lib/cloud-connection/bootstrap-provision.d.ts +1 -1
- package/lib/cloud-connection/bootstrap-provision.d.ts.map +1 -1
- package/lib/cloud-connection/bootstrap-provision.js +9 -9
- package/lib/cloud-connection/bootstrap-provision.js.map +1 -1
- package/lib/cloud-connection/cmd-status.d.ts +3 -11
- package/lib/cloud-connection/cmd-status.d.ts.map +1 -1
- package/lib/cloud-connection/cmd-status.js +24 -11
- package/lib/cloud-connection/cmd-status.js.map +1 -1
- package/lib/cloud-connection/device-agent-cloud-connection.d.ts +2 -3
- package/lib/cloud-connection/device-agent-cloud-connection.d.ts.map +1 -1
- package/lib/cloud-connection/device-agent-cloud-connection.js +93 -43
- 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 +4 -3
- package/lib/cloud-connection/device-agent.js.map +1 -1
- package/lib/cloud-connection/live-updates-handler.d.ts +10 -18
- package/lib/cloud-connection/live-updates-handler.d.ts.map +1 -1
- package/lib/cloud-connection/live-updates-handler.js +50 -50
- package/lib/cloud-connection/live-updates-handler.js.map +1 -1
- package/lib/cloud-connection/messages.d.ts +3 -1
- package/lib/cloud-connection/messages.d.ts.map +1 -1
- package/lib/cloud-connection/messages.js +13 -1
- package/lib/cloud-connection/messages.js.map +1 -1
- package/lib/cloud-connection/passthrough-handler.js +1 -1
- package/lib/cloud-connection/passthrough-handler.js.map +1 -1
- package/lib/cloud-connection/shadow-handler.d.ts.map +1 -1
- package/lib/cloud-connection/shadow-handler.js +11 -4
- package/lib/cloud-connection/shadow-handler.js.map +1 -1
- package/lib/cloud-connection/shadow-handler.test.js +3 -3
- package/lib/cloud-connection/shadow-handler.test.js.map +1 -1
- package/lib/environment.d.ts.map +1 -1
- package/lib/environment.js +1 -1
- package/lib/environment.js.map +1 -1
- package/lib/index.js +5 -3
- package/lib/index.js.map +1 -1
- package/lib/subcommands/app/app.d.ts +2 -2
- package/lib/subcommands/app/app.d.ts.map +1 -1
- package/lib/subcommands/app/app.js +28 -10
- package/lib/subcommands/app/app.js.map +1 -1
- package/lib/subcommands/app/index.js +2 -2
- package/lib/subcommands/device/device.d.ts.map +1 -1
- package/lib/subcommands/device/device.js +2 -1
- package/lib/subcommands/device/device.js.map +1 -1
- package/lib/util/directories.d.ts +11 -12
- package/lib/util/directories.d.ts.map +1 -1
- package/lib/util/directories.js +24 -29
- package/lib/util/directories.js.map +1 -1
- package/lib/util/logger.js +1 -0
- package/lib/util/logger.js.map +1 -1
- package/package.json +1 -1
- package/readme.md +3 -3
- package/src/application-control/install.ts +3 -1
- package/src/application-control/status.ts +10 -16
- package/src/cloud-connection/bootstrap-provision.ts +13 -10
- package/src/cloud-connection/cmd-status.ts +30 -11
- package/src/cloud-connection/device-agent-cloud-connection.ts +128 -66
- package/src/cloud-connection/device-agent.ts +7 -4
- package/src/cloud-connection/live-updates-handler.ts +79 -86
- package/src/cloud-connection/messages.ts +22 -1
- package/src/cloud-connection/passthrough-handler.ts +1 -1
- package/src/cloud-connection/shadow-handler.test.ts +3 -3
- package/src/cloud-connection/shadow-handler.ts +15 -11
- package/src/environment.ts +1 -1
- package/src/index.ts +6 -3
- package/src/subcommands/app/app.ts +27 -10
- package/src/subcommands/app/index.ts +4 -4
- package/src/subcommands/device/device.ts +5 -2
- package/src/util/directories.ts +31 -29
- package/src/util/logger.ts +2 -0
- package/lib/cloud-connection/app-install-status.d.ts +0 -16
- package/lib/cloud-connection/app-install-status.d.ts.map +0 -1
- package/lib/cloud-connection/app-install-status.js +0 -53
- package/lib/cloud-connection/app-install-status.js.map +0 -1
- package/lib/util/timer.d.ts +0 -2
- package/lib/util/timer.d.ts.map +0 -1
- package/lib/util/timer.js +0 -6
- package/lib/util/timer.js.map +0 -1
- package/src/cloud-connection/app-install-status.ts +0 -62
- package/src/util/timer.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/application-control/install.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAuBlE,aAAK,oBAAoB,GAAG;IAC1B,iBAAiB,EAAE;QACjB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,oBAAoB,EAAE;QACpB,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;KACxB,EAAE,CAAC;CACL,CAAC;AAEF,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAQpE;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,oBAAoB,CAAC;CACzC,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/application-control/install.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAuBlE,aAAK,oBAAoB,GAAG;IAC1B,iBAAiB,EAAE;QACjB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,oBAAoB,EAAE;QACpB,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;KACxB,EAAE,CAAC;CACL,CAAC;AAEF,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAQpE;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,oBAAoB,CAAC;CACzC,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DhB;AA+ED,wBAAsB,YAAY,CAAC,KAAK,EAAE;IACxC,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/application-control/install.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAChC,yBAAyB;AACzB,6BAA6B;AAC7B,qDAA4D;AAC5D,4CAAuD;AACvD,mCAAgF;AAEhF,qCAAsC;AACtC,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/application-control/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,CAmBhB;AAED,wBAAsB,OAAO,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAezE;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5E"}
|
|
@@ -104,8 +104,7 @@ async function startApp(props) {
|
|
|
104
104
|
const result = await (0, docker_cmd_1.runDockerLogin)({ token: dockerLoginToken });
|
|
105
105
|
logger_1.logger.debug(`docker login: ${result}`);
|
|
106
106
|
}
|
|
107
|
-
//
|
|
108
|
-
// Start app
|
|
107
|
+
// Always call `docker-compose up` regardless of application state
|
|
109
108
|
const upOut = await docker_compose_1.default.upAll({ cwd: appDir });
|
|
110
109
|
logger_1.logger.debug(`docker-compose up: ${JSON.stringify(upOut, null, 2)}`);
|
|
111
110
|
if (upOut.exitCode !== 0) {
|
|
@@ -118,18 +117,14 @@ async function stopApp(props) {
|
|
|
118
117
|
const { projectId } = props;
|
|
119
118
|
await (0, utils_1.requireAppInstalled)({ projectId });
|
|
120
119
|
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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}`);
|
|
120
|
+
// Always call `docker-compose down` regardless of application state to ensure
|
|
121
|
+
// containers are cleaned up
|
|
122
|
+
const output = await docker_compose_1.default.down({ cwd: appDir });
|
|
123
|
+
logger_1.logger.debug(`docker-compose down: ${JSON.stringify(output, null, 2)}`);
|
|
124
|
+
if (output.exitCode !== 0) {
|
|
125
|
+
throw new Error(`Failed to stop application! stdout=${output.out} stderr=${output.err}`);
|
|
132
126
|
}
|
|
127
|
+
logger_1.logger.info(`Stopped ${projectId}`);
|
|
133
128
|
}
|
|
134
129
|
exports.stopApp = stopApp;
|
|
135
130
|
async function restartApp(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/application-control/status.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/application-control/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function bootstrapProvision(): void
|
|
1
|
+
export declare function bootstrapProvision(): Promise<void>;
|
|
2
2
|
//# sourceMappingURL=bootstrap-provision.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap-provision.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/bootstrap-provision.ts"],"names":[],"mappings":"AAWA,
|
|
1
|
+
{"version":3,"file":"bootstrap-provision.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/bootstrap-provision.ts"],"names":[],"mappings":"AAWA,wBAAsB,kBAAkB,kBA+BvC"}
|
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.bootstrapProvision = void 0;
|
|
4
|
-
const util_1 = require("alwaysai/lib/util");
|
|
5
4
|
const urls_1 = require("../infrastructure/urls");
|
|
6
5
|
const clean_certs_1 = require("../util/clean-certs");
|
|
7
6
|
const directories_1 = require("../util/directories");
|
|
8
7
|
const get_device_id_1 = require("../util/get-device-id");
|
|
8
|
+
const logger_1 = require("../util/logger");
|
|
9
9
|
const device_agent_1 = require("./device-agent");
|
|
10
|
-
function bootstrapProvision() {
|
|
10
|
+
async function bootstrapProvision() {
|
|
11
11
|
setTimeout(clean_certs_1.rmBootstrapCertsAndClose, 60000);
|
|
12
12
|
const clientId = (0, get_device_id_1.getDeviceUuid)();
|
|
13
13
|
const bootstrapConfig = {
|
|
14
|
-
keyPath: (0, directories_1.
|
|
15
|
-
certPath: (0, directories_1.
|
|
14
|
+
keyPath: (0, directories_1.BOOTSTRAP_PRIVATE_KEY_FILE_PATH)(),
|
|
15
|
+
certPath: (0, directories_1.BOOTSTRAP_CERTIFICATE_FILE_PATH)(),
|
|
16
16
|
caPath: directories_1.AWS_ROOT_CERTIFICATE_FILE_PATH,
|
|
17
17
|
clientId,
|
|
18
18
|
host: (0, urls_1.getIoTCoreEndpointUrl)()
|
|
19
19
|
};
|
|
20
20
|
const bootstrapAgent = new device_agent_1.BootstrapAgent(bootstrapConfig);
|
|
21
|
-
bootstrapAgent.subscribeToAllTopics();
|
|
21
|
+
await bootstrapAgent.subscribeToAllTopics();
|
|
22
22
|
bootstrapAgent.publishMessage('$aws/certificates/create/json', '');
|
|
23
23
|
bootstrapAgent.device.on('connect', () => {
|
|
24
|
-
|
|
24
|
+
logger_1.logger.info('Your device is being provisioned');
|
|
25
25
|
});
|
|
26
|
-
bootstrapAgent.device.on('message', (topic, payload) => {
|
|
27
|
-
bootstrapAgent.handleAwsCertificateTopics(topic, payload);
|
|
26
|
+
bootstrapAgent.device.on('message', async (topic, payload) => {
|
|
27
|
+
await bootstrapAgent.handleAwsCertificateTopics(topic, payload);
|
|
28
28
|
});
|
|
29
29
|
bootstrapAgent.device.on('packetsend', (packet) => {
|
|
30
|
-
|
|
30
|
+
logger_1.logger.debug(`Sending packet: ${JSON.stringify({ packet }, null, 2)}`);
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
33
|
exports.bootstrapProvision = bootstrapProvision;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap-provision.js","sourceRoot":"","sources":["../../src/cloud-connection/bootstrap-provision.ts"],"names":[],"mappings":";;;AAAA,
|
|
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,qDAI6B;AAC7B,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,6CAA+B,GAAE;QAC1C,QAAQ,EAAE,IAAA,6CAA+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"}
|
|
@@ -1,16 +1,8 @@
|
|
|
1
|
-
export declare type CmdStatusType = 'idle' | 'in_progress';
|
|
2
|
-
export declare class CmdStatus {
|
|
3
|
-
private projectId;
|
|
4
|
-
private status;
|
|
5
|
-
constructor(projectId: string, status: CmdStatusType);
|
|
6
|
-
getProjectId(): string;
|
|
7
|
-
update(status: CmdStatusType): void;
|
|
8
|
-
getStatus(): CmdStatusType;
|
|
9
|
-
}
|
|
10
1
|
export declare class CmdStatusManager {
|
|
11
2
|
private apps;
|
|
12
|
-
|
|
13
|
-
|
|
3
|
+
start(projectId: string): Promise<void>;
|
|
4
|
+
stop(projectId: string): Promise<void>;
|
|
5
|
+
isCmdInProgress(projectId: string): boolean;
|
|
14
6
|
anyCmdInProgress(): boolean;
|
|
15
7
|
}
|
|
16
8
|
//# sourceMappingURL=cmd-status.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd-status.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/cmd-status.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cmd-status.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/cmd-status.ts"],"names":[],"mappings":"AA0BA,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,IAAI,CAA0C;IAEzC,KAAK,CAAC,SAAS,EAAE,MAAM;IAevB,IAAI,CAAC,SAAS,EAAE,MAAM;IAW5B,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAO3C,gBAAgB;CAQxB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CmdStatusManager =
|
|
3
|
+
exports.CmdStatusManager = void 0;
|
|
4
|
+
const logger_1 = require("../util/logger");
|
|
4
5
|
class CmdStatus {
|
|
5
6
|
constructor(projectId, status) {
|
|
6
7
|
this.projectId = projectId;
|
|
@@ -16,25 +17,37 @@ class CmdStatus {
|
|
|
16
17
|
return this.status;
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
|
-
exports.CmdStatus = CmdStatus;
|
|
20
20
|
class CmdStatusManager {
|
|
21
21
|
constructor() {
|
|
22
22
|
this.apps = {};
|
|
23
23
|
}
|
|
24
|
-
|
|
25
|
-
if (projectId in this.apps) {
|
|
26
|
-
|
|
24
|
+
async start(projectId) {
|
|
25
|
+
if (!(projectId in this.apps)) {
|
|
26
|
+
const cmdStatus = new CmdStatus(projectId, 'in_progress');
|
|
27
|
+
this.apps[projectId] = cmdStatus;
|
|
28
|
+
}
|
|
29
|
+
else if (this.apps[projectId].getStatus() !== 'in_progress') {
|
|
30
|
+
this.apps[projectId].update('in_progress');
|
|
27
31
|
}
|
|
28
32
|
else {
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
logger_1.logger.debug(`Ignoring start for ${projectId} since it already has a command in progress`);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
logger_1.logger.debug(`Started command for ${projectId}`);
|
|
37
|
+
}
|
|
38
|
+
async stop(projectId) {
|
|
39
|
+
if (!(projectId in this.apps) ||
|
|
40
|
+
this.apps[projectId].getStatus() === 'idle') {
|
|
41
|
+
throw new Error(`No ongoing command to stop for ${projectId}`);
|
|
31
42
|
}
|
|
43
|
+
this.apps[projectId].update('idle');
|
|
44
|
+
logger_1.logger.debug(`Stopped command for ${projectId}`);
|
|
32
45
|
}
|
|
33
|
-
|
|
34
|
-
if (projectId in this.apps) {
|
|
35
|
-
return
|
|
46
|
+
isCmdInProgress(projectId) {
|
|
47
|
+
if (!(projectId in this.apps)) {
|
|
48
|
+
return false;
|
|
36
49
|
}
|
|
37
|
-
|
|
50
|
+
return this.apps[projectId].getStatus() === 'in_progress';
|
|
38
51
|
}
|
|
39
52
|
anyCmdInProgress() {
|
|
40
53
|
for (const projectId in this.apps) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd-status.js","sourceRoot":"","sources":["../../src/cloud-connection/cmd-status.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"cmd-status.js","sourceRoot":"","sources":["../../src/cloud-connection/cmd-status.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAIxC,MAAM,SAAS;IAIb,YAAY,SAAiB,EAAE,MAAqB;QAClD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,MAAM,CAAC,MAAqB;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAED,MAAa,gBAAgB;IAA7B;QACU,SAAI,GAAuC,EAAE,CAAC;IA2CxD,CAAC;IAzCQ,KAAK,CAAC,KAAK,CAAC,SAAiB;QAClC,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAC1D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;SAClC;aAAM,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,KAAK,aAAa,EAAE;YAC7D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;SAC5C;aAAM;YACL,eAAM,CAAC,KAAK,CACV,sBAAsB,SAAS,6CAA6C,CAC7E,CAAC;YACF,OAAO;SACR;QACD,eAAM,CAAC,KAAK,CAAC,uBAAuB,SAAS,EAAE,CAAC,CAAC;IACnD,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,SAAiB;QACjC,IACE,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,KAAK,MAAM,EAC3C;YACA,MAAM,IAAI,KAAK,CAAC,kCAAkC,SAAS,EAAE,CAAC,CAAC;SAChE;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,eAAM,CAAC,KAAK,CAAC,uBAAuB,SAAS,EAAE,CAAC,CAAC;IACnD,CAAC;IAEM,eAAe,CAAC,SAAiB;QACtC,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE;YAC7B,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,KAAK,aAAa,CAAC;IAC5D,CAAC;IAEM,gBAAgB;QACrB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE;YACjC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,KAAK,aAAa,EAAE;gBACtD,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA5CD,4CA4CC"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { ClientMessage } from '@alwaysai/device-agent-schemas';
|
|
2
2
|
import { ShadowTopics } from './shadow-handler';
|
|
3
3
|
import { Publisher } from './publisher';
|
|
4
|
-
import { CmdStatusType } from './cmd-status';
|
|
5
4
|
export declare class DeviceAgentCloudConnection {
|
|
6
5
|
private shadowHandler;
|
|
7
6
|
publisher: Publisher;
|
|
8
7
|
private cmdStatusMgr;
|
|
9
8
|
private liveUpdatesHandler;
|
|
10
|
-
private appInstallStatusMgr;
|
|
11
9
|
private device;
|
|
12
10
|
private clientId;
|
|
13
11
|
private host;
|
|
@@ -19,13 +17,14 @@ export declare class DeviceAgentCloudConnection {
|
|
|
19
17
|
private handleAgentCommand;
|
|
20
18
|
private publishCloudRequest;
|
|
21
19
|
private subscribe;
|
|
20
|
+
private atomicApplicationUninstall;
|
|
22
21
|
private atomicApplicationUpdate;
|
|
23
22
|
private handleAppConfigUpdates;
|
|
24
23
|
constructor();
|
|
25
24
|
getClientId(): string;
|
|
26
25
|
getToDeviceTopic(): string;
|
|
27
26
|
getShadowTopics(): ShadowTopics;
|
|
28
|
-
|
|
27
|
+
isCmdInProgress(projectId: string): boolean;
|
|
29
28
|
handleClientMessage({ topic, message }: {
|
|
30
29
|
topic: string;
|
|
31
30
|
message: ClientMessage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-agent-cloud-connection.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/device-agent-cloud-connection.ts"],"names":[],"mappings":"AAWA,OAAO,EAOL,aAAa,EAEd,MAAM,gCAAgC,CAAC;AAaxC,OAAO,EAAkC,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"device-agent-cloud-connection.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/device-agent-cloud-connection.ts"],"names":[],"mappings":"AAWA,OAAO,EAOL,aAAa,EAEd,MAAM,gCAAgC,CAAC;AAaxC,OAAO,EAAkC,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AASxC,qBAAa,0BAA0B;IACrC,OAAO,CAAC,aAAa,CAAgB;IAC9B,SAAS,EAAE,SAAS,CAAC;IAC5B,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,MAAM,CAAiB;IAE/B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiC;IAE/D,OAAO,CAAC,cAAc,CAAmB;YAE3B,qBAAqB;YAerB,uBAAuB;IAiCrC,OAAO,CAAC,mBAAmB,CAEzB;YAEY,kBAAkB;YAYlB,mBAAmB;IAIjC,OAAO,CAAC,SAAS;YAKH,0BAA0B;YA4C1B,uBAAuB;YAuDvB,sBAAsB;;IA2E7B,WAAW,IAAI,MAAM;IAIrB,gBAAgB;IAIhB,eAAe,IAAI,YAAY;IAI/B,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIrC,mBAAmB,CAAC,EAC/B,KAAK,EACL,OAAO,EACR,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,aAAa,CAAC;KACxB;IAuFY,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,GAAG;IAyBzD,aAAa;IAoCnB,IAAI;CAGZ;AAED,wBAAsB,4BAA4B,kBAsBjD"}
|
|
@@ -15,12 +15,14 @@ const shadow_handler_1 = require("./shadow-handler");
|
|
|
15
15
|
const publisher_1 = require("./publisher");
|
|
16
16
|
const live_updates_handler_1 = require("./live-updates-handler");
|
|
17
17
|
const bootstrap_provision_1 = require("./bootstrap-provision");
|
|
18
|
-
const app_install_status_1 = require("./app-install-status");
|
|
19
18
|
const cmd_status_1 = require("./cmd-status");
|
|
20
19
|
const passthrough_handler_1 = require("./passthrough-handler");
|
|
21
20
|
const environment_1 = require("../environment");
|
|
21
|
+
const messages_1 = require("./messages");
|
|
22
22
|
class DeviceAgentCloudConnection {
|
|
23
|
-
|
|
23
|
+
/*=================================================================
|
|
24
|
+
Public interface
|
|
25
|
+
=================================================================*/
|
|
24
26
|
constructor() {
|
|
25
27
|
this.device = awsIot.device;
|
|
26
28
|
this.clientId = (0, get_device_id_1.getDeviceUuid)();
|
|
@@ -32,8 +34,8 @@ class DeviceAgentCloudConnection {
|
|
|
32
34
|
// TODO
|
|
33
35
|
};
|
|
34
36
|
this.device = awsIot.device({
|
|
35
|
-
keyPath:
|
|
36
|
-
certPath:
|
|
37
|
+
keyPath: directories_1.DEVICE_PRIVATE_KEY_FILE_PATH,
|
|
38
|
+
certPath: directories_1.DEVICE_CERTIFICATE_FILE_PATH,
|
|
37
39
|
caPath: directories_1.AWS_ROOT_CERTIFICATE_FILE_PATH,
|
|
38
40
|
clientId: this.clientId,
|
|
39
41
|
host: this.host,
|
|
@@ -43,46 +45,54 @@ class DeviceAgentCloudConnection {
|
|
|
43
45
|
this.publisher = new publisher_1.Publisher(this.device, this.clientId);
|
|
44
46
|
this.shadowHandler = new shadow_handler_1.ShadowHandler(this.clientId, this.publisher);
|
|
45
47
|
this.cmdStatusMgr = new cmd_status_1.CmdStatusManager();
|
|
46
|
-
this.
|
|
47
|
-
this.liveUpdatesHandler = new live_updates_handler_1.LiveUpdatesHandler(this.publisher, this.appInstallStatusMgr);
|
|
48
|
+
this.liveUpdatesHandler = new live_updates_handler_1.LiveUpdatesHandler(this.publisher);
|
|
48
49
|
this.subscribe(this.toDeviceTopic);
|
|
49
50
|
this.subscribe(this.shadowHandler.shadowTopics.projects.getAccepted);
|
|
50
51
|
this.subscribe(this.shadowHandler.shadowTopics.projects.updateDelta);
|
|
51
52
|
}
|
|
52
|
-
handleAppStateControl(payload) {
|
|
53
|
+
async handleAppStateControl(payload) {
|
|
53
54
|
const { baseCommand, projectId } = payload;
|
|
54
55
|
switch (baseCommand) {
|
|
55
56
|
case device_agent_schemas_1.keyMirrors.appStateControl.start:
|
|
56
|
-
(0, application_control_1.startApp)({ projectId });
|
|
57
|
+
await (0, application_control_1.startApp)({ projectId });
|
|
57
58
|
break;
|
|
58
59
|
case device_agent_schemas_1.keyMirrors.appStateControl.stop:
|
|
59
|
-
(0, application_control_1.stopApp)({ projectId });
|
|
60
|
+
await (0, application_control_1.stopApp)({ projectId });
|
|
60
61
|
break;
|
|
61
62
|
case device_agent_schemas_1.keyMirrors.appStateControl.restart:
|
|
62
|
-
(0, application_control_1.restartApp)({ projectId });
|
|
63
|
+
await (0, application_control_1.restartApp)({ projectId });
|
|
63
64
|
break;
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
|
-
handleAppVersionControl(payload) {
|
|
67
|
+
async handleAppVersionControl(payload) {
|
|
67
68
|
switch (payload.baseCommand) {
|
|
68
69
|
case device_agent_schemas_1.keyMirrors.appVersionControl.install: {
|
|
69
70
|
const { projectId, appReleaseHash } = payload;
|
|
70
|
-
this.cmdStatusMgr.
|
|
71
|
+
await this.cmdStatusMgr.start(projectId);
|
|
72
|
+
await this.liveUpdatesHandler.enableAppInstallStatus({
|
|
73
|
+
projectId,
|
|
74
|
+
appReleaseHash
|
|
75
|
+
});
|
|
71
76
|
const signedUrlsRequest = { projectId, appReleaseHash };
|
|
72
|
-
this.publishCloudRequest({
|
|
77
|
+
await this.publishCloudRequest({
|
|
73
78
|
messageType: device_agent_schemas_1.keyMirrors.agentMessageType.signed_urls_request,
|
|
74
79
|
signedUrlsRequest
|
|
75
80
|
});
|
|
76
81
|
break;
|
|
77
82
|
}
|
|
83
|
+
case device_agent_schemas_1.keyMirrors.appVersionControl.uninstall: {
|
|
84
|
+
const { projectId } = payload;
|
|
85
|
+
await this.atomicApplicationUninstall(projectId);
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
78
88
|
default:
|
|
79
89
|
logger_1.logger.warn(`Ignore App Version Control packet: ${JSON.stringify(payload, null, 2)}`);
|
|
80
90
|
}
|
|
81
91
|
}
|
|
82
|
-
handleAgentCommand(message) {
|
|
92
|
+
async handleAgentCommand(message) {
|
|
83
93
|
switch (message.messageType) {
|
|
84
94
|
case device_agent_schemas_1.keyMirrors.clientMessageType.live_state_updates:
|
|
85
|
-
this.liveUpdatesHandler.
|
|
95
|
+
await this.liveUpdatesHandler.handleToggles(message.liveUpdatesToggles);
|
|
86
96
|
break;
|
|
87
97
|
default:
|
|
88
98
|
logger_1.logger.error(`Invalid agent action message type from message '${message}'`);
|
|
@@ -95,42 +105,82 @@ class DeviceAgentCloudConnection {
|
|
|
95
105
|
logger_1.logger.info(`Subscribing to ${topic}`);
|
|
96
106
|
this.device.subscribe(topic);
|
|
97
107
|
}
|
|
108
|
+
async atomicApplicationUninstall(projectId) {
|
|
109
|
+
const appReleaseHash = await (0, agent_config_1.AgentConfigFile)().getAppVersion({
|
|
110
|
+
projectId
|
|
111
|
+
});
|
|
112
|
+
await this.cmdStatusMgr.start(projectId);
|
|
113
|
+
await this.liveUpdatesHandler.enableAppInstallStatus({
|
|
114
|
+
projectId,
|
|
115
|
+
appReleaseHash
|
|
116
|
+
});
|
|
117
|
+
try {
|
|
118
|
+
await (0, application_control_1.uninstallApp)({ projectId });
|
|
119
|
+
this.shadowHandler.deleteProjectShadow(projectId);
|
|
120
|
+
await this.cmdStatusMgr.stop(projectId);
|
|
121
|
+
await this.liveUpdatesHandler.disableAppInstallStatus({
|
|
122
|
+
projectId
|
|
123
|
+
});
|
|
124
|
+
// Send final status message
|
|
125
|
+
this.publisher.publishToClient(await (0, messages_1.getAppInstallStatusMessage)(device_agent_schemas_1.keyMirrors.appInstallStatus.success, '', appReleaseHash));
|
|
126
|
+
}
|
|
127
|
+
catch (e) {
|
|
128
|
+
logger_1.logger.error(`Failed to uninstall ${projectId}: ${e}`);
|
|
129
|
+
const message = e.message;
|
|
130
|
+
await this.cmdStatusMgr.stop(projectId);
|
|
131
|
+
await this.liveUpdatesHandler.disableAppInstallStatus({
|
|
132
|
+
projectId
|
|
133
|
+
});
|
|
134
|
+
// Send final status message
|
|
135
|
+
this.publisher.publishToClient(await (0, messages_1.getAppInstallStatusMessage)(device_agent_schemas_1.keyMirrors.appInstallStatus.failure, message, appReleaseHash));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
98
138
|
// eslint-disable-next-line
|
|
99
139
|
async atomicApplicationUpdate(func, args, projectId, appReleaseHash) {
|
|
100
|
-
this.
|
|
101
|
-
this.liveUpdatesHandler.
|
|
102
|
-
|
|
140
|
+
await this.cmdStatusMgr.start(projectId);
|
|
141
|
+
await this.liveUpdatesHandler.enableAppInstallStatus({
|
|
142
|
+
projectId,
|
|
143
|
+
appReleaseHash
|
|
103
144
|
});
|
|
104
145
|
// Install the app and models
|
|
105
146
|
try {
|
|
106
147
|
const out = await func(...args);
|
|
107
|
-
this.
|
|
108
|
-
this.liveUpdatesHandler.
|
|
109
|
-
|
|
148
|
+
await this.cmdStatusMgr.stop(projectId);
|
|
149
|
+
await this.liveUpdatesHandler.disableAppInstallStatus({
|
|
150
|
+
projectId
|
|
110
151
|
});
|
|
111
|
-
|
|
152
|
+
// Send final status message
|
|
153
|
+
this.publisher.publishToClient(await (0, messages_1.getAppInstallStatusMessage)(device_agent_schemas_1.keyMirrors.appInstallStatus.success, '', appReleaseHash));
|
|
112
154
|
// update app config shadow for project
|
|
113
155
|
await this.shadowHandler.publishAppState(projectId);
|
|
114
156
|
return out;
|
|
115
157
|
}
|
|
116
158
|
catch (e) {
|
|
117
|
-
logger_1.logger.error(e);
|
|
159
|
+
logger_1.logger.error(`Failed to install ${projectId}: ${e}`);
|
|
118
160
|
const message = e.message;
|
|
119
161
|
// uninstall the failed app to put system back in good state
|
|
162
|
+
// TODO: Replace this with rollback
|
|
120
163
|
await (0, application_control_1.uninstallApp)({ projectId });
|
|
121
|
-
this.appInstallStatusMgr.update(appReleaseHash, device_agent_schemas_1.keyMirrors.appInstallStatus.failure, message);
|
|
122
|
-
this.liveUpdatesHandler.update({
|
|
123
|
-
appInstallStatus: { toggle: false, appReleaseHash }
|
|
124
|
-
});
|
|
125
|
-
this.cmdStatusMgr.update(projectId, 'idle');
|
|
126
|
-
// delete shadow for project
|
|
127
164
|
this.shadowHandler.deleteProjectShadow(projectId);
|
|
165
|
+
await this.cmdStatusMgr.stop(projectId);
|
|
166
|
+
await this.liveUpdatesHandler.disableAppInstallStatus({
|
|
167
|
+
projectId
|
|
168
|
+
});
|
|
169
|
+
// Send final status message
|
|
170
|
+
this.publisher.publishToClient(await (0, messages_1.getAppInstallStatusMessage)(device_agent_schemas_1.keyMirrors.appInstallStatus.failure, message, appReleaseHash));
|
|
128
171
|
}
|
|
129
172
|
}
|
|
130
|
-
async handleAppConfigUpdates(
|
|
131
|
-
for (const appConfigUpdate of
|
|
173
|
+
async handleAppConfigUpdates(appCfgUpdates) {
|
|
174
|
+
for (const appConfigUpdate of appCfgUpdates) {
|
|
132
175
|
const { projectId, newAppCfg, updatedModels } = appConfigUpdate;
|
|
133
|
-
|
|
176
|
+
const appReleaseHash = await (0, agent_config_1.AgentConfigFile)().getAppVersion({
|
|
177
|
+
projectId
|
|
178
|
+
});
|
|
179
|
+
await this.cmdStatusMgr.start(projectId);
|
|
180
|
+
await this.liveUpdatesHandler.enableAppInstallStatus({
|
|
181
|
+
projectId,
|
|
182
|
+
appReleaseHash
|
|
183
|
+
});
|
|
134
184
|
if (updatedModels && Object.keys(updatedModels).length) {
|
|
135
185
|
// Publish request for model urls
|
|
136
186
|
this.newAppCfgQueue.push(newAppCfg);
|
|
@@ -168,8 +218,8 @@ class DeviceAgentCloudConnection {
|
|
|
168
218
|
getShadowTopics() {
|
|
169
219
|
return this.shadowHandler.shadowTopics;
|
|
170
220
|
}
|
|
171
|
-
|
|
172
|
-
return this.cmdStatusMgr.
|
|
221
|
+
isCmdInProgress(projectId) {
|
|
222
|
+
return this.cmdStatusMgr.isCmdInProgress(projectId);
|
|
173
223
|
}
|
|
174
224
|
async handleClientMessage({ topic, message }) {
|
|
175
225
|
const valid = (0, device_agent_schemas_1.validateClientMessage)(message);
|
|
@@ -180,15 +230,15 @@ class DeviceAgentCloudConnection {
|
|
|
180
230
|
const payload = message.payload;
|
|
181
231
|
switch (payload.messageType) {
|
|
182
232
|
case device_agent_schemas_1.keyMirrors.clientMessageType.app_state_control: {
|
|
183
|
-
this.handleAppStateControl(payload.appStateControl);
|
|
233
|
+
await this.handleAppStateControl(payload.appStateControl);
|
|
184
234
|
break;
|
|
185
235
|
}
|
|
186
236
|
case device_agent_schemas_1.keyMirrors.clientMessageType.app_version_control: {
|
|
187
|
-
this.handleAppVersionControl(payload.appVersionControl);
|
|
237
|
+
await this.handleAppVersionControl(payload.appVersionControl);
|
|
188
238
|
break;
|
|
189
239
|
}
|
|
190
240
|
case device_agent_schemas_1.keyMirrors.clientMessageType.live_state_updates: {
|
|
191
|
-
this.handleAgentCommand(payload);
|
|
241
|
+
await this.handleAgentCommand(payload);
|
|
192
242
|
break;
|
|
193
243
|
}
|
|
194
244
|
case device_agent_schemas_1.keyMirrors.clientMessageType.app_install_cloud_response: {
|
|
@@ -225,6 +275,7 @@ class DeviceAgentCloudConnection {
|
|
|
225
275
|
}
|
|
226
276
|
}
|
|
227
277
|
async handleMessage(topic, message) {
|
|
278
|
+
logger_1.logger.debug(`Received message: ${JSON.stringify({ topic, message }, null, 2)}`);
|
|
228
279
|
switch (topic) {
|
|
229
280
|
case this.shadowHandler.shadowTopics.projects.getAccepted:
|
|
230
281
|
case this.shadowHandler.shadowTopics.projects.updateDelta: {
|
|
@@ -236,7 +287,7 @@ class DeviceAgentCloudConnection {
|
|
|
236
287
|
break;
|
|
237
288
|
}
|
|
238
289
|
case this.toDeviceTopic:
|
|
239
|
-
this.handleClientMessage({
|
|
290
|
+
await this.handleClientMessage({
|
|
240
291
|
topic,
|
|
241
292
|
message
|
|
242
293
|
});
|
|
@@ -263,7 +314,6 @@ class DeviceAgentCloudConnection {
|
|
|
263
314
|
this.device.on('message', async (topic, payload) => {
|
|
264
315
|
try {
|
|
265
316
|
const jsonPacket = JSON.parse(payload);
|
|
266
|
-
logger_1.logger.debug(`Received message: ${JSON.stringify({ topic, jsonPacket }, null, 2)}`);
|
|
267
317
|
await this.handleMessage(topic, jsonPacket);
|
|
268
318
|
}
|
|
269
319
|
catch (error) {
|
|
@@ -281,18 +331,18 @@ class DeviceAgentCloudConnection {
|
|
|
281
331
|
exports.DeviceAgentCloudConnection = DeviceAgentCloudConnection;
|
|
282
332
|
async function runDeviceAgentCloudInterface() {
|
|
283
333
|
// FIXME: Check for KeyPath as well
|
|
284
|
-
if ((0, fs_1.existsSync)(
|
|
334
|
+
if ((0, fs_1.existsSync)(directories_1.DEVICE_CERTIFICATE_FILE_PATH)) {
|
|
285
335
|
const deviceAgent = new DeviceAgentCloudConnection();
|
|
286
336
|
await deviceAgent.setupHandlers();
|
|
287
337
|
if (environment_1.ALWAYSAI_ANALYTICS_PASSTHROUGH === true) {
|
|
288
338
|
const publisher = deviceAgent.publisher;
|
|
289
339
|
const passthroughHandler = new passthrough_handler_1.PassthroughHandler(publisher);
|
|
290
340
|
await passthroughHandler.setup();
|
|
291
|
-
(0, passthrough_handler_1.runChannel)(passthroughHandler);
|
|
341
|
+
await (0, passthrough_handler_1.runChannel)(passthroughHandler);
|
|
292
342
|
}
|
|
293
343
|
}
|
|
294
|
-
else if ((0, fs_1.existsSync)((0, directories_1.
|
|
295
|
-
(0, bootstrap_provision_1.bootstrapProvision)();
|
|
344
|
+
else if ((0, fs_1.existsSync)((0, directories_1.BOOTSTRAP_PRIVATE_KEY_FILE_PATH)())) {
|
|
345
|
+
await (0, bootstrap_provision_1.bootstrapProvision)();
|
|
296
346
|
}
|
|
297
347
|
else if ((0, fs_1.existsSync)((0, directories_1.BOOTSTRAP_CERTIFICATES_DIR_PATH)())) {
|
|
298
348
|
throw new Error("Device has not been created using 'aai-agent device init' or there has been an issue with device initialization");
|