@alwaysai/device-agent 2.0.2-0 → 2.0.2

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 (46) hide show
  1. package/lib/application-control/install.d.ts.map +1 -1
  2. package/lib/application-control/install.js +5 -1
  3. package/lib/application-control/install.js.map +1 -1
  4. package/lib/cloud-connection/connection-manager.d.ts +3 -4
  5. package/lib/cloud-connection/connection-manager.d.ts.map +1 -1
  6. package/lib/cloud-connection/connection-manager.js +20 -38
  7. package/lib/cloud-connection/connection-manager.js.map +1 -1
  8. package/lib/cloud-connection/device-agent-cloud-connection.d.ts +3 -1
  9. package/lib/cloud-connection/device-agent-cloud-connection.d.ts.map +1 -1
  10. package/lib/cloud-connection/device-agent-cloud-connection.js +49 -38
  11. package/lib/cloud-connection/device-agent-cloud-connection.js.map +1 -1
  12. package/lib/environment.d.ts +3 -0
  13. package/lib/environment.d.ts.map +1 -1
  14. package/lib/environment.js +12 -1
  15. package/lib/environment.js.map +1 -1
  16. package/lib/jobs/job-handler.d.ts +1 -1
  17. package/lib/jobs/job-handler.d.ts.map +1 -1
  18. package/lib/jobs/job-handler.js +4 -4
  19. package/lib/jobs/job-handler.js.map +1 -1
  20. package/lib/subcommands/app/analytics.d.ts.map +1 -1
  21. package/lib/subcommands/app/analytics.js +2 -3
  22. package/lib/subcommands/app/analytics.js.map +1 -1
  23. package/lib/subcommands/app/env-vars.d.ts.map +1 -1
  24. package/lib/subcommands/app/env-vars.js +4 -6
  25. package/lib/subcommands/app/env-vars.js.map +1 -1
  26. package/lib/subcommands/app/models.d.ts.map +1 -1
  27. package/lib/subcommands/app/models.js +2 -3
  28. package/lib/subcommands/app/models.js.map +1 -1
  29. package/lib/subcommands/app/shadow.d.ts.map +1 -1
  30. package/lib/subcommands/app/shadow.js +4 -6
  31. package/lib/subcommands/app/shadow.js.map +1 -1
  32. package/lib/subcommands/app/version.d.ts.map +1 -1
  33. package/lib/subcommands/app/version.js +6 -9
  34. package/lib/subcommands/app/version.js.map +1 -1
  35. package/package.json +1 -1
  36. package/readme.md +16 -4
  37. package/src/application-control/install.ts +8 -3
  38. package/src/cloud-connection/connection-manager.ts +21 -43
  39. package/src/cloud-connection/device-agent-cloud-connection.ts +91 -79
  40. package/src/environment.ts +18 -0
  41. package/src/jobs/job-handler.ts +4 -4
  42. package/src/subcommands/app/analytics.ts +2 -3
  43. package/src/subcommands/app/env-vars.ts +4 -6
  44. package/src/subcommands/app/models.ts +2 -3
  45. package/src/subcommands/app/shadow.ts +4 -6
  46. package/src/subcommands/app/version.ts +7 -8
