@alwaysai/device-agent 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/lib/application-control/config.d.ts +0 -1
  2. package/lib/application-control/config.d.ts.map +1 -1
  3. package/lib/application-control/config.js +15 -29
  4. package/lib/application-control/config.js.map +1 -1
  5. package/lib/application-control/environment-variables.d.ts +7 -3
  6. package/lib/application-control/environment-variables.d.ts.map +1 -1
  7. package/lib/application-control/environment-variables.js +71 -35
  8. package/lib/application-control/environment-variables.js.map +1 -1
  9. package/lib/application-control/environment-variables.test.d.ts +2 -0
  10. package/lib/application-control/environment-variables.test.d.ts.map +1 -0
  11. package/lib/application-control/environment-variables.test.js +163 -0
  12. package/lib/application-control/environment-variables.test.js.map +1 -0
  13. package/lib/application-control/index.d.ts +3 -3
  14. package/lib/application-control/index.d.ts.map +1 -1
  15. package/lib/application-control/index.js +1 -3
  16. package/lib/application-control/index.js.map +1 -1
  17. package/lib/application-control/models.d.ts +0 -1
  18. package/lib/application-control/models.d.ts.map +1 -1
  19. package/lib/application-control/models.js +12 -26
  20. package/lib/application-control/models.js.map +1 -1
  21. package/lib/application-control/status.d.ts +3 -0
  22. package/lib/application-control/status.d.ts.map +1 -1
  23. package/lib/application-control/status.js +19 -1
  24. package/lib/application-control/status.js.map +1 -1
  25. package/lib/application-control/utils.d.ts.map +1 -1
  26. package/lib/application-control/utils.js +2 -2
  27. package/lib/application-control/utils.js.map +1 -1
  28. package/lib/cloud-connection/device-agent-cloud-connection.d.ts +6 -3
  29. package/lib/cloud-connection/device-agent-cloud-connection.d.ts.map +1 -1
  30. package/lib/cloud-connection/device-agent-cloud-connection.js +205 -151
  31. package/lib/cloud-connection/device-agent-cloud-connection.js.map +1 -1
  32. package/lib/cloud-connection/live-updates-handler.d.ts +3 -0
  33. package/lib/cloud-connection/live-updates-handler.d.ts.map +1 -1
  34. package/lib/cloud-connection/live-updates-handler.js +23 -7
  35. package/lib/cloud-connection/live-updates-handler.js.map +1 -1
  36. package/lib/cloud-connection/live-updates-handler.test.d.ts +2 -0
  37. package/lib/cloud-connection/live-updates-handler.test.d.ts.map +1 -0
  38. package/lib/cloud-connection/live-updates-handler.test.js +57 -0
  39. package/lib/cloud-connection/live-updates-handler.test.js.map +1 -0
  40. package/lib/cloud-connection/passthrough-handler.d.ts.map +1 -1
  41. package/lib/cloud-connection/passthrough-handler.js +6 -3
  42. package/lib/cloud-connection/passthrough-handler.js.map +1 -1
  43. package/lib/cloud-connection/shadow-handler.d.ts +11 -3
  44. package/lib/cloud-connection/shadow-handler.d.ts.map +1 -1
  45. package/lib/cloud-connection/shadow-handler.js +22 -7
  46. package/lib/cloud-connection/shadow-handler.js.map +1 -1
  47. package/lib/cloud-connection/shadow-handler.test.js +313 -228
  48. package/lib/cloud-connection/shadow-handler.test.js.map +1 -1
  49. package/lib/cloud-connection/shadow.js +1 -1
  50. package/lib/cloud-connection/shadow.js.map +1 -1
  51. package/lib/environment.d.ts +1 -0
  52. package/lib/environment.d.ts.map +1 -1
  53. package/lib/environment.js +2 -1
  54. package/lib/environment.js.map +1 -1
  55. package/lib/infrastructure/agent-config.d.ts +3 -1
  56. package/lib/infrastructure/agent-config.d.ts.map +1 -1
  57. package/lib/subcommands/app/env-vars.d.ts +1 -1
  58. package/lib/subcommands/app/env-vars.d.ts.map +1 -1
  59. package/lib/subcommands/app/env-vars.js +32 -5
  60. package/lib/subcommands/app/env-vars.js.map +1 -1
  61. package/lib/subcommands/app/index.d.ts.map +1 -1
  62. package/lib/subcommands/app/index.js +4 -1
  63. package/lib/subcommands/app/index.js.map +1 -1
  64. package/lib/subcommands/app/models.d.ts.map +1 -1
  65. package/lib/subcommands/app/models.js +6 -1
  66. package/lib/subcommands/app/models.js.map +1 -1
  67. package/lib/subcommands/app/shadow.d.ts +7 -0
  68. package/lib/subcommands/app/shadow.d.ts.map +1 -0
  69. package/lib/subcommands/app/shadow.js +48 -0
  70. package/lib/subcommands/app/shadow.js.map +1 -0
  71. package/lib/subcommands/app/version.js +2 -2
  72. package/lib/subcommands/app/version.js.map +1 -1
  73. package/lib/util/cloud-mode-ready.d.ts +2 -0
  74. package/lib/util/cloud-mode-ready.d.ts.map +1 -0
  75. package/lib/util/cloud-mode-ready.js +22 -0
  76. package/lib/util/cloud-mode-ready.js.map +1 -0
  77. package/package.json +1 -1
  78. package/readme.md +2 -2
  79. package/src/application-control/config.ts +30 -31
  80. package/src/application-control/environment-variables.test.ts +171 -0
  81. package/src/application-control/environment-variables.ts +102 -43
  82. package/src/application-control/index.ts +3 -9
  83. package/src/application-control/models.ts +14 -29
  84. package/src/application-control/status.ts +20 -0
  85. package/src/application-control/utils.ts +4 -2
  86. package/src/cloud-connection/device-agent-cloud-connection.ts +222 -153
  87. package/src/cloud-connection/live-updates-handler.test.ts +68 -0
  88. package/src/cloud-connection/live-updates-handler.ts +30 -7
  89. package/src/cloud-connection/passthrough-handler.ts +10 -3
  90. package/src/cloud-connection/shadow-handler.test.ts +329 -239
  91. package/src/cloud-connection/shadow-handler.ts +38 -12
  92. package/src/cloud-connection/shadow.ts +1 -1
  93. package/src/environment.ts +2 -0
  94. package/src/infrastructure/agent-config.ts +1 -1
  95. package/src/subcommands/app/env-vars.ts +38 -8
  96. package/src/subcommands/app/index.ts +4 -1
  97. package/src/subcommands/app/models.ts +10 -1
  98. package/src/subcommands/app/shadow.ts +48 -0
  99. package/src/subcommands/app/version.ts +2 -2
  100. package/src/util/cloud-mode-ready.ts +23 -0
