@alwaysai/device-agent 1.3.0-1 → 1.3.1-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.
Files changed (115) hide show
  1. package/lib/application-control/environment-variables.d.ts +1 -0
  2. package/lib/application-control/environment-variables.d.ts.map +1 -1
  3. package/lib/application-control/environment-variables.js +22 -20
  4. package/lib/application-control/environment-variables.js.map +1 -1
  5. package/lib/application-control/environment-variables.test.js +37 -2
  6. package/lib/application-control/environment-variables.test.js.map +1 -1
  7. package/lib/application-control/install.js +1 -1
  8. package/lib/application-control/install.js.map +1 -1
  9. package/lib/cloud-connection/device-agent-cloud-connection.d.ts +4 -3
  10. package/lib/cloud-connection/device-agent-cloud-connection.d.ts.map +1 -1
  11. package/lib/cloud-connection/device-agent-cloud-connection.js +149 -113
  12. package/lib/cloud-connection/device-agent-cloud-connection.js.map +1 -1
  13. package/lib/cloud-connection/live-updates-handler.d.ts.map +1 -1
  14. package/lib/cloud-connection/live-updates-handler.js +30 -25
  15. package/lib/cloud-connection/live-updates-handler.js.map +1 -1
  16. package/lib/cloud-connection/live-updates-handler.test.js +15 -0
  17. package/lib/cloud-connection/live-updates-handler.test.js.map +1 -1
  18. package/lib/cloud-connection/messages.d.ts +1 -3
  19. package/lib/cloud-connection/messages.d.ts.map +1 -1
  20. package/lib/cloud-connection/messages.js +1 -9
  21. package/lib/cloud-connection/messages.js.map +1 -1
  22. package/lib/cloud-connection/publisher.d.ts +1 -0
  23. package/lib/cloud-connection/publisher.d.ts.map +1 -1
  24. package/lib/cloud-connection/publisher.js +3 -0
  25. package/lib/cloud-connection/publisher.js.map +1 -1
  26. package/lib/cloud-connection/shadow-handler.d.ts +12 -0
  27. package/lib/cloud-connection/shadow-handler.d.ts.map +1 -1
  28. package/lib/cloud-connection/shadow-handler.js +36 -22
  29. package/lib/cloud-connection/shadow-handler.js.map +1 -1
  30. package/lib/cloud-connection/shadow-handler.test.js +84 -40
  31. package/lib/cloud-connection/shadow-handler.test.js.map +1 -1
  32. package/lib/cloud-connection/transaction-manager.d.ts +25 -9
  33. package/lib/cloud-connection/transaction-manager.d.ts.map +1 -1
  34. package/lib/cloud-connection/transaction-manager.js +97 -28
  35. package/lib/cloud-connection/transaction-manager.js.map +1 -1
  36. package/lib/cloud-connection/transaction-manager.test.js +169 -22
  37. package/lib/cloud-connection/transaction-manager.test.js.map +1 -1
  38. package/lib/secure-tunneling/secure-tunneling.d.ts +105 -0
  39. package/lib/secure-tunneling/secure-tunneling.d.ts.map +1 -0
  40. package/lib/secure-tunneling/secure-tunneling.js +435 -0
  41. package/lib/secure-tunneling/secure-tunneling.js.map +1 -0
  42. package/lib/secure-tunneling/secure-tunneling.test.d.ts +2 -0
  43. package/lib/secure-tunneling/secure-tunneling.test.d.ts.map +1 -0
  44. package/lib/secure-tunneling/secure-tunneling.test.js +1070 -0
  45. package/lib/secure-tunneling/secure-tunneling.test.js.map +1 -0
  46. package/lib/secure-tunneling/spawner-detached.d.ts +6 -0
  47. package/lib/secure-tunneling/spawner-detached.d.ts.map +1 -0
  48. package/lib/secure-tunneling/spawner-detached.js +90 -0
  49. package/lib/secure-tunneling/spawner-detached.js.map +1 -0
  50. package/lib/subcommands/app/analytics.d.ts +10 -0
  51. package/lib/subcommands/app/analytics.d.ts.map +1 -0
  52. package/lib/subcommands/app/analytics.js +83 -0
  53. package/lib/subcommands/app/analytics.js.map +1 -0
  54. package/lib/subcommands/app/index.d.ts.map +1 -1
  55. package/lib/subcommands/app/index.js +3 -1
  56. package/lib/subcommands/app/index.js.map +1 -1
  57. package/lib/subcommands/app/models.d.ts +0 -5
  58. package/lib/subcommands/app/models.d.ts.map +1 -1
  59. package/lib/subcommands/app/models.js +11 -47
  60. package/lib/subcommands/app/models.js.map +1 -1
  61. package/lib/subcommands/app/status.d.ts +1 -0
  62. package/lib/subcommands/app/status.d.ts.map +1 -1
  63. package/lib/subcommands/app/status.js +14 -3
  64. package/lib/subcommands/app/status.js.map +1 -1
  65. package/lib/subcommands/app/version.d.ts +2 -1
  66. package/lib/subcommands/app/version.d.ts.map +1 -1
  67. package/lib/subcommands/app/version.js +16 -3
  68. package/lib/subcommands/app/version.js.map +1 -1
  69. package/lib/util/cloud-mode-ready.d.ts +1 -0
  70. package/lib/util/cloud-mode-ready.d.ts.map +1 -1
  71. package/lib/util/cloud-mode-ready.js +36 -1
  72. package/lib/util/cloud-mode-ready.js.map +1 -1
  73. package/lib/util/parsing.d.ts +2 -0
  74. package/lib/util/parsing.d.ts.map +1 -0
  75. package/lib/util/parsing.js +17 -0
  76. package/lib/util/parsing.js.map +1 -0
  77. package/package.json +4 -6
  78. package/readme.md +146 -92
  79. package/src/application-control/environment-variables.test.ts +43 -3
  80. package/src/application-control/environment-variables.ts +29 -19
  81. package/src/application-control/install.ts +1 -1
  82. package/src/cloud-connection/device-agent-cloud-connection.ts +216 -172
  83. package/src/cloud-connection/live-updates-handler.test.ts +20 -0
  84. package/src/cloud-connection/live-updates-handler.ts +45 -52
  85. package/src/cloud-connection/messages.ts +1 -14
  86. package/src/cloud-connection/publisher.ts +4 -0
  87. package/src/cloud-connection/shadow-handler.test.ts +93 -41
  88. package/src/cloud-connection/shadow-handler.ts +57 -21
  89. package/src/cloud-connection/transaction-manager.test.ts +183 -27
  90. package/src/cloud-connection/transaction-manager.ts +167 -36
  91. package/src/secure-tunneling/secure-tunneling.test.ts +1239 -0
  92. package/src/secure-tunneling/secure-tunneling.ts +606 -0
  93. package/src/secure-tunneling/spawner-detached.ts +107 -0
  94. package/src/subcommands/app/analytics.ts +99 -0
  95. package/src/subcommands/app/index.ts +4 -3
  96. package/src/subcommands/app/models.ts +13 -49
  97. package/src/subcommands/app/status.ts +20 -3
  98. package/src/subcommands/app/version.ts +19 -4
  99. package/src/util/cloud-mode-ready.ts +36 -0
  100. package/src/util/parsing.ts +11 -0
  101. package/lib/cloud-connection/cmd-status.d.ts +0 -8
  102. package/lib/cloud-connection/cmd-status.d.ts.map +0 -1
  103. package/lib/cloud-connection/cmd-status.js +0 -62
  104. package/lib/cloud-connection/cmd-status.js.map +0 -1
  105. package/lib/cloud-connection/message-builder.d.ts +0 -7
  106. package/lib/cloud-connection/message-builder.d.ts.map +0 -1
  107. package/lib/cloud-connection/message-builder.js +0 -63
  108. package/lib/cloud-connection/message-builder.js.map +0 -1
  109. package/lib/secure-tunneling/index.d.ts +0 -5
  110. package/lib/secure-tunneling/index.d.ts.map +0 -1
  111. package/lib/secure-tunneling/index.js +0 -64
  112. package/lib/secure-tunneling/index.js.map +0 -1
  113. package/src/cloud-connection/cmd-status.ts +0 -71
  114. package/src/cloud-connection/message-builder.ts +0 -117
  115. package/src/secure-tunneling/index.ts +0 -74
