@alwaysai/device-agent 0.0.3 → 0.0.4

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 (75) hide show
  1. package/lib/application-control/backup.d.ts +8 -0
  2. package/lib/application-control/backup.d.ts.map +1 -0
  3. package/lib/application-control/backup.js +30 -0
  4. package/lib/application-control/backup.js.map +1 -0
  5. package/lib/application-control/install.d.ts +10 -0
  6. package/lib/application-control/install.d.ts.map +1 -0
  7. package/lib/application-control/install.js +87 -0
  8. package/lib/application-control/install.js.map +1 -0
  9. package/lib/application-control/models.d.ts +8 -0
  10. package/lib/application-control/models.d.ts.map +1 -1
  11. package/lib/application-control/models.js +45 -2
  12. package/lib/application-control/models.js.map +1 -1
  13. package/lib/application-control/{application-control.d.ts → status.d.ts} +3 -23
  14. package/lib/application-control/status.d.ts.map +1 -0
  15. package/lib/application-control/{application-control.js → status.js} +6 -101
  16. package/lib/application-control/status.js.map +1 -0
  17. package/lib/application-control/types.d.ts +18 -0
  18. package/lib/application-control/types.d.ts.map +1 -0
  19. package/lib/application-control/types.js +3 -0
  20. package/lib/application-control/types.js.map +1 -0
  21. package/lib/application-control/utils.d.ts.map +1 -1
  22. package/lib/application-control/utils.js +3 -3
  23. package/lib/application-control/utils.js.map +1 -1
  24. package/lib/cloud-connection/device-agent-cloud-connection.d.ts +2 -0
  25. package/lib/cloud-connection/device-agent-cloud-connection.d.ts.map +1 -1
  26. package/lib/cloud-connection/device-agent-cloud-connection.js +59 -2
  27. package/lib/cloud-connection/device-agent-cloud-connection.js.map +1 -1
  28. package/lib/constants.d.ts +2 -6
  29. package/lib/constants.d.ts.map +1 -1
  30. package/lib/constants.js +3 -9
  31. package/lib/constants.js.map +1 -1
  32. package/lib/subcommands/app/app.d.ts +24 -14
  33. package/lib/subcommands/app/app.d.ts.map +1 -1
  34. package/lib/subcommands/app/app.js +89 -68
  35. package/lib/subcommands/app/app.js.map +1 -1
  36. package/lib/subcommands/app/index.d.ts.map +1 -1
  37. package/lib/subcommands/app/index.js +4 -1
  38. package/lib/subcommands/app/index.js.map +1 -1
  39. package/lib/subcommands/index.d.ts.map +1 -1
  40. package/lib/subcommands/index.js +1 -7
  41. package/lib/subcommands/index.js.map +1 -1
  42. package/lib/util/directories.d.ts +1 -1
  43. package/lib/util/directories.d.ts.map +1 -1
  44. package/lib/util/directories.js +8 -13
  45. package/lib/util/directories.js.map +1 -1
  46. package/lib/util/get-device-id.d.ts +2 -0
  47. package/lib/util/get-device-id.d.ts.map +1 -0
  48. package/lib/util/get-device-id.js +24 -0
  49. package/lib/util/get-device-id.js.map +1 -0
  50. package/lib/web/web-interface.d.ts.map +1 -1
  51. package/lib/web/web-interface.js +8 -7
  52. package/lib/web/web-interface.js.map +1 -1
  53. package/package.json +2 -2
  54. package/readme.md +15 -8
  55. package/src/application-control/backup.ts +28 -0
  56. package/src/application-control/install.ts +102 -0
  57. package/src/application-control/models.ts +46 -1
  58. package/src/application-control/{application-control.ts → status.ts} +5 -124
  59. package/src/application-control/types.ts +5 -0
  60. package/src/application-control/utils.ts +3 -3
  61. package/src/cloud-connection/device-agent-cloud-connection.ts +66 -2
  62. package/src/constants.ts +2 -12
  63. package/src/subcommands/app/app.ts +98 -63
  64. package/src/subcommands/app/index.ts +7 -1
  65. package/src/subcommands/index.ts +1 -7
  66. package/src/util/directories.ts +10 -15
  67. package/src/util/get-device-id.ts +22 -0
  68. package/src/web/web-interface.ts +2 -6
  69. package/lib/application-control/application-control.d.ts.map +0 -1
  70. package/lib/application-control/application-control.js.map +0 -1
  71. package/lib/subcommands/test-app.d.ts +0 -2
  72. package/lib/subcommands/test-app.d.ts.map +0 -1
  73. package/lib/subcommands/test-app.js +0 -29
  74. package/lib/subcommands/test-app.js.map +0 -1
  75. package/src/subcommands/test-app.ts +0 -30