@@ -1 +1 @@
1
- {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":";AAEA,eAAO,MAAM,oBAAoB,iBAEhC,CAAC;AACF,eAAO,MAAM,oBAAoB,SAEhC,CAAC;AACF,eAAO,MAAM,0BAA0B,oBACC,CAAC;AACzC,eAAO,MAAM,kBAAkB,oBAAiC,CAAC;AACjE,eAAO,MAAM,uBAAuB,oBAAsC,CAAC;AAC3E,eAAO,MAAM,8BAA8B,SAE1C,CAAC"}
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":";AAEA,eAAO,MAAM,oBAAoB,iBAEhC,CAAC;AACF,eAAO,MAAM,oBAAoB,SAEhC,CAAC;AACF,eAAO,MAAM,0BAA0B,oBACC,CAAC;AACzC,eAAO,MAAM,kBAAkB,oBAAiC,CAAC;AACjE,eAAO,MAAM,uBAAuB,oBAAsC,CAAC;AAC3E,eAAO,MAAM,8BAA8B,SAE1C,CAAC;AACF,eAAO,MAAM,gCAAgC,oBACC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ALWAYSAI_ANALYTICS_PASSTHROUGH = exports.ALWAYSAI_LOG_TO_CONSOLE = exports.ALWAYSAI_LOG_LEVEL = exports.ALWAYSAI_DEVICE_AGENT_MODE = exports.ALWAYSAI_SHOW_HIDDEN = exports.ALWAYSAI_OS_PLATFORM = void 0;
3
+ exports.ALWAYSAI_LIVE_UPDATES_TIMEOUT_MS = exports.ALWAYSAI_ANALYTICS_PASSTHROUGH = exports.ALWAYSAI_LOG_TO_CONSOLE = exports.ALWAYSAI_LOG_LEVEL = exports.ALWAYSAI_DEVICE_AGENT_MODE = exports.ALWAYSAI_SHOW_HIDDEN = exports.ALWAYSAI_OS_PLATFORM = void 0;
4
4
  const os_1 = require("os");
5
5
  exports.ALWAYSAI_OS_PLATFORM = parseOsPlatform(process.env.ALWAYSAI_OS_PLATFORM);
6
6
  exports.ALWAYSAI_SHOW_HIDDEN = parseBoolean(process.env.ALWAYSAI_SHOW_HIDDEN);
@@ -8,6 +8,7 @@ exports.ALWAYSAI_DEVICE_AGENT_MODE = process.env.ALWAYSAI_DEVICE_AGENT_MODE;
8
8
  exports.ALWAYSAI_LOG_LEVEL = process.env.ALWAYSAI_LOG_LEVEL;
9
9
  exports.ALWAYSAI_LOG_TO_CONSOLE = process.env.ALWAYSAI_LOG_TO_CONSOLE;
10
10
  exports.ALWAYSAI_ANALYTICS_PASSTHROUGH = parseBoolean(process.env.ALWAYSAI_ANALYTICS_PASSTHROUGH);
11
+ exports.ALWAYSAI_LIVE_UPDATES_TIMEOUT_MS = process.env.ALWAYSAI_LIVE_UPDATES_TIMEOUT_MS;
11
12
  function parseOsPlatform(str) {
12
13
  switch (str) {
13
14
  case 'win32':
@@ -1 +1 @@
1
- {"version":3,"file":"environment.js","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":";;;AAAA,2BAA8B;AAEjB,QAAA,oBAAoB,GAAG,eAAe,CACjD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CACjC,CAAC;AACW,QAAA,oBAAoB,GAAG,YAAY,CAC9C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CACjC,CAAC;AACW,QAAA,0BAA0B,GACrC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;AAC5B,QAAA,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;AACpD,QAAA,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;AAC9D,QAAA,8BAA8B,GAAG,YAAY,CACxD,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAC3C,CAAC;AAEF,SAAS,eAAe,CAAC,GAAuB;IAC9C,QAAQ,GAAG,EAAE;QACX,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC,CAAC;YACZ,OAAO,GAAG,CAAC;SACZ;QACD;YACE,OAAO,IAAA,aAAQ,GAAE,CAAC;KACrB;AACH,CAAC;AAED,SAAS,YAAY,CAAC,GAAuB;IAC3C,OAAO,GAAG,KAAK,GAAG,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":";;;AAAA,2BAA8B;AAEjB,QAAA,oBAAoB,GAAG,eAAe,CACjD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CACjC,CAAC;AACW,QAAA,oBAAoB,GAAG,YAAY,CAC9C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CACjC,CAAC;AACW,QAAA,0BAA0B,GACrC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;AAC5B,QAAA,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;AACpD,QAAA,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;AAC9D,QAAA,8BAA8B,GAAG,YAAY,CACxD,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAC3C,CAAC;AACW,QAAA,gCAAgC,GAC3C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC;AAE/C,SAAS,eAAe,CAAC,GAAuB;IAC9C,QAAQ,GAAG,EAAE;QACX,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC,CAAC;YACZ,OAAO,GAAG,CAAC;SACZ;QACD;YACE,OAAO,IAAA,aAAQ,GAAE,CAAC;KACrB;AACH,CAAC;AAED,SAAS,YAAY,CAAC,GAAuB;IAC3C,OAAO,GAAG,KAAK,GAAG,CAAC;AACrB,CAAC"}
@@ -22,7 +22,9 @@ export interface AgentJsonFileReturnType extends ConfigFileSchemaReturnType<Agen
22
22
  setAppInstalling: any;
23
23
  setAppInstalled: any;
24
24
  setAppUninstalled: any;
25
- getAppVersion: any;
25
+ getAppVersion: (props: {
26
+ projectId: string;
27
+ }) => Promise<string>;
26
28
  setAppBackup: any;
27
29
  getAppBackup: any;
28
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agent-config.d.ts","sourceRoot":"","sources":["../../src/infrastructure/agent-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,0BAA0B,EAC3B,MAAM,yBAAyB,CAAC;AAKjC,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,kBAAkB,EAAE,CAAC;CACpC;AAuCD,MAAM,WAAW,uBACf,SAAQ,0BAA0B,CAAC,WAAW,CAAC;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC7C,YAAY,MAAC;IACb,MAAM,MAAC;IACP,YAAY,MAAC;IACb,UAAU,MAAC;IACX,SAAS,MAAC;IACV,gBAAgB,MAAC;IACjB,eAAe,MAAC;IAChB,iBAAiB,MAAC;IAClB,aAAa,MAAC;IACd,YAAY,MAAC;IACb,YAAY,MAAC;CACd;AAED,wBAAgB,eAAe,CAC7B,GAAG,SAAsB,GACxB,uBAAuB,CAmKzB"}
1
+ {"version":3,"file":"agent-config.d.ts","sourceRoot":"","sources":["../../src/infrastructure/agent-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,0BAA0B,EAC3B,MAAM,yBAAyB,CAAC;AAKjC,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,kBAAkB,EAAE,CAAC;CACpC;AAuCD,MAAM,WAAW,uBACf,SAAQ,0BAA0B,CAAC,WAAW,CAAC;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC7C,YAAY,MAAC;IACb,MAAM,MAAC;IACP,YAAY,MAAC;IACb,UAAU,MAAC;IACX,SAAS,MAAC;IACV,gBAAgB,MAAC;IACjB,eAAe,MAAC;IAChB,iBAAiB,MAAC;IAClB,aAAa,EAAE,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACjE,YAAY,MAAC;IACb,YAAY,MAAC;CACd;AAED,wBAAgB,eAAe,CAC7B,GAAG,SAAsB,GACxB,uBAAuB,CAmKzB"}
@@ -3,6 +3,6 @@ export declare const getAllEnvsCliLeaf: import("@alwaysai/alwayscli/lib/types").
3
3
  }, import("@alwaysai/alwayscli").CliInput<undefined, false>>;
4
4
  export declare const setEnvCliLeaf: import("@alwaysai/alwayscli/lib/types").CliLeaf<import("@alwaysai/alwayscli").CliInput<string[], true>, {
5
5
  project: import("@alwaysai/alwayscli").CliInput<string, true>;
6
- service: import("@alwaysai/alwayscli").CliInput<string | undefined, false>;
6
+ service: import("@alwaysai/alwayscli").CliInput<string, true>;
7
7
  }, import("@alwaysai/alwayscli").CliInput<undefined, false>>;
8
8
  //# sourceMappingURL=env-vars.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"env-vars.d.ts","sourceRoot":"","sources":["../../../src/subcommands/app/env-vars.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,iBAAiB;;4DAa5B,CAAC;AAEH,eAAO,MAAM,aAAa;;;4DAsBxB,CAAC"}
1
+ {"version":3,"file":"env-vars.d.ts","sourceRoot":"","sources":["../../../src/subcommands/app/env-vars.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,iBAAiB;;4DAc5B,CAAC;AAEH,eAAO,MAAM,aAAa;;;4DAiDxB,CAAC"}
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.setEnvCliLeaf = exports.getAllEnvsCliLeaf = void 0;
4
4
  const alwayscli_1 = require("@alwaysai/alwayscli");
5
5
  const application_control_1 = require("../../application-control");
6
- const logger_1 = require("../../util/logger");
6
+ const device_agent_cloud_connection_1 = require("../../cloud-connection/device-agent-cloud-connection");
7
+ const sleep_1 = require("../../util/sleep");
7
8
  exports.getAllEnvsCliLeaf = (0, alwayscli_1.CliLeaf)({
8
9
  name: 'get-all-envs',
9
10
  description: 'Get environment variables for an application',
@@ -15,7 +16,8 @@ exports.getAllEnvsCliLeaf = (0, alwayscli_1.CliLeaf)({
15
16
  },
16
17
  async action(_, opts) {
17
18
  const { project } = opts;
18
- logger_1.logger.info(await (0, application_control_1.getAllEnvs)({ projectId: project }));
19
+ const envVars = await (0, application_control_1.getAllEnvs)({ projectId: project });
20
+ console.log(JSON.stringify(envVars, null, 2));
19
21
  }
20
22
  });
21
23
  exports.setEnvCliLeaf = (0, alwayscli_1.CliLeaf)({
@@ -31,13 +33,38 @@ exports.setEnvCliLeaf = (0, alwayscli_1.CliLeaf)({
31
33
  required: true
32
34
  }),
33
35
  service: (0, alwayscli_1.CliStringInput)({
34
- description: 'The name of the docker-compose service to apply environment variable to',
35
- required: false
36
+ description: 'Docker compose service to set environment variables for',
37
+ required: true
36
38
  })
37
39
  },
38
40
  async action(args, opts) {
39
41
  const { project, service } = opts;
40
- await (0, application_control_1.setEnv)({ projectId: project, vars: args, service });
42
+ const envVars = { [service]: {} };
43
+ args.forEach((arg) => {
44
+ const nameVal = arg.split('=');
45
+ if (nameVal.length !== 2) {
46
+ throw new alwayscli_1.CliTerseError(`Invalid argument: ${arg}`);
47
+ }
48
+ envVars[service][nameVal[0]] = nameVal[1];
49
+ });
50
+ const deviceAgent = new device_agent_cloud_connection_1.DeviceAgentCloudConnection();
51
+ await deviceAgent.setupHandlers();
52
+ const topic = deviceAgent.getShadowTopics().projects.updateDelta;
53
+ const message = {
54
+ version: 3,
55
+ timestamp: 0,
56
+ state: {
57
+ [project]: {
58
+ envVars
59
+ }
60
+ },
61
+ clientToken: 'not-self'
62
+ };
63
+ await deviceAgent.handleMessage(topic, message);
64
+ while (deviceAgent.isCmdInProgress(project)) {
65
+ await (0, sleep_1.default)(1000);
66
+ }
67
+ await deviceAgent.stop();
41
68
  }
42
69
  });
43
70
  //# sourceMappingURL=env-vars.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"env-vars.js","sourceRoot":"","sources":["../../../src/subcommands/app/env-vars.ts"],"names":[],"mappings":";;;AAAA,mDAI6B;AAC7B,mEAA+D;AAC/D,8CAA2C;AAE9B,QAAA,iBAAiB,GAAG,IAAA,mBAAO,EAAC;IACvC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,8CAA8C;IAC3D,WAAW,EAAE;QACX,OAAO,EAAE,IAAA,0BAAc,EAAC;YACtB,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACD,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI;QAClB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,eAAM,CAAC,IAAI,CAAC,MAAM,IAAA,gCAAU,EAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;CACF,CAAC,CAAC;AAEU,QAAA,aAAa,GAAG,IAAA,mBAAO,EAAC;IACnC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,yCAAyC;IACtD,eAAe,EAAE,IAAA,+BAAmB,EAAC;QACnC,WAAW,EAAE,iCAAiC;QAC9C,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,WAAW,EAAE;QACX,OAAO,EAAE,IAAA,0BAAc,EAAC;YACtB,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,OAAO,EAAE,IAAA,0BAAc,EAAC;YACtB,WAAW,EACT,yEAAyE;YAC3E,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH;IACD,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI;QACrB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAClC,MAAM,IAAA,4BAAM,EAAC,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"env-vars.js","sourceRoot":"","sources":["../../../src/subcommands/app/env-vars.ts"],"names":[],"mappings":";;;AAAA,mDAK6B;AAC7B,mEAAgE;AAChE,wGAAkG;AAClG,4CAAqC;AAExB,QAAA,iBAAiB,GAAG,IAAA,mBAAO,EAAC;IACvC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,8CAA8C;IAC3D,WAAW,EAAE;QACX,OAAO,EAAE,IAAA,0BAAc,EAAC;YACtB,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACD,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI;QAClB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,OAAO,GAAG,MAAM,IAAA,gCAAU,EAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;CACF,CAAC,CAAC;AAEU,QAAA,aAAa,GAAG,IAAA,mBAAO,EAAC;IACnC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,yCAAyC;IACtD,eAAe,EAAE,IAAA,+BAAmB,EAAC;QACnC,WAAW,EAAE,iCAAiC;QAC9C,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,WAAW,EAAE;QACX,OAAO,EAAE,IAAA,0BAAc,EAAC;YACtB,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,OAAO,EAAE,IAAA,0BAAc,EAAC;YACtB,WAAW,EAAE,yDAAyD;YACtE,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACD,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI;QACrB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAClC,MAAM,OAAO,GAAY,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;YAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBACxB,MAAM,IAAI,yBAAa,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;aACrD;YACD,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,0DAA0B,EAAE,CAAC;QACrD,MAAM,WAAW,CAAC,aAAa,EAAE,CAAC;QAElC,MAAM,KAAK,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QAEjE,MAAM,OAAO,GAAG;YACd,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,CAAC;YACZ,KAAK,EAAE;gBACL,CAAC,OAAO,CAAC,EAAE;oBACT,OAAO;iBACR;aACF;YACD,WAAW,EAAE,UAAU;SACxB,CAAC;QAEF,MAAM,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;YAC3C,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC;SACnB;QACD,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/subcommands/app/index.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,YAAY,mDAqBvB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/subcommands/app/index.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,YAAY,mDAuBvB,CAAC"}
@@ -6,6 +6,7 @@ const env_vars_1 = require("./env-vars");
6
6
  const models_1 = require("./models");
7
7
  const status_1 = require("./status");
8
8
  const version_1 = require("./version");
9
+ const shadow_1 = require("./shadow");
9
10
  exports.appCliBranch = (0, alwayscli_1.CliBranch)({
10
11
  name: 'app',
11
12
  description: 'Manage alwaysAI applications',
@@ -25,7 +26,9 @@ exports.appCliBranch = (0, alwayscli_1.CliBranch)({
25
26
  models_1.replaceModelsCliLeaf,
26
27
  models_1.updateModelsCliLeaf,
27
28
  env_vars_1.getAllEnvsCliLeaf,
28
- env_vars_1.setEnvCliLeaf
29
+ env_vars_1.setEnvCliLeaf,
30
+ shadow_1.getShadowCliLeaf,
31
+ shadow_1.updateShadowCliLeaf
29
32
  ]
30
33
  });
31
34
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/subcommands/app/index.ts"],"names":[],"mappings":";;;AAAA,mDAAgD;AAChD,yCAA8D;AAC9D,qCAMkB;AAClB,qCAMkB;AAClB,uCAKmB;AAEN,QAAA,YAAY,GAAG,IAAA,qBAAS,EAAC;IACpC,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,8BAA8B;IAC3C,WAAW,EAAE;QACX,yBAAe;QACf,2BAAiB;QACjB,4BAAmB;QACnB,wBAAe;QACf,uBAAc;QACd,0BAAiB;QACjB,0BAAiB;QACjB,6BAAmB;QACnB,4BAAkB;QAClB,6BAAoB;QACpB,wBAAe;QACf,2BAAkB;QAClB,6BAAoB;QACpB,4BAAmB;QACnB,4BAAiB;QACjB,wBAAa;KACd;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/subcommands/app/index.ts"],"names":[],"mappings":";;;AAAA,mDAAgD;AAChD,yCAA8D;AAC9D,qCAMkB;AAClB,qCAMkB;AAClB,uCAKmB;AACnB,qCAAiE;AAEpD,QAAA,YAAY,GAAG,IAAA,qBAAS,EAAC;IACpC,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,8BAA8B;IAC3C,WAAW,EAAE;QACX,yBAAe;QACf,2BAAiB;QACjB,4BAAmB;QACnB,wBAAe;QACf,uBAAc;QACd,0BAAiB;QACjB,0BAAiB;QACjB,6BAAmB;QACnB,4BAAkB;QAClB,6BAAoB;QACpB,wBAAe;QACf,2BAAkB;QAClB,6BAAoB;QACpB,4BAAmB;QACnB,4BAAiB;QACjB,wBAAa;QACb,yBAAgB;QAChB,4BAAmB;KACpB;CACF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/subcommands/app/models.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,oBAAoB;;4DAc/B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;4DA4C1B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;4DAiB7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;4DAiB/B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;4DAa9B,CAAC"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/subcommands/app/models.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,oBAAoB;;4DAc/B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;4DA4C1B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;4DAkB7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;4DAqB/B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;4DAiB9B,CAAC"}
@@ -58,7 +58,7 @@ exports.addModelCliLeaf = (0, alwayscli_1.CliLeaf)({
58
58
  while (deviceAgent.isCmdInProgress(project)) {
59
59
  await (0, sleep_1.default)(1000);
60
60
  }
61
- deviceAgent.stop();
61
+ await deviceAgent.stop();
62
62
  }
63
63
  });
64
64
  exports.removeModelCliLeaf = (0, alwayscli_1.CliLeaf)({
@@ -76,6 +76,7 @@ exports.removeModelCliLeaf = (0, alwayscli_1.CliLeaf)({
76
76
  },
77
77
  async action(_, opts) {
78
78
  const { project, model } = opts;
79
+ // TODO: Replace with handleMessage()
79
80
  await (0, application_control_1.removeModel)({ projectId: project, modelId: model });
80
81
  }
81
82
  });
@@ -92,8 +93,10 @@ exports.replaceModelsCliLeaf = (0, alwayscli_1.CliLeaf)({
92
93
  required: true
93
94
  })
94
95
  },
96
+ hidden: true,
95
97
  async action(_, opts) {
96
98
  const { project, models } = opts;
99
+ console.log('This command is deprecated and will be removed in a future release');
97
100
  await (0, application_control_1.replaceModels)({ projectId: project, modelIds: models });
98
101
  }
99
102
  });
@@ -106,8 +109,10 @@ exports.updateModelsCliLeaf = (0, alwayscli_1.CliLeaf)({
106
109
  required: true
107
110
  })
108
111
  },
