@alwaysai/device-agent 0.0.10 → 0.0.11

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 (76) hide show
  1. package/lib/application-control/backup.d.ts.map +1 -1
  2. package/lib/application-control/backup.js +4 -3
  3. package/lib/application-control/backup.js.map +1 -1
  4. package/lib/application-control/install.d.ts.map +1 -1
  5. package/lib/application-control/install.js +6 -5
  6. package/lib/application-control/install.js.map +1 -1
  7. package/lib/application-control/models.d.ts.map +1 -1
  8. package/lib/application-control/models.js +3 -2
  9. package/lib/application-control/models.js.map +1 -1
  10. package/lib/application-control/status.d.ts.map +1 -1
  11. package/lib/application-control/status.js +6 -5
  12. package/lib/application-control/status.js.map +1 -1
  13. package/lib/application-control/utils.d.ts.map +1 -1
  14. package/lib/application-control/utils.js +3 -2
  15. package/lib/application-control/utils.js.map +1 -1
  16. package/lib/cloud-connection/device-agent-cloud-connection.d.ts +3 -3
  17. package/lib/cloud-connection/device-agent-cloud-connection.d.ts.map +1 -1
  18. package/lib/cloud-connection/device-agent-cloud-connection.js +90 -50
  19. package/lib/cloud-connection/device-agent-cloud-connection.js.map +1 -1
  20. package/lib/cloud-connection/device-agent.d.ts +21 -0
  21. package/lib/cloud-connection/device-agent.d.ts.map +1 -0
  22. package/lib/cloud-connection/device-agent.js +69 -0
  23. package/lib/cloud-connection/device-agent.js.map +1 -0
  24. package/lib/endpoints.d.ts +3 -0
  25. package/lib/endpoints.d.ts.map +1 -0
  26. package/lib/endpoints.js +28 -0
  27. package/lib/endpoints.js.map +1 -0
  28. package/lib/environment.d.ts +1 -0
  29. package/lib/environment.d.ts.map +1 -1
  30. package/lib/environment.js +2 -1
  31. package/lib/environment.js.map +1 -1
  32. package/lib/index.js +2 -1
  33. package/lib/index.js.map +1 -1
  34. package/lib/infrastructure/certificates-and-tokens.d.ts +1 -1
  35. package/lib/infrastructure/certificates-and-tokens.d.ts.map +1 -1
  36. package/lib/infrastructure/certificates-and-tokens.js +13 -39
  37. package/lib/infrastructure/certificates-and-tokens.js.map +1 -1
  38. package/lib/subcommands/app/app.d.ts.map +1 -1
  39. package/lib/subcommands/app/app.js +6 -5
  40. package/lib/subcommands/app/app.js.map +1 -1
  41. package/lib/subcommands/device/device.d.ts.map +1 -1
  42. package/lib/subcommands/device/device.js +31 -22
  43. package/lib/subcommands/device/device.js.map +1 -1
  44. package/lib/subcommands/get-model-package.d.ts.map +1 -1
  45. package/lib/subcommands/get-model-package.js +2 -1
  46. package/lib/subcommands/get-model-package.js.map +1 -1
  47. package/lib/util/directories.d.ts +15 -0
  48. package/lib/util/directories.d.ts.map +1 -1
  49. package/lib/util/directories.js +19 -4
  50. package/lib/util/directories.js.map +1 -1
  51. package/lib/util/http-client.d.ts +3 -0
  52. package/lib/util/http-client.d.ts.map +1 -0
  53. package/lib/util/http-client.js +30 -0
  54. package/lib/util/http-client.js.map +1 -0
  55. package/lib/util/logger.d.ts +4 -0
  56. package/lib/util/logger.d.ts.map +1 -0
  57. package/lib/util/logger.js +25 -0
  58. package/lib/util/logger.js.map +1 -0
  59. package/package.json +1 -1
  60. package/src/application-control/backup.ts +4 -3
  61. package/src/application-control/install.ts +6 -5
  62. package/src/application-control/models.ts +4 -3
  63. package/src/application-control/status.ts +6 -5
  64. package/src/application-control/utils.ts +3 -2
  65. package/src/cloud-connection/device-agent-cloud-connection.ts +175 -81
  66. package/src/cloud-connection/device-agent.ts +122 -0
  67. package/src/endpoints.ts +24 -0
  68. package/src/environment.ts +1 -0
  69. package/src/index.ts +2 -1
  70. package/src/infrastructure/certificates-and-tokens.ts +31 -49
  71. package/src/subcommands/app/app.ts +6 -5
  72. package/src/subcommands/device/device.ts +67 -30
  73. package/src/subcommands/get-model-package.ts +2 -1
  74. package/src/util/directories.ts +49 -6
  75. package/src/util/http-client.ts +35 -0
  76. package/src/util/logger.ts +28 -0
