@alwaysai/device-agent 0.1.4 → 0.1.5

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 (71) hide show
  1. package/lib/application-control/install.d.ts.map +1 -1
  2. package/lib/application-control/install.js +4 -3
  3. package/lib/application-control/install.js.map +1 -1
  4. package/lib/application-control/models.d.ts.map +1 -1
  5. package/lib/application-control/models.js +4 -4
  6. package/lib/application-control/models.js.map +1 -1
  7. package/lib/application-control/utils.d.ts.map +1 -1
  8. package/lib/application-control/utils.js +4 -18
  9. package/lib/application-control/utils.js.map +1 -1
  10. package/lib/cloud-connection/device-agent-cloud-connection.d.ts +1 -0
  11. package/lib/cloud-connection/device-agent-cloud-connection.d.ts.map +1 -1
  12. package/lib/cloud-connection/device-agent-cloud-connection.js +6 -0
  13. package/lib/cloud-connection/device-agent-cloud-connection.js.map +1 -1
  14. package/lib/cloud-connection/device-agent.js +2 -2
  15. package/lib/cloud-connection/device-agent.js.map +1 -1
  16. package/lib/docker/secure-tunnel-docker.d.ts +2 -0
  17. package/lib/docker/secure-tunnel-docker.d.ts.map +1 -0
  18. package/lib/docker/secure-tunnel-docker.js +49 -0
  19. package/lib/docker/secure-tunnel-docker.js.map +1 -0
  20. package/lib/index.js +0 -0
  21. package/lib/infrastructure/tokens-and-device-cfg.js +2 -2
  22. package/lib/infrastructure/tokens-and-device-cfg.js.map +1 -1
  23. package/lib/secure-tunneling/index.d.ts +5 -0
  24. package/lib/secure-tunneling/index.d.ts.map +1 -0
  25. package/lib/secure-tunneling/index.js +66 -0
  26. package/lib/secure-tunneling/index.js.map +1 -0
  27. package/lib/subcommands/device/clean.js +3 -3
  28. package/lib/subcommands/device/clean.js.map +1 -1
  29. package/lib/subcommands/device/device.js +2 -2
  30. package/lib/subcommands/device/device.js.map +1 -1
  31. package/lib/urls.d.ts +2 -0
  32. package/lib/urls.d.ts.map +1 -0
  33. package/lib/urls.js +5 -0
  34. package/lib/urls.js.map +1 -0
  35. package/lib/util/clean-certs.js +2 -2
  36. package/lib/util/clean-certs.js.map +1 -1
  37. package/lib/util/directories.d.ts +3 -0
  38. package/lib/util/directories.d.ts.map +1 -1
  39. package/lib/util/directories.js +19 -13
  40. package/lib/util/directories.js.map +1 -1
  41. package/lib/util/download-file.d.ts +6 -0
  42. package/lib/util/download-file.d.ts.map +1 -0
  43. package/lib/util/download-file.js +25 -0
  44. package/lib/util/download-file.js.map +1 -0
  45. package/lib/util/fetch-with-timeout.d.ts +1 -1
  46. package/lib/util/fetch-with-timeout.d.ts.map +1 -1
  47. package/lib/util/fetch-with-timeout.js +16 -1
  48. package/lib/util/fetch-with-timeout.js.map +1 -1
  49. package/lib/util/logger.js +2 -2
  50. package/lib/util/logger.js.map +1 -1
  51. package/lib/util/system-info.d.ts +4 -0
  52. package/lib/util/system-info.d.ts.map +1 -0
  53. package/lib/util/system-info.js +30 -0
  54. package/lib/util/system-info.js.map +1 -0
  55. package/package.json +3 -3
  56. package/src/application-control/install.ts +2 -5
  57. package/src/application-control/models.ts +3 -3
  58. package/src/application-control/utils.ts +2 -21
  59. package/src/cloud-connection/device-agent-cloud-connection.ts +7 -0
  60. package/src/cloud-connection/device-agent.ts +1 -1
  61. package/src/infrastructure/tokens-and-device-cfg.ts +1 -1
  62. package/src/secure-tunneling/index.ts +76 -0
  63. package/src/subcommands/device/clean.ts +1 -1
  64. package/src/subcommands/device/device.ts +1 -1
  65. package/src/urls.ts +1 -0
  66. package/src/util/clean-certs.ts +1 -1
  67. package/src/util/directories.ts +12 -1
  68. package/src/util/download-file.ts +25 -0
  69. package/src/util/fetch-with-timeout.ts +18 -1
  70. package/src/util/logger.ts +1 -1
  71. package/src/util/system-info.ts +25 -0