@@ -1 +1 @@
1
- {"version":3,"file":"env-vars.js","sourceRoot":"","sources":["../../../src/subcommands/app/env-vars.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env-vars.js","sourceRoot":"","sources":["../../../src/subcommands/app/env-vars.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/subcommands/app/models.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,oBAAoB;;4DAc/B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;4DAgD1B,CAAC"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/subcommands/app/models.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,oBAAoB;;4DAc/B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;4DA+C1B,CAAC"}
@@ -49,15 +49,14 @@ exports.addModelCliLeaf = (0, alwayscli_1.CliLeaf)({
49
49
  appConfig: JSON.stringify(newAppCfg)
50
50
  }
51
51
  };
52
+ await deviceAgent.waitForConnection();
52
53
  deviceAgent.publisher.publish((0, device_agent_schemas_1.getShadowTopic)(deviceAgent.getClientId(), 'projects', 'update'), JSON.stringify((0, device_agent_schemas_1.buildUpdateShadowMessage)({
53
54
  clientId: 'client',
54
55
  desired: toDesire
55
56
  })));
56
57
  // Sleep for extra time to ensure time for shadow response
57
58
  await (0, sleep_1.default)(10000);
58
- while (deviceAgent.isCmdInProgress(projectId)) {
59
- await (0, sleep_1.default)(1000);
60
- }
59
+ await deviceAgent.waitForCmd(projectId);
61
60
  await deviceAgent.stop();
62
61
  }
63
62
  });
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/subcommands/app/models.ts"],"names":[],"mappings":";;;AAAA,mDAA8D;AAC9D,mEAAyE;AACzE,wGAAkG;AAClG,4CAAqC;AACrC,yEAGwC;AAE3B,QAAA,oBAAoB,GAAG,IAAA,mBAAO,EAAC;IAC1C,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,6BAA6B;IAC1C,WAAW,EAAE;QACX,OAAO,EAAE,IAAA,0BAAc,EAAC;YACtB,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACD,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI;QAClB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,SAAS,GAAG,MAAM,IAAA,kCAAY,EAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC;AAEU,QAAA,eAAe,GAAG,IAAA,mBAAO,EAAC;IACrC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,gCAAgC;IAC7C,WAAW,EAAE;QACX,OAAO,EAAE,IAAA,0BAAc,EAAC;YACtB,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,KAAK,EAAE,IAAA,0BAAc,EAAC;YACpB,WAAW,EAAE,UAAU;YACvB,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,OAAO,EAAE,IAAA,0BAAc,EAAC;YACtB,WAAW,EAAE,eAAe;YAC5B,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACD,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI;QAClB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACpD,MAAM,WAAW,GAAG,IAAI,0DAA0B,EAAE,CAAC;QAErD,gCAAgC;QAEhC,MAAM,SAAS,GAAG,MAAM,IAAA,oCAAc,EAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QACjE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAE1C,MAAM,QAAQ,GAAG;YACf,CAAC,SAAS,CAAC,EAAE;gBACX,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;aACrC;SACF,CAAC;QACF,WAAW,CAAC,SAAS,CAAC,OAAO,CAC3B,IAAA,qCAAc,EAAC,WAAW,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,EAC/D,IAAI,CAAC,SAAS,CACZ,IAAA,+CAAwB,EAAC;YACvB,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,QAAQ;SAClB,CAAC,CACH,CACF,CAAC;QACF,0DAA0D;QAC1D,MAAM,IAAA,eAAK,EAAC,KAAK,CAAC,CAAC;QAEnB,OAAO,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE;YAC7C,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC;SACnB;QACD,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/subcommands/app/models.ts"],"names":[],"mappings":";;;AAAA,mDAA8D;AAC9D,mEAAyE;AACzE,wGAAkG;AAClG,4CAAqC;AACrC,yEAGwC;AAE3B,QAAA,oBAAoB,GAAG,IAAA,mBAAO,EAAC;IAC1C,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,6BAA6B;IAC1C,WAAW,EAAE;QACX,OAAO,EAAE,IAAA,0BAAc,EAAC;YACtB,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACD,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI;QAClB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,SAAS,GAAG,MAAM,IAAA,kCAAY,EAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC;AAEU,QAAA,eAAe,GAAG,IAAA,mBAAO,EAAC;IACrC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,gCAAgC;IAC7C,WAAW,EAAE;QACX,OAAO,EAAE,IAAA,0BAAc,EAAC;YACtB,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,KAAK,EAAE,IAAA,0BAAc,EAAC;YACpB,WAAW,EAAE,UAAU;YACvB,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,OAAO,EAAE,IAAA,0BAAc,EAAC;YACtB,WAAW,EAAE,eAAe;YAC5B,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACD,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI;QAClB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACpD,MAAM,WAAW,GAAG,IAAI,0DAA0B,EAAE,CAAC;QAErD,gCAAgC;QAEhC,MAAM,SAAS,GAAG,MAAM,IAAA,oCAAc,EAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QACjE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAE1C,MAAM,QAAQ,GAAG;YACf,CAAC,SAAS,CAAC,EAAE;gBACX,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;aACrC;SACF,CAAC;QACF,MAAM,WAAW,CAAC,iBAAiB,EAAE,CAAC;QACtC,WAAW,CAAC,SAAS,CAAC,OAAO,CAC3B,IAAA,qCAAc,EAAC,WAAW,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,EAC/D,IAAI,CAAC,SAAS,CACZ,IAAA,+CAAwB,EAAC;YACvB,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,QAAQ;SAClB,CAAC,CACH,CACF,CAAC;QACF,0DAA0D;QAC1D,MAAM,IAAA,eAAK,EAAC,KAAK,CAAC,CAAC;QAEnB,MAAM,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"shadow.d.ts","sourceRoot":"","sources":["../../../src/subcommands/app/shadow.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB;;4DAqB3B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;4DAqB9B,CAAC"}
1
+ {"version":3,"file":"shadow.d.ts","sourceRoot":"","sources":["../../../src/subcommands/app/shadow.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB;;4DAoB3B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;4DAoB9B,CAAC"}
@@ -16,12 +16,11 @@ exports.getShadowCliLeaf = (0, alwayscli_1.CliLeaf)({
16
16
  async action(_, opts) {
17
17
  const { project } = opts;
18
18
  const deviceAgent = new device_agent_cloud_connection_1.DeviceAgentCloudConnection();
19
+ await deviceAgent.waitForConnection();
19
20
  deviceAgent.shadowHandler.getProjectShadowUpdates();
20
21
  // 5 seconds should cover the response wait time
21
22
  await (0, sleep_1.default)(5000);
22
- while (deviceAgent.isCmdInProgress(project)) {
23
- await (0, sleep_1.default)(1000);
24
- }
23
+ await deviceAgent.waitForCmd(project);
25
24
  await deviceAgent.stop();
26
25
  }
27
26
  });
@@ -37,12 +36,11 @@ exports.updateShadowCliLeaf = (0, alwayscli_1.CliLeaf)({
37
36
  async action(_, opts) {
38
37
  const { project } = opts;
39
38
  const deviceAgent = new device_agent_cloud_connection_1.DeviceAgentCloudConnection();
39
+ await deviceAgent.waitForConnection();
40
40
  await deviceAgent.shadowHandler.updateProjectShadow(project);
41
41
  // 5 seconds should cover the response wait time
42
42
  await (0, sleep_1.default)(5000);
43
- while (deviceAgent.isCmdInProgress(project)) {
44
- await (0, sleep_1.default)(1000);
45
- }
43
+ await deviceAgent.waitForCmd(project);
46
44
  await deviceAgent.stop();
47
45
  }
48
46
  });
@@ -1 +1 @@
1
- {"version":3,"file":"shadow.js","sourceRoot":"","sources":["../../../src/subcommands/app/shadow.ts"],"names":[],"mappings":";;;AAAA,mDAA8D;AAC9D,wGAAkG;AAClG,4CAAqC;AAExB,QAAA,gBAAgB,GAAG,IAAA,mBAAO,EAAC;IACtC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,wBAAwB;IACrC,WAAW,EAAE;QACX,OAAO,EAAE,IAAA,0BAAc,EAAC;YACtB,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACD,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI;QAClB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,WAAW,GAAG,IAAI,0DAA0B,EAAE,CAAC;QACrD,WAAW,CAAC,aAAa,CAAC,uBAAuB,EAAE,CAAC;QAEpD,gDAAgD;QAChD,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC;QAClB,OAAO,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;YAC3C,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC;SACnB;QACD,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC;AAEU,QAAA,mBAAmB,GAAG,IAAA,mBAAO,EAAC;IACzC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,8DAA8D;IAC3E,WAAW,EAAE;QACX,OAAO,EAAE,IAAA,0BAAc,EAAC;YACtB,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACD,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI;QAClB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,WAAW,GAAG,IAAI,0DAA0B,EAAE,CAAC;QACrD,MAAM,WAAW,CAAC,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAE7D,gDAAgD;QAChD,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC;QAClB,OAAO,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;YAC3C,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC;SACnB;QACD,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"shadow.js","sourceRoot":"","sources":["../../../src/subcommands/app/shadow.ts"],"names":[],"mappings":";;;AAAA,mDAA8D;AAC9D,wGAAkG;AAClG,4CAAqC;AAExB,QAAA,gBAAgB,GAAG,IAAA,mBAAO,EAAC;IACtC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,wBAAwB;IACrC,WAAW,EAAE;QACX,OAAO,EAAE,IAAA,0BAAc,EAAC;YACtB,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACD,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI;QAClB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,WAAW,GAAG,IAAI,0DAA0B,EAAE,CAAC;QACrD,MAAM,WAAW,CAAC,iBAAiB,EAAE,CAAC;QACtC,WAAW,CAAC,aAAa,CAAC,uBAAuB,EAAE,CAAC;QAEpD,gDAAgD;QAChD,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC;QAClB,MAAM,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC;AAEU,QAAA,mBAAmB,GAAG,IAAA,mBAAO,EAAC;IACzC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,8DAA8D;IAC3E,WAAW,EAAE;QACX,OAAO,EAAE,IAAA,0BAAc,EAAC;YACtB,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACD,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI;QAClB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,WAAW,GAAG,IAAI,0DAA0B,EAAE,CAAC;QACrD,MAAM,WAAW,CAAC,iBAAiB,EAAE,CAAC;QACtC,MAAM,WAAW,CAAC,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAE7D,gDAAgD;QAChD,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC;QAClB,MAAM,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/subcommands/app/version.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,eAAe,yKAQ1B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;4DAkE5B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;4DA6B9B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;4DAc7B,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/subcommands/app/version.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,eAAe,yKAQ1B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;4DAiE5B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;4DA4B9B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;4DAc7B,CAAC"}
@@ -6,7 +6,6 @@ const device_agent_schemas_1 = require("@alwaysai/device-agent-schemas");
6
6
  const application_control_1 = require("../../application-control");
7
7
  const device_agent_cloud_connection_1 = require("../../cloud-connection/device-agent-cloud-connection");
8
8
  const agent_config_1 = require("../../infrastructure/agent-config");
9
- const sleep_1 = require("../../util/sleep");
10
9
  const logger_1 = require("../../util/logger");
11
10
  exports.listAppsCliLeaf = (0, alwayscli_1.CliLeaf)({
12
11
  name: 'list',
@@ -69,10 +68,9 @@ exports.installAppCliLeaf = (0, alwayscli_1.CliLeaf)({
69
68
  envVars
70
69
  }
71
70
  };
72
- await deviceAgent.handleMessage(topic, message);
73
- while (deviceAgent.isCmdInProgress(project)) {
74
- await (0, sleep_1.default)(1000);
75
- }
71
+ await deviceAgent.waitForConnection();
72
+ await deviceAgent.sendCliCmd(topic, message);
73
+ await deviceAgent.waitForCmd(project);
76
74
  await deviceAgent.stop();
77
75
  }
78
76
  });
@@ -99,10 +97,9 @@ exports.uninstallAppCliLeaf = (0, alwayscli_1.CliLeaf)({
99
97
  projectId: project
100
98
  }
101
99
  };
102
- await deviceAgent.handleMessage(topic, message);
103
- while (deviceAgent.isCmdInProgress(project)) {
104
- await (0, sleep_1.default)(1000);
105
- }
100
+ await deviceAgent.waitForConnection();
101
+ await deviceAgent.sendCliCmd(topic, message);
102
+ await deviceAgent.waitForCmd(project);
106
103
  await deviceAgent.stop();
107
104
  }