@@ -1,5 +1,20 @@
1
+ export declare const BOOTSTRAP_DIR_NAME = "bootstrap-certificates";
2
+ export declare const BOOTSTRAP_DEVICE_PRIVATE_KEY_FILE_NAME = "aai-claim-private-key_qa.pem.key";
3
+ export declare const BOOTSTRAP_DEVICE_CERTIFICATE_FILE_NAME = "aai-claim-cert_qa.pem.crt";
4
+ export declare const BOOTSTRAP_CLAIM_ID_FILE_NAME = "aai-claim-cert-id_qa.txt";
5
+ export declare const AWS_ROOT_CERTIFICATE_FILE_NAME = "AmazonRootCA1.pem";
6
+ export declare const CERTIFICATE_OWNERSHIP_TOKEN_FILE_NAME = "certificate-ownership-token.txt";
7
+ export declare const DEVICE_PRIVATE_KEY_FILE_NAME = "aai-claim-private-key_qa.pem.key";
8
+ export declare const DEVICE_CERTIFICATE_FILE_NAME = "aai-claim-cert_qa.pem.crt";
9
+ export declare const DEVICE_CLAIM_ID_FILE_NAME = "aai-claim-cert-id_qa.txt";
1
10
  export declare function getPrivateKeyFilePath(): string;
2
11
  export declare function getCertificateFilePath(): string;
3
12
  export declare function getRootCertificateFilePath(): string;
4
13
  export declare function getCredentialsFilePath(): string;
14
+ export declare const BOOTSTRAP_CERTIFICATES_DIR_PATH: string;
15
+ export declare const DEVICE_CLAIM_ID_FILE_PATH: string;
16
+ export declare const BOOTSTRAP_DEVICE_PRIVATE_KEY_FILE_PATH: string;
17
+ export declare const BOOTSTRAP_DEVICE_CERTIFICATE_FILE_PATH: string;
18
+ export declare const BOOTSTRAP_CLAIM_ID_FILE_PATH: string;
19
+ export declare const AWS_ROOT_CERTIFICATE_FILE_PATH: string;
5
20
  //# sourceMappingURL=directories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"directories.d.ts","sourceRoot":"","sources":["../../src/util/directories.ts"],"names":[],"mappings":"AAUA,wBAAgB,qBAAqB,WAEpC;AAED,wBAAgB,sBAAsB,WAErC;AAED,wBAAgB,0BAA0B,WAEzC;AAED,wBAAgB,sBAAsB,WAErC"}