@@ -3,29 +3,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.runDeviceAgentCloudInterface = exports.DeviceAgentCloudConnection = void 0;
4
4
  // eslint-disable-next-line
5
5
  const awsIot = require('aws-iot-device-sdk');
6
- const urls_1 = require("../infrastructure/urls");
6
+ const device_agent_schemas_1 = require("@alwaysai/device-agent-schemas");
7
7
  const fs_1 = require("fs");
8
+ const application_control_1 = require("../application-control");
9
+ const backup_1 = require("../application-control/backup");
10
+ const device_control_1 = require("../device-control/device-control");
11
+ const environment_1 = require("../environment");
12
+ const agent_config_1 = require("../infrastructure/agent-config");
13
+ const urls_1 = require("../infrastructure/urls");
14
+ const secure_tunneling_1 = require("../secure-tunneling/secure-tunneling");
15
+ const cloud_mode_ready_1 = require("../util/cloud-mode-ready");
8
16
  const directories_1 = require("../util/directories");
9
- const device_agent_schemas_1 = require("@alwaysai/device-agent-schemas");
10
17
  const get_device_id_1 = require("../util/get-device-id");
11
18
  const logger_1 = require("../util/logger");
12
- const cloud_mode_ready_1 = require("../util/cloud-mode-ready");
13
- const agent_config_1 = require("../infrastructure/agent-config");
14
- const application_control_1 = require("../application-control");
15
- const shadow_handler_1 = require("./shadow-handler");
16
- const index_1 = require("../secure-tunneling/index");
17
- const publisher_1 = require("./publisher");
18
- const live_updates_handler_1 = require("./live-updates-handler");
19
+ const sleep_1 = require("../util/sleep");
19
20
  const bootstrap_provision_1 = require("./bootstrap-provision");
20
- const cmd_status_1 = require("./cmd-status");
21
+ const live_updates_handler_1 = require("./live-updates-handler");
21
22
  const passthrough_handler_1 = require("./passthrough-handler");