108
105
  });
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/subcommands/app/version.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/subcommands/app/version.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@alwaysai/device-agent",
3
3
  "description": "The alwaysAI Device Agent",
4
- "version": "2.0.2-0",
4
+ "version": "2.0.2",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
7
7
  "publishConfig": {
package/readme.md CHANGED
@@ -53,14 +53,23 @@ change.
53
53
  * Passwordless `sudo` for `/sbin/shutdown` for device restart functionality
54
54
 
55
55
  To enable passwordless `sudo` for `npm` and `sbin/shutdown` for the current
56
- user, run `sudo visudo` and add the following lines to the end of the file:
56
+ user, run `sudo visudo` and add the following lines, where `<username>` is replaced with your username on the device:
57
+
58
+ > **Note**: It is critical that these lines be added to the **end of the file**.
57
59
 
58
60
  ```bash
59
- <username> <hostname> = (root) NOPASSWD: /usr/bin/npm
60
- <username> <hostname> = (root) NOPASSWD: /sbin/shutdown
61
+ <username> ALL = NOPASSWD: /usr/bin/pm2
62
+ <username> ALL = NOPASSWD: /usr/lib/node_modules/pm2/bin/pm2
63
+ <username> ALL = NOPASSWD: /usr/bin/npm
64
+ <username> ALL = NOPASSWD: /sbin/shutdown
61
65
  ```
62
66
 
63
- On a linux system `username` can be obtained by typing `whoami` into the terminal. Similarly, if you don't know your `hostname` you can simply type `hostname`.
67
+ On a linux system, the username can be obtained by typing `whoami` into the terminal. For example:
68
+
69
+ ```bash
70
+ $ whoami
71
+ alwaysAI
72
+ ```
64
73
 
65
74
  ## Provision Device
66
75
 
@@ -429,6 +438,7 @@ $ pm2 delete 0
429
438
  $ pm2 flush
430
439
  $ pm2 unstartup
431
440
  ```
441
+
432
442
  ### Remove the device configuration
433
443
 
434
444
  Open a new terminal and run `aai-agent device clean`.
@@ -443,3 +453,5 @@ running `aai-agent`. You should see a response similar to
443
453
 
444
454
  Go to the [Devices](https://console.alwaysai.co/dashboard/devices) tab, find the
445
455
  device in question, and remove the device using the trashcan icon.
456
+
457
+
@@ -16,7 +16,8 @@ import {
16
16
  appCleanDocker,
17
17
  getPythonVenvPaths,
18
18
  createPythonVenv,
19
- installPythonReqs
19
+ installPythonReqs,
20
+ TargetHardware
20
21
  } from 'alwaysai/lib/core/app';
21
22
  import { DOCKER_IMAGE_ID_INITIAL_VALUE } from 'alwaysai/lib/constants';
22
23
  import { runInDir } from '../util/run-in-dir';
@@ -30,6 +31,7 @@ import {
30
31
  } from '../local-connection/constants';
31
32
  import { DOCKERFILE, PYTHON_REQUIREMENTS_FILE_NAME } from 'alwaysai/lib/paths';
32
33
  import { downloadToFile } from '../util/file';
34
+ import { ALWAYSAI_TARGET_HW_OVERRIDE, parseTargetHW } from '../environment';
33
35
  import { setEnvInternal } from './environment-variables';
34
36
  import { AppConfig } from '@alwaysai/app-configuration-schemas';
35
37
 
@@ -234,15 +236,18 @@ async function checkValidProjectFiles({ appDir }) {
234
236
  if (!AppJsonFile(appDir).readIfExists()) {
235
237
  throw new Error('App JSON file does not exist!');
236
238
  }
237
-
238
239
  // write target json
239
240
  if (!fs.existsSync(path.join(appDir, DOCKERFILE))) {
240
241
  throw new Error('No Dockerfile found for application!');
241
242
  }
243
+ const targetHw: TargetHardware =
244
+ parseTargetHW(ALWAYSAI_TARGET_HW_OVERRIDE) ??
245
+ (await getTargetHardwareType({}));
246
+ logger.debug(`Target Hardware selected to: ${targetHw}`);
242
247
  TargetJsonFile(appDir).write({
243
248
  targetProtocol: 'docker:',
244
249
  dockerImageId: DOCKER_IMAGE_ID_INITIAL_VALUE,
245
- targetHardware: await getTargetHardwareType({})
250
+ targetHardware: targetHw
246
251
  });
247
252
  }
248
253
 
@@ -16,40 +16,32 @@ export class ConnectionManager extends MessageDispatcher<any> {
16
16
  private clientId: string;
17
17
  private host: string;
18
18
  private port: number;
19
- private device: awsIot.device | null = null;
19
+ private device: awsIot.device;
20
20
  private subscribedTopics: Set<string> = new Set();
21
+ private connected = false;
21
22
 
22
23
  constructor(clientId: string, host: string, port: number) {
23
24
  super();
24
25
  this.clientId = clientId;
25
26
  this.host = host;
26
27
  this.port = port;
28
+ this.device = awsIot.device({
29
+ keyPath: DEVICE_PRIVATE_KEY_FILE_PATH,
30
+ certPath: DEVICE_CERTIFICATE_FILE_PATH,
31
+ caPath: AWS_ROOT_CERTIFICATE_FILE_PATH,
32
+ clientId: this.clientId,
33
+ host: this.host,
34
+ port: this.port,
35
+ keepalive: 10 // time before re-connect attempt on dropped connection, default is 400 seconds
36
+ });
27
37
  }
28
38
 
29
39
  public getIoTDevice() {
30
40
  return this.device;
31
41
  }
32
42
 
33
- public connect(cb): void {
34
- try {
35
- this.device = awsIot.device({
36
- keyPath: DEVICE_PRIVATE_KEY_FILE_PATH,
37
- certPath: DEVICE_CERTIFICATE_FILE_PATH,
38
- caPath: AWS_ROOT_CERTIFICATE_FILE_PATH,
39
- clientId: this.clientId,
40
- host: this.host,
41
- port: this.port,
42
- keepalive: 10 // time before re-connect attempt on dropped connection, default is 400 seconds
43
- });
44
- this.setupHandlers(cb);
45
- } catch (error) {
46
- logger.error(`Error connecting to cloud!\n${stringifyError(error)}`);
47
- this.handleReconnection();
48
- }
49
- }
50
-
51
43
  public isConnected(): boolean {
52
- return this.device ? this.device.connected : false;
44
+ return this.connected;
53
45
  }
54
46
 
55
47
  public registerHandler(topic: string, handler: MessageHandler) {
@@ -58,16 +50,11 @@ export class ConnectionManager extends MessageDispatcher<any> {
58
50
  }
59
51
 
60
52
  public disconnect(): void {
61
- if (this.device) {
62
- this.device.end();
63
- logger.debug(`Device Agent has been disconnected from the AWS IoT Core.`);
64
- }
53
+ this.device.end();
54
+ logger.debug(`Device Agent has been disconnected from the AWS IoT Core.`);
65
55
  }
66
56
 
67
57
  public subscribe(topic: string): void {
68
- if (!this.device) {
69
- throw new Error('Must call connect() before subscribe()!');
70
- }
71
58
  if (!this.subscribedTopics.has(topic)) {
72
59
  this.device.subscribe(topic);
73
60
  this.subscribedTopics.add(topic);
@@ -76,9 +63,6 @@ export class ConnectionManager extends MessageDispatcher<any> {
76
63
  }
77
64
 
78
65
  public unsubscribe(topic: string): void {
79
- if (!this.device) {
80
- throw new Error('Must call connect() before unsubscribe()!');
81
- }
82
66
  if (this.subscribedTopics.has(topic)) {
83
67
  this.device.unsubscribe(topic);
84
68
  this.subscribedTopics.delete(topic);
@@ -86,25 +70,16 @@ export class ConnectionManager extends MessageDispatcher<any> {
86
70
  }
87
71
  }
88
72
 
89
- private handleReconnection() {
90
- logger.debug(`Attempting to reconnect to AWS IoT Core...`);
91
- setTimeout(
92
- () =>
93
- this.connect(() => {
94
- // Do nothing
95
- }),
96
- 5000
97
- ); // try in 5 seconds.
98
- }
99
-
100
- private setupHandlers(cb): void {
73
+ public initConnectionHandlers(connectCallback: () => void): void {
101
74
  this.device.on('connect', (connack: any) => {
102
75
  logger.info('Device Agent has connected to the cloud.');
103
- cb();
76
+ this.connected = true;
77
+ connectCallback();
104
78
  });
105
79
 
106
80
  this.device.on('disconnect', () => {
107
81
  logger.warn('Device Agent has been disconnected from the cloud');
82
+ this.connected = false;
108
83
  });
109
84
 
110
85
  this.device.on('reconnect', () => {
@@ -117,15 +92,18 @@ export class ConnectionManager extends MessageDispatcher<any> {
117
92
  logger.error(
118
93
  `Error connecting to the AWS IoT Core!\n${stringifyError(e)}`
119
94
  );
95
+ this.connected = false;
120
96
  });
121
97
 
122
98
  this.device.on('close', () => {
123
99
  logger.warn('Device Agent AWS IoT Core connection closed.');
100
+ this.connected = false;
124
101
  });
125
102
 
126
103
  this.device.on('offline', () => {
127
104
  logger.warn(`Device Agent is offline ${new Date().toLocaleString()}`);
128
105
  void this.logConnectionInfo();
106
+ this.connected = false;
129
107
  });
130
108
 
131
109
  this.device.on('message', async (topic: string, payload: string) => {
@@ -41,8 +41,6 @@ export class DeviceAgentCloudConnection {
41
41
  SecureTunnelHandlerSingleton.getInstance();
42
42
 
43
43
  constructor() {
44
- this.liveUpdatesHandler = new LiveUpdatesHandler();
45
-
46
44
  // Initialize & setup the connection
47
45
  this.connectionManager = new ConnectionManager(
48
46
  this.clientId,
@@ -52,92 +50,91 @@ export class DeviceAgentCloudConnection {
52
50
 
53
51
  this.publisher = new Publisher(this.connectionManager, this.clientId);
54
52
  this.shadowHandler = new ShadowHandler(this.clientId, this.publisher);
55
-
56
- this.connectionManager.connect(() => {
57
- void this.shadowHandler.initShadows();
58
- this.publisher.publish(JOB_HANDLER_TOPICS.START_NEXT, JSON.stringify({}));
59
- });
60
-
53
+ this.liveUpdatesHandler = new LiveUpdatesHandler();
61
54
  this.transactionManager = new TransactionManager(this.liveUpdatesHandler);
62
55
 
63
- // Construct a HandlerContext used by all the message handlers
64
- const handlerContext: HandlerContext = {
65
- clientId: this.clientId,
66
- txnMgr: this.transactionManager,
67
- publisher: this.publisher,
68
- shadowHandler: this.shadowHandler,
69
- liveUpdatesHandler: this.liveUpdatesHandler,
70
- secureTunnelHandler: this.secureTunnelHandler
71
- };
72
-
73
- // Instantiate & register message handlers for Project Shadow topics
74
- const projectShadowMessageHandler = new ProjectShadowMessageHandler(
75
- handlerContext
76
- );
77
- this.shadowHandler.projectShadowTopics.forEach((topic) => {
56
+ this.connectionManager.initConnectionHandlers(() => {
57
+ // Construct a HandlerContext used by all the message handlers
58
+ const handlerContext: HandlerContext = {
59
+ clientId: this.clientId,
60
+ txnMgr: this.transactionManager,
61
+ publisher: this.publisher,
62
+ shadowHandler: this.shadowHandler,
63
+ liveUpdatesHandler: this.liveUpdatesHandler,
64
+ secureTunnelHandler: this.secureTunnelHandler
65
+ };
66
+
67
+ // Instantiate & register message handlers for Project Shadow topics
68
+ const projectShadowMessageHandler = new ProjectShadowMessageHandler(
69
+ handlerContext
70
+ );
71
+ this.shadowHandler.projectShadowTopics.forEach((topic) => {
72
+ this.connectionManager.registerHandler(
73
+ topic,
74
+ projectShadowMessageHandler
75
+ );
76
+ });
77
+
78
+ // Instantiate & register message handlers for to-device and secureTunnel topics
78
79
  this.connectionManager.registerHandler(
79
- topic,
80
- projectShadowMessageHandler
80
+ this.toDeviceTopic,
81
+ new DeviceAgentMessageHandler(
82
+ handlerContext,
83
+ (txId: string, errorMsg: string) => {
84
+ const msg = buildToClientStatusResponseMessage(
85
+ this.publisher.getClientId(),
86
+ {
87
+ status: keyMirrors.statusResponse.failure,
88
+ message: errorMsg
89
+ },
90
+ txId
91
+ );
92
+ this.publisher.publishToClient(msg);
93
+ },
94
+ (txId: string) => {
95
+ const msg = buildToClientStatusResponseMessage(
96
+ this.publisher.getClientId(),
97
+ { status: keyMirrors.statusResponse.success },
98
+ txId
99
+ );
100
+ this.publisher.publishToClient(msg);
101
+ }
102
+ )
81
103
  );
82
- });
83
104
 
84
- // Instantiate & register message handlers for to-device and secureTunnel topics
85
- this.connectionManager.registerHandler(
86
- this.toDeviceTopic,
87
- new DeviceAgentMessageHandler(
88
- handlerContext,
89
- (txId: string, errorMsg: string) => {
90
- const msg = buildToClientStatusResponseMessage(
91
- this.publisher.getClientId(),
92
- {
93
- status: keyMirrors.statusResponse.failure,
94
- message: errorMsg
95
- },
96
- txId
97
- );
98
- this.publisher.publishToClient(msg);
99
- },
100
- (txId: string) => {
101
- const msg = buildToClientStatusResponseMessage(
102
- this.publisher.getClientId(),
103
- { status: keyMirrors.statusResponse.success },
104
- txId
105
- );
106
- this.publisher.publishToClient(msg);
107
- }
108
- )
109
- );
110
-
111
- const secureTunnelMessageHandler = new SecureTunnelMessageHandler(
112
- handlerContext
113
- );
114
- this.connectionManager.registerHandler(
115
- secureTunnelMessageHandler.getNotifyTopic(),
116
- secureTunnelMessageHandler
117
- );
105
+ const secureTunnelMessageHandler = new SecureTunnelMessageHandler(
106
+ handlerContext
107
+ );
108
+ this.connectionManager.registerHandler(
109
+ secureTunnelMessageHandler.getNotifyTopic(),
110
+ secureTunnelMessageHandler
111
+ );
118
112
 
119
- this.connectionManager.registerHandler(
120
- this.shadowHandler.shadowTopics.secureTunnel.updateDelta,
121
- secureTunnelMessageHandler
122
- );
123
- this.connectionManager.registerHandler(
124
- this.shadowHandler.shadowTopics.secureTunnel.deleteAccepted,
125
- secureTunnelMessageHandler
126
- );
113
+ this.connectionManager.registerHandler(
114
+ this.shadowHandler.shadowTopics.secureTunnel.updateDelta,
115
+ secureTunnelMessageHandler
116
+ );
117
+ this.connectionManager.registerHandler(
118
+ this.shadowHandler.shadowTopics.secureTunnel.deleteAccepted,
119
+ secureTunnelMessageHandler
120
+ );
127
121
 
128
- const jobHandler = new JobHandler(handlerContext);
122
+ const jobHandler = new JobHandler(handlerContext);
123
+ const JOB_HANDLER_TOPICS = jobHandler.getJobTopics();
129
124
 
130
- const JOB_HANDLER_TOPICS = jobHandler.getJobTopic();
125
+ this.connectionManager.registerHandler(
126
+ JOB_HANDLER_TOPICS.NOTIFY_NEXT,
127
+ jobHandler
128
+ );
131
129
 
132
- this.connectionManager.registerHandler(
133
- JOB_HANDLER_TOPICS.NOTIFY_NEXT,
134
- jobHandler
135
- );
130
+ this.connectionManager.registerHandler(
131
+ JOB_HANDLER_TOPICS.START_NEXT_ACCEPTED,
132
+ jobHandler
133
+ );
134
+ this.publisher.publish(JOB_HANDLER_TOPICS.START_NEXT, JSON.stringify({}));
136
135
 
137
- this.connectionManager.registerHandler(
138
- JOB_HANDLER_TOPICS.START_NEXT_ACCEPTED,
139
- jobHandler
140
- );
136
+ void this.shadowHandler.initShadows();
137
+ });
141
138
  }
142
139
 
143
140
  /*=================================================================
@@ -158,7 +155,22 @@ export class DeviceAgentCloudConnection {
158
155
  await sleep(1000);
159
156
  this.connectionManager.disconnect();
160
157
  }
161
- public async handleMessage(topic: string, message: any) {
158
+
159
+ // CLI methods
160
+
161
+ public async waitForConnection() {
162
+ while (!this.connectionManager.isConnected()) {
163
+ await sleep(1000);
164
+ }
165
+ }
166
+
167
+ public async waitForCmd(projectId: string) {
168
+ while (this.isCmdInProgress(projectId)) {
169
+ await sleep(1000);
170
+ }
171
+ }
172
+
173
+ public async sendCliCmd(topic: string, message: any) {
162
174
  this.connectionManager.dispatch(topic, message);
163
175
  }
164
176
  }
@@ -1,4 +1,6 @@
1
+ import { TargetHardware } from 'alwaysai/lib/core/app';
1
2
  import { platform } from 'os';
3
+ import { logger } from './util/logger';
2
4
 
3
5
  export const ALWAYSAI_OS_PLATFORM = parseOsPlatform(
4
6
  process.env.ALWAYSAI_OS_PLATFORM
@@ -22,6 +24,22 @@ export const ALWAYSAI_LOCAL_CONNECTION_PORT =
22
24
  process.env.ALWAYSAI_LOCAL_CONNECTION_PORT;
23
25
  export const ALWAYSAI_LOCAL_CONNECTION_ANALYTICS_ROUTING_KEY =
24
26
  process.env.ALWAYSAI_LOCAL_CONNECTION_ANALYTICS_ROUTING_KEY;
27
+ export const ALWAYSAI_TARGET_HW_OVERRIDE =
28
+ process.env.ALWAYSAI_TARGET_HW_OVERRIDE;
29
+
30
+ export function parseTargetHW(
31
+ hardwareType?: string
32
+ ): TargetHardware | undefined {
33
+ const target = hardwareType ? TargetHardware[hardwareType] : undefined;
34
+ if (!target && hardwareType) {
35
+ logger.error(
36
+ `Incorrect TargetHardware: ${hardwareType}. Ignoring the environment variable. Allowed TargetHardware types: ${Object.keys(
37
+ TargetHardware
38
+ )}`
39
+ );
40
+ }
41
+ return target;
42
+ }
25
43
 
26
44
  function parseOsPlatform(str: string | undefined): NodeJS.Platform {
27
45
  switch (str) {
@@ -36,7 +36,7 @@ export class JobHandler extends BaseHandler implements MessageHandler {
36
36
  private jobId = '';
37
37
 
38
38
  public async handle(message: any, topic: string): Promise<void> {
39
- const TOPICS = this.getJobTopic();
39
+ const TOPICS = this.getJobTopics();
40
40
 
41
41
  try {
42
42
  switch (topic) {
@@ -54,7 +54,7 @@ export class JobHandler extends BaseHandler implements MessageHandler {
54
54
  }
55
55
  }
56
56
 
57
- getJobTopic() {
57
+ getJobTopics() {
58
58
  const TOPICS = {
59
59
  NOTIFY_NEXT: `$aws/things/${this.clientId}/jobs/notify-next`,
60
60
  START_NEXT: `$aws/things/${this.clientId}/jobs/start-next`,
@@ -67,7 +67,7 @@ export class JobHandler extends BaseHandler implements MessageHandler {
67
67
  private async notifyNext(message: any): Promise<void> {
68
68
  // Triggers when a job is completed and we need to notify the next job
69
69
  logger.info('Invoking NOTIFY_NEXT handler');
70
- const TOPICS = this.getJobTopic();
70
+ const TOPICS = this.getJobTopics();
71
71
  this.publisher.publish(TOPICS.START_NEXT, JSON.stringify({}));
72
72
  }
73
73
 
@@ -121,7 +121,7 @@ export class JobHandler extends BaseHandler implements MessageHandler {
121
121
  }
122
122
 
123
123
  private updateJobStatus(status: string, message?: string): void {
124
- const { UPDATE } = this.getJobTopic();
124
+ const { UPDATE } = this.getJobTopics();
125
125
  const payload = {
126
126
  status,
127
127
  statusDetails: {