@alwaysai/device-agent 0.0.12 → 0.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/lib/application-control/backup.d.ts.map +1 -1
  2. package/lib/application-control/backup.js +11 -5
  3. package/lib/application-control/backup.js.map +1 -1
  4. package/lib/application-control/config.d.ts +12 -4
  5. package/lib/application-control/config.d.ts.map +1 -1
  6. package/lib/application-control/config.js +59 -16
  7. package/lib/application-control/config.js.map +1 -1
  8. package/lib/application-control/environment-variables.d.ts.map +1 -1
  9. package/lib/application-control/environment-variables.js.map +1 -1
  10. package/lib/application-control/index.d.ts +5 -5
  11. package/lib/application-control/index.d.ts.map +1 -1
  12. package/lib/application-control/index.js +4 -6
  13. package/lib/application-control/index.js.map +1 -1
  14. package/lib/application-control/install.d.ts +1 -1
  15. package/lib/application-control/install.d.ts.map +1 -1
  16. package/lib/application-control/install.js +58 -57
  17. package/lib/application-control/install.js.map +1 -1
  18. package/lib/application-control/models.d.ts +7 -5
  19. package/lib/application-control/models.d.ts.map +1 -1
  20. package/lib/application-control/models.js +78 -57
  21. package/lib/application-control/models.js.map +1 -1
  22. package/lib/application-control/status.d.ts +0 -6
  23. package/lib/application-control/status.d.ts.map +1 -1
  24. package/lib/application-control/status.js +21 -33
  25. package/lib/application-control/status.js.map +1 -1
  26. package/lib/application-control/utils.d.ts +3 -2
  27. package/lib/application-control/utils.d.ts.map +1 -1
  28. package/lib/application-control/utils.js +54 -34
  29. package/lib/application-control/utils.js.map +1 -1
  30. package/lib/cloud-connection/app-install-status.d.ts +16 -0
  31. package/lib/cloud-connection/app-install-status.d.ts.map +1 -0
  32. package/lib/cloud-connection/app-install-status.js +53 -0
  33. package/lib/cloud-connection/app-install-status.js.map +1 -0
  34. package/lib/cloud-connection/bootstrap-provision.d.ts +2 -0
  35. package/lib/cloud-connection/bootstrap-provision.d.ts.map +1 -0
  36. package/lib/cloud-connection/bootstrap-provision.js +34 -0
  37. package/lib/cloud-connection/bootstrap-provision.js.map +1 -0
  38. package/lib/cloud-connection/cmd-status.d.ts +16 -0
  39. package/lib/cloud-connection/cmd-status.d.ts.map +1 -0
  40. package/lib/cloud-connection/cmd-status.js +49 -0
  41. package/lib/cloud-connection/cmd-status.js.map +1 -0
  42. package/lib/cloud-connection/device-agent-cloud-connection.d.ts +21 -34
  43. package/lib/cloud-connection/device-agent-cloud-connection.d.ts.map +1 -1
  44. package/lib/cloud-connection/device-agent-cloud-connection.js +211 -387
  45. package/lib/cloud-connection/device-agent-cloud-connection.js.map +1 -1
  46. package/lib/cloud-connection/device-agent.d.ts.map +1 -1
  47. package/lib/cloud-connection/device-agent.js +22 -26
  48. package/lib/cloud-connection/device-agent.js.map +1 -1
  49. package/lib/cloud-connection/live-updates-handler.d.ts +34 -0
  50. package/lib/cloud-connection/live-updates-handler.d.ts.map +1 -0
  51. package/lib/cloud-connection/live-updates-handler.js +167 -0
  52. package/lib/cloud-connection/live-updates-handler.js.map +1 -0
  53. package/lib/cloud-connection/messages.d.ts +14 -0
  54. package/lib/cloud-connection/messages.d.ts.map +1 -0
  55. package/lib/cloud-connection/messages.js +38 -0
  56. package/lib/cloud-connection/messages.js.map +1 -0
  57. package/lib/cloud-connection/passthrough-handler.d.ts +11 -0
  58. package/lib/cloud-connection/passthrough-handler.d.ts.map +1 -0
  59. package/lib/cloud-connection/passthrough-handler.js +59 -0
  60. package/lib/cloud-connection/passthrough-handler.js.map +1 -0
  61. package/lib/cloud-connection/publisher.d.ts +15 -0
  62. package/lib/cloud-connection/publisher.d.ts.map +1 -0
  63. package/lib/cloud-connection/publisher.js +58 -0
  64. package/lib/cloud-connection/publisher.js.map +1 -0
  65. package/lib/cloud-connection/shadow-handler.d.ts +33 -0
  66. package/lib/cloud-connection/shadow-handler.d.ts.map +1 -0
  67. package/lib/cloud-connection/shadow-handler.js +108 -0
  68. package/lib/cloud-connection/shadow-handler.js.map +1 -0
  69. package/lib/cloud-connection/shadow-handler.test.d.ts +2 -0
  70. package/lib/cloud-connection/shadow-handler.test.d.ts.map +1 -0
  71. package/lib/cloud-connection/shadow-handler.test.js +321 -0
  72. package/lib/cloud-connection/shadow-handler.test.js.map +1 -0
  73. package/lib/cloud-connection/shadow.d.ts +16 -0
  74. package/lib/cloud-connection/shadow.d.ts.map +1 -0
  75. package/lib/cloud-connection/shadow.js +36 -0
  76. package/lib/cloud-connection/shadow.js.map +1 -0
  77. package/lib/device-control/device-control.d.ts.map +1 -1
  78. package/lib/device-control/device-control.js +1 -0
  79. package/lib/device-control/device-control.js.map +1 -1
  80. package/lib/docker/docker-cmd.js +1 -1
  81. package/lib/docker/docker-compose-cmd.d.ts.map +1 -1
  82. package/lib/docker/docker-compose-cmd.js +1 -1
  83. package/lib/docker/docker-compose-cmd.js.map +1 -1
  84. package/lib/endpoints.js +10 -10
  85. package/lib/endpoints.js.map +1 -1
  86. package/lib/environment.d.ts +1 -0
  87. package/lib/environment.d.ts.map +1 -1
  88. package/lib/environment.js +2 -1
  89. package/lib/environment.js.map +1 -1
  90. package/lib/infrastructure/agent-config.d.ts +15 -58
  91. package/lib/infrastructure/agent-config.d.ts.map +1 -1
  92. package/lib/infrastructure/agent-config.js +22 -15
  93. package/lib/infrastructure/agent-config.js.map +1 -1
  94. package/lib/infrastructure/agent-config.test.js +25 -23
  95. package/lib/infrastructure/agent-config.test.js.map +1 -1
  96. package/lib/infrastructure/system-id.d.ts +2 -0
  97. package/lib/infrastructure/system-id.d.ts.map +1 -0
  98. package/lib/infrastructure/system-id.js +21 -0
  99. package/lib/infrastructure/system-id.js.map +1 -0
  100. package/lib/infrastructure/tokens-and-device-cfg.d.ts +4 -0
  101. package/lib/infrastructure/tokens-and-device-cfg.d.ts.map +1 -0
  102. package/lib/infrastructure/tokens-and-device-cfg.js +27 -0
  103. package/lib/infrastructure/tokens-and-device-cfg.js.map +1 -0
  104. package/lib/infrastructure/urls.d.ts.map +1 -1
  105. package/lib/infrastructure/urls.js +3 -3
  106. package/lib/infrastructure/urls.js.map +1 -1
  107. package/lib/local-connection/rabbitmq-connection.d.ts +4 -0
  108. package/lib/local-connection/rabbitmq-connection.d.ts.map +1 -0
  109. package/lib/local-connection/rabbitmq-connection.js +58 -0
  110. package/lib/local-connection/rabbitmq-connection.js.map +1 -0
  111. package/lib/root.d.ts.map +1 -1
  112. package/lib/root.js +2 -7
  113. package/lib/root.js.map +1 -1
  114. package/lib/subcommands/app/app.d.ts +2 -1
  115. package/lib/subcommands/app/app.d.ts.map +1 -1
  116. package/lib/subcommands/app/app.js +112 -77
  117. package/lib/subcommands/app/app.js.map +1 -1
  118. package/lib/subcommands/app/index.js +2 -2
  119. package/lib/subcommands/device/clean.d.ts +2 -0
  120. package/lib/subcommands/device/clean.d.ts.map +1 -0
  121. package/lib/subcommands/device/clean.js +29 -0
  122. package/lib/subcommands/device/clean.js.map +1 -0
  123. package/lib/subcommands/device/device.d.ts +1 -1
  124. package/lib/subcommands/device/device.d.ts.map +1 -1
  125. package/lib/subcommands/device/device.js +44 -33
  126. package/lib/subcommands/device/device.js.map +1 -1
  127. package/lib/subcommands/device/index.d.ts.map +1 -1
  128. package/lib/subcommands/device/index.js +2 -1
  129. package/lib/subcommands/device/index.js.map +1 -1
  130. package/lib/subcommands/get-model-package.js +5 -5
  131. package/lib/subcommands/index.d.ts +0 -1
  132. package/lib/subcommands/index.d.ts.map +1 -1
  133. package/lib/subcommands/index.js +1 -1
  134. package/lib/subcommands/login.d.ts +0 -1
  135. package/lib/subcommands/login.d.ts.map +1 -1
  136. package/lib/subcommands/login.js +6 -14
  137. package/lib/subcommands/login.js.map +1 -1
  138. package/lib/util/clean-certs.d.ts +2 -0
  139. package/lib/util/clean-certs.d.ts.map +1 -0
  140. package/lib/util/clean-certs.js +16 -0
  141. package/lib/util/clean-certs.js.map +1 -0
  142. package/lib/util/directories.d.ts +16 -15
  143. package/lib/util/directories.d.ts.map +1 -1
  144. package/lib/util/directories.js +45 -26
  145. package/lib/util/directories.js.map +1 -1
  146. package/lib/util/fetch-with-timeout.d.ts +4 -0
  147. package/lib/util/fetch-with-timeout.d.ts.map +1 -0
  148. package/lib/util/fetch-with-timeout.js +15 -0
  149. package/lib/util/fetch-with-timeout.js.map +1 -0
  150. package/lib/util/get-device-id.d.ts +1 -1
  151. package/lib/util/get-device-id.d.ts.map +1 -1
  152. package/lib/util/get-device-id.js +14 -19
  153. package/lib/util/get-device-id.js.map +1 -1
  154. package/lib/util/http-client.d.ts +1 -1
  155. package/lib/util/http-client.d.ts.map +1 -1
  156. package/lib/util/http-client.js +10 -8
  157. package/lib/util/http-client.js.map +1 -1
  158. package/lib/util/logger.d.ts.map +1 -1
  159. package/lib/util/logger.js +4 -5
  160. package/lib/util/logger.js.map +1 -1
  161. package/lib/util/require-logged-in-and-paid-plan.d.ts +2 -0
  162. package/lib/util/require-logged-in-and-paid-plan.d.ts.map +1 -0
  163. package/lib/util/require-logged-in-and-paid-plan.js +18 -0
  164. package/lib/util/require-logged-in-and-paid-plan.js.map +1 -0
  165. package/lib/util/run-in-dir.d.ts.map +1 -1
  166. package/lib/util/run-in-dir.js +1 -0
  167. package/lib/util/run-in-dir.js.map +1 -1
  168. package/lib/util/timer.d.ts +2 -0
  169. package/lib/util/timer.d.ts.map +1 -0
  170. package/lib/util/timer.js +6 -0
  171. package/lib/util/timer.js.map +1 -0
  172. package/package.json +32 -35
  173. package/readme.md +100 -89
  174. package/src/application-control/backup.ts +11 -6
  175. package/src/application-control/config.ts +75 -13
  176. package/src/application-control/environment-variables.ts +3 -3
  177. package/src/application-control/index.ts +18 -11
  178. package/src/application-control/install.ts +82 -78
  179. package/src/application-control/models.ts +104 -72
  180. package/src/application-control/status.ts +29 -40
  181. package/src/application-control/utils.ts +66 -38
  182. package/src/cloud-connection/app-install-status.ts +62 -0
  183. package/src/cloud-connection/bootstrap-provision.ts +40 -0
  184. package/src/cloud-connection/cmd-status.ts +52 -0
  185. package/src/cloud-connection/device-agent-cloud-connection.ts +302 -526
  186. package/src/cloud-connection/device-agent.ts +31 -38
  187. package/src/cloud-connection/live-updates-handler.ts +226 -0
  188. package/src/cloud-connection/messages.ts +39 -0
  189. package/src/cloud-connection/passthrough-handler.ts +67 -0
  190. package/src/cloud-connection/publisher.ts +86 -0
  191. package/src/cloud-connection/shadow-handler.test.ts +361 -0
  192. package/src/cloud-connection/shadow-handler.ts +175 -0
  193. package/src/cloud-connection/shadow.ts +50 -0
  194. package/src/device-control/device-control.ts +1 -0
  195. package/src/docker/docker-cmd.ts +1 -1
  196. package/src/docker/docker-compose-cmd.ts +5 -2
  197. package/src/endpoints.ts +9 -9
  198. package/src/environment.ts +11 -3
  199. package/src/infrastructure/agent-config.test.ts +33 -29
  200. package/src/infrastructure/agent-config.ts +57 -22
  201. package/src/infrastructure/system-id.ts +18 -0
  202. package/src/infrastructure/tokens-and-device-cfg.ts +34 -0
  203. package/src/infrastructure/urls.ts +4 -2
  204. package/src/local-connection/rabbitmq-connection.ts +53 -0
  205. package/src/root.ts +2 -8
  206. package/src/subcommands/app/app.ts +119 -83
  207. package/src/subcommands/app/index.ts +3 -3
  208. package/src/subcommands/device/clean.ts +26 -0
  209. package/src/subcommands/device/device.ts +67 -54
  210. package/src/subcommands/device/index.ts +2 -1
  211. package/src/subcommands/get-model-package.ts +5 -5
  212. package/src/subcommands/index.ts +1 -1
  213. package/src/subcommands/login.ts +6 -14
  214. package/src/util/clean-certs.ts +12 -0
  215. package/src/util/directories.ts +68 -52
  216. package/src/util/fetch-with-timeout.ts +18 -0
  217. package/src/util/get-device-id.ts +16 -18
  218. package/src/util/http-client.ts +18 -13
  219. package/src/util/logger.ts +6 -6
  220. package/src/util/require-logged-in-and-paid-plan.ts +16 -0
  221. package/src/util/run-in-dir.ts +2 -1
  222. package/src/util/timer.ts +1 -0
  223. package/lib/infrastructure/certificates-and-tokens.d.ts +0 -6
  224. package/lib/infrastructure/certificates-and-tokens.d.ts.map +0 -1
  225. package/lib/infrastructure/certificates-and-tokens.js +0 -43
  226. package/lib/infrastructure/certificates-and-tokens.js.map +0 -1
  227. package/src/infrastructure/certificates-and-tokens.ts +0 -53
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppInstallStatusManager = exports.AppInstallStatus = void 0;
4
+ class AppInstallStatus {
5
+ constructor(appReleaseHash, status, message) {
6
+ this.appReleaseHash = appReleaseHash;
7
+ this.status = status;
8
+ this.message = message;
9
+ }
10
+ getAppReleaseHash() {
11
+ return this.appReleaseHash;
12
+ }
13
+ update(status, message) {
14
+ this.status = status;
15
+ this.message = message;
16
+ }
17
+ getStatusPacket() {
18
+ return {
19
+ status: this.status,
20
+ message: this.message,
21
+ appReleaseHash: this.appReleaseHash
22
+ };
23
+ }
24
+ }
25
+ exports.AppInstallStatus = AppInstallStatus;
26
+ class AppInstallStatusManager {
27
+ constructor() {
28
+ this.appList = [];
29
+ }
30
+ update(appReleaseHash, status, message) {
31
+ // Update status if existing
32
+ // TODO: Reimplement this as a map
33
+ for (const app of this.appList) {
34
+ if (app.getAppReleaseHash() === appReleaseHash) {
35
+ app.update(status, message);
36
+ return;
37
+ }
38
+ }
39
+ // App was not found, so add to list
40
+ const appInstallStatus = new AppInstallStatus(appReleaseHash, status, message);
41
+ this.appList.push(appInstallStatus);
42
+ }
43
+ getStatusPacket(appReleaseHash) {
44
+ for (const app of this.appList) {
45
+ if (app.getAppReleaseHash() === appReleaseHash) {
46
+ return app.getStatusPacket();
47
+ }
48
+ }
49
+ throw new Error(`No status for ${appReleaseHash}`);
50
+ }
51
+ }
52
+ exports.AppInstallStatusManager = AppInstallStatusManager;
53
+ //# sourceMappingURL=app-install-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-install-status.js","sourceRoot":"","sources":["../../src/cloud-connection/app-install-status.ts"],"names":[],"mappings":";;;AAGA,MAAa,gBAAgB;IAK3B,YAAY,cAAc,EAAE,MAAM,EAAE,OAAQ;QAC1C,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,iBAAiB;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAC,MAAM,EAAE,OAAQ;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,eAAe;QACpB,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC;IACJ,CAAC;CACF;AA3BD,4CA2BC;AAED,MAAa,uBAAuB;IAApC;QACU,YAAO,GAAuB,EAAE,CAAC;IA4B3C,CAAC;IA1BQ,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,OAAQ;QAC5C,4BAA4B;QAC5B,kCAAkC;QAClC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;YAC9B,IAAI,GAAG,CAAC,iBAAiB,EAAE,KAAK,cAAc,EAAE;gBAC9C,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC5B,OAAO;aACR;SACF;QACD,oCAAoC;QACpC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAC3C,cAAc,EACd,MAAM,EACN,OAAO,CACR,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACtC,CAAC;IAEM,eAAe,CAAC,cAAc;QACnC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;YAC9B,IAAI,GAAG,CAAC,iBAAiB,EAAE,KAAK,cAAc,EAAE;gBAC9C,OAAO,GAAG,CAAC,eAAe,EAAE,CAAC;aAC9B;SACF;QACD,MAAM,IAAI,KAAK,CAAC,iBAAiB,cAAc,EAAE,CAAC,CAAC;IACrD,CAAC;CACF;AA7BD,0DA6BC"}
@@ -0,0 +1,2 @@
1
+ export declare function bootstrapProvision(): void;
2
+ //# sourceMappingURL=bootstrap-provision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap-provision.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/bootstrap-provision.ts"],"names":[],"mappings":"AAWA,wBAAgB,kBAAkB,SA4BjC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bootstrapProvision = void 0;
4
+ const util_1 = require("alwaysai/lib/util");
5
+ const urls_1 = require("../infrastructure/urls");
6
+ const clean_certs_1 = require("../util/clean-certs");
7
+ const directories_1 = require("../util/directories");
8
+ const get_device_id_1 = require("../util/get-device-id");
9
+ const device_agent_1 = require("./device-agent");
10
+ function bootstrapProvision() {
11
+ setTimeout(clean_certs_1.rmBootstrapCertsAndClose, 60000);
12
+ const clientId = (0, get_device_id_1.getDeviceUuid)();
13
+ const bootstrapConfig = {
14
+ keyPath: (0, directories_1.BOOTSTRAP_DEVICE_PRIVATE_KEY_FILE_PATH)(),
15
+ certPath: (0, directories_1.BOOTSTRAP_DEVICE_CERTIFICATE_FILE_PATH)(),
16
+ caPath: directories_1.AWS_ROOT_CERTIFICATE_FILE_PATH,
17
+ clientId,
18
+ host: (0, urls_1.getIoTCoreEndpointUrl)()
19
+ };
20
+ const bootstrapAgent = new device_agent_1.BootstrapAgent(bootstrapConfig);
21
+ bootstrapAgent.subscribeToAllTopics();
22
+ bootstrapAgent.publishMessage('$aws/certificates/create/json', '');
23
+ bootstrapAgent.device.on('connect', () => {
24
+ util_1.logger.info('Your device is being provisioned');
25
+ });
26
+ bootstrapAgent.device.on('message', (topic, payload) => {
27
+ bootstrapAgent.handleAwsCertificateTopics(topic, payload);
28
+ });
29
+ bootstrapAgent.device.on('packetsend', (packet) => {
30
+ util_1.logger.debug(`Sending packet: ${JSON.stringify({ packet }, null, 2)}`);
31
+ });
32
+ }
33
+ exports.bootstrapProvision = bootstrapProvision;
34
+ //# sourceMappingURL=bootstrap-provision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap-provision.js","sourceRoot":"","sources":["../../src/cloud-connection/bootstrap-provision.ts"],"names":[],"mappings":";;;AAAA,4CAA2C;AAC3C,iDAA+D;AAC/D,qDAA+D;AAC/D,qDAI6B;AAC7B,yDAAsD;AACtD,iDAAgD;AAEhD,SAAgB,kBAAkB;IAChC,UAAU,CAAC,sCAAwB,EAAE,KAAK,CAAC,CAAC;IAE5C,MAAM,QAAQ,GAAG,IAAA,6BAAa,GAAE,CAAC;IACjC,MAAM,eAAe,GAAG;QACtB,OAAO,EAAE,IAAA,oDAAsC,GAAE;QACjD,QAAQ,EAAE,IAAA,oDAAsC,GAAE;QAClD,MAAM,EAAE,4CAA8B;QACtC,QAAQ;QACR,IAAI,EAAE,IAAA,4BAAqB,GAAE;KAC9B,CAAC;IAEF,MAAM,cAAc,GAAG,IAAI,6BAAc,CAAC,eAAe,CAAC,CAAC;IAC3D,cAAc,CAAC,oBAAoB,EAAE,CAAC;IAEtC,cAAc,CAAC,cAAc,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC;IAEnE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACvC,aAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,KAAa,EAAE,OAAe,EAAE,EAAE;QACrE,cAAc,CAAC,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAW,EAAE,EAAE;QACrD,aAAM,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;AA5BD,gDA4BC"}
@@ -0,0 +1,16 @@
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
+ export declare class CmdStatusManager {
11
+ private apps;
12
+ update(projectId: string, status: CmdStatusType): void;
13
+ getAppCmdStatus(projectId: string): CmdStatusType;
14
+ anyCmdInProgress(): boolean;
15
+ }
16
+ //# sourceMappingURL=cmd-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cmd-status.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/cmd-status.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa,GAAG,MAAM,GAAG,aAAa,CAAC;AAEnD,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAgB;gBAElB,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa;IAK7C,YAAY;IAIZ,MAAM,CAAC,MAAM,EAAE,aAAa;IAI5B,SAAS,IAAI,aAAa;CAGlC;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,IAAI,CAA0C;IAE/C,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa;IAS/C,eAAe,CAAC,SAAS,EAAE,MAAM;IAOjC,gBAAgB;CAQxB"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CmdStatusManager = exports.CmdStatus = void 0;
4
+ class CmdStatus {
5
+ constructor(projectId, status) {
6
+ this.projectId = projectId;
7
+ this.status = status;
8
+ }
9
+ getProjectId() {
10
+ return this.projectId;
11
+ }
12
+ update(status) {
13
+ this.status = status;
14
+ }
15
+ getStatus() {
16
+ return this.status;
17
+ }
18
+ }
19
+ exports.CmdStatus = CmdStatus;
20
+ class CmdStatusManager {
21
+ constructor() {
22
+ this.apps = {};
23
+ }
24
+ update(projectId, status) {
25
+ if (projectId in this.apps) {
26
+ this.apps[projectId].update(status);
27
+ }
28
+ else {
29
+ const cmdStatus = new CmdStatus(projectId, status);
30
+ this.apps[projectId] = cmdStatus;
31
+ }
32
+ }
33
+ getAppCmdStatus(projectId) {
34
+ if (projectId in this.apps) {
35
+ return this.apps[projectId].getStatus();
36
+ }
37
+ throw new Error(`No status for ${projectId}`);
38
+ }
39
+ anyCmdInProgress() {
40
+ for (const projectId in this.apps) {
41
+ if (this.apps[projectId].getStatus() === 'in_progress') {
42
+ return true;
43
+ }
44
+ }
45
+ return false;
46
+ }
47
+ }
48
+ exports.CmdStatusManager = CmdStatusManager;
49
+ //# sourceMappingURL=cmd-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cmd-status.js","sourceRoot":"","sources":["../../src/cloud-connection/cmd-status.ts"],"names":[],"mappings":";;;AAEA,MAAa,SAAS;IAIpB,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;AApBD,8BAoBC;AAED,MAAa,gBAAgB;IAA7B;QACU,SAAI,GAAuC,EAAE,CAAC;IA0BxD,CAAC;IAxBQ,MAAM,CAAC,SAAiB,EAAE,MAAqB;QACpD,IAAI,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE;YAC1B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACrC;aAAM;YACL,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACnD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;SAClC;IACH,CAAC;IAEM,eAAe,CAAC,SAAiB;QACtC,IAAI,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE;YAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;SACzC;QACD,MAAM,IAAI,KAAK,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC;IAChD,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;AA3BD,4CA2BC"}
@@ -1,51 +1,38 @@
1
- import { ClientMessage } from "@alwaysai/device-agent-schemas";
1
+ import { ClientMessage } from '@alwaysai/device-agent-schemas';
2
+ import { ShadowTopics } from './shadow-handler';
3
+ import { Publisher } from './publisher';
4
+ import { CmdStatusType } from './cmd-status';
2
5
  export declare class DeviceAgentCloudConnection {
6
+ private shadowHandler;
7
+ publisher: Publisher;
8
+ private cmdStatusMgr;
9
+ private liveUpdatesHandler;
10
+ private appInstallStatusMgr;
11
+ private device;
3
12
  private clientId;
4
13
  private host;
5
- private appInstallStatus;
6
- private liveUpdatesTimeout;
7
- private liveUpdatesAlive;
8
- private liveUpdatesSleepIntervals;
9
- private appLogStreams;
10
- private readonly shadowPrefix;
11
- private readonly shadowTopics;
12
- private readonly toCloudTopic;
13
- private readonly toClientTopic;
14
14
  private readonly toDeviceTopic;
15
- getShadowPrefix(): string;
16
- private handleNamedShadowUpdate;
17
- private startAppLogStream;
18
- private initAppInstallStatus;
19
- private updateAppInstallStatus;
20
- private getAppInstallStatus;
21
- private buildMessagePacket;
22
- private getAppStateMessage;
23
- private getDeviceStatsMessage;
24
- private getAppInstallStatusMessage;
25
- private startPublishingLiveUpdates;
26
- private continuePublishing;
27
- private getLiveUpdatesInterval;
28
- private setLiveUpdates;
15
+ private newAppCfgQueue;
29
16
  private handleAppStateControl;
30
17
  private handleAppVersionControl;
31
18
  private handleDeviceCommand;
32
19
  private handleAgentCommand;
33
- private restartLiveUpdatesTimeout;
34
- private liveUpdatesBroker;
35
- private publishReportedState;
36
20
  private publishCloudRequest;
37
- device: any;
21
+ private subscribe;
22
+ private atomicApplicationUpdate;
23
+ private handleAppConfigUpdates;
38
24
  constructor();
39
25
  getClientId(): string;
40
- publishMessage(topic: string, message: string): void;
41
- handleClientMessage({ topic, message, }: {
26
+ getToDeviceTopic(): string;
27
+ getShadowTopics(): ShadowTopics;
28
+ getCmdStatus(projectId: string): CmdStatusType;
29
+ handleClientMessage({ topic, message }: {
42
30
  topic: string;
43
31
  message: ClientMessage;
44
32
  }): Promise<void>;
45
- handleShadowTopic({ topic, payload, }: {
46
- topic: string;
47
- payload: string;
48
- }): Promise<void>;
33
+ handleMessage(topic: string, message: ClientMessage | any): Promise<void>;
34
+ setupHandlers(): Promise<void>;
35
+ stop(): void;
49
36
  }
50
37
  export declare function runDeviceAgentCloudInterface(): Promise<void>;
51
38
  //# 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":"AA6BA,OAAO,EAiBL,aAAa,EAKd,MAAM,gCAAgC,CAAC;AAiBxC,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,kBAAkB,CAAgC;IAC1D,OAAO,CAAC,gBAAgB,CAItB;IACF,OAAO,CAAC,yBAAyB,CAK/B;IACF,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+C;IAC5E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAK3B;IACF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;IAC7D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiC;IAC/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiC;IAIxD,eAAe;YAIR,uBAAuB;YAsCvB,iBAAiB;IA0C/B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,kBAAkB;YAcZ,kBAAkB;YAelB,qBAAqB;IAiBnC,OAAO,CAAC,0BAA0B,CAQ9B;YAEU,0BAA0B;IA4BxC,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,mBAAmB,CAEzB;IAEF,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,yBAAyB;YAYnB,iBAAiB;YA4CjB,oBAAoB;YAepB,mBAAmB;IAY1B,MAAM,MAAiB;;IAiBvB,WAAW,IAAI,MAAM;IAIrB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAKvC,mBAAmB,CAAC,EAC/B,KAAK,EACL,OAAO,GACR,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,aAAa,CAAC;KACxB;IAoFY,iBAAiB,CAAC,EAC7B,KAAK,EACL,OAAO,GACR,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB;CAeF;AAED,wBAAsB,4BAA4B,kBAoFjD"}
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;AAKxC,OAAO,EAAoB,aAAa,EAAE,MAAM,cAAc,CAAC;AAI/D,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,mBAAmB,CAA0B;IACrD,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;IAEzC,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,uBAAuB;IAuB/B,OAAO,CAAC,mBAAmB,CAEzB;IAEF,OAAO,CAAC,kBAAkB;YAYZ,mBAAmB;IAIjC,OAAO,CAAC,SAAS;YAMH,uBAAuB;YAmDvB,sBAAsB;;IAqE7B,WAAW,IAAI,MAAM;IAIrB,gBAAgB;IAIhB,eAAe,IAAI,YAAY;IAI/B,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa;IAIxC,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;IAsBzD,aAAa;IAuCnB,IAAI;CAGZ;AAED,wBAAsB,4BAA4B,kBAsBjD"}