22
- const environment_1 = require("../environment");
23
- const messages_1 = require("./messages");
24
- const sleep_1 = require("../util/sleep");
25
- const backup_1 = require("../application-control/backup");
23
+ const publisher_1 = require("./publisher");
24
+ const shadow_handler_1 = require("./shadow-handler");
26
25
  const transaction_manager_1 = require("./transaction-manager");
27
- const message_builder_1 = require("./message-builder");
28
- const device_control_1 = require("../device-control/device-control");
26
+ const child_process_1 = require("child_process");
27
+ const util_1 = require("util");
28
+ const exec_promise = (0, util_1.promisify)(child_process_1.exec);
29
29
  class DeviceAgentCloudConnection {
30
30
  /*=================================================================
31
31
  Public interface
@@ -34,8 +34,10 @@ class DeviceAgentCloudConnection {
34
34
  this.device = awsIot.device;
35
35
  this.clientId = (0, get_device_id_1.getDeviceUuid)();
36
36
  this.host = (0, urls_1.getIoTCoreEndpointUrl)();
37
+ this.port = 8883;
37
38
  this.toDeviceTopic = (0, device_agent_schemas_1.getToDeviceTopic)(this.clientId);
38
39
  this.secureTunnelNotifyTopic = `$aws/things/${this.clientId}/tunnels/notify`;
40
+ this.secureTunnelHandler = secure_tunneling_1.SecureTunnelHandlerSingleton.getInstance();
39
41
  // FIXME: Add support for multiple simultaneous project updates
40
42
  this.appCfgUpdateQueue = [];
41
43
  this.handleAppStateControl = async (payload) => {
@@ -63,7 +65,7 @@ class DeviceAgentCloudConnection {
63
65
  appReleaseHash
64
66
  }
65
67
  };
66
- const message = await (0, message_builder_1.buildSignedUrlsRequestMessage)(signedUrlsRequestPayload, txId);
68
+ const message = (0, device_agent_schemas_1.buildSignedUrlsRequestMessage)(this.clientId, signedUrlsRequestPayload, txId);
67
69
  await this.publishCloudRequest(message);
68
70
  return false;
69
71
  }
@@ -121,7 +123,7 @@ class DeviceAgentCloudConnection {
121
123
  models: updatedModels
122
124
  }
123
125
  };
124
- const message = await (0, message_builder_1.buildSignedUrlsRequestMessage)(modelsOnlyUrlsRequestPayload, txId);
126
+ const message = (0, device_agent_schemas_1.buildSignedUrlsRequestMessage)(this.clientId, modelsOnlyUrlsRequestPayload, txId);
125
127
  this.publisher.publishToCloud(message);
126
128
  this.appCfgUpdateQueue.push(update);
127
129
  return false;
@@ -145,14 +147,13 @@ class DeviceAgentCloudConnection {
145
147
  caPath: directories_1.AWS_ROOT_CERTIFICATE_FILE_PATH,
146
148
  clientId: this.clientId,
147
149
  host: this.host,
148
- port: 8883,
150
+ port: this.port,
149
151
  keepalive: 1 // time before re-connect attempt on dropped connection, default is 400 seconds
150
152
  });
151
153
  this.publisher = new publisher_1.Publisher(this.device, this.clientId);
152
154
  this.shadowHandler = new shadow_handler_1.ShadowHandler(this.clientId, this.publisher);
153
- this.cmdStatusMgr = new cmd_status_1.CmdStatusManager();
154
155
  this.liveUpdatesHandler = new live_updates_handler_1.LiveUpdatesHandler(this.publisher, this.clientId);
155
- this.txnMgr = new transaction_manager_1.TransactionManager();
156
+ this.txnMgr = new transaction_manager_1.TransactionManager(this.publisher, this.liveUpdatesHandler);
156
157
  this.subscribe(this.toDeviceTopic);
157
158
  this.subscribe(this.secureTunnelNotifyTopic);
158
159
  this.subscribe(this.shadowHandler.shadowTopics.projects.getAccepted);
@@ -160,6 +161,8 @@ class DeviceAgentCloudConnection {
160
161
  this.subscribe(this.shadowHandler.shadowTopics.projects.updateDelta);
161
162
  this.subscribe(this.shadowHandler.shadowTopics.projects.updateAccepted);
162
163
  this.subscribe(this.shadowHandler.shadowTopics.projects.updateRejected);
164
+ this.subscribe(this.shadowHandler.shadowTopics.secureTunnel.updateDelta);
165
+ this.subscribe(this.shadowHandler.shadowTopics.secureTunnel.deleteAccepted);
163
166
  }
164
167
  async handleDeviceAction(payload) {
165
168
  const { system_restart } = device_agent_schemas_1.keyMirrors.deviceAction;
@@ -228,42 +231,6 @@ class DeviceAgentCloudConnection {
228
231
  throw new Error(`Application update failed, rolled the application back: ${errorAppUpdate}`);
229
232
  }
230
233
  }
231
- // eslint-disable-next-line
232
- async atomicCmd(props) {
233
- const { func, args, projectId, txId } = props;
234
- try {
235
- await this.cmdStatusMgr.start(projectId);
236
- await this.liveUpdatesHandler.enableTransactionStatus({
237
- txId
238
- });
239
- const completed = await func(...args);
240
- if (completed) {
241
- await this.cmdStatusMgr.stop(projectId);
242
- await this.liveUpdatesHandler.disableTransactionStatus({
243
- txId
244
- });
245
- const successStatusResponsePayload = await (0, messages_1.getStatusResponsePayload)(device_agent_schemas_1.keyMirrors.statusResponse.success, '');
246
- // Send final status message
247
- const message = await (0, message_builder_1.buildStatusResponseMessage)(successStatusResponsePayload, txId);
248
- this.publisher.publishToClient(message);
249
- }
250
- return completed;
251
- }
252
- catch (e) {
253
- logger_1.logger.error(`Failed to execute cmd for ${projectId}:\n${e.message}\n${e.stack}`);
254
- const message = e.message;
255
- // uninstall the failed app to put system back in good state
256
- await this.cmdStatusMgr.stop(projectId);
257
- await this.liveUpdatesHandler.disableTransactionStatus({
258
- txId
259
- });
260
- const failureStatusResponsePayload = await (0, messages_1.getStatusResponsePayload)(device_agent_schemas_1.keyMirrors.statusResponse.failure, message);
261
- // Send final status message
262
- const failureStatusResponseMessage = await (0, message_builder_1.buildStatusResponseMessage)(failureStatusResponsePayload, txId);
263
- this.publisher.publishToClient(failureStatusResponseMessage);
264
- return true;
265
- }
266
- }
267
234
  getClientId() {
268
235
  return this.clientId;
269
236
  }
@@ -274,7 +241,7 @@ class DeviceAgentCloudConnection {
274
241
  return this.shadowHandler.shadowTopics;
275
242
  }
276
243
  isCmdInProgress(projectId) {
277
- return this.cmdStatusMgr.isCmdInProgress(projectId);
244
+ return this.txnMgr.isOngoingTransactionForProjectID(projectId);
278
245
  }
279
246
  async updateProjectShadow(projectId) {
280
247
  await this.shadowHandler.updateProjectShadow(projectId);
@@ -287,76 +254,66 @@ class DeviceAgentCloudConnection {
287
254
  return;
288
255
  }
289
256
  const txId = message.txId;
257
+ const { app_state_control, app_version_control, live_state_updates, app_install_response, models_install_response, status_response, device_action } = device_agent_schemas_1.keyMirrors.toDeviceAgentMessageType;
290
258
  switch (message.messageType) {
291
- case device_agent_schemas_1.keyMirrors.toDeviceAgentMessageType.app_state_control: {
259
+ case app_state_control: {
292
260
  // txId sent from cloud, just need to continue it
293
261
  const payload = message.payload;
294
262
  const projectId = payload.projectId;
295
263
  try {
296
- this.txnMgr.addTransaction(txId, projectId, payload.baseCommand);
297
- const completed = await this.atomicCmd({
298
- func: this.handleAppStateControl,
299
- args: [message.payload],
264
+ await this.txnMgr.runTransactionStep({
265
+ func: () => this.handleAppStateControl(message.payload),
300
266
  projectId,
301
- txId
267
+ txId,
268
+ start: true,
269
+ stepName: payload.baseCommand
302
270
  });
303
- if (completed) {
304
- this.txnMgr.completeTransaction(txId);
305
- }
306
271
  }
307
272
  catch (e) {
308
273
  logger_1.logger.error(`Error processing application state control request: ${e}!`);
309
274
  }
310
275
  break;
311
276
  }
312
- case device_agent_schemas_1.keyMirrors.toDeviceAgentMessageType.app_version_control: {
277
+ case app_version_control: {
313
278
  // txId sent from cloud, just need to continue it
314
279
  const payload = message.payload;
315
280
  const projectId = payload.projectId;
316
- const appReleaseHash = payload.baseCommand === device_agent_schemas_1.keyMirrors.appVersionControl.install
317
- ? payload.appReleaseHash
318
- : undefined;
319
281
  try {
320
- this.txnMgr.addTransaction(txId, projectId, payload.baseCommand);
321
- const completed = await this.atomicCmd({
322
- func: this.handleAppVersionControl,
323
- args: [payload, txId],
282
+ await this.txnMgr.runTransactionStep({
283
+ func: () => this.handleAppVersionControl(payload, txId),
324
284
  projectId,
325
- txId
285
+ txId,
286
+ start: true,
287
+ stepName: payload.baseCommand
326
288
  });
327
- if (completed) {
328
- this.txnMgr.completeTransaction(txId);
329
- }
330
289
  }
331
290
  catch (e) {
332
291
  logger_1.logger.error(`Error processing application install request: ${e}!`);
333
292
  }
334
293
  break;
335
294
  }
336
- case device_agent_schemas_1.keyMirrors.toDeviceAgentMessageType.live_state_updates: {
295
+ case live_state_updates: {
337
296
  const payload = message.payload;
338
297
  // TODO: Send response?
339
- await this.liveUpdatesHandler.handleToggles(payload, txId);
298
+ void this.liveUpdatesHandler.handleToggles(payload, txId);
340
299
  break;
341
300
  }
342
- case device_agent_schemas_1.keyMirrors.toDeviceAgentMessageType.app_install_response: {
301
+ case app_install_response: {
343
302
  const payload = message.payload;
344
- const { projectId, appReleaseHash } = payload.appInstallResponse;
303
+ const { projectId } = payload.appInstallResponse;
345
304
  if (txId !== this.txnMgr.getTransactionFromProject(projectId)) {
346
305
  throw new Error(`App install response received a message for a transaction ID ${txId} that is not currently underway (${this.txnMgr.getTransactionFromProject(projectId)})!`);
347
306
  }
348
- const completed = await this.atomicCmd({
349
- func: this.handleAppInstallCloudResponsePayload,
350
- args: [payload],
307
+ await this.txnMgr.runTransactionStep({
308
+ func: () => this.handleAppInstallCloudResponsePayload(payload),
351
309
  projectId,
352
- txId
310
+ txId,
311
+ start: false,
312
+ stepName: message.messageType
353
313
  });
354
- if (completed) {
355
- this.txnMgr.completeTransaction(txId);
356
- }
357
314
  break;
358
315
  }
359
- case device_agent_schemas_1.keyMirrors.toDeviceAgentMessageType.models_install_response: {
316
+ case models_install_response: {
360
317
  // This message doesn't have appReleaseHash in it's payload, but
361
318
  // atomicCmd should be able to read it from the installed app
362
319
  const payload = message.payload;
@@ -364,28 +321,50 @@ class DeviceAgentCloudConnection {
364
321
  if (txId !== this.txnMgr.getTransactionFromProject(projectId)) {
365
322
  throw new Error(`Model install response received a message for a transaction ID ${txId} that is not currently underway (${this.txnMgr.getTransactionFromProject(projectId)})!`);
366
323
  }
367
- const completed = await this.atomicCmd({
368
- func: this.handleModelsInstallCloudResponsePayload,
369
- args: [payload],
324
+ await this.txnMgr.runTransactionStep({
325
+ func: () => this.handleModelsInstallCloudResponsePayload(payload),
370
326
  projectId,
371
- txId
327
+ txId,
328
+ start: false,
329
+ stepName: message.messageType
372
330
  });
373
- if (completed) {
331
+ break;
332
+ }
333
+ case status_response: {
334
+ const { failure } = device_agent_schemas_1.keyMirrors.statusResponse;
335
+ if (message.payload.status === failure) {
374
336
  this.txnMgr.completeTransaction(txId);
337
+ const failureStatusResponsePayload = {
338
+ status: device_agent_schemas_1.keyMirrors.statusResponse.failure,
339
+ message: message.payload.message
340
+ };
341
+ // Send final status message
342
+ const failureStatusResponseMessage = (0, device_agent_schemas_1.buildToClientStatusResponseMessage)(this.clientId, failureStatusResponsePayload, txId);
343
+ this.publisher.publishToClient(failureStatusResponseMessage);
375
344
  }
376
345
  break;
377
346
  }
378
- case device_agent_schemas_1.keyMirrors.toDeviceAgentMessageType.device_action: {
347
+ case device_action: {
379
348
  try {
380
- const successStatusResponsePayload = await (0, messages_1.getStatusResponsePayload)(device_agent_schemas_1.keyMirrors.statusResponse.success, '');
381
- const successStatusResponseMessage = await (0, message_builder_1.buildStatusResponseMessage)(successStatusResponsePayload, txId);
382
- this.publisher.publishToClient(successStatusResponseMessage);
349
+ const statusResponsePayload = {
350
+ status: device_agent_schemas_1.keyMirrors.statusResponse.in_progress
351
+ };
352
+ const statusResponseMessage = (0, device_agent_schemas_1.buildToClientStatusResponseMessage)(this.clientId, statusResponsePayload, txId);
353
+ this.publisher.publishToClient(statusResponseMessage);
383
354
  await this.handleDeviceAction(message.payload);
355
+ const successStatusResponsePayload = {
356
+ status: device_agent_schemas_1.keyMirrors.statusResponse.success
357
+ };
358
+ const successStatusResponseMessage = (0, device_agent_schemas_1.buildToClientStatusResponseMessage)(this.clientId, successStatusResponsePayload, txId);
359
+ this.publisher.publishToClient(successStatusResponseMessage);
384
360
  }
385
361
  catch (e) {
386
362
  logger_1.logger.error(`There was a problem performing device action '${message.payload.action}': ${e.message}`);
387
- const failureStatusResponsePayload = await (0, messages_1.getStatusResponsePayload)(device_agent_schemas_1.keyMirrors.statusResponse.failure, e.message);
388
- const failureStatusResponseMessage = await (0, message_builder_1.buildStatusResponseMessage)(failureStatusResponsePayload, txId);
363
+ const failureStatusResponsePayload = {
364
+ status: device_agent_schemas_1.keyMirrors.statusResponse.failure,
365
+ message: e.message
366
+ };
367
+ const failureStatusResponseMessage = (0, device_agent_schemas_1.buildToClientStatusResponseMessage)(this.clientId, failureStatusResponsePayload, txId);
389
368
  this.publisher.publishToClient(failureStatusResponseMessage);
390
369
  }
391
370
  break;
@@ -398,7 +377,7 @@ class DeviceAgentCloudConnection {
398
377
  logger_1.logger.debug(`Received message: ${JSON.stringify({ topic, message }, null, 2)}`);
399
378
  switch (topic) {
400
379
  case this.shadowHandler.shadowTopics.projects.getAccepted:
401
- case this.shadowHandler.shadowTopics.projects.updateDelta: {
380
+ case this.shadowHandler.shadowTopics.projects.updateAccepted: {
402
381
  const shadowUpdates = await this.shadowHandler.handleShadowTopic({
403
382
  topic,
404
383
  payload: message.state,
@@ -409,16 +388,13 @@ class DeviceAgentCloudConnection {
409
388
  const projectId = shadowUpdate.projectId;
410
389
  const txId = shadowUpdate.txId;
411
390
  try {
412
- this.txnMgr.addTransaction(txId, projectId, topic);
413
- const completed = await this.atomicCmd({
414
- func: this.handleAppConfigUpdate,
415
- args: [shadowUpdate, txId],
391
+ await this.txnMgr.runTransactionStep({
392
+ func: () => this.handleAppConfigUpdate(shadowUpdate, txId),
416
393
  projectId,
417
- txId
394
+ txId,
395
+ start: true,
396
+ stepName: topic
418
397
  });
419
- if (completed) {
420
- this.txnMgr.completeTransaction(txId);
421
- }
422
398
  }
423
399
  catch (e) {
424
400
  logger_1.logger.error(`Error handling shadow message: ${e.message}`);
@@ -428,7 +404,7 @@ class DeviceAgentCloudConnection {
428
404
  break;
429
405
  }
430
406
  case this.shadowHandler.shadowTopics.projects.getRejected:
431
- case this.shadowHandler.shadowTopics.projects.updateAccepted:
407
+ case this.shadowHandler.shadowTopics.projects.updateDelta:
432
408
  case this.shadowHandler.shadowTopics.projects.updateRejected:
433
409
  // Not handling these for now
434
410
  break;
@@ -439,8 +415,19 @@ class DeviceAgentCloudConnection {
439
415
  });
440
416
  break;
441
417
  case this.secureTunnelNotifyTopic:
442
- await (0, index_1.secureTunnelNotifyHandler)(message);
418
+ await this.secureTunnelHandler.secureTunnelNotifyHandler(message);
419
+ break;
420
+ case this.shadowHandler.shadowTopics.secureTunnel.updateDelta: {
421
+ logger_1.logger.info(`Received secure tunnel update: ${message}`);
422
+ const reported = await this.secureTunnelHandler.syncShadowToDeviceState(message);
423
+ this.publisher.publish(this.shadowHandler.shadowTopics.secureTunnel.update, JSON.stringify({ state: { reported } }));
424
+ break;
425
+ }
426
+ case this.shadowHandler.shadowTopics.secureTunnel.deleteAccepted: {
427
+ logger_1.logger.info(`Received secure tunnel deleteAccepted: ${message}`);
428
+ await this.secureTunnelHandler.destroy();
443
429
  break;
430
+ }
444
431
  default:
445
432
  logger_1.logger.error(`Unexpected topic, ignoring! ${topic}`);
446
433
  }
@@ -474,8 +461,57 @@ class DeviceAgentCloudConnection {
474
461
  });
475
462
  this.device.on('offline', () => {
476
463
  logger_1.logger.warn(`Device Agent is offline ${new Date().toLocaleString()}`);
464
+ void this.logConnectionInfo();
477
465
  });
478
466
  }
467
+ async logConnectionInfo() {
468
+ try {
469
+ /**
470
+ * We're using the 'netcat' or 'nc' command to test the connection to the IoT Core endpoint.
471
+ * This command doesn't always exit (see below), so
472
+ * we use timeout to break out of the prompt
473
+ * and catch the resulting error/parse the resulting stderr
474
+ *
475
+ * Sample command for current host and port:
476
+ * nc -zv -w 1 a3tzi5g7sq5zsj-ats.iot.us-west-2.amazonaws.com 8883
477
+ *
478
+ * Sample output when port is not blocked and host is reachable:
479
+ * $ nc -zv -w 1 a3tzi5g7sq5zsj-ats.iot.us-west-2.amazonaws.com 443
480
+ * Connection to a3tzi5g7sq5zsj-ats.iot.us-west-2.amazonaws.com 443 port [tcp/https] succeeded!
481
+ *
482
+ *
483
+ * Sample output when port is blocked (will repeatedly try until ctrl-C out):
484
+ * $ nc -zv -w 1 a3tzi5g7sq5zsj-ats.iot.us-west-2.amazonaws.com 8883
485
+ * nc: connect to a3tzi5g7sq5zsj-ats.iot.us-west-2.amazonaws.com port 8883 (tcp) timed out: Operation now in progress
486
+ * nc: connect to a3tzi5g7sq5zsj-ats.iot.us-west-2.amazonaws.com port 8883 (tcp) timed out: Operation now in progress
487
+ * nc: connect to a3tzi5g7sq5zsj-ats.iot.us-west-2.amazonaws.com port 8883 (tcp) timed out: Operation now in progress
488
+ * ^C
489
+ *
490
+ *
491
+ * Sample command/output when the port isn't enable on that host:
492
+ * $ nc -zv -w 1 localhost 8883
493
+ * nc: connect to localhost port 8883 (tcp) failed: Connection refused
494
+ */
495
+ await exec_promise(`nc -zv -w 1 ${this.host} ${this.port}`, {
496
+ timeout: 2000
497
+ });
498
+ }
499
+ catch (err) {
500
+ const output = JSON.stringify(err['stderr']);
501
+ if (output.indexOf('not known') !== -1) {
502
+ logger_1.logger.warn('Iot Core endpoint appears to be unreachable, internet connection may be unstable or the host may be down.');
503
+ }
504
+ else if (output.indexOf('timed out') !== -1) {
505
+ 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.`);
506
+ }
507
+ else if (output.indexOf('refused') !== -1) {
508
+ logger_1.logger.warn(`The connection was refused, likely ${this.host} is not running a service on ${this.port}.`);
509
+ }
510
+ else {
511
+ logger_1.logger.warn(`Output from checking connection to ${this.host} on ${this.port}: ${output}`);
512
+ }
513
+ }
514
+ }
479
515
  async stop() {
480
516
  // FIXME: This method is currently only used by the CLI, and shadow messages
481
517
  // can be lost since we aren't waiting for responses so sleep for a short
@@ -1 +1 @@
1
- {"version":3,"file":"device-agent-cloud-connection.js","sourceRoot":"","sources":["../../src/cloud-connection/device-agent-cloud-connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device-agent-cloud-connection.js","sourceRoot":"","sources":["../../src/cloud-connection/device-agent-cloud-connection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"live-updates-handler.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/live-updates-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,6BAA6B,EAE9B,MAAM,gCAAgC,CAAC;AAIxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAmBxC,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,kBAAkB,CAAgC;IAC1D,OAAO,CAAC,gBAAgB,CAKtB;IACF,OAAO,CAAC,yBAAyB,CAK/B;IAEF,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,mBAAmB,CAAqB;YAElC,iBAAiB;IAmC/B,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,yBAAyB;YAWnB,0BAA0B;gBAoC5B,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM;IAQ3C,yBAAyB;IAIzB,sBAAsB;IAItB,qBAAqB;IAIf,uBAAuB,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAgB/C,wBAAwB,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAShD,aAAa,CACxB,OAAO,EAAE,6BAA6B,EACtC,IAAI,EAAE,MAAM;CA6Cf"}
1
+ {"version":3,"file":"live-updates-handler.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/live-updates-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,6BAA6B,EAO9B,MAAM,gCAAgC,CAAC;AAIxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AASxC,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,kBAAkB,CAAgC;IAC1D,OAAO,CAAC,gBAAgB,CAKtB;IACF,OAAO,CAAC,yBAAyB,CAK/B;IAEF,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,mBAAmB,CAAqB;YAElC,iBAAiB;IAoC/B,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,yBAAyB;YAWnB,0BAA0B;gBAyB5B,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM;IAQ3C,yBAAyB;IAIzB,sBAAsB;IAItB,qBAAqB;IAIf,uBAAuB,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAuB/C,wBAAwB,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAShD,aAAa,CACxB,OAAO,EAAE,6BAA6B,EACtC,IAAI,EAAE,MAAM;CA+Cf"}
@@ -7,7 +7,6 @@ const logger_1 = require("../util/logger");
7
7
  const sleep_1 = require("../util/sleep");
8
8
  const messages_1 = require("./messages");
9
9
  const environment_1 = require("../environment");
10
- const message_builder_1 = require("./message-builder");
11
10
  const LIVE_UPDATES_TIMEOUT = environment_1.ALWAYSAI_LIVE_UPDATES_TIMEOUT_MS
12
11
  ? parseInt(environment_1.ALWAYSAI_LIVE_UPDATES_TIMEOUT_MS)
13
12
  : 60000;
@@ -34,7 +33,7 @@ class LiveUpdatesHandler {
34
33
  this.clientId = clientId;
35
34
  logger_1.logger.debug(`Toggle live updates timeout set to ${LIVE_UPDATES_TIMEOUT} ms`);
36
35
  }
37
- async startAppLogStream(projectId) {
36
+ async startAppLogStream(projectId, txId) {
38
37
  logger_1.logger.info(`Starting log stream for ${projectId}`);
39
38
  this.appLogStreams.add(projectId);
40
39
  const readable = await (0, application_control_1.getAppLogs)({
@@ -54,7 +53,7 @@ class LiveUpdatesHandler {
54
53
  projectId,
55
54
  logChunk: logStr
56
55
  };
57
- const message = await (0, message_builder_1.buildAppLogsMessage)(payload, this.clientId);
56
+ const message = (0, device_agent_schemas_1.buildAppLogsMessage)(this.clientId, payload, txId);
58
57
  this.publisher.publishToClient(message, logger_1.logger.silly);
59
58
  });
60
59
  readable.on('error', (error) => {
@@ -93,7 +92,7 @@ class LiveUpdatesHandler {
93
92
  this.liveUpdatesAlive.device_stats = toggles.deviceStats;
94
93
  }
95
94
  if (toggles.appState !== undefined) {
96
- this.liveUpdatesAlive.app_logs = toggles.appState;
95
+ this.liveUpdatesAlive.app_state = toggles.appState;
97
96
  }
98
97
  }
99
98
  restartLiveUpdatesTimeout() {
@@ -106,24 +105,19 @@ class LiveUpdatesHandler {
106
105
  this.appLogStreams.clear();
107
106
  }, LIVE_UPDATES_TIMEOUT);
108
107
  }
109
- async startPublishingLiveUpdates(messageType, payloadBuilderFunction, messageBuilderFunction, args, txId) {
108
+ async startPublishingLiveUpdates(messageType, getMessage, txId) {
110
109
  logger_1.logger.info(`Turned on live updates for ${messageType}`);
111
- // eslint-disable-next-line no-constant-condition
112
- while (true) {
113
- try {
114
- if (!this.continuePublishing(messageType, txId)) {
115
- logger_1.logger.info(`Turned off live updates for ${messageType}`);
116
- break;
117
- }
118
- const payload = await payloadBuilderFunction(...args);
119
- const message = await messageBuilderFunction(payload, txId);
110
+ try {
111
+ while (this.continuePublishing(messageType, txId)) {
112
+ const message = await getMessage();
120
113
  this.publisher.publishToClient(message, logger_1.logger.silly);
114
+ await (0, sleep_1.default)(this.getLiveUpdatesInterval(messageType));
121
115
  }
122
- catch (e) {
123
- logger_1.logger.error(`Error publishing live updates for ${messageType}: ${e.message}`);
124
- }
125
- await (0, sleep_1.default)(this.getLiveUpdatesInterval(messageType));
126
116
  }
117
+ catch (e) {
118
+ logger_1.logger.error(`Error publishing live updates for ${messageType}: ${e.message}`);
119
+ }
120
+ logger_1.logger.info(`Turned off live updates for ${messageType}`);
127
121
  }
128
122
  getDeviceStatsLiveUpdates() {
129
123
  return this.liveUpdatesAlive.device_stats;
@@ -140,7 +134,12 @@ class LiveUpdatesHandler {
140
134
  if (!this.transactionStatuses.has(txId)) {
141
135
  this.transactionStatuses.add(txId);
142
136
  // Don't wait for this call to finish since it loops until disabled
143
- void this.startPublishingLiveUpdates(device_agent_schemas_1.keyMirrors.toClientMessageType.status_response, messages_1.getStatusResponsePayload, message_builder_1.buildStatusResponseMessage, [device_agent_schemas_1.keyMirrors.statusResponse.in_progress, ''], txId);
137
+ void this.startPublishingLiveUpdates(device_agent_schemas_1.keyMirrors.toClientMessageType.status_response, async () => {
138
+ const payload = {
139
+ status: device_agent_schemas_1.keyMirrors.statusResponse.in_progress
140
+ };
141
+ return (0, device_agent_schemas_1.buildToClientStatusResponseMessage)(this.clientId, payload, txId);
142
+ }, txId);
144
143
  }
145
144
  }
146
145
  async disableTransactionStatus(props) {
@@ -153,27 +152,33 @@ class LiveUpdatesHandler {
153
152
  async handleToggles(toggles, txId) {
154
153
  const { deviceStats, appState, appLogs } = toggles;
155
154
  this.restartLiveUpdatesTimeout();
156
- const currentDeviceStats = this.getDeviceStatsLiveUpdates();
157
155
  if (deviceStats !== undefined) {
156
+ const currentDeviceStats = this.getDeviceStatsLiveUpdates();
158
157
  this.liveUpdatesAlive.device_stats = deviceStats;
159
158
  if (deviceStats && currentDeviceStats !== true) {
160
159
  // Don't wait for this call to finish since it loops until disabled
161
- void this.startPublishingLiveUpdates(device_agent_schemas_1.keyMirrors.toClientMessageType.device_stats, messages_1.getDeviceStatsPayload, message_builder_1.buildDeviceStatsMessage, [], txId);
160
+ void this.startPublishingLiveUpdates(device_agent_schemas_1.keyMirrors.toClientMessageType.device_stats, async () => {
161
+ const payload = await (0, messages_1.getDeviceStatsPayload)();
162
+ return (0, device_agent_schemas_1.buildDeviceStatsMessage)(this.clientId, payload, txId);
163
+ }, txId);
162
164
  }
163
165
  }
164
- const currentAppState = this.getAppStateLiveUpdates();
165
166
  if (appState !== undefined) {
167
+ const currentAppState = this.getAppStateLiveUpdates();
166
168
  this.liveUpdatesAlive.app_state = appState;
167
169
  if (appState && currentAppState !== true) {
168
170
  // Don't wait for this call to finish since it loops until disabled
169
- void this.startPublishingLiveUpdates(device_agent_schemas_1.keyMirrors.toClientMessageType.app_state, messages_1.getAppStatePayload, message_builder_1.buildAppStateMessage, [], txId);
171
+ void this.startPublishingLiveUpdates(device_agent_schemas_1.keyMirrors.toClientMessageType.app_state, async () => {
172
+ const payload = await (0, messages_1.getAppStatePayload)();
173
+ return (0, device_agent_schemas_1.buildAppStateMessage)(this.clientId, payload, txId);
174
+ }, txId);
170
175
  }
171
176
  }
172
- const currentAppLogs = this.getAppLogsLiveUpdates();
173
177
  if (appLogs !== undefined) {
178
+ const currentAppLogs = this.getAppLogsLiveUpdates();
174
179
  if (appLogs.toggle && currentAppLogs !== true) {
175
180
  // Don't wait for this call to finish since it loops until disabled
176
- void this.startAppLogStream(appLogs.projectId);
181
+ void this.startAppLogStream(appLogs.projectId, txId);
177
182
  }
178
183
  else {
179
184
  this.appLogStreams.delete(appLogs.projectId);