1
+ {"version":3,"file":"directories.d.ts","sourceRoot":"","sources":["../../src/util/directories.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAC3D,eAAO,MAAM,sCAAsC,qCACf,CAAC;AACrC,eAAO,MAAM,sCAAsC,8BACtB,CAAC;AAC9B,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AACvE,eAAO,MAAM,8BAA8B,sBAAsB,CAAC;AAClE,eAAO,MAAM,qCAAqC,oCACf,CAAC;AAEpC,eAAO,MAAM,4BAA4B,qCAAqC,CAAC;AAC/E,eAAO,MAAM,4BAA4B,8BAA8B,CAAC;AACxE,eAAO,MAAM,yBAAyB,6BAA6B,CAAC;AAEpE,wBAAgB,qBAAqB,WAEpC;AAED,wBAAgB,sBAAsB,WAErC;AAED,wBAAgB,0BAA0B,WAEzC;AAED,wBAAgB,sBAAsB,WAErC;AAED,eAAO,MAAM,+BAA+B,QAG3C,CAAC;AACF,eAAO,MAAM,yBAAyB,QAGrC,CAAC;AAEF,eAAO,MAAM,sCAAsC,QAIlD,CAAC;AAEF,eAAO,MAAM,sCAAsC,QAIlD,CAAC;AAEF,eAAO,MAAM,4BAA4B,QAIxC,CAAC;AAEF,eAAO,MAAM,8BAA8B,QAG1C,CAAC"}
@@ -1,22 +1,37 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getCredentialsFilePath = exports.getRootCertificateFilePath = exports.getCertificateFilePath = exports.getPrivateKeyFilePath = void 0;
3
+ exports.AWS_ROOT_CERTIFICATE_FILE_PATH = exports.BOOTSTRAP_CLAIM_ID_FILE_PATH = exports.BOOTSTRAP_DEVICE_CERTIFICATE_FILE_PATH = exports.BOOTSTRAP_DEVICE_PRIVATE_KEY_FILE_PATH = exports.DEVICE_CLAIM_ID_FILE_PATH = exports.BOOTSTRAP_CERTIFICATES_DIR_PATH = exports.getCredentialsFilePath = exports.getRootCertificateFilePath = exports.getCertificateFilePath = exports.getPrivateKeyFilePath = exports.DEVICE_CLAIM_ID_FILE_NAME = exports.DEVICE_CERTIFICATE_FILE_NAME = exports.DEVICE_PRIVATE_KEY_FILE_NAME = exports.CERTIFICATE_OWNERSHIP_TOKEN_FILE_NAME = exports.AWS_ROOT_CERTIFICATE_FILE_NAME = exports.BOOTSTRAP_CLAIM_ID_FILE_NAME = exports.BOOTSTRAP_DEVICE_CERTIFICATE_FILE_NAME = exports.BOOTSTRAP_DEVICE_PRIVATE_KEY_FILE_NAME = exports.BOOTSTRAP_DIR_NAME = void 0;
4
4
  const constants_1 = require("alwaysai/lib/constants");
5
5
  const path_1 = require("path");
6
+ exports.BOOTSTRAP_DIR_NAME = "bootstrap-certificates";
7
+ exports.BOOTSTRAP_DEVICE_PRIVATE_KEY_FILE_NAME = "aai-claim-private-key_qa.pem.key";
8
+ exports.BOOTSTRAP_DEVICE_CERTIFICATE_FILE_NAME = "aai-claim-cert_qa.pem.crt";
9
+ exports.BOOTSTRAP_CLAIM_ID_FILE_NAME = "aai-claim-cert-id_qa.txt";
10
+ exports.AWS_ROOT_CERTIFICATE_FILE_NAME = "AmazonRootCA1.pem";
11
+ exports.CERTIFICATE_OWNERSHIP_TOKEN_FILE_NAME = "certificate-ownership-token.txt";
12
+ exports.DEVICE_PRIVATE_KEY_FILE_NAME = "aai-claim-private-key_qa.pem.key";
13
+ exports.DEVICE_CERTIFICATE_FILE_NAME = "aai-claim-cert_qa.pem.crt";
14
+ exports.DEVICE_CLAIM_ID_FILE_NAME = "aai-claim-cert-id_qa.txt";
6
15
  function getPrivateKeyFilePath() {
7
- return (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, constants_1.DEVICE_PRIVATE_KEY_FILE_NAME);
16
+ return (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, exports.DEVICE_PRIVATE_KEY_FILE_NAME);
8
17
  }
9
18
  exports.getPrivateKeyFilePath = getPrivateKeyFilePath;
10
19
  function getCertificateFilePath() {
11
- return (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, constants_1.DEVICE_CERTIFICATE_FILE_NAME);
20
+ return (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, exports.DEVICE_CERTIFICATE_FILE_NAME);
12
21
  }
13
22
  exports.getCertificateFilePath = getCertificateFilePath;
14
23
  function getRootCertificateFilePath() {
15
- return (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, constants_1.DEVICE_ROOT_CERT_FILE_NAME);
24
+ return (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, exports.AWS_ROOT_CERTIFICATE_FILE_NAME);
16
25
  }
17
26
  exports.getRootCertificateFilePath = getRootCertificateFilePath;
18
27
  function getCredentialsFilePath() {
19
28
  return (0, path_1.join)(constants_1.LOCAL_AAI_CFG_DIR, constants_1.DEVICE_TOKEN_FILE_NAME);
20
29
  }
21
30
  exports.getCredentialsFilePath = getCredentialsFilePath;
31
+ exports.BOOTSTRAP_CERTIFICATES_DIR_PATH = (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, exports.BOOTSTRAP_DIR_NAME);
32
+ exports.DEVICE_CLAIM_ID_FILE_PATH = (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, constants_1.DEVICE_TOKEN_FILE_NAME);
33
+ exports.BOOTSTRAP_DEVICE_PRIVATE_KEY_FILE_PATH = (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, exports.BOOTSTRAP_DIR_NAME, exports.BOOTSTRAP_DEVICE_PRIVATE_KEY_FILE_NAME);
34
+ exports.BOOTSTRAP_DEVICE_CERTIFICATE_FILE_PATH = (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, exports.BOOTSTRAP_DIR_NAME, exports.BOOTSTRAP_DEVICE_CERTIFICATE_FILE_NAME);
35
+ exports.BOOTSTRAP_CLAIM_ID_FILE_PATH = (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, exports.BOOTSTRAP_DIR_NAME, exports.BOOTSTRAP_CLAIM_ID_FILE_NAME);
36
+ exports.AWS_ROOT_CERTIFICATE_FILE_PATH = (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, exports.AWS_ROOT_CERTIFICATE_FILE_NAME);
22
37
  //# sourceMappingURL=directories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"directories.js","sourceRoot":"","sources":["../../src/util/directories.ts"],"names":[],"mappings":";;;AAAA,sDAOgC;AAChC,+BAA4B;AAE5B,SAAgB,qBAAqB;IACnC,OAAO,IAAA,WAAI,EAAC,kCAAsB,EAAE,wCAA4B,CAAC,CAAC;AACpE,CAAC;AAFD,sDAEC;AAED,SAAgB,sBAAsB;IACpC,OAAO,IAAA,WAAI,EAAC,kCAAsB,EAAE,wCAA4B,CAAC,CAAC;AACpE,CAAC;AAFD,wDAEC;AAED,SAAgB,0BAA0B;IACxC,OAAO,IAAA,WAAI,EAAC,kCAAsB,EAAE,sCAA0B,CAAC,CAAC;AAClE,CAAC;AAFD,gEAEC;AAED,SAAgB,sBAAsB;IACpC,OAAO,IAAA,WAAI,EAAC,6BAAiB,EAAE,kCAAsB,CAAC,CAAC;AACzD,CAAC;AAFD,wDAEC"}
1
+ {"version":3,"file":"directories.js","sourceRoot":"","sources":["../../src/util/directories.ts"],"names":[],"mappings":";;;AAAA,sDAIgC;AAChC,+BAA4B;AAEf,QAAA,kBAAkB,GAAG,wBAAwB,CAAC;AAC9C,QAAA,sCAAsC,GACjD,kCAAkC,CAAC;AACxB,QAAA,sCAAsC,GACjD,2BAA2B,CAAC;AACjB,QAAA,4BAA4B,GAAG,0BAA0B,CAAC;AAC1D,QAAA,8BAA8B,GAAG,mBAAmB,CAAC;AACrD,QAAA,qCAAqC,GAChD,iCAAiC,CAAC;AAEvB,QAAA,4BAA4B,GAAG,kCAAkC,CAAC;AAClE,QAAA,4BAA4B,GAAG,2BAA2B,CAAC;AAC3D,QAAA,yBAAyB,GAAG,0BAA0B,CAAC;AAEpE,SAAgB,qBAAqB;IACnC,OAAO,IAAA,WAAI,EAAC,kCAAsB,EAAE,oCAA4B,CAAC,CAAC;AACpE,CAAC;AAFD,sDAEC;AAED,SAAgB,sBAAsB;IACpC,OAAO,IAAA,WAAI,EAAC,kCAAsB,EAAE,oCAA4B,CAAC,CAAC;AACpE,CAAC;AAFD,wDAEC;AAED,SAAgB,0BAA0B;IACxC,OAAO,IAAA,WAAI,EAAC,kCAAsB,EAAE,sCAA8B,CAAC,CAAC;AACtE,CAAC;AAFD,gEAEC;AAED,SAAgB,sBAAsB;IACpC,OAAO,IAAA,WAAI,EAAC,6BAAiB,EAAE,kCAAsB,CAAC,CAAC;AACzD,CAAC;AAFD,wDAEC;AAEY,QAAA,+BAA+B,GAAG,IAAA,WAAI,EACjD,kCAAsB,EACtB,0BAAkB,CACnB,CAAC;AACW,QAAA,yBAAyB,GAAG,IAAA,WAAI,EAC3C,kCAAsB,EACtB,kCAAsB,CACvB,CAAC;AAEW,QAAA,sCAAsC,GAAG,IAAA,WAAI,EACxD,kCAAsB,EACtB,0BAAkB,EAClB,8CAAsC,CACvC,CAAC;AAEW,QAAA,sCAAsC,GAAG,IAAA,WAAI,EACxD,kCAAsB,EACtB,0BAAkB,EAClB,8CAAsC,CACvC,CAAC;AAEW,QAAA,4BAA4B,GAAG,IAAA,WAAI,EAC9C,kCAAsB,EACtB,0BAAkB,EAClB,oCAA4B,CAC7B,CAAC;AAEW,QAAA,8BAA8B,GAAG,IAAA,WAAI,EAChD,kCAAsB,EACtB,sCAA8B,CAC/B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function httpClient(url: string, method: string, data?: string, headers?: object): Promise<any>;
2
+ export declare function microServiceHttpClient(service: string, path: string, method: string, data?: string): Promise<any>;
3
+ //# sourceMappingURL=http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/util/http-client.ts"],"names":[],"mappings":"AAIA,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,gBAcjB;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,gBAMd"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.microServiceHttpClient = exports.httpClient = void 0;
4
+ const node_fetch_1 = require("node-fetch");
5
+ const endpoints_1 = require("../endpoints");
6
+ const infrastructure_1 = require("alwaysai/lib/infrastructure");
7
+ async function httpClient(url, method, data, headers) {
8
+ const options = Object.assign({ method }, (data ? { body: data } : {}));
9
+ try {
10
+ const response = await (0, node_fetch_1.default)(url, options);
11
+ const code = response.status;
12
+ const contentType = response.headers.get("content-type");
13
+ if (contentType === "application/json") {
14
+ return await response.json();
15
+ }
16
+ else if (contentType.includes("text/plain")) {
17
+ return await response.text();
18
+ }
19
+ }
20
+ catch (e) { }
21
+ }
22
+ exports.httpClient = httpClient;
23
+ async function microServiceHttpClient(service, path, method, data) {
24
+ const endpoint = (0, endpoints_1.serviceEndpointBuilder)(service, path);
25
+ const { getIdAuthorizationHeader } = (0, infrastructure_1.CliAuthenticationClient)();
26
+ const authorizationHeader = await getIdAuthorizationHeader();
27
+ return await httpClient(endpoint, method, data);
28
+ }
29
+ exports.microServiceHttpClient = microServiceHttpClient;
30
+ //# sourceMappingURL=http-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/util/http-client.ts"],"names":[],"mappings":";;;AAAA,2CAA+B;AAC/B,4CAAsD;AACtD,gEAAsE;AAE/D,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,MAAc,EACd,IAAa,EACb,OAAgB;IAEhB,MAAM,OAAO,mBAAK,MAAM,IAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAE,CAAC;IAC5D,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAK,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;QAE7B,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,WAAW,KAAK,kBAAkB,EAAE;YACtC,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;SAC9B;aAAM,IAAI,WAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YAC9C,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;SAC9B;KACF;IAAC,OAAO,CAAC,EAAE,GAAE;AAChB,CAAC;AAlBD,gCAkBC;AAEM,KAAK,UAAU,sBAAsB,CAC1C,OAAe,EACf,IAAY,EACZ,MAAc,EACd,IAAa;IAEb,MAAM,QAAQ,GAAG,IAAA,kCAAsB,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvD,MAAM,EAAE,wBAAwB,EAAE,GAAG,IAAA,wCAAuB,GAAE,CAAC;IAC/D,MAAM,mBAAmB,GAAG,MAAM,wBAAwB,EAAE,CAAC;IAC7D,OAAO,MAAM,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC;AAVD,wDAUC"}
@@ -0,0 +1,4 @@
1
+ import * as winston from 'winston';
2
+ import 'winston-daily-rotate-file';
3
+ export declare const logger: winston.Logger;
4
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/util/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,2BAA2B,CAAC;AAgBnC,eAAO,MAAM,MAAM,gBAQjB,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logger = void 0;
4
+ const winston = require("winston");
5
+ require("winston-daily-rotate-file");
6
+ const path = require("path");
7
+ const constants_1 = require("alwaysai/lib/constants");
8
+ const environment_1 = require("../environment");
9
+ const LOG_LEVEL = environment_1.ALWAYSAI_LOG_LEVEL || 'info';
10
+ const transports = environment_1.ALWAYSAI_LOG_TO_CONSOLE
11
+ ? [new winston.transports.Console({ level: LOG_LEVEL })]
12
+ : [
13
+ new winston.transports.DailyRotateFile({
14
+ filename: path.join(constants_1.AAI_DIR, 'agent-logs', 'agent-logs.txt'),
15
+ maxSize: '5m',
16
+ maxFiles: '2d',
17
+ }),
18
+ ];
19
+ exports.logger = winston.createLogger({
20
+ level: LOG_LEVEL,
21
+ format: winston.format.combine(winston.format.errors({ stack: true }), winston.format.splat(), winston.format.simple()),
22
+ transports,
23
+ });
24
+ exports.logger.info(`Initialized logger with log level: ${LOG_LEVEL}`);
25
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +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;AAC/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,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"}
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.0.10",
4
+ "version": "0.0.11",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
7
7
  "publishConfig": {
@@ -4,6 +4,7 @@ import { copyDir } from '../util/copy-dir';
4
4
  import { buildApp, getAppDir } from './utils';
5
5
  import { AgentConfigFile } from '../infrastructure/agent-config';
6
6
  import { runInDir } from '../util/run-in-dir';
7
+ import { logger } from '../util/logger';
7
8
 
8
9
  export const BACKUP_EXT = '.bak';
9
10
 
@@ -14,7 +15,7 @@ export async function createAppBackup(props: { projectId: string }) {
14
15
  rimraf.sync(backupAppDir);
15
16
  await copyDir({ srcPath: appDir, destPath: backupAppDir });
16
17
  await AgentConfigFile().setAppBackup({ projectId });
17
- console.log(`Backed up app ${projectId} to ${backupAppDir}`);
18
+ logger.info(`Backed up app ${projectId} to ${backupAppDir}`);
18
19
  }
19
20
 
20
21
  export async function rollbackApp(props: { projectId: string }) {
@@ -23,7 +24,7 @@ export async function rollbackApp(props: { projectId: string }) {
23
24
  if (!config) {
24
25
  throw new Error(`Backup doesn't exist for ${projectId}`);
25
26
  }
26
- console.log(`Rolling back app ${projectId} to ${config.version}`);
27
+ logger.info(`Rolling back app ${projectId} to ${config.version}`);
27
28
  await AgentConfigFile().setAppInstalling({ projectId, version: config.version });
28
29
  const appDir = getAppDir(projectId);
29
30
  const backupAppDir = `${appDir}${BACKUP_EXT}`;
@@ -31,5 +32,5 @@ export async function rollbackApp(props: { projectId: string }) {
31
32
  await copyDir({ srcPath: backupAppDir, destPath: appDir });
32
33
  await buildApp({ appDir });
33
34
  await AgentConfigFile().setAppInstalled({ projectId, version: config.version });
34
- console.log(`Rolled back app ${projectId} to ${config.version}`);
35
+ logger.info(`Rolled back app ${projectId} to ${config.version}`);
35
36
  }
@@ -22,6 +22,7 @@ import { DOCKERFILE, DOCKER_IMAGE_ID_INITIAL_VALUE } from 'alwaysai/lib/constant
22
22
  import { appReleasePullComponent } from 'alwaysai/lib/components/release';
23
23
  import { runInDir } from '../util/run-in-dir';
24
24
  import { installModelsWithPresignedURLs } from './models';
25
+ import { logger } from '../util/logger';
25
26
 
26
27
  type SignedUrlPayloadType = {
27
28
  appInstallPayload: {
@@ -57,7 +58,7 @@ export async function installApp(props: {
57
58
  if (!(await AgentConfigFile().isAppReady({ projectId }))) {
58
59
  throw new Error('Application already has installation in progress!');
59
60
  }
60
- console.log('Application is already installed, updating');
61
+ logger.info('Application is already installed, updating');
61
62
  await AgentConfigFile().setAppInstalling({ projectId, version: appReleaseHash });
62
63
  await spawner.rimraf(appDir);
63
64
  } else {
@@ -121,7 +122,7 @@ export async function installApp(props: {
121
122
 
122
123
  await AgentConfigFile().setAppInstalled({ projectId, version: appReleaseHash });
123
124
 
124
- console.log(
125
+ logger.info(
125
126
  `Installed app version ${appReleaseHash} from project ${projectId} to ${appDir}.`,
126
127
  );
127
128
  }
@@ -188,18 +189,18 @@ async function checkValidProjectFiles({ appDir }) {
188
189
  export async function uninstallApp(props: { projectId: string }): Promise<void> {
189
190
  const { projectId } = props;
190
191
  if (!(await AgentConfigFile().isAppPresent({ projectId }))) {
191
- console.log(`Application ${projectId} not installed`);
192
+ logger.info(`Application ${projectId} not installed`);
192
193
  return;
193
194
  }
194
195
  try {
195
196
  await stopApp({ projectId });
196
197
  } catch {
197
- console.log('Failed to stop app, may be left running...');
198
+ logger.info('Failed to stop app, may be left running...');
198
199
  }
199
200
  await AgentConfigFile().setAppUninstalled({ projectId });
200
201
  // Delete application directory and backup
201
202
  const appDir = getAppDir(projectId);
202
203
  rimraf.sync(appDir);
203
204
  rimraf.sync(`${appDir}${BACKUP_EXT}`);
204
- console.log('Uninstalled', projectId);
205
+ logger.info('Uninstalled', projectId);
205
206
  }
@@ -6,7 +6,8 @@ import {
6
6
  appModelsRemoveComponent,
7
7
  appModelsUpdateComponent,
8
8
  } from 'alwaysai/lib/components/app';
9
- import { JsSpawner, logger } from 'alwaysai/lib/util';
9
+ import { JsSpawner } from 'alwaysai/lib/util';
10
+ import { logger } from '../util/logger';
10
11
  import { existsSync, createReadStream } from 'fs';
11
12
  import { join, dirname } from 'path';
12
13
  import { AgentConfigFile } from '../infrastructure/agent-config';
@@ -183,9 +184,9 @@ export async function updateModelsWithPresignedUrls(
183
184
  restartApp({ projectId: project });
184
185
  }
185
186
 
186
- console.log(`Models installed for project ${project}`);
187
+ logger.info(`Models installed for project ${project}`);
187
188
  } catch (e) {
188
- console.error(e, 'Error updating app models from presigned URL, restoring models.');
189
+ logger.error(e, 'Error updating app models from presigned URL, restoring models.');
189
190
  await spawner.rimraf(tmpDir);
190
191
  await spawner.rimraf(ogDir);
191
192
  await copyDir({ srcPath: restoreDir, destPath: ogDir });
@@ -11,6 +11,7 @@ import {
11
11
  AppStateValue,
12
12
  } from '@alwaysai/device-agent-schemas';
13
13
  import { AgentConfigFile } from '../infrastructure/agent-config';
14
+ import { logger } from '../util/logger';
14
15
 
15
16
  export async function listAppReleases(props: { projectId: string }) {
16
17
  const { projectId } = props;
@@ -147,19 +148,19 @@ export async function startApp(props: {
147
148
  const appDir = getAppDir(projectId);
148
149
  if (dockerLoginToken !== undefined) {
149
150
  const result = await runDockerLogin({ token: dockerLoginToken });
150
- console.log(result);
151
+ logger.info(result);
151
152
  }
152
153
 
153
154
  // TODO: Check if app is running
154
155
  // Start app
155
156
  const upOut = await compose.upAll({ cwd: appDir });
156
- console.log(upOut);
157
+ logger.info(upOut);
157
158
  if (upOut.exitCode !== 0) {
158
159
  throw new Error(
159
160
  `Failed to start application! stdout=${upOut.out} stderr=${upOut.err}`,
160
161
  );
161
162
  }
162
- console.log('Started', projectId);
163
+ logger.info('Started', projectId);
163
164
  }
164
165
 
165
166
  export async function stopApp(props: { projectId: string }): Promise<void> {
@@ -170,13 +171,13 @@ export async function stopApp(props: { projectId: string }): Promise<void> {
170
171
  // TODO: Check if app is running
171
172
  // Stop app
172
173
  const output = await compose.down({ cwd: appDir });
173
- console.log(output);
174
+ logger.info(output);
174
175
  if (output.exitCode !== 0) {
175
176
  throw new Error(
176
177
  `Failed to stop application! stdout=${output.out} stderr=${output.err}`,
177
178
  );
178
179
  }
179
- console.log('Stopped', projectId);
180
+ logger.info('Stopped', projectId);
180
181
  }
181
182
 
182
183
  export async function restartApp(props: { projectId: string }): Promise<void> {
@@ -9,6 +9,7 @@ import { TargetJsonFile } from 'alwaysai/lib/core/app';
9
9
  import { appDeployLinuxAndRemoteDevice } from 'alwaysai/lib/components/app';
10
10
  import { runInDir } from '../util/run-in-dir';
11
11
  import { JsSpawner } from 'alwaysai/lib/util';
12
+ import { logger } from '../util/logger';
12
13
 
13
14
  export const APP_ROOT = path.join(AAI_DIR, 'applications');
14
15
 
@@ -52,7 +53,7 @@ export async function buildApp(props: { appDir: string }) {
52
53
  );
53
54
 
54
55
  const buildOut = await compose.buildAll({ cwd: appDir });
55
- console.log(buildOut);
56
+ logger.info(buildOut);
56
57
  if (buildOut.exitCode !== 0) {
57
58
  throw new Error(
58
59
  `Failed to build application! stdout=${buildOut.out} stderr=${buildOut.err}`,
@@ -64,7 +65,7 @@ export async function downloadPackageUsingPresignedUrl(props: {
64
65
  localDest: string;
65
66
  presignedUrl: string;
66
67
  }): Promise<void> {
67
- console.log('downloading URL');
68
+ logger.info('downloading URL');
68
69
  const { localDest, presignedUrl } = props;
69
70
  const response = await nodeFetch(presignedUrl);
70
71
  if (response.status !== 200) {