@@ -1 +1 @@
1
- {"version":3,"file":"device.js","sourceRoot":"","sources":["../../../src/subcommands/device/device.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device.js","sourceRoot":"","sources":["../../../src/subcommands/device/device.ts"],"names":[],"mappings":"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"}
package/lib/urls.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare const aaiArtifactsBucketUrl = "https://alwaysai-artifacts-prod.s3.us-west-1.amazonaws.com";
2
+ //# sourceMappingURL=urls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urls.d.ts","sourceRoot":"","sources":["../src/urls.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,+DAA+D,CAAC"}
package/lib/urls.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.aaiArtifactsBucketUrl = void 0;
4
+ exports.aaiArtifactsBucketUrl = `https://alwaysai-artifacts-prod.s3.us-west-1.amazonaws.com`;
5
+ //# sourceMappingURL=urls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urls.js","sourceRoot":"","sources":["../src/urls.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,4DAA4D,CAAC"}
@@ -3,12 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.rmBootstrapCertsAndClose = void 0;
4
4
  const util_1 = require("alwaysai/lib/util");
5
5
  const logger_1 = require("../util/logger");
6
- const constants_1 = require("alwaysai/lib/constants");
6
+ const paths_1 = require("alwaysai/lib/paths");
7
7
  const directories_1 = require("../util/directories");
8
8
  const rmBootstrapCertsAndClose = async () => {
9
9
  const spawner = (0, util_1.JsSpawner)();
10
10
  await spawner.rimraf((0, directories_1.BOOTSTRAP_CERTIFICATES_DIR_PATH)());
11
- await spawner.rimraf(constants_1.LOCAL_CERT_AND_KEY_DIR);
11
+ await spawner.rimraf(paths_1.LOCAL_CERT_AND_KEY_DIR);
12
12
  logger_1.logger.error('Could not provision device. Try again.');
13
13
  process.exit(1);
14
14
  };
@@ -1 +1 @@
1
- {"version":3,"file":"clean-certs.js","sourceRoot":"","sources":["../../src/util/clean-certs.ts"],"names":[],"mappings":";;;AAAA,4CAA8C;AAC9C,2CAAwC;AACxC,sDAAgE;AAChE,qDAAsE;AAE/D,MAAM,wBAAwB,GAAG,KAAK,IAAI,EAAE;IACjD,MAAM,OAAO,GAAG,IAAA,gBAAS,GAAE,CAAC;IAC5B,MAAM,OAAO,CAAC,MAAM,CAAC,IAAA,6CAA+B,GAAE,CAAC,CAAC;IACxD,MAAM,OAAO,CAAC,MAAM,CAAC,kCAAsB,CAAC,CAAC;IAC7C,eAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;AANW,QAAA,wBAAwB,4BAMnC"}
1
+ {"version":3,"file":"clean-certs.js","sourceRoot":"","sources":["../../src/util/clean-certs.ts"],"names":[],"mappings":";;;AAAA,4CAA8C;AAC9C,2CAAwC;AACxC,8CAA4D;AAC5D,qDAAsE;AAE/D,MAAM,wBAAwB,GAAG,KAAK,IAAI,EAAE;IACjD,MAAM,OAAO,GAAG,IAAA,gBAAS,GAAE,CAAC;IAC5B,MAAM,OAAO,CAAC,MAAM,CAAC,IAAA,6CAA+B,GAAE,CAAC,CAAC;IACxD,MAAM,OAAO,CAAC,MAAM,CAAC,8BAAsB,CAAC,CAAC;IAC7C,eAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;AANW,QAAA,wBAAwB,4BAMnC"}
@@ -20,4 +20,7 @@ export declare const DEVICE_CERTIFICATE_FILE_NAME = "aai-device-cert.pem.crt";
20
20
  export declare const DEVICE_ID_FILE_NAME = "aai-device-cert-id.txt";
21
21
  export declare const DEVICE_PRIVATE_KEY_FILE_PATH: string;
22
22
  export declare const DEVICE_CERTIFICATE_FILE_PATH: string;
23
+ export declare const SECURE_TUNNEL_BIN_NAME = "localproxy";
24
+ export declare const SECURE_TUNNEL_BIN_DIR = "secure-tunnel";
25
+ export declare const SECURE_TUNNEL_BIN_PATH: string;
23
26
  //# sourceMappingURL=directories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"directories.d.ts","sourceRoot":"","sources":["../../src/util/directories.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,QAAQ,QAAgC,CAAC;AAEtD,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AACnD,eAAO,MAAM,qBAAqB,QAGjC,CAAC;AACF,eAAO,MAAM,gCAAgC,QAG5C,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAGjC,CAAC;AAEF,eAAO,MAAM,8BAA8B,sBAAsB,CAAC;AAClE,eAAO,MAAM,8BAA8B,QAG1C,CAAC;AAEF,eAAO,MAAM,eAAe,yCAU3B,CAAC;AAMF,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAC3D,eAAO,MAAM,+BAA+B,cACU,CAAC;AACvD,eAAO,MAAM,+BAA+B,cACG,CAAC;AAChD,eAAO,MAAM,sBAAsB,cACW,CAAC;AAC/C,eAAO,MAAM,qCAAqC,oCACf,CAAC;AAEpC,eAAO,MAAM,+BAA+B,cACM,CAAC;AAEnD,eAAO,MAAM,+BAA+B,cAKzC,CAAC;AAEJ,eAAO,MAAM,+BAA+B,cAKzC,CAAC;AAEJ,eAAO,MAAM,sBAAsB,cACyC,CAAC;AAM7E,eAAO,MAAM,4BAA4B,mCAAmC,CAAC;AAC7E,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AACtE,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAE5D,eAAO,MAAM,4BAA4B,QAGxC,CAAC;AAEF,eAAO,MAAM,4BAA4B,QAGxC,CAAC"}
1
+ {"version":3,"file":"directories.d.ts","sourceRoot":"","sources":["../../src/util/directories.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,QAAQ,QAAgC,CAAC;AAEtD,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AACnD,eAAO,MAAM,qBAAqB,QAGjC,CAAC;AACF,eAAO,MAAM,gCAAgC,QAG5C,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAGjC,CAAC;AAEF,eAAO,MAAM,8BAA8B,sBAAsB,CAAC;AAClE,eAAO,MAAM,8BAA8B,QAG1C,CAAC;AAEF,eAAO,MAAM,eAAe,yCAU3B,CAAC;AAMF,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAC3D,eAAO,MAAM,+BAA+B,cACU,CAAC;AACvD,eAAO,MAAM,+BAA+B,cACG,CAAC;AAChD,eAAO,MAAM,sBAAsB,cACW,CAAC;AAC/C,eAAO,MAAM,qCAAqC,oCACf,CAAC;AAEpC,eAAO,MAAM,+BAA+B,cACM,CAAC;AAEnD,eAAO,MAAM,+BAA+B,cAKzC,CAAC;AAEJ,eAAO,MAAM,+BAA+B,cAKzC,CAAC;AAEJ,eAAO,MAAM,sBAAsB,cACyC,CAAC;AAM7E,eAAO,MAAM,4BAA4B,mCAAmC,CAAC;AAC7E,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AACtE,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAE5D,eAAO,MAAM,4BAA4B,QAGxC,CAAC;AAEF,eAAO,MAAM,4BAA4B,QAGxC,CAAC;AAKF,eAAO,MAAM,sBAAsB,eAAe,CAAC;AACnD,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AACrD,eAAO,MAAM,sBAAsB,QAIlC,CAAC"}
@@ -1,16 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEVICE_CERTIFICATE_FILE_PATH = exports.DEVICE_PRIVATE_KEY_FILE_PATH = exports.DEVICE_ID_FILE_NAME = exports.DEVICE_CERTIFICATE_FILE_NAME = exports.DEVICE_PRIVATE_KEY_FILE_NAME = exports.BOOTSTRAP_ID_FILE_PATH = exports.BOOTSTRAP_CERTIFICATE_FILE_PATH = exports.BOOTSTRAP_PRIVATE_KEY_FILE_PATH = exports.BOOTSTRAP_CERTIFICATES_DIR_PATH = exports.CERTIFICATE_OWNERSHIP_TOKEN_FILE_NAME = exports.BOOTSTRAP_ID_FILE_NAME = exports.BOOTSTRAP_CERTIFICATE_FILE_NAME = exports.BOOTSTRAP_PRIVATE_KEY_FILE_NAME = exports.BOOTSTRAP_DIR_NAME = exports.shortenSystemId = exports.AWS_ROOT_CERTIFICATE_FILE_PATH = exports.AWS_ROOT_CERTIFICATE_FILE_NAME = exports.CREDENTIALS_FILE_PATH = exports.DEVICE_AGENT_DOCKER_COMPOSE_PATH = exports.DEVICE_AGENT_CFG_PATH = exports.DEVICE_AGENT_CFG_DIR = exports.APP_ROOT = void 0;
4
- const constants_1 = require("alwaysai/lib/constants");
3
+ exports.SECURE_TUNNEL_BIN_PATH = exports.SECURE_TUNNEL_BIN_DIR = exports.SECURE_TUNNEL_BIN_NAME = exports.DEVICE_CERTIFICATE_FILE_PATH = exports.DEVICE_PRIVATE_KEY_FILE_PATH = exports.DEVICE_ID_FILE_NAME = exports.DEVICE_CERTIFICATE_FILE_NAME = exports.DEVICE_PRIVATE_KEY_FILE_NAME = exports.BOOTSTRAP_ID_FILE_PATH = exports.BOOTSTRAP_CERTIFICATE_FILE_PATH = exports.BOOTSTRAP_PRIVATE_KEY_FILE_PATH = exports.BOOTSTRAP_CERTIFICATES_DIR_PATH = exports.CERTIFICATE_OWNERSHIP_TOKEN_FILE_NAME = exports.BOOTSTRAP_ID_FILE_NAME = exports.BOOTSTRAP_CERTIFICATE_FILE_NAME = exports.BOOTSTRAP_PRIVATE_KEY_FILE_NAME = exports.BOOTSTRAP_DIR_NAME = exports.shortenSystemId = exports.AWS_ROOT_CERTIFICATE_FILE_PATH = exports.AWS_ROOT_CERTIFICATE_FILE_NAME = exports.CREDENTIALS_FILE_PATH = exports.DEVICE_AGENT_DOCKER_COMPOSE_PATH = exports.DEVICE_AGENT_CFG_PATH = exports.DEVICE_AGENT_CFG_DIR = exports.APP_ROOT = void 0;
4
+ const paths_1 = require("alwaysai/lib/paths");
5
5
  const path_1 = require("path");
6
6
  const system_id_1 = require("../infrastructure/system-id");
7
- exports.APP_ROOT = (0, path_1.join)(constants_1.AAI_DIR, 'applications');
7
+ exports.APP_ROOT = (0, path_1.join)(paths_1.AAI_DIR, 'applications');
8
8
  exports.DEVICE_AGENT_CFG_DIR = 'device-agent';
9
- exports.DEVICE_AGENT_CFG_PATH = (0, path_1.join)(constants_1.LOCAL_AAI_CFG_DIR, exports.DEVICE_AGENT_CFG_DIR);
10
- exports.DEVICE_AGENT_DOCKER_COMPOSE_PATH = (0, path_1.join)(exports.DEVICE_AGENT_CFG_PATH, constants_1.DOCKER_COMPOSE_FILE);
11
- exports.CREDENTIALS_FILE_PATH = (0, path_1.join)(constants_1.LOCAL_AAI_CFG_DIR, constants_1.DEVICE_TOKEN_FILE_NAME);
9
+ exports.DEVICE_AGENT_CFG_PATH = (0, path_1.join)(paths_1.LOCAL_AAI_CFG_DIR, exports.DEVICE_AGENT_CFG_DIR);
10
+ exports.DEVICE_AGENT_DOCKER_COMPOSE_PATH = (0, path_1.join)(exports.DEVICE_AGENT_CFG_PATH, paths_1.DOCKER_COMPOSE_FILE);
11
+ exports.CREDENTIALS_FILE_PATH = (0, path_1.join)(paths_1.LOCAL_AAI_CFG_DIR, paths_1.DEVICE_TOKEN_FILE_NAME);
12
12
  exports.AWS_ROOT_CERTIFICATE_FILE_NAME = 'AmazonRootCA1.pem';
13
- exports.AWS_ROOT_CERTIFICATE_FILE_PATH = (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, exports.AWS_ROOT_CERTIFICATE_FILE_NAME);
13
+ exports.AWS_ROOT_CERTIFICATE_FILE_PATH = (0, path_1.join)(paths_1.LOCAL_CERT_AND_KEY_DIR, exports.AWS_ROOT_CERTIFICATE_FILE_NAME);
14
14
  const shortenSystemId = () => {
15
15
  const id = (0, system_id_1.getSystemId)();
16
16
  switch (id) {
@@ -34,13 +34,13 @@ exports.BOOTSTRAP_CERTIFICATE_FILE_NAME = BOOTSTRAP_CERTIFICATE_FILE_NAME;
34
34
  const BOOTSTRAP_ID_FILE_NAME = () => `aai-claim-cert-id_${(0, exports.shortenSystemId)()}.txt`;
35
35
  exports.BOOTSTRAP_ID_FILE_NAME = BOOTSTRAP_ID_FILE_NAME;
36
36
  exports.CERTIFICATE_OWNERSHIP_TOKEN_FILE_NAME = 'certificate-ownership-token.txt';
37
- const BOOTSTRAP_CERTIFICATES_DIR_PATH = () => (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, exports.BOOTSTRAP_DIR_NAME);
37
+ const BOOTSTRAP_CERTIFICATES_DIR_PATH = () => (0, path_1.join)(paths_1.LOCAL_CERT_AND_KEY_DIR, exports.BOOTSTRAP_DIR_NAME);
38
38
  exports.BOOTSTRAP_CERTIFICATES_DIR_PATH = BOOTSTRAP_CERTIFICATES_DIR_PATH;
39
- const BOOTSTRAP_PRIVATE_KEY_FILE_PATH = () => (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, exports.BOOTSTRAP_DIR_NAME, (0, exports.BOOTSTRAP_PRIVATE_KEY_FILE_NAME)());
39
+ const BOOTSTRAP_PRIVATE_KEY_FILE_PATH = () => (0, path_1.join)(paths_1.LOCAL_CERT_AND_KEY_DIR, exports.BOOTSTRAP_DIR_NAME, (0, exports.BOOTSTRAP_PRIVATE_KEY_FILE_NAME)());
40
40
  exports.BOOTSTRAP_PRIVATE_KEY_FILE_PATH = BOOTSTRAP_PRIVATE_KEY_FILE_PATH;
41
- const BOOTSTRAP_CERTIFICATE_FILE_PATH = () => (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, exports.BOOTSTRAP_DIR_NAME, (0, exports.BOOTSTRAP_CERTIFICATE_FILE_NAME)());
41
+ const BOOTSTRAP_CERTIFICATE_FILE_PATH = () => (0, path_1.join)(paths_1.LOCAL_CERT_AND_KEY_DIR, exports.BOOTSTRAP_DIR_NAME, (0, exports.BOOTSTRAP_CERTIFICATE_FILE_NAME)());
42
42
  exports.BOOTSTRAP_CERTIFICATE_FILE_PATH = BOOTSTRAP_CERTIFICATE_FILE_PATH;
43
- const BOOTSTRAP_ID_FILE_PATH = () => (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, exports.BOOTSTRAP_DIR_NAME, (0, exports.BOOTSTRAP_ID_FILE_NAME)());
43
+ const BOOTSTRAP_ID_FILE_PATH = () => (0, path_1.join)(paths_1.LOCAL_CERT_AND_KEY_DIR, exports.BOOTSTRAP_DIR_NAME, (0, exports.BOOTSTRAP_ID_FILE_NAME)());
44
44
  exports.BOOTSTRAP_ID_FILE_PATH = BOOTSTRAP_ID_FILE_PATH;
45
45
  /*===================================================================
46
46
  Device Certificates
@@ -48,6 +48,12 @@ exports.BOOTSTRAP_ID_FILE_PATH = BOOTSTRAP_ID_FILE_PATH;
48
48
  exports.DEVICE_PRIVATE_KEY_FILE_NAME = 'aai-device-private-key.pem.key';
49
49
  exports.DEVICE_CERTIFICATE_FILE_NAME = 'aai-device-cert.pem.crt';
50
50
  exports.DEVICE_ID_FILE_NAME = 'aai-device-cert-id.txt';
51
- exports.DEVICE_PRIVATE_KEY_FILE_PATH = (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, exports.DEVICE_PRIVATE_KEY_FILE_NAME);
52
- exports.DEVICE_CERTIFICATE_FILE_PATH = (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, exports.DEVICE_CERTIFICATE_FILE_NAME);
51
+ exports.DEVICE_PRIVATE_KEY_FILE_PATH = (0, path_1.join)(paths_1.LOCAL_CERT_AND_KEY_DIR, exports.DEVICE_PRIVATE_KEY_FILE_NAME);
52
+ exports.DEVICE_CERTIFICATE_FILE_PATH = (0, path_1.join)(paths_1.LOCAL_CERT_AND_KEY_DIR, exports.DEVICE_CERTIFICATE_FILE_NAME);
53
+ /*===================================================================
54
+ Secure Tunnel bin directory
55
+ ===================================================================*/
56
+ exports.SECURE_TUNNEL_BIN_NAME = 'localproxy';
57
+ exports.SECURE_TUNNEL_BIN_DIR = 'secure-tunnel';
58
+ exports.SECURE_TUNNEL_BIN_PATH = (0, path_1.join)(paths_1.AAI_DIR, exports.SECURE_TUNNEL_BIN_DIR, exports.SECURE_TUNNEL_BIN_NAME);
53
59
  //# sourceMappingURL=directories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"directories.js","sourceRoot":"","sources":["../../src/util/directories.ts"],"names":[],"mappings":";;;AAAA,sDAMgC;AAChC,+BAA4B;AAC5B,2DAA0D;AAE7C,QAAA,QAAQ,GAAG,IAAA,WAAI,EAAC,mBAAO,EAAE,cAAc,CAAC,CAAC;AAEzC,QAAA,oBAAoB,GAAG,cAAc,CAAC;AACtC,QAAA,qBAAqB,GAAG,IAAA,WAAI,EACvC,6BAAiB,EACjB,4BAAoB,CACrB,CAAC;AACW,QAAA,gCAAgC,GAAG,IAAA,WAAI,EAClD,6BAAqB,EACrB,+BAAmB,CACpB,CAAC;AAEW,QAAA,qBAAqB,GAAG,IAAA,WAAI,EACvC,6BAAiB,EACjB,kCAAsB,CACvB,CAAC;AAEW,QAAA,8BAA8B,GAAG,mBAAmB,CAAC;AACrD,QAAA,8BAA8B,GAAG,IAAA,WAAI,EAChD,kCAAsB,EACtB,sCAA8B,CAC/B,CAAC;AAEK,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,EAAE,GAAG,IAAA,uBAAW,GAAE,CAAC;IACzB,QAAQ,EAAE,EAAE;QACV,KAAK,aAAa;YAChB,OAAO,KAAK,CAAC;QACf,KAAK,IAAI;YACP,OAAO,IAAI,CAAC;QACd,KAAK,YAAY;YACf,OAAO,MAAM,CAAC;KACjB;AACH,CAAC,CAAC;AAVW,QAAA,eAAe,mBAU1B;AAEF;;qEAEqE;AAExD,QAAA,kBAAkB,GAAG,wBAAwB,CAAC;AACpD,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,yBAAyB,IAAA,uBAAe,GAAE,UAAU,CAAC;AAD1C,QAAA,+BAA+B,mCACW;AAChD,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,kBAAkB,IAAA,uBAAe,GAAE,UAAU,CAAC;AADnC,QAAA,+BAA+B,mCACI;AACzC,MAAM,sBAAsB,GAAG,GAAG,EAAE,CACzC,qBAAqB,IAAA,uBAAe,GAAE,MAAM,CAAC;AADlC,QAAA,sBAAsB,0BACY;AAClC,QAAA,qCAAqC,GAChD,iCAAiC,CAAC;AAE7B,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,IAAA,WAAI,EAAC,kCAAsB,EAAE,0BAAkB,CAAC,CAAC;AADtC,QAAA,+BAA+B,mCACO;AAE5C,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,IAAA,WAAI,EACF,kCAAsB,EACtB,0BAAkB,EAClB,IAAA,uCAA+B,GAAE,CAClC,CAAC;AALS,QAAA,+BAA+B,mCAKxC;AAEG,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,IAAA,WAAI,EACF,kCAAsB,EACtB,0BAAkB,EAClB,IAAA,uCAA+B,GAAE,CAClC,CAAC;AALS,QAAA,+BAA+B,mCAKxC;AAEG,MAAM,sBAAsB,GAAG,GAAG,EAAE,CACzC,IAAA,WAAI,EAAC,kCAAsB,EAAE,0BAAkB,EAAE,IAAA,8BAAsB,GAAE,CAAC,CAAC;AADhE,QAAA,sBAAsB,0BAC0C;AAE7E;;qEAEqE;AAExD,QAAA,4BAA4B,GAAG,gCAAgC,CAAC;AAChE,QAAA,4BAA4B,GAAG,yBAAyB,CAAC;AACzD,QAAA,mBAAmB,GAAG,wBAAwB,CAAC;AAE/C,QAAA,4BAA4B,GAAG,IAAA,WAAI,EAC9C,kCAAsB,EACtB,oCAA4B,CAC7B,CAAC;AAEW,QAAA,4BAA4B,GAAG,IAAA,WAAI,EAC9C,kCAAsB,EACtB,oCAA4B,CAC7B,CAAC"}
1
+ {"version":3,"file":"directories.js","sourceRoot":"","sources":["../../src/util/directories.ts"],"names":[],"mappings":";;;AAAA,8CAM4B;AAC5B,+BAA4B;AAC5B,2DAA0D;AAE7C,QAAA,QAAQ,GAAG,IAAA,WAAI,EAAC,eAAO,EAAE,cAAc,CAAC,CAAC;AAEzC,QAAA,oBAAoB,GAAG,cAAc,CAAC;AACtC,QAAA,qBAAqB,GAAG,IAAA,WAAI,EACvC,yBAAiB,EACjB,4BAAoB,CACrB,CAAC;AACW,QAAA,gCAAgC,GAAG,IAAA,WAAI,EAClD,6BAAqB,EACrB,2BAAmB,CACpB,CAAC;AAEW,QAAA,qBAAqB,GAAG,IAAA,WAAI,EACvC,yBAAiB,EACjB,8BAAsB,CACvB,CAAC;AAEW,QAAA,8BAA8B,GAAG,mBAAmB,CAAC;AACrD,QAAA,8BAA8B,GAAG,IAAA,WAAI,EAChD,8BAAsB,EACtB,sCAA8B,CAC/B,CAAC;AAEK,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,EAAE,GAAG,IAAA,uBAAW,GAAE,CAAC;IACzB,QAAQ,EAAE,EAAE;QACV,KAAK,aAAa;YAChB,OAAO,KAAK,CAAC;QACf,KAAK,IAAI;YACP,OAAO,IAAI,CAAC;QACd,KAAK,YAAY;YACf,OAAO,MAAM,CAAC;KACjB;AACH,CAAC,CAAC;AAVW,QAAA,eAAe,mBAU1B;AAEF;;qEAEqE;AAExD,QAAA,kBAAkB,GAAG,wBAAwB,CAAC;AACpD,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,yBAAyB,IAAA,uBAAe,GAAE,UAAU,CAAC;AAD1C,QAAA,+BAA+B,mCACW;AAChD,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,kBAAkB,IAAA,uBAAe,GAAE,UAAU,CAAC;AADnC,QAAA,+BAA+B,mCACI;AACzC,MAAM,sBAAsB,GAAG,GAAG,EAAE,CACzC,qBAAqB,IAAA,uBAAe,GAAE,MAAM,CAAC;AADlC,QAAA,sBAAsB,0BACY;AAClC,QAAA,qCAAqC,GAChD,iCAAiC,CAAC;AAE7B,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,IAAA,WAAI,EAAC,8BAAsB,EAAE,0BAAkB,CAAC,CAAC;AADtC,QAAA,+BAA+B,mCACO;AAE5C,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,IAAA,WAAI,EACF,8BAAsB,EACtB,0BAAkB,EAClB,IAAA,uCAA+B,GAAE,CAClC,CAAC;AALS,QAAA,+BAA+B,mCAKxC;AAEG,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,IAAA,WAAI,EACF,8BAAsB,EACtB,0BAAkB,EAClB,IAAA,uCAA+B,GAAE,CAClC,CAAC;AALS,QAAA,+BAA+B,mCAKxC;AAEG,MAAM,sBAAsB,GAAG,GAAG,EAAE,CACzC,IAAA,WAAI,EAAC,8BAAsB,EAAE,0BAAkB,EAAE,IAAA,8BAAsB,GAAE,CAAC,CAAC;AADhE,QAAA,sBAAsB,0BAC0C;AAE7E;;qEAEqE;AAExD,QAAA,4BAA4B,GAAG,gCAAgC,CAAC;AAChE,QAAA,4BAA4B,GAAG,yBAAyB,CAAC;AACzD,QAAA,mBAAmB,GAAG,wBAAwB,CAAC;AAE/C,QAAA,4BAA4B,GAAG,IAAA,WAAI,EAC9C,8BAAsB,EACtB,oCAA4B,CAC7B,CAAC;AAEW,QAAA,4BAA4B,GAAG,IAAA,WAAI,EAC9C,8BAAsB,EACtB,oCAA4B,CAC7B,CAAC;AAEF;;qEAEqE;AACxD,QAAA,sBAAsB,GAAG,YAAY,CAAC;AACtC,QAAA,qBAAqB,GAAG,eAAe,CAAC;AACxC,QAAA,sBAAsB,GAAG,IAAA,WAAI,EACxC,eAAO,EACP,6BAAqB,EACrB,8BAAsB,CACvB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function downloadFile(props: {
2
+ url: string;
3
+ path: string;
4
+ errorMessage: string;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=download-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download-file.d.ts","sourceRoot":"","sources":["../../src/util/download-file.ts"],"names":[],"mappings":"AAIA,wBAAsB,YAAY,CAAC,KAAK,EAAE;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhB"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.downloadFile = void 0;
4
+ const fs = require("fs");
5
+ const fetch_with_timeout_1 = require("./fetch-with-timeout");
6
+ const logger_1 = require("./logger");
7
+ async function downloadFile(props) {
8
+ const { url, path, errorMessage } = props;
9
+ logger_1.logger.debug(`Downloading package from ${url}`);
10
+ let response;
11
+ try {
12
+ response = await (0, fetch_with_timeout_1.fetchWithTimeout)(url);
13
+ }
14
+ catch (e) {
15
+ const errorBody = e.type === 'aborted' ? e : await e.response.text();
16
+ throw new Error(`${errorMessage}: Error=${e}\n${errorBody}`);
17
+ }
18
+ const stream = response.body.pipe(fs.createWriteStream(path));
19
+ await new Promise((resolve, reject) => {
20
+ stream.on('finish', resolve);
21
+ stream.on('error', reject);
22
+ });
23
+ }
24
+ exports.downloadFile = downloadFile;
25
+ //# sourceMappingURL=download-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download-file.js","sourceRoot":"","sources":["../../src/util/download-file.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AACzB,6DAAwD;AACxD,qCAAkC;AAE3B,KAAK,UAAU,YAAY,CAAC,KAIlC;IACC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAC1C,eAAM,CAAC,KAAK,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAC;IAChD,IAAI,QAAa,CAAC;IAClB,IAAI;QACF,QAAQ,GAAG,MAAM,IAAA,qCAAgB,EAAC,GAAG,CAAC,CAAC;KACxC;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,WAAW,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC;KAC9D;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACpC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AApBD,oCAoBC"}
@@ -1,4 +1,4 @@
1
1
  export declare function fetchWithTimeout(url: string, options?: {
2
2
  timeout?: number;
3
- }): Promise<import("node-fetch").Response>;
3
+ }): Promise<any>;
4
4
  //# sourceMappingURL=fetch-with-timeout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-with-timeout.d.ts","sourceRoot":"","sources":["../../src/util/fetch-with-timeout.ts"],"names":[],"mappings":"AAEA,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,0CAanC"}
1
+ {"version":3,"file":"fetch-with-timeout.d.ts","sourceRoot":"","sources":["../../src/util/fetch-with-timeout.ts"],"names":[],"mappings":"AAmBA,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,gBAanC"}
@@ -2,6 +2,21 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.fetchWithTimeout = void 0;
4
4
  const node_fetch_1 = require("node-fetch");
5
+ class HTTPResponseError extends Error {
6
+ constructor(response) {
7
+ super(`HTTP Error Response: ${response.status} ${response.statusText}`);
8
+ this.response = response;
9
+ }
10
+ }
11
+ const checkStatus = (response) => {
12
+ if (response.ok) {
13
+ // response.status >= 200 && response.status < 300
14
+ return response;
15
+ }
16
+ else {
17
+ throw new HTTPResponseError(response);
18
+ }
19
+ };
5
20
  async function fetchWithTimeout(url, options = {}) {
6
21
  //time (ms)
7
22
  const { timeout = 60000 } = options;
@@ -9,7 +24,7 @@ async function fetchWithTimeout(url, options = {}) {
9
24
  const id = setTimeout(() => controller.abort(), timeout);
10
25
  const response = await (0, node_fetch_1.default)(url, Object.assign(Object.assign({}, options), { signal: controller.signal }));
11
26
  clearTimeout(id);
12
- return response;
27
+ return checkStatus(response);
13
28
  }
14
29
  exports.fetchWithTimeout = fetchWithTimeout;
15
30
  //# sourceMappingURL=fetch-with-timeout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-with-timeout.js","sourceRoot":"","sources":["../../src/util/fetch-with-timeout.ts"],"names":[],"mappings":";;;AAAA,2CAAmC;AAE5B,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,UAAgC,EAAE;IAElC,WAAW;IACX,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAEpC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAS,EAAC,GAAG,kCAC/B,OAAO,KACV,MAAM,EAAE,UAAU,CAAC,MAAM,IACzB,CAAC;IACH,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAfD,4CAeC"}
1
+ {"version":3,"file":"fetch-with-timeout.js","sourceRoot":"","sources":["../../src/util/fetch-with-timeout.ts"],"names":[],"mappings":";;;AAAA,2CAAmC;AAEnC,MAAM,iBAAkB,SAAQ,KAAK;IAEnC,YAAY,QAAQ;QAClB,KAAK,CAAC,wBAAwB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,EAAE;IAC/B,IAAI,QAAQ,CAAC,EAAE,EAAE;QACf,kDAAkD;QAClD,OAAO,QAAQ,CAAC;KACjB;SAAM;QACL,MAAM,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;KACvC;AACH,CAAC,CAAC;AAEK,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,UAAgC,EAAE;IAElC,WAAW;IACX,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAEpC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAS,EAAC,GAAG,kCAC/B,OAAO,KACV,MAAM,EAAE,UAAU,CAAC,MAAM,IACzB,CAAC;IACH,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAfD,4CAeC"}
@@ -4,14 +4,14 @@ exports.logger = void 0;
4
4
  const winston = require("winston");
5
5
  require("winston-daily-rotate-file");
6
6
  const path = require("path");
7
- const constants_1 = require("alwaysai/lib/constants");
7
+ const paths_1 = require("alwaysai/lib/paths");
8
8
  const environment_1 = require("../environment");
9
9
  const LOG_LEVEL = environment_1.ALWAYSAI_LOG_LEVEL || 'info';
10
10
  const transports = environment_1.ALWAYSAI_LOG_TO_CONSOLE
11
11
  ? [new winston.transports.Console({ level: LOG_LEVEL })]
12
12
  : [
13
13
  new winston.transports.DailyRotateFile({
14
- filename: path.join(constants_1.AAI_DIR, 'agent-logs', 'agent-logs.txt'),
14
+ filename: path.join(paths_1.AAI_DIR, 'agent-logs', 'agent-logs.txt'),
15
15
  maxSize: '5m',
16
16
  maxFiles: '2d'
17
17
  })
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/util/logger.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AACnC,qCAAmC;AACnC,6BAA6B;AAC7B,sDAAiD;AACjD,gDAA6E;AAE7E,MAAM,SAAS,GAAG,gCAAkB,IAAI,MAAM,CAAC;AAE/C,MAAM,UAAU,GAAG,qCAAuB;IACxC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC;QACE,IAAI,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC;YACrC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAO,EAAE,YAAY,EAAE,gBAAgB,CAAC;YAC5D,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;AAEO,QAAA,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IACzC,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EACzB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EACtC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EACtB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CACxB;IACD,UAAU;CACX,CAAC,CAAC;AAEH,cAAM,CAAC,IAAI,CAAC,sCAAsC,SAAS,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/util/logger.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AACnC,qCAAmC;AACnC,6BAA6B;AAC7B,8CAA6C;AAC7C,gDAA6E;AAE7E,MAAM,SAAS,GAAG,gCAAkB,IAAI,MAAM,CAAC;AAE/C,MAAM,UAAU,GAAG,qCAAuB;IACxC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC;QACE,IAAI,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC;YACrC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,eAAO,EAAE,YAAY,EAAE,gBAAgB,CAAC;YAC5D,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;AAEO,QAAA,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IACzC,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EACzB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EACtC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EACtB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CACxB;IACD,UAAU;CACX,CAAC,CAAC;AAEH,cAAM,CAAC,IAAI,CAAC,sCAAsC,SAAS,EAAE,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function getDistribution(): Promise<string>;
2
+ export declare function getOsVersion(): Promise<string>;
3
+ export declare function getArch(): Promise<string>;
4
+ //# sourceMappingURL=system-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-info.d.ts","sourceRoot":"","sources":["../../src/util/system-info.ts"],"names":[],"mappings":"AAEA,wBAAsB,eAAe,oBAOpC;AACD,wBAAsB,YAAY,oBAMjC;AAED,wBAAsB,OAAO,oBAM5B"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getArch = exports.getOsVersion = exports.getDistribution = void 0;
4
+ const util_1 = require("alwaysai/lib/util");
5
+ async function getDistribution() {
6
+ const spawner = (0, util_1.JsSpawner)();
7
+ const os = await spawner.run({
8
+ exe: 'lsb_release',
9
+ args: ['-is']
10
+ });
11
+ return os.toLowerCase();
12
+ }
13
+ exports.getDistribution = getDistribution;
14
+ async function getOsVersion() {
15
+ const spawner = (0, util_1.JsSpawner)();
16
+ return await spawner.run({
17
+ exe: 'lsb_release',
18
+ args: ['-sr']
19
+ });
20
+ }
21
+ exports.getOsVersion = getOsVersion;
22
+ async function getArch() {
23
+ const spawner = (0, util_1.JsSpawner)();
24
+ return await spawner.run({
25
+ exe: 'dpkg',
26
+ args: ['--print-architecture']
27
+ });
28
+ }
29
+ exports.getArch = getArch;
30
+ //# sourceMappingURL=system-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-info.js","sourceRoot":"","sources":["../../src/util/system-info.ts"],"names":[],"mappings":";;;AAAA,4CAA8C;AAEvC,KAAK,UAAU,eAAe;IACnC,MAAM,OAAO,GAAG,IAAA,gBAAS,GAAE,CAAC;IAC5B,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC3B,GAAG,EAAE,aAAa;QAClB,IAAI,EAAE,CAAC,KAAK,CAAC;KACd,CAAC,CAAC;IACH,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC;AAC1B,CAAC;AAPD,0CAOC;AACM,KAAK,UAAU,YAAY;IAChC,MAAM,OAAO,GAAG,IAAA,gBAAS,GAAE,CAAC;IAC5B,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC;QACvB,GAAG,EAAE,aAAa;QAClB,IAAI,EAAE,CAAC,KAAK,CAAC;KACd,CAAC,CAAC;AACL,CAAC;AAND,oCAMC;AAEM,KAAK,UAAU,OAAO;IAC3B,MAAM,OAAO,GAAG,IAAA,gBAAS,GAAE,CAAC;IAC5B,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC;QACvB,GAAG,EAAE,MAAM;QACX,IAAI,EAAE,CAAC,sBAAsB,CAAC;KAC/B,CAAC,CAAC;AACL,CAAC;AAND,0BAMC"}
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": "0.1.4",
4
+ "version": "0.1.5",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
7
7
  "publishConfig": {
@@ -35,11 +35,11 @@
35
35
  },
36
36
  "dependencies": {
37
37
  "@alwaysai/alwayscli": "0.3.2",
38
- "@alwaysai/app-configuration-schemas": "0.0.1",
38
+ "@alwaysai/app-configuration-schemas": "0.1.0",
39
39
  "@alwaysai/config-nodejs": "0.3.0",
40
40
  "@alwaysai/device-agent-schemas": "1.2.0",
41
41
  "ajv": "8.11.0",
42
- "alwaysai": "1.12.5",
42
+ "alwaysai": "2.1.0",
43
43
  "amqplib": "0.10.3",
44
44
  "aws-iot-device-sdk": "2.2.12",
45
45
  "docker-compose": "0.23.17",
@@ -18,14 +18,11 @@ import {
18
18
  installPythonVenv,
19
19
  installPythonReqs
20
20
  } from 'alwaysai/lib/core/app';
21
- import {
22
- DOCKERFILE,
23
- DOCKER_IMAGE_ID_INITIAL_VALUE,
24
- PYTHON_REQUIREMENTS_FILE_NAME
25
- } from 'alwaysai/lib/constants';
21
+ import { DOCKER_IMAGE_ID_INITIAL_VALUE } from 'alwaysai/lib/constants';
26
22
  import { runInDir } from '../util/run-in-dir';
27
23
  import { installModelsWithPresignedURLs } from './models';
28
24
  import { logger } from '../util/logger';
25
+ import { DOCKERFILE, PYTHON_REQUIREMENTS_FILE_NAME } from 'alwaysai/lib/paths';
29
26
 
30
27
  type SignedUrlPayloadType = {
31
28
  appInstallPayload: {
@@ -22,9 +22,9 @@ import {
22
22
  requireAppReady
23
23
  } from './utils';
24
24
  import { MODEL_JSON_FILE_NAME } from 'alwaysai/lib/core/model';
25
- import { APP_MODELS_DIRECTORY_NAME } from 'alwaysai/lib/constants';
26
25
  import { writeAppCfgFile } from './config';
27
26
  import { AppConfig } from '@alwaysai/app-configuration-schemas';
27
+ import { APP_MODELS_DIRECTORY_NAME } from 'alwaysai/lib/paths';
28
28
 
29
29
  export async function getAppModels(props: { projectId: string }) {
30
30
  const { projectId } = props;
@@ -122,9 +122,9 @@ export async function installModelsWithPresignedURLs(
122
122
  modelPayloads.map(async (payload: ModelInstallPayload) => {
123
123
  logger.info(`Installing ${payload.id}: ${payload.version}`);
124
124
  const version = payload.version;
125
- const modelDest = `${targetDir}/${payload.id}`;
125
+ const modelDest = path.join(targetDir, payload.id);
126
126
  await spawner.mkdirp(modelDest);
127
- const localDest = `${modelDest}/${payload.version}.tar.gz`;
127
+ const localDest = path.join(modelDest, `${payload.version}.tar.gz`);
128
128
  await downloadPackageUsingPresignedUrl({
129
129
  localDest,
130
130
  presignedUrl: payload.modelSignedUrl
@@ -1,10 +1,6 @@
1
1
  import compose from 'docker-compose';
2
2
  import * as path from 'path';
3
3
  import * as fs from 'fs';
4
- import {
5
- DOCKER_COMPOSE_FILE,
6
- TARGET_JSON_FILE_NAME
7
- } from 'alwaysai/lib/constants';
8
4
 
9
5
  import { AgentConfigFile } from '../infrastructure/agent-config';
10
6
  import { fetchWithTimeout } from '../util/fetch-with-timeout';
@@ -19,6 +15,7 @@ import { runInDir } from '../util/run-in-dir';
19
15
  import { logger } from '../util/logger';
20
16
  import { APP_ROOT } from '../util/directories';
21
17
  import { JsSpawner } from 'alwaysai/lib/util/spawner';
18
+ import { DOCKER_COMPOSE_FILE, TARGET_JSON_FILE_NAME } from 'alwaysai/lib/paths';
22
19
 
23
20
  export function getAppDir(projectId: string): string {
24
21
  return path.join(APP_ROOT, projectId);
@@ -44,6 +41,7 @@ export async function requireAppReady(props: { projectId: string }) {
44
41
 
45
42
  export async function buildApp(props: { appDir: string }) {
46
43
  const { appDir } = props;
44
+ logger.debug(`Building app ${appDir}`);
47
45
 
48
46
  // Build standalone image and docker-compose
49
47
  const targetJsonFile = TargetJsonFile(appDir);
@@ -80,23 +78,6 @@ export async function buildApp(props: { appDir: string }) {
80
78
  }
81
79
  }
82
80
 
83
- class HTTPResponseError extends Error {
84
- public response;
85
- constructor(response) {
86
- super(`HTTP Error Response: ${response.status} ${response.statusText}`);
87
- this.response = response;
88
- }
89
- }
90
-
91
- const checkStatus = (response) => {
92
- if (response.ok) {
93
- // response.status >= 200 && response.status < 300
94
- return response;
95
- } else {
96
- throw new HTTPResponseError(response);
97
- }
98
- };
99
-
100
81
  export async function downloadPackageUsingPresignedUrl(props: {
101
82
  localDest: string;
102
83
  presignedUrl: string;
@@ -35,6 +35,7 @@ import {
35
35
  setEnv
36
36
  } from '../application-control';
37
37
  import { ShadowHandler, ShadowTopics, ShadowUpdate } from './shadow-handler';
38
+ import { secureTunnelNotifyHandler } from '../secure-tunneling/index';
38
39
  import { Publisher } from './publisher';
39
40
  import { LiveUpdatesHandler } from './live-updates-handler';
40
41
  import { bootstrapProvision } from './bootstrap-provision';
@@ -55,6 +56,7 @@ export class DeviceAgentCloudConnection {
55
56
  private clientId = getDeviceUuid();
56
57
  private host = getIoTCoreEndpointUrl();
57
58
  private readonly toDeviceTopic = getDeviceTopic(this.clientId);
59
+ private readonly secureTunnelNotifyTopic = `$aws/things/${this.clientId}/tunnels/notify`;
58
60
  // FIXME: Add support for multiple simultaneous project updates
59
61
  private appCfgUpdateQueue: ShadowUpdate[] = [];
60
62
 
@@ -358,6 +360,7 @@ export class DeviceAgentCloudConnection {
358
360
  this.liveUpdatesHandler = new LiveUpdatesHandler(this.publisher);
359
361
 
360
362
  this.subscribe(this.toDeviceTopic);
363
+ this.subscribe(this.secureTunnelNotifyTopic);
361
364
  this.subscribe(this.shadowHandler.shadowTopics.projects.getAccepted);
362
365
  this.subscribe(this.shadowHandler.shadowTopics.projects.getRejected);
363
366
  this.subscribe(this.shadowHandler.shadowTopics.projects.updateDelta);
@@ -508,6 +511,10 @@ export class DeviceAgentCloudConnection {
508
511
  message
509
512
  });
510
513
  break;
514
+
515
+ case this.secureTunnelNotifyTopic:
516
+ await secureTunnelNotifyHandler(message);
517
+ break;
511
518
  default:
512
519
  logger.error(`Unexpected topic, ignoring! ${topic}`);
513
520
  }
@@ -7,10 +7,10 @@ import {
7
7
  DEVICE_CERTIFICATE_FILE_NAME
8
8
  } from '../util/directories';
9
9
  import { getDeviceUuid } from '../util/get-device-id';
10
- import { LOCAL_CERT_AND_KEY_DIR } from 'alwaysai/lib/constants';
11
10
  import { JsSpawner } from 'alwaysai/lib/util';
12
11
  import { logger } from '../util/logger';
13
12
  import { getTargetHardwareUuid } from 'alwaysai/lib/core/app';
13
+ import { LOCAL_CERT_AND_KEY_DIR } from 'alwaysai/lib/paths';
14
14
  // eslint-disable-next-line
15
15
  const process = require('process');
16
16
 
@@ -1,4 +1,3 @@
1
- import { LOCAL_AAI_CFG_DIR } from 'alwaysai/lib/constants';
2
1
  import { logger } from '../util/logger';
3
2
  import { microServiceHttpClient } from '../util/http-client';
4
3
  import { requireLoggedInAndPaidPlan } from '../util/require-logged-in-and-paid-plan';
@@ -8,6 +7,7 @@ import {
8
7
  writeTokens
9
8
  } from 'alwaysai/lib/core/device';
10
9
  import { JsSpawner } from 'alwaysai/lib/util';
10
+ import { LOCAL_AAI_CFG_DIR } from 'alwaysai/lib/paths';
11
11
 
12
12
  // NOTE: This closely follows the flow of deviceCheckAndUpdateComponent in the CLI
13
13
  export async function writeTokenAndDeviceCfg(props: { deviceUuid: string }) {
@@ -0,0 +1,76 @@
1
+ import { downloadFile } from '../util/download-file';
2
+ import {
3
+ SECURE_TUNNEL_BIN_DIR,
4
+ SECURE_TUNNEL_BIN_PATH,
5
+ SECURE_TUNNEL_BIN_NAME,
6
+ AWS_ROOT_CERTIFICATE_FILE_PATH
7
+ } from '../util/directories';
8
+ import { AAI_DIR } from 'alwaysai/lib/paths';
9
+ import { JsSpawner } from 'alwaysai/lib/util';
10
+ import { join } from 'path';
11
+ import { logger } from '../util/logger';
12
+ import { aaiArtifactsBucketUrl } from '../urls';
13
+ import { getDistribution, getOsVersion, getArch } from '../util/system-info';
14
+
15
+ export async function secureTunnelNotifyHandler(message: {
16
+ clientAccessToken: string;
17
+ region: string;
18
+ }) {
19
+ const { clientAccessToken, region } = message;
20
+ await terminateSecureTunnelProcess();
21
+ await downloadSecureTunnel();
22
+ logger.info('Starting Secure Tunnel');
23
+
24
+ const args = [
25
+ '--destination-app',
26
+ '22',
27
+ '--region',
28
+ region,
29
+ '--capath',
30
+ AWS_ROOT_CERTIFICATE_FILE_PATH,
31
+ '--local-bind-address',
32
+ '0.0.0.0',
33
+ '-t',
34
+ clientAccessToken
35
+ ];
36
+
37
+ await JsSpawner({ path: SECURE_TUNNEL_BIN_DIR }).run({
38
+ exe: `./${SECURE_TUNNEL_BIN_NAME}`,
39
+ args
40
+ });
41
+ }
42
+
43
+ async function downloadSecureTunnel() {
44
+ const arch = await getArch();
45
+ const linuxDistro = await getDistribution();
46
+ const osVersion = await getOsVersion();
47
+
48
+ const url = `${aaiArtifactsBucketUrl}/securetunnel/${linuxDistro}/${osVersion}/${arch}/${SECURE_TUNNEL_BIN_NAME}`;
49
+
50
+ await JsSpawner().mkdirp(join(AAI_DIR, SECURE_TUNNEL_BIN_DIR));
51
+ await downloadFile({
52
+ url,
53
+ path: SECURE_TUNNEL_BIN_PATH,
54
+ errorMessage: `Secure Tunnel bin for ${linuxDistro} ${osVersion} ${arch} not found}`
55
+ });
56
+
57
+ const spawner = JsSpawner({ path: SECURE_TUNNEL_BIN_DIR });
58
+ await spawner.run({
59
+ exe: 'chmod',
60
+ args: ['+x', SECURE_TUNNEL_BIN_NAME]
61
+ });
62
+ }
63
+
64
+ async function terminateSecureTunnelProcess() {
65
+ const spawner = JsSpawner();
66
+ try {
67
+ await spawner.run({
68
+ exe: 'pkill',
69
+ args: [SECURE_TUNNEL_BIN_NAME]
70
+ });
71
+ } catch (e) {
72
+ console.log(e);
73
+ //check exit codes
74
+ console.log('No secure tunnel process to kill');
75
+ }
76
+ }
@@ -1,10 +1,10 @@
1
1
  import { CliLeaf } from '@alwaysai/alwayscli';
2
2
  import { rimraf } from 'rimraf';
3
- import { LOCAL_CERT_AND_KEY_DIR } from 'alwaysai/lib/constants';
4
3
  import { logger } from '../../util/logger';
5
4
  import { AgentConfigFile } from '../../infrastructure/agent-config';
6
5
  import { DeviceConfigFile } from 'alwaysai/lib/core/device';
7
6
  import { APP_ROOT, CREDENTIALS_FILE_PATH } from '../../util/directories';
7
+ import { LOCAL_CERT_AND_KEY_DIR } from 'alwaysai/lib/paths';
8
8
 
9
9
  export const cleanCliLeaf = CliLeaf({
10
10
  name: 'clean',
@@ -10,7 +10,6 @@ import {
10
10
  DEVICE_PRIVATE_KEY_FILE_PATH
11
11
  } from '../../util/directories';
12
12
 
13
- import { LOCAL_CERT_AND_KEY_DIR } from 'alwaysai/lib/constants';
14
13
  import { JsSpawner } from 'alwaysai/lib/util';
15
14
  import {
16
15
  getCpuUtil,
@@ -21,6 +20,7 @@ import { writeTokenAndDeviceCfg } from '../../infrastructure/tokens-and-device-c
21
20
  import { logger } from '../../util/logger';
22
21
  import { DeviceConfigFile } from 'alwaysai/lib/core/device';
23
22
  import { requireLoggedInAndPaidPlan } from '../../util/require-logged-in-and-paid-plan';
23
+ import { LOCAL_CERT_AND_KEY_DIR } from 'alwaysai/lib/paths';
24
24
 
25
25
  export const initCliLeaf = CliLeaf({
26
26
  name: 'init',
package/src/urls.ts ADDED
@@ -0,0 +1 @@
1
+ export const aaiArtifactsBucketUrl = `https://alwaysai-artifacts-prod.s3.us-west-1.amazonaws.com`;
@@ -1,6 +1,6 @@
1
1
  import { JsSpawner } from 'alwaysai/lib/util';
2
2
  import { logger } from '../util/logger';
3
- import { LOCAL_CERT_AND_KEY_DIR } from 'alwaysai/lib/constants';
3
+ import { LOCAL_CERT_AND_KEY_DIR } from 'alwaysai/lib/paths';
4
4
  import { BOOTSTRAP_CERTIFICATES_DIR_PATH } from '../util/directories';
5
5
 
6
6
  export const rmBootstrapCertsAndClose = async () => {