112
+ hidden: true,
109
113
  async action(_, opts) {
110
114
  const { project } = opts;
115
+ console.log('This command is deprecated and will be removed in a future release');
111
116
  await (0, application_control_1.updateModels)({ projectId: project });
112
117
  }
113
118
  });
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/subcommands/app/models.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/subcommands/app/models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare const getShadowCliLeaf: import("@alwaysai/alwayscli/lib/types").CliLeaf<import("@alwaysai/alwayscli").CliInput<undefined, false>, {
2
+ project: import("@alwaysai/alwayscli").CliInput<string, true>;
3
+ }, import("@alwaysai/alwayscli").CliInput<undefined, false>>;
4
+ export declare const updateShadowCliLeaf: import("@alwaysai/alwayscli/lib/types").CliLeaf<import("@alwaysai/alwayscli").CliInput<undefined, false>, {
5
+ project: import("@alwaysai/alwayscli").CliInput<string, true>;
6
+ }, import("@alwaysai/alwayscli").CliInput<undefined, false>>;
7
+ //# sourceMappingURL=shadow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadow.d.ts","sourceRoot":"","sources":["../../../src/subcommands/app/shadow.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB;;4DAsB3B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;4DAmB9B,CAAC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateShadowCliLeaf = exports.getShadowCliLeaf = void 0;
4
+ const alwayscli_1 = require("@alwaysai/alwayscli");
5
+ const device_agent_cloud_connection_1 = require("../../cloud-connection/device-agent-cloud-connection");
6
+ const sleep_1 = require("../../util/sleep");
7
+ exports.getShadowCliLeaf = (0, alwayscli_1.CliLeaf)({
8
+ name: 'get-shadow',
9
+ description: 'Get the current shadow',
10
+ namedInputs: {
11
+ project: (0, alwayscli_1.CliStringInput)({
12
+ description: 'Project Id',
13
+ required: true
14
+ })
15
+ },
16
+ async action(_, opts) {
17
+ const { project } = opts;
18
+ const deviceAgent = new device_agent_cloud_connection_1.DeviceAgentCloudConnection();
19
+ await deviceAgent.setupHandlers();
20
+ // The Device Agent always gets the latest shadow and updates
21
+ // itself. 5 seconds should cover the initial response wait time
22
+ await (0, sleep_1.default)(5000);
23
+ while (deviceAgent.isCmdInProgress(project)) {
24
+ await (0, sleep_1.default)(1000);
25
+ }
26
+ await deviceAgent.stop();
27
+ }
28
+ });
29
+ exports.updateShadowCliLeaf = (0, alwayscli_1.CliLeaf)({
30
+ name: 'update-shadow',
31
+ description: 'Update the shadow with the current application configuration',
32
+ namedInputs: {
33
+ project: (0, alwayscli_1.CliStringInput)({
34
+ description: 'Project Id',
35
+ required: true
36
+ })
37
+ },
38
+ async action(_, opts) {
39
+ const { project } = opts;
40
+ const deviceAgent = new device_agent_cloud_connection_1.DeviceAgentCloudConnection();
41
+ await deviceAgent.setupHandlers();
42
+ await deviceAgent.updateProjectShadow(project);
43
+ // 5 seconds should cover the response wait time
44
+ await (0, sleep_1.default)(5000);
45
+ await deviceAgent.stop();
46
+ }
47
+ });
48
+ //# sourceMappingURL=shadow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadow.js","sourceRoot":"","sources":["../../../src/subcommands/app/shadow.ts"],"names":[],"mappings":";;;AAAA,mDAA8D;AAC9D,wGAAkG;AAClG,4CAAqC;AAExB,QAAA,gBAAgB,GAAG,IAAA,mBAAO,EAAC;IACtC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,wBAAwB;IACrC,WAAW,EAAE;QACX,OAAO,EAAE,IAAA,0BAAc,EAAC;YACtB,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACD,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI;QAClB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,WAAW,GAAG,IAAI,0DAA0B,EAAE,CAAC;QACrD,MAAM,WAAW,CAAC,aAAa,EAAE,CAAC;QAElC,6DAA6D;QAC7D,gEAAgE;QAChE,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC;QAClB,OAAO,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;YAC3C,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC;SACnB;QACD,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC;AAEU,QAAA,mBAAmB,GAAG,IAAA,mBAAO,EAAC;IACzC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,8DAA8D;IAC3E,WAAW,EAAE;QACX,OAAO,EAAE,IAAA,0BAAc,EAAC;YACtB,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACD,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI;QAClB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,WAAW,GAAG,IAAI,0DAA0B,EAAE,CAAC;QACrD,MAAM,WAAW,CAAC,aAAa,EAAE,CAAC;QAClC,MAAM,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAE/C,gDAAgD;QAChD,MAAM,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC;QAClB,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC"}
@@ -50,7 +50,7 @@ exports.installAppCliLeaf = (0, alwayscli_1.CliLeaf)({
50
50
  while (deviceAgent.isCmdInProgress(project)) {
51
51
  await (0, sleep_1.default)(1000);
52
52
  }
53
- deviceAgent.stop();
53
+ await deviceAgent.stop();
54
54
  }
55
55
  });