@@ -0,0 +1,8 @@
1
+ export declare const BACKUP_EXT = ".bak";
2
+ export declare function createAppBackup(props: {
3
+ projectId: string;
4
+ }): Promise<void>;
5
+ export declare function rollbackApp(props: {
6
+ projectId: string;
7
+ }): Promise<void>;
8
+ //# sourceMappingURL=backup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/application-control/backup.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,UAAU,SAAS,CAAC;AAEjC,wBAAsB,eAAe,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,iBAMjE;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,iBAW7D"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rollbackApp = exports.createAppBackup = exports.BACKUP_EXT = void 0;
4
+ const rimraf = require("rimraf");
5
+ const fs = require("fs");
6
+ const copy_dir_1 = require("../util/copy-dir");
7
+ const utils_1 = require("./utils");
8
+ exports.BACKUP_EXT = '.bak';
9
+ async function createAppBackup(props) {
10
+ const { projectId } = props;
11
+ const appDir = (0, utils_1.getAppDir)(projectId);
12
+ const backupAppDir = `${appDir}${exports.BACKUP_EXT}`;
13
+ await (0, copy_dir_1.copyDir)({ srcPath: appDir, destPath: backupAppDir });
14
+ console.log(`Backed up app ${projectId} to ${backupAppDir}`);
15
+ }
16
+ exports.createAppBackup = createAppBackup;
17
+ async function rollbackApp(props) {
18
+ const { projectId } = props;
19
+ const appDir = (0, utils_1.getAppDir)(projectId);
20
+ const backupAppDir = `${appDir}${exports.BACKUP_EXT}`;
21
+ if (!fs.existsSync(backupAppDir)) {
22
+ throw new Error(`Backup doesn't exist for ${projectId}`);
23
+ }
24
+ rimraf.sync(appDir);
25
+ await (0, copy_dir_1.copyDir)({ srcPath: `${appDir}${exports.BACKUP_EXT}`, destPath: appDir });
26
+ await (0, utils_1.buildApp)({ appDir });
27
+ console.log(`Rolled back app ${projectId} to previous version`);
28
+ }
29
+ exports.rollbackApp = rollbackApp;
30
+ //# sourceMappingURL=backup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/application-control/backup.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,yBAAyB;AAEzB,+CAA2C;AAC3C,mCAA8C;AAEjC,QAAA,UAAU,GAAG,MAAM,CAAC;AAE1B,KAAK,UAAU,eAAe,CAAC,KAA4B;IAChE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAA,iBAAS,EAAC,SAAS,CAAC,CAAC;IACpC,MAAM,YAAY,GAAG,GAAG,MAAM,GAAG,kBAAU,EAAE,CAAC;IAC9C,MAAM,IAAA,kBAAO,EAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,iBAAiB,SAAS,OAAO,YAAY,EAAE,CAAC,CAAC;AAC/D,CAAC;AAND,0CAMC;AAEM,KAAK,UAAU,WAAW,CAAC,KAA4B;IAC5D,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAA,iBAAS,EAAC,SAAS,CAAC,CAAC;IACpC,MAAM,YAAY,GAAG,GAAG,MAAM,GAAG,kBAAU,EAAE,CAAC;IAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,4BAA4B,SAAS,EAAE,CAAC,CAAC;KAC1D;IACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpB,MAAM,IAAA,kBAAO,EAAC,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,kBAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACvE,MAAM,IAAA,gBAAQ,EAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,mBAAmB,SAAS,sBAAsB,CAAC,CAAC;AAClE,CAAC;AAXD,kCAWC"}
@@ -0,0 +1,10 @@
1
+ import { AppDetails } from './types';
2
+ export declare function getInstalledApps(): Promise<AppDetails[]>;
3
+ export declare function installApp(props: {
4
+ projectId: string;
5
+ releaseHash: string;
6
+ }): Promise<void>;
7
+ export declare function uninstallApp(props: {
8
+ projectId: string;
9
+ }): Promise<void>;
10
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/application-control/install.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAIrC,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAkB9D;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0ChB;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB9E"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.uninstallApp = exports.installApp = exports.getInstalledApps = void 0;
4
+ const rimraf = require("rimraf");
5
+ const fs = require("fs");
6
+ const path_1 = require("path");
7
+ const run_cli_cmd_1 = require("../util/run-cli-cmd");
8
+ const js_spawner_1 = require("../util/spawner/js-spawner");
9
+ const utils_1 = require("./utils");
10
+ const backup_1 = require("./backup");
11
+ const status_1 = require("./status");
12
+ async function getInstalledApps() {
13
+ if (!fs.existsSync(utils_1.APP_ROOT)) {
14
+ return [];
15
+ }
16
+ const projectIds = fs.readdirSync(utils_1.APP_ROOT).filter(file => {
17
+ const isDir = fs.statSync(`${utils_1.APP_ROOT}/${file}`).isDirectory();
18
+ const isBak = `${utils_1.APP_ROOT}/${file}`.includes(backup_1.BACKUP_EXT);
19
+ return isDir && !isBak;
20
+ });
21
+ const appDetails = [];
22
+ for (const projectId of projectIds) {
23
+ const appDir = (0, utils_1.getAppDir)(projectId);
24
+ const version = await (0, utils_1.getAppVersion)({ appDir });
25
+ appDetails.push({ projectId, version });
26
+ }
27
+ return appDetails;
28
+ }
29
+ exports.getInstalledApps = getInstalledApps;
30
+ async function installApp(props) {
31
+ const { projectId, releaseHash } = props;
32
+ console.log(`Installing ${projectId}`);
33
+ const appDir = (0, utils_1.getAppDir)(projectId);
34
+ const TEMP_DIR = (0, path_1.join)(utils_1.APP_ROOT, 'temp');
35
+ const spawner = (0, js_spawner_1.JsSpawner)();
36
+ await spawner.mkdirp(TEMP_DIR);
37
+ // TODO Check valid projectId
38
+ // Check if app is installed
39
+ if (await (0, utils_1.isAppInstalled)({ appDir })) {
40
+ console.log('Application is already installed, updating');
41
+ await (0, backup_1.createAppBackup)({ projectId });
42
+ await spawner.rimraf(appDir);
43
+ }
44
+ // Create app directory
45
+ await spawner.mkdirp(appDir);
46
+ // download the application
47
+ await (0, run_cli_cmd_1.runCliCmd)({
48
+ cmd: [
49
+ 'release',
50
+ 'pull',
51
+ '--yes',
52
+ '--project',
53
+ projectId,
54
+ '--releaseHash',
55
+ releaseHash,
56
+ ],
57
+ cwd: TEMP_DIR,
58
+ });
59
+ // Unpack app package and move to install dir
60
+ await spawner.untar(fs.createReadStream((0, path_1.join)(TEMP_DIR, `${releaseHash}.tgz`)), appDir);
61
+ console.log(`Unpacked application to ${appDir}`);
62
+ await (0, utils_1.setAppVersion)({ appDir, version: releaseHash });
63
+ await (0, utils_1.buildApp)({ appDir });
64
+ await spawner.rimraf(TEMP_DIR);
65
+ console.log(`Installed ${projectId} to ${appDir}`);
66
+ }
67
+ exports.installApp = installApp;
68
+ async function uninstallApp(props) {
69
+ const { projectId } = props;
70
+ const appDir = (0, utils_1.getAppDir)(projectId);
71
+ if (!(await (0, utils_1.isAppInstalled)({ appDir }))) {
72
+ console.log(`Application ${projectId} not installed`);
73
+ return;
74
+ }
75
+ try {
76
+ await (0, status_1.stopApp)({ projectId });
77
+ }
78
+ catch (_a) {
79
+ console.log('Failed to stop app, may be left running...');
80
+ }
81
+ // Delete application directory and backup
82
+ rimraf.sync(appDir);
83
+ rimraf.sync(`${appDir}${backup_1.BACKUP_EXT}`);
84
+ console.log('Uninstalled', projectId);
85
+ }
86
+ exports.uninstallApp = uninstallApp;
87
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/application-control/install.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
+ import { ModelDetails } from './types';
2
+ export declare function getAppModels(props: {
3
+ projectId: string;
4
+ }): Promise<ModelDetails[]>;
1
5
  export declare function addModel(props: {
2
6
  projectId: string;
3
7
  modelId: string;
@@ -6,6 +10,10 @@ export declare function removeModel(props: {
6
10
  projectId: string;
7
11
  modelId: string;
8
12
  }): Promise<void>;
13
+ export declare function replaceModels(props: {
14
+ projectId: string;
15
+ modelIds: string[];
16
+ }): Promise<void>;
9
17
  export declare function updateModels(props: {
10
18
  projectId: string;
11
19
  }): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/application-control/models.ts"],"names":[],"mappings":"AAGA,wBAAsB,QAAQ,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,iBAW3E;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,iBAU9E;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,iBAW9D"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/application-control/models.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,wBAAsB,YAAY,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,2BAmB9D;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,iBAW3E;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,iBAU9E;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,iBAiBnF;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,iBAW9D"}
@@ -1,8 +1,32 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateModels = exports.removeModel = exports.addModel = void 0;
3
+ exports.updateModels = exports.replaceModels = exports.removeModel = exports.addModel = exports.getAppModels = void 0;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
4
6
  const run_cli_cmd_1 = require("../util/run-cli-cmd");
7
+ const js_spawner_1 = require("../util/spawner/js-spawner");
5
8
  const utils_1 = require("./utils");
9
+ async function getAppModels(props) {
10
+ const { projectId } = props;
11
+ const appDir = (0, utils_1.getAppDir)(projectId);
12
+ if (!(await (0, utils_1.isAppInstalled)({ appDir }))) {
13
+ throw new Error('Application is not installed');
14
+ }
15
+ const appCfgPath = (0, path_1.join)(appDir, 'alwaysai.app.json');
16
+ if (!(0, fs_1.existsSync)(appCfgPath)) {
17
+ throw new Error('Application config not found!');
18
+ }
19
+ const appCfg = JSON.parse(await (0, js_spawner_1.JsSpawner)().readFile(appCfgPath));
20
+ const modelDetails = [];
21
+ if (!('models' in appCfg)) {
22
+ return modelDetails;
23
+ }
24
+ for (const model in appCfg['models']) {
25
+ modelDetails.push({ modelId: model, version: appCfg['models'][model] });
26
+ }
27
+ return modelDetails;
28
+ }
29
+ exports.getAppModels = getAppModels;
6
30
  async function addModel(props) {
7
31
  const { projectId, modelId } = props;
8
32
  const appDir = (0, utils_1.getAppDir)(projectId);
@@ -23,11 +47,30 @@ async function removeModel(props) {
23
47
  throw new Error('Application is not installed');
24
48
  }
25
49
  await (0, run_cli_cmd_1.runCliCmd)({
26
- cmd: ['app', 'models', 'remove', modelId],
50
+ cmd: ['app', 'models', 'remove', modelId, '--purge'],
27
51
  cwd: appDir,
28
52
  });
29
53
  }
30
54
  exports.removeModel = removeModel;
55
+ async function replaceModels(props) {
56
+ const { projectId, modelIds } = props;
57
+ const appDir = (0, utils_1.getAppDir)(projectId);
58
+ if (!(await (0, utils_1.isAppInstalled)({ appDir }))) {
59
+ throw new Error('Application is not installed');
60
+ }
61
+ await (0, run_cli_cmd_1.runCliCmd)({
62
+ cmd: ['app', 'models', 'remove-all', '--purge'],
63
+ cwd: appDir,
64
+ });
65
+ for (const modelId of modelIds) {
66
+ await (0, run_cli_cmd_1.runCliCmd)({
67
+ cmd: ['app', 'models', 'add', modelId],
68
+ cwd: appDir,
69
+ });
70
+ }
71
+ await (0, utils_1.buildApp)({ appDir });
72
+ }
73
+ exports.replaceModels = replaceModels;
31
74
  async function updateModels(props) {
32
75
  const { projectId } = props;
33
76
  const appDir = (0, utils_1.getAppDir)(projectId);
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/application-control/models.ts"],"names":[],"mappings":";;;AAAA,qDAAgD;AAChD,mCAA8D;AAEvD,KAAK,UAAU,QAAQ,CAAC,KAA6C;IAC1E,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IACrC,MAAM,MAAM,GAAG,IAAA,iBAAS,EAAC,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,CAAC,MAAM,IAAA,sBAAc,EAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE;QACvC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;KACjD;IACD,MAAM,IAAA,uBAAS,EAAC;QACd,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC;QACtC,GAAG,EAAE,MAAM;KACZ,CAAC,CAAC;IACH,MAAM,IAAA,gBAAQ,EAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AAC7B,CAAC;AAXD,4BAWC;AAEM,KAAK,UAAU,WAAW,CAAC,KAA6C;IAC7E,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IACrC,MAAM,MAAM,GAAG,IAAA,iBAAS,EAAC,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,CAAC,MAAM,IAAA,sBAAc,EAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE;QACvC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;KACjD;IACD,MAAM,IAAA,uBAAS,EAAC;QACd,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC;QACzC,GAAG,EAAE,MAAM;KACZ,CAAC,CAAC;AACL,CAAC;AAVD,kCAUC;AAEM,KAAK,UAAU,YAAY,CAAC,KAA4B;IAC7D,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAA,iBAAS,EAAC,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,CAAC,MAAM,IAAA,sBAAc,EAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE;QACvC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;KACjD;IACD,MAAM,IAAA,uBAAS,EAAC;QACd,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAChC,GAAG,EAAE,MAAM;KACZ,CAAC,CAAC;IACH,MAAM,IAAA,gBAAQ,EAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AAC7B,CAAC;AAXD,oCAWC"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/application-control/models.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,11 @@
1
1
  /// <reference types="node" />
2
- export declare type AppDetails = {
3
- projectId: string;
4
- version: string;
5
- };
6
- export declare function getInstalledApps(): Promise<AppDetails[]>;
7
- export declare function rollbackApp(props: {
8
- projectId: string;
9
- }): Promise<void>;
2
+ import { AppStatus } from './types';
10
3
  export declare function listAppReleases(props: {
11
4
  projectId: string;
12
5
  }): Promise<import("alwaysai/lib/util/rest-client").ReleaseHistoryArray>;
13
6
  export declare function listAppLatestRelease(props: {
14
7
  projectId: string;
15
8
  }): Promise<string | undefined>;
16
- export declare function installApp(props: {
17
- projectId: string;
18
- releaseHash: string;
19
- }): Promise<void>;
20
- export declare type ServiceState = 'Stopped' | 'Up' | 'Restarting';
21
- export declare type ServiceStatus = {
22
- name: string;
23
- state: ServiceState;
24
- };
25
- export declare type AppStatus = {
26
- appDetails: AppDetails;
27
- services: ServiceStatus[];
28
- };
29
9
  export declare function getAppStatus(props: {
30
10
  projectId: string;
31
11
  }): Promise<AppStatus>;
@@ -40,7 +20,7 @@ export declare function startApp(props: {
40
20
  export declare function stopApp(props: {
41
21
  projectId: string;
42
22
  }): Promise<void>;
43
- export declare function uninstallApp(props: {
23
+ export declare function restartApp(props: {
44
24
  projectId: string;
45
25
  }): Promise<void>;
46
- //# sourceMappingURL=application-control.d.ts.map
26
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/application-control/status.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,SAAS,EAA+B,MAAM,SAAS,CAAC;AAEjE,wBAAsB,eAAe,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,wEAIjE;AAED,wBAAsB,oBAAoB,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,+BAOtE;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CA+CnF;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAyBjC;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBhB;AAED,wBAAsB,OAAO,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBzE;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5E"}
@@ -1,55 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.uninstallApp = exports.stopApp = exports.startApp = exports.getAppLogs = exports.getAppStatus = exports.installApp = exports.listAppLatestRelease = exports.listAppReleases = exports.rollbackApp = exports.getInstalledApps = void 0;
3
+ exports.restartApp = exports.stopApp = exports.startApp = exports.getAppLogs = exports.getAppStatus = exports.listAppLatestRelease = exports.listAppReleases = void 0;
4
4
  const docker_compose_1 = require("docker-compose");
5
- const rimraf = require("rimraf");
6
- const fs = require("fs");
7
5
  const alwaysai_1 = require("alwaysai");
8
- const path_1 = require("path");
9
- const run_cli_cmd_1 = require("../util/run-cli-cmd");
10
6
  const docker_cmd_1 = require("../docker/docker-cmd");
11
7
  const js_spawner_1 = require("../util/spawner/js-spawner");
12
- const copy_dir_1 = require("../util/copy-dir");
13
8
  const utils_1 = require("./utils");
14
- const BACKUP_EXT = '.bak';
15
- async function getInstalledApps() {
16
- if (!fs.existsSync(utils_1.APP_ROOT)) {
17
- return [];
18
- }
19
- const projectIds = fs.readdirSync(utils_1.APP_ROOT).filter(file => {
20
- const isDir = fs.statSync(`${utils_1.APP_ROOT}/${file}`).isDirectory();
21
- const isBak = `${utils_1.APP_ROOT}/${file}`.includes(BACKUP_EXT);
22
- return isDir && !isBak;
23
- });
24
- const appDetails = [];
25
- for (const projectId of projectIds) {
26
- const appDir = (0, utils_1.getAppDir)(projectId);
27
- const version = await (0, utils_1.getAppVersion)({ appDir });
28
- appDetails.push({ projectId, version });
29
- }
30
- return appDetails;
31
- }
32
- exports.getInstalledApps = getInstalledApps;
33
- async function createAppBackup(props) {
34
- const { projectId } = props;
35
- const appDir = (0, utils_1.getAppDir)(projectId);
36
- const backupAppDir = `${appDir}${BACKUP_EXT}`;
37
- await (0, copy_dir_1.copyDir)({ srcPath: appDir, destPath: backupAppDir });
38
- console.log(`Backed up app ${projectId} to ${backupAppDir}`);
39
- }
40
- async function rollbackApp(props) {
41
- const { projectId } = props;
42
- const appDir = (0, utils_1.getAppDir)(projectId);
43
- const backupAppDir = `${appDir}${BACKUP_EXT}`;
44
- if (!fs.existsSync(backupAppDir)) {
45
- throw new Error(`Backup doesn't exist for ${projectId}`);
46
- }
47
- rimraf.sync(appDir);
48
- await (0, copy_dir_1.copyDir)({ srcPath: `${appDir}${BACKUP_EXT}`, destPath: appDir });
49
- await (0, utils_1.buildApp)({ appDir });
50
- console.log(`Rolled back app ${projectId} to previous version`);
51
- }
52
- exports.rollbackApp = rollbackApp;
53
9
  async function listAppReleases(props) {
54
10
  const { projectId } = props;
55
11
  const releaseHistory = await (0, alwaysai_1.fetchAppReleaseHistory)(projectId);
@@ -65,44 +21,6 @@ async function listAppLatestRelease(props) {
65
21
  return undefined;
66
22
  }
67
23
  exports.listAppLatestRelease = listAppLatestRelease;
68
- async function installApp(props) {
69
- const { projectId, releaseHash } = props;
70
- console.log(`Installing ${projectId}`);
71
- const appDir = (0, utils_1.getAppDir)(projectId);
72
- const TEMP_DIR = (0, path_1.join)(utils_1.APP_ROOT, 'temp');
73
- const spawner = (0, js_spawner_1.JsSpawner)();
74
- await spawner.mkdirp(TEMP_DIR);
75
- // TODO Check valid projectId
76
- // Check if app is installed
77
- if (await (0, utils_1.isAppInstalled)({ appDir })) {
78
- console.log('Application is already installed, updating');
79
- await createAppBackup({ projectId });
80
- await spawner.rimraf(appDir);
81
- }
82
- // Create app directory
83
- await spawner.mkdirp(appDir);
84
- // download the application
85
- await (0, run_cli_cmd_1.runCliCmd)({
86
- cmd: [
87
- 'release',
88
- 'pull',
89
- '--yes',
90
- '--project',
91
- projectId,
92
- '--releaseHash',
93
- releaseHash,
94
- ],
95
- cwd: TEMP_DIR,
96
- });
97
- // Unpack app package and move to install dir
98
- await spawner.untar(fs.createReadStream((0, path_1.join)(TEMP_DIR, `${releaseHash}.tgz`)), appDir);
99
- console.log(`Unpacked application to ${appDir}`);
100
- await (0, utils_1.setAppVersion)({ appDir, version: releaseHash });
101
- await (0, utils_1.buildApp)({ appDir });
102
- await spawner.rimraf(TEMP_DIR);
103
- console.log(`Installed ${projectId} to ${appDir}`);
104
- }
105
- exports.installApp = installApp;
106
24
  async function getAppStatus(props) {
107
25
  const { projectId } = props;
108
26
  const appDir = (0, utils_1.getAppDir)(projectId);
@@ -212,23 +130,10 @@ async function stopApp(props) {
212
130
  console.log('Stopped', projectId);
213
131
  }
214
132
  exports.stopApp = stopApp;
215
- async function uninstallApp(props) {
133
+ async function restartApp(props) {
216
134
  const { projectId } = props;
217
- const appDir = (0, utils_1.getAppDir)(projectId);
218
- if (!(await (0, utils_1.isAppInstalled)({ appDir }))) {
219
- console.log(`Application ${projectId} not installed`);
220
- return;
221
- }
222
- try {
223
- await stopApp({ projectId });
224
- }
225
- catch (_a) {
226
- console.log('Failed to stop app, may be left running...');
227
- }
228
- // Delete application directory and backup
229
- rimraf.sync(appDir);
230
- rimraf.sync(`${appDir}${BACKUP_EXT}`);
231
- console.log('Uninstalled', projectId);
135
+ await stopApp({ projectId });
136
+ await startApp({ projectId });
232
137
  }
233
- exports.uninstallApp = uninstallApp;
234
- //# sourceMappingURL=application-control.js.map
138
+ exports.restartApp = restartApp;
139
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/application-control/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export declare type AppDetails = {
2
+ projectId: string;
3
+ version: string;
4
+ };
5
+ export declare type ServiceState = 'Stopped' | 'Up' | 'Restarting';
6
+ export declare type ServiceStatus = {
7
+ name: string;
8
+ state: ServiceState;
9
+ };
10
+ export declare type AppStatus = {
11
+ appDetails: AppDetails;
12
+ services: ServiceStatus[];
13
+ };
14
+ export declare type ModelDetails = {
15
+ modelId: string;
16
+ version: number;
17
+ };
18
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/application-control/types.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAChE,oBAAY,YAAY,GAAG,SAAS,GAAG,IAAI,GAAG,YAAY,CAAC;AAC3D,oBAAY,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAAC;AAClE,oBAAY,SAAS,GAAG;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,aAAa,EAAE,CAAA;CAAE,CAAC;AAC9E,oBAAY,YAAY,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/application-control/types.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/application-control/utils.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,QAAQ,QAA8C,CAAC;AAIpE,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAOhF;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,iBAM7E;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,gBAK5D;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,iBAuBvD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/application-control/utils.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,QAAQ,QAAqC,CAAC;AAI3D,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAOhF;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,iBAM7E;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,gBAK5D;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,iBAuBvD"}
@@ -5,9 +5,9 @@ const docker_compose_1 = require("docker-compose");
5
5
  const path = require("path");
6
6
  const fs = require("fs");
7
7
  const js_spawner_1 = require("../util/spawner/js-spawner");
8
- const constants_1 = require("../constants");
8
+ const alwaysai_1 = require("alwaysai");
9
9
  const run_cli_cmd_1 = require("../util/run-cli-cmd");
10
- exports.APP_ROOT = path.join(constants_1.DOT_ALWAYSAI_DIR, 'applications');
10
+ exports.APP_ROOT = path.join(alwaysai_1.AAI_DIR, 'applications');
11
11
  const RELEASE_FILENAME = 'alwaysai.release.json';
12
12
  const DOCKER_COMPOSE_FILENAME = 'docker-compose.yaml';
13
13
  function getAppDir(projectId) {
@@ -41,7 +41,7 @@ exports.getAppVersion = getAppVersion;
41
41
  async function buildApp(props) {
42
42
  const { appDir } = props;
43
43
  await (0, run_cli_cmd_1.runCliCmd)({
44
- cmd: ['app', 'configure', '--yes', '--protocol', 'docker:'],
44
+ cmd: ['app', 'configure', '--yes', '--protocol', 'docker:', '--skip-model-sync'],
45
45
  cwd: appDir,
46
46
  });
47
47
  await (0, run_cli_cmd_1.runCliCmd)({ cmd: ['app', 'install', '--yes', '--clean', '--pull'], cwd: appDir });
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/application-control/utils.ts"],"names":[],"mappings":";;;AAAA,mDAAqC;AACrC,6BAA6B;AAC7B,yBAAyB;AAEzB,2DAAuD;AACvD,4CAAgD;AAChD,qDAAgD;AAEnC,QAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,4BAAgB,EAAE,cAAc,CAAC,CAAC;AACpE,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AACjD,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AAEtD,SAAgB,SAAS,CAAC,SAAiB;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAQ,EAAE,SAAS,CAAC,CAAC;AACxC,CAAC;AAFD,8BAEC;AAEM,KAAK,UAAU,cAAc,CAAC,KAAyB;IAC5D,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,0CAA0C;IAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QACzB,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAPD,wCAOC;AAEM,KAAK,UAAU,aAAa,CAAC,KAA0C;IAC5E,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAClC,8BAA8B;IAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,EAAE,OAAO,EAAE,CAAC;IAChC,MAAM,IAAA,sBAAS,GAAE,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC;AAND,sCAMC;AAEM,KAAK,UAAU,aAAa,CAAC,KAAyB;IAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,sBAAS,GAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IACxE,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC;AALD,sCAKC;AAEM,KAAK,UAAU,QAAQ,CAAC,KAAyB;IACtD,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,MAAM,IAAA,uBAAS,EAAC;QACd,GAAG,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC;QAC3D,GAAG,EAAE,MAAM;KACZ,CAAC,CAAC;IACH,MAAM,IAAA,uBAAS,EAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IAExF,4CAA4C;IAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,EAAE;QAC9D,MAAM,IAAA,uBAAS,EAAC;YACd,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,yBAAyB,CAAC;YAC1D,GAAG,EAAE,MAAM;SACZ,CAAC,CAAC;KACJ;IAED,MAAM,QAAQ,GAAG,MAAM,wBAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,IAAI,QAAQ,CAAC,QAAQ,KAAK,CAAC,EAAE;QAC3B,MAAM,IAAI,KAAK,CACb,uCAAuC,QAAQ,CAAC,GAAG,WAAW,QAAQ,CAAC,GAAG,EAAE,CAC7E,CAAC;KACH;AACH,CAAC;AAvBD,4BAuBC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/application-control/utils.ts"],"names":[],"mappings":";;;AAAA,mDAAqC;AACrC,6BAA6B;AAC7B,yBAAyB;AAEzB,2DAAuD;AACvD,uCAAmC;AACnC,qDAAgD;AAEnC,QAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAO,EAAE,cAAc,CAAC,CAAC;AAC3D,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AACjD,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AAEtD,SAAgB,SAAS,CAAC,SAAiB;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAQ,EAAE,SAAS,CAAC,CAAC;AACxC,CAAC;AAFD,8BAEC;AAEM,KAAK,UAAU,cAAc,CAAC,KAAyB;IAC5D,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,0CAA0C;IAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QACzB,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAPD,wCAOC;AAEM,KAAK,UAAU,aAAa,CAAC,KAA0C;IAC5E,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAClC,8BAA8B;IAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,EAAE,OAAO,EAAE,CAAC;IAChC,MAAM,IAAA,sBAAS,GAAE,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC;AAND,sCAMC;AAEM,KAAK,UAAU,aAAa,CAAC,KAAyB;IAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,sBAAS,GAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IACxE,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC;AALD,sCAKC;AAEM,KAAK,UAAU,QAAQ,CAAC,KAAyB;IACtD,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,MAAM,IAAA,uBAAS,EAAC;QACd,GAAG,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,mBAAmB,CAAC;QAChF,GAAG,EAAE,MAAM;KACZ,CAAC,CAAC;IACH,MAAM,IAAA,uBAAS,EAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IAExF,4CAA4C;IAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,EAAE;QAC9D,MAAM,IAAA,uBAAS,EAAC;YACd,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,yBAAyB,CAAC;YAC1D,GAAG,EAAE,MAAM;SACZ,CAAC,CAAC;KACJ;IAED,MAAM,QAAQ,GAAG,MAAM,wBAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,IAAI,QAAQ,CAAC,QAAQ,KAAK,CAAC,EAAE;QAC3B,MAAM,IAAI,KAAK,CACb,uCAAuC,QAAQ,CAAC,GAAG,WAAW,QAAQ,CAAC,GAAG,EAAE,CAC7E,CAAC;KACH;AACH,CAAC;AAvBD,4BAuBC"}
@@ -2,7 +2,9 @@ export declare class DeviceAgentCloudConnection {
2
2
  device: any;
3
3
  private clientId;
4
4
  private host;
5
+ private publishInterval;
5
6
  constructor();
7
+ getPublishInterval(): number;
6
8
  getClientId(): string;
7
9
  publishMessage(topic: string, message: string): void;
8
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"device-agent-cloud-connection.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/device-agent-cloud-connection.ts"],"names":[],"mappings":"AAQA,qBAAa,0BAA0B;IAC9B,MAAM,MAAiB;IAC9B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,IAAI,CAA2B;;IAehC,WAAW;IAIX,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAIrD;AAED,wBAAgB,4BAA4B,SAgB3C"}
1
+ {"version":3,"file":"device-agent-cloud-connection.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/device-agent-cloud-connection.ts"],"names":[],"mappings":"AAaA,qBAAa,0BAA0B;IAC9B,MAAM,MAAiB;IAC9B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,eAAe,CAAQ;;IAgBxB,kBAAkB;IAIlB,WAAW;IAIX,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAIrD;AAED,wBAAgB,4BAA4B,SAqE3C"}
@@ -4,11 +4,16 @@ exports.runDeviceAgentCloudInterface = exports.DeviceAgentCloudConnection = void
4
4
  const awsIot = require('aws-iot-device-sdk');
5
5
  const urls_1 = require("../util/urls");
6
6
  const directories_1 = require("../util/directories");
7
+ const status_1 = require("../application-control/status");
8
+ const install_1 = require("../application-control/install");
9
+ const device_control_1 = require("../device-control/device-control");
10
+ const get_device_id_1 = require("../util/get-device-id");
7
11
  class DeviceAgentCloudConnection {
8
12
  constructor() {
9
13
  this.device = awsIot.device;
10
- this.clientId = 'DEVICE_AGENT'; // TODO: use CLI to get either the username or the device ID? how do we determine the device ID in this case?
14
+ this.clientId = (0, get_device_id_1.getDeviceId)();
11
15
  this.host = (0, urls_1.getIoTCoreEndpointUrl)();
16
+ this.publishInterval = 1000;
12
17
  this.device = awsIot.device({
13
18
  keyPath: (0, directories_1.getPrivateKeyFilePath)(),
14
19
  certPath: (0, directories_1.getCertificateFilePath)(),
@@ -18,18 +23,70 @@ class DeviceAgentCloudConnection {
18
23
  });
19
24
  // TODO: subscribe to topics here
20
25
  this.device.subscribe('command');
26
+ this.publishInterval = this.publishInterval;
27
+ }
28
+ getPublishInterval() {
29
+ return this.publishInterval;
21
30
  }
22
31
  getClientId() {
23
32
  return this.clientId;
24
33
  }
25
34
  publishMessage(topic, message) {
26
35
  console.log('publishing message ', message);
27
- this.device.publish(topic, JSON.stringify({ message }));
36
+ this.device.publish(topic, message);
28
37
  }
29
38
  }
30
39
  exports.DeviceAgentCloudConnection = DeviceAgentCloudConnection;
31
40
  function runDeviceAgentCloudInterface() {
32
41
  const deviceAgent = new DeviceAgentCloudConnection();
42
+ async function getAppStateMessage() {
43
+ const appStateMessage = [];
44
+ const installedApps = await (0, install_1.getInstalledApps)();
45
+ for (const app of installedApps) {
46
+ const projectId = app['projectId'];
47
+ const status = await (0, status_1.getAppStatus)({ projectId });
48
+ appStateMessage.push(status);
49
+ }
50
+ const applicationStatePackage = {
51
+ applicationState: appStateMessage,
52
+ };
53
+ return applicationStatePackage;
54
+ }
55
+ const publishAppState = setInterval(async function () {
56
+ const topic = `device/${deviceAgent.getClientId()}/topic/application-management`;
57
+ const appStateMessage = await getAppStateMessage();
58
+ const appStatePackage = {
59
+ timestamp: new Date().toUTCString(),
60
+ deviceId: deviceAgent.getClientId(),
61
+ topic,
62
+ payload: appStateMessage,
63
+ };
64
+ deviceAgent.publishMessage(topic, JSON.stringify({ appStatePackage }));
65
+ }, deviceAgent.getPublishInterval());
66
+ async function getDeviceStatsMessage() {
67
+ const cpuUsage = await (0, device_control_1.getCpuUtil)();
68
+ const diskUtil = await (0, device_control_1.getDiskUtil)();
69
+ const memUtil = await (0, device_control_1.getMemUtil)();
70
+ const deviceStatsMessage = {
71
+ deviceStats: {
72
+ cpuUsage,
73
+ diskUtil,
74
+ freeMemoryPercentage: memUtil,
75
+ },
76
+ };
77
+ return deviceStatsMessage;
78
+ }
79
+ const publishDeviceStats = setInterval(async function () {
80
+ const topic = `device/${deviceAgent.getClientId()}/topic/device-management`;
81
+ const deviceStatsMessage = await getDeviceStatsMessage();
82
+ const deviceStatsPackage = {
83
+ timestamp: new Date().toUTCString(),
84
+ deviceId: deviceAgent.getClientId(),
85
+ topic,
86
+ payload: deviceStatsMessage,
87
+ };
88
+ deviceAgent.publishMessage(topic, JSON.stringify({ deviceStatsPackage }));
89
+ }, deviceAgent.getPublishInterval());
33
90
  deviceAgent.device.on('connect', function () {
34
91
  deviceAgent.publishMessage('connection', deviceAgent.getClientId());
35
92
  console.log('Device Agent has connected to the cloud');