56
56
  exports.uninstallAppCliLeaf = (0, alwayscli_1.CliLeaf)({
@@ -82,7 +82,7 @@ exports.uninstallAppCliLeaf = (0, alwayscli_1.CliLeaf)({
82
82
  while (deviceAgent.isCmdInProgress(project)) {
83
83
  await (0, sleep_1.default)(1000);
84
84
  }
85
- deviceAgent.stop();
85
+ await deviceAgent.stop();
86
86
  }
87
87
  });
88
88
  exports.rollbackAppCliLeaf = (0, alwayscli_1.CliLeaf)({
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/subcommands/app/version.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/subcommands/app/version.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function cloudModeReady(): boolean;
2
+ //# sourceMappingURL=cloud-mode-ready.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-mode-ready.d.ts","sourceRoot":"","sources":["../../src/util/cloud-mode-ready.ts"],"names":[],"mappings":"AAOA,wBAAgB,cAAc,YAe7B"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cloudModeReady = void 0;
4
+ const fs_1 = require("fs");
5
+ const directories_1 = require("../util/directories");
6
+ function cloudModeReady() {
7
+ let ready = true;
8
+ const requiredFiles = [
9
+ directories_1.DEVICE_CERTIFICATE_FILE_PATH,
10
+ directories_1.DEVICE_PRIVATE_KEY_FILE_PATH,
11
+ directories_1.AWS_ROOT_CERTIFICATE_FILE_PATH
12
+ ];
13
+ for (const path of requiredFiles) {
14
+ if (!(0, fs_1.existsSync)(path)) {
15
+ ready = false;
16
+ break;
17
+ }
18
+ }
19
+ return ready;
20
+ }
21
+ exports.cloudModeReady = cloudModeReady;
22
+ //# sourceMappingURL=cloud-mode-ready.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-mode-ready.js","sourceRoot":"","sources":["../../src/util/cloud-mode-ready.ts"],"names":[],"mappings":";;;AAAA,2BAAgC;AAChC,qDAI6B;AAE7B,SAAgB,cAAc;IAC5B,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,MAAM,aAAa,GAAG;QACpB,0CAA4B;QAC5B,0CAA4B;QAC5B,4CAA8B;KAC/B,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE;QAChC,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC,EAAE;YACrB,KAAK,GAAG,KAAK,CAAC;YACd,MAAM;SACP;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAfD,wCAeC"}
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.0",
4
+ "version": "0.1.2",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
7
7
  "publishConfig": {
package/readme.md CHANGED
@@ -63,6 +63,8 @@ Where:
63
63
  devices page of the alwaysAI Dashboard. If a device name is not provided, one
64
64
  will be generated for you and logged to the console for reference.
65
65
 
66
+ **Important note**: If your password contains one or more special characters and you receive an error message that your password does not match your username but you are sure that it is correctly entered, please try enclosing your password with double quotes and re-running the provisioning command. You can also reset your password at https://console.alwaysai.co/dashboard by logging out, navigating to the sign in page, and clicking '`Forgot Password?`'.
67
+
66
68
  Confirm the Device Agent is running with the following command:
67
69
 
68
70
  ```bash
@@ -258,8 +260,6 @@ Subcommands:
258
260
  app show-models : Show the application models
259
261
  app add-model : Add a model to an alwaysAI app
260
262
  app remove-model : Remove a model from an alwaysAI app
261
- app replace-models : Replace all models of an alwaysAI app with new models
262
- app update-models : Update all models for an alwaysAI app
263
263
  app get-all-envs : Get environment variables for an application
264
264
  app set-env : Set environment variables for a service
265
265
  device init : Initialize device
@@ -1,21 +1,24 @@
1
1
  import { AgentConfigFile } from '../infrastructure/agent-config';
2
2
  import { parse, stringify } from 'yaml';
3
- import { buildApp, getAppDir } from './utils';
3
+ import {
4
+ buildApp,
5
+ getAppDir,
6
+ requireAppInstalled,
7
+ requireAppReady
8
+ } from './utils';
4
9
  import { JsSpawner } from 'alwaysai/lib/util';
5
10
  import compose from 'docker-compose';
6
11
  import { assign, merge } from 'lodash';
7
12
  import { AppJsonFile } from 'alwaysai/lib/core/app';
8
13
  import { AppConfig } from '@alwaysai/app-configuration-schemas';
9
- import { restartApp } from './status';
14
+ import { isAppStarted, restartApp } from './status';
10
15
  import { logger } from '../util/logger';
11
16
 
12
17
  export async function readAppCfgFile(props: {
13
18
  projectId: string;
14
19
  }): Promise<AppConfig> {
15
20
  const { projectId } = props;
16
- if (!(await AgentConfigFile().isAppPresent({ projectId }))) {
17
- throw new Error(`App ${projectId} is not present!`);
18
- }
21
+ await requireAppInstalled({ projectId });
19
22
  const appDir = getAppDir(projectId);
20
23
  const appJson = AppJsonFile(appDir);
21
24
  if (!appJson.exists()) {
@@ -37,9 +40,6 @@ export async function writeAppCfgFile(props: {
37
40
  appCfg: AppConfig;
38
41
  }) {
39
42
  const { projectId, appCfg } = props;
40
- if (!(await AgentConfigFile().isAppPresent({ projectId }))) {
41
- throw new Error(`App ${projectId} is not present!`);
42
- }
43
43
  const appDir = getAppDir(projectId);
44
44
  const appJson = AppJsonFile(appDir);
45
45
  try {
@@ -65,25 +65,22 @@ export async function updateAppCfgFile(props: {
65
65
 
66
66
  export async function updateAppCfg(props: {
67
67
  projectId: string;
68
- appReleaseHash: string;
69
68
  newAppCfg: AppConfig;
70
69
  }) {
71
- const { projectId, appReleaseHash, newAppCfg } = props;
72
- logger.info(`Updating app config for ${projectId}:${appReleaseHash}.`);
70
+ const { projectId, newAppCfg } = props;
71
+ logger.info(`Updating app config for ${projectId}`);
73
72
  const appDir = getAppDir(projectId);
74
73
 
75
- if (await AgentConfigFile().isAppPresent({ projectId })) {
76
- if (!(await AgentConfigFile().isAppReady({ projectId }))) {
77
- throw new Error('Application already has installation in progress!');
78
- }
79
- logger.info('Application is already installed, updating');
80
- await AgentConfigFile().setAppInstalling({
81
- projectId,
82
- version: appReleaseHash
83
- });
84
- } else {
85
- throw new Error('Application is not installed!');
86
- }
74
+ await requireAppReady({ projectId });
75
+
76
+ const appReleaseHash = await AgentConfigFile().getAppVersion({
77
+ projectId
78
+ });
79
+
80
+ await AgentConfigFile().setAppInstalling({
81
+ projectId,
82
+ version: appReleaseHash
83
+ });
87
84
 
88
85
  await writeAppCfgFile({ projectId, appCfg: newAppCfg });
89
86
  await buildApp({ appDir });
@@ -93,16 +90,21 @@ export async function updateAppCfg(props: {
93
90
  version: appReleaseHash
94
91
  });
95
92
 
96
- await restartApp({ projectId });
93
+ if (await isAppStarted({ projectId })) {
94
+ await restartApp({ projectId });
95
+ }
97
96
 
98
- logger.info(`Updated app config and rebuilt ${projectId}:${appReleaseHash}.`);
97
+ logger.info(
98
+ `Updated app config and rebuilt ${projectId}: ${JSON.stringify(
99
+ newAppCfg,
100
+ null,
101
+ 2
102
+ )}`
103
+ );
99
104
  }
100
105
 
101
106
  export async function readDockerCompose(props: { projectId: string }) {
102
107
  const { projectId } = props;
103
- if (!(await AgentConfigFile().isAppReady({ projectId }))) {
104
- throw new Error(`App ${projectId} is not ready!`);
105
- }
106
108
  const appDir = getAppDir(projectId);
107
109
  const spawner = JsSpawner({ path: appDir });
108
110
  const composeContents = await spawner.readFile('docker-compose.yaml');
@@ -115,9 +117,6 @@ export async function writeDockerCompose(props: {
115
117
  dockerCompose: any;
116
118
  }) {
117
119
  const { projectId, dockerCompose } = props;
118
- if (!(await AgentConfigFile().isAppReady({ projectId }))) {
119
- throw new Error(`App ${projectId} is not ready!`);
120
- }
121
120
  const appDir = getAppDir(projectId);
122
121
  const spawner = JsSpawner({ path: appDir });
123
122
  const composeOutput = stringify(dockerCompose);