@alwaysai/device-agent 0.0.1-2.1-beta-provision

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 (192) 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 +37 -0
  4. package/lib/application-control/backup.js.map +1 -0
  5. package/lib/application-control/config.d.ts +17 -0
  6. package/lib/application-control/config.d.ts.map +1 -0
  7. package/lib/application-control/config.js +62 -0
  8. package/lib/application-control/config.js.map +1 -0
  9. package/lib/application-control/environment-variables.d.ts +9 -0
  10. package/lib/application-control/environment-variables.d.ts.map +1 -0
  11. package/lib/application-control/environment-variables.js +73 -0
  12. package/lib/application-control/environment-variables.js.map +1 -0
  13. package/lib/application-control/index.d.ts +10 -0
  14. package/lib/application-control/index.d.ts.map +1 -0
  15. package/lib/application-control/index.js +32 -0
  16. package/lib/application-control/index.js.map +1 -0
  17. package/lib/application-control/install.d.ts +22 -0
  18. package/lib/application-control/install.d.ts.map +1 -0
  19. package/lib/application-control/install.js +156 -0
  20. package/lib/application-control/install.js.map +1 -0
  21. package/lib/application-control/models.d.ts +23 -0
  22. package/lib/application-control/models.d.ts.map +1 -0
  23. package/lib/application-control/models.js +154 -0
  24. package/lib/application-control/models.js.map +1 -0
  25. package/lib/application-control/status.d.ts +27 -0
  26. package/lib/application-control/status.d.ts.map +1 -0
  27. package/lib/application-control/status.js +153 -0
  28. package/lib/application-control/status.js.map +1 -0
  29. package/lib/application-control/types.d.ts +5 -0
  30. package/lib/application-control/types.d.ts.map +1 -0
  31. package/lib/application-control/types.js +3 -0
  32. package/lib/application-control/types.js.map +1 -0
  33. package/lib/application-control/utils.d.ts +14 -0
  34. package/lib/application-control/utils.d.ts.map +1 -0
  35. package/lib/application-control/utils.js +82 -0
  36. package/lib/application-control/utils.js.map +1 -0
  37. package/lib/cloud-connection/device-agent-cloud-connection.d.ts +51 -0
  38. package/lib/cloud-connection/device-agent-cloud-connection.d.ts.map +1 -0
  39. package/lib/cloud-connection/device-agent-cloud-connection.js +490 -0
  40. package/lib/cloud-connection/device-agent-cloud-connection.js.map +1 -0
  41. package/lib/cloud-connection/device-agent.d.ts +21 -0
  42. package/lib/cloud-connection/device-agent.d.ts.map +1 -0
  43. package/lib/cloud-connection/device-agent.js +65 -0
  44. package/lib/cloud-connection/device-agent.js.map +1 -0
  45. package/lib/device-control/device-control.d.ts +4 -0
  46. package/lib/device-control/device-control.d.ts.map +1 -0
  47. package/lib/device-control/device-control.js +20 -0
  48. package/lib/device-control/device-control.js.map +1 -0
  49. package/lib/docker/docker-cmd.d.ts +4 -0
  50. package/lib/docker/docker-cmd.d.ts.map +1 -0
  51. package/lib/docker/docker-cmd.js +16 -0
  52. package/lib/docker/docker-cmd.js.map +1 -0
  53. package/lib/docker/docker-compose-cmd.d.ts +5 -0
  54. package/lib/docker/docker-compose-cmd.d.ts.map +1 -0
  55. package/lib/docker/docker-compose-cmd.js +16 -0
  56. package/lib/docker/docker-compose-cmd.js.map +1 -0
  57. package/lib/endpoints.d.ts +3 -0
  58. package/lib/endpoints.d.ts.map +1 -0
  59. package/lib/endpoints.js +28 -0
  60. package/lib/endpoints.js.map +1 -0
  61. package/lib/environment.d.ts +7 -0
  62. package/lib/environment.d.ts.map +1 -0
  63. package/lib/environment.js +24 -0
  64. package/lib/environment.js.map +1 -0
  65. package/lib/index.d.ts +3 -0
  66. package/lib/index.d.ts.map +1 -0
  67. package/lib/index.js +26 -0
  68. package/lib/index.js.map +1 -0
  69. package/lib/infrastructure/agent-config.d.ts +73 -0
  70. package/lib/infrastructure/agent-config.d.ts.map +1 -0
  71. package/lib/infrastructure/agent-config.js +175 -0
  72. package/lib/infrastructure/agent-config.js.map +1 -0
  73. package/lib/infrastructure/agent-config.test.d.ts +2 -0
  74. package/lib/infrastructure/agent-config.test.d.ts.map +1 -0
  75. package/lib/infrastructure/agent-config.test.js +182 -0
  76. package/lib/infrastructure/agent-config.test.js.map +1 -0
  77. package/lib/infrastructure/certificates-and-tokens.d.ts +6 -0
  78. package/lib/infrastructure/certificates-and-tokens.d.ts.map +1 -0
  79. package/lib/infrastructure/certificates-and-tokens.js +37 -0
  80. package/lib/infrastructure/certificates-and-tokens.js.map +1 -0
  81. package/lib/infrastructure/urls.d.ts +2 -0
  82. package/lib/infrastructure/urls.d.ts.map +1 -0
  83. package/lib/infrastructure/urls.js +25 -0
  84. package/lib/infrastructure/urls.js.map +1 -0
  85. package/lib/root.d.ts +2 -0
  86. package/lib/root.d.ts.map +1 -0
  87. package/lib/root.js +12 -0
  88. package/lib/root.js.map +1 -0
  89. package/lib/subcommands/app/app.d.ts +59 -0
  90. package/lib/subcommands/app/app.d.ts.map +1 -0
  91. package/lib/subcommands/app/app.js +317 -0
  92. package/lib/subcommands/app/app.js.map +1 -0
  93. package/lib/subcommands/app/index.d.ts +2 -0
  94. package/lib/subcommands/app/index.d.ts.map +1 -0
  95. package/lib/subcommands/app/index.js +30 -0
  96. package/lib/subcommands/app/index.js.map +1 -0
  97. package/lib/subcommands/device/clean.d.ts +2 -0
  98. package/lib/subcommands/device/clean.d.ts.map +1 -0
  99. package/lib/subcommands/device/clean.js +20 -0
  100. package/lib/subcommands/device/clean.js.map +1 -0
  101. package/lib/subcommands/device/device.d.ts +6 -0
  102. package/lib/subcommands/device/device.d.ts.map +1 -0
  103. package/lib/subcommands/device/device.js +92 -0
  104. package/lib/subcommands/device/device.js.map +1 -0
  105. package/lib/subcommands/device/index.d.ts +2 -0
  106. package/lib/subcommands/device/index.d.ts.map +1 -0
  107. package/lib/subcommands/device/index.js +12 -0
  108. package/lib/subcommands/device/index.js.map +1 -0
  109. package/lib/subcommands/get-model-package.d.ts +5 -0
  110. package/lib/subcommands/get-model-package.d.ts.map +1 -0
  111. package/lib/subcommands/get-model-package.js +35 -0
  112. package/lib/subcommands/get-model-package.js.map +1 -0
  113. package/lib/subcommands/index.d.ts +9 -0
  114. package/lib/subcommands/index.d.ts.map +1 -0
  115. package/lib/subcommands/index.js +14 -0
  116. package/lib/subcommands/index.js.map +1 -0
  117. package/lib/subcommands/login.d.ts +6 -0
  118. package/lib/subcommands/login.d.ts.map +1 -0
  119. package/lib/subcommands/login.js +35 -0
  120. package/lib/subcommands/login.js.map +1 -0
  121. package/lib/util/clean-certs.d.ts +2 -0
  122. package/lib/util/clean-certs.d.ts.map +1 -0
  123. package/lib/util/clean-certs.js +16 -0
  124. package/lib/util/clean-certs.js.map +1 -0
  125. package/lib/util/copy-dir.d.ts +5 -0
  126. package/lib/util/copy-dir.d.ts.map +1 -0
  127. package/lib/util/copy-dir.js +16 -0
  128. package/lib/util/copy-dir.js.map +1 -0
  129. package/lib/util/directories.d.ts +23 -0
  130. package/lib/util/directories.d.ts.map +1 -0
  131. package/lib/util/directories.js +50 -0
  132. package/lib/util/directories.js.map +1 -0
  133. package/lib/util/get-device-id.d.ts +2 -0
  134. package/lib/util/get-device-id.d.ts.map +1 -0
  135. package/lib/util/get-device-id.js +24 -0
  136. package/lib/util/get-device-id.js.map +1 -0
  137. package/lib/util/http-client.d.ts +3 -0
  138. package/lib/util/http-client.d.ts.map +1 -0
  139. package/lib/util/http-client.js +30 -0
  140. package/lib/util/http-client.js.map +1 -0
  141. package/lib/util/logger.d.ts +4 -0
  142. package/lib/util/logger.d.ts.map +1 -0
  143. package/lib/util/logger.js +24 -0
  144. package/lib/util/logger.js.map +1 -0
  145. package/lib/util/run-in-dir.d.ts +2 -0
  146. package/lib/util/run-in-dir.d.ts.map +1 -0
  147. package/lib/util/run-in-dir.js +17 -0
  148. package/lib/util/run-in-dir.js.map +1 -0
  149. package/lib/util/sleep.d.ts +2 -0
  150. package/lib/util/sleep.d.ts.map +1 -0
  151. package/lib/util/sleep.js +9 -0
  152. package/lib/util/sleep.js.map +1 -0
  153. package/package.json +98 -0
  154. package/readme.md +219 -0
  155. package/src/application-control/backup.ts +36 -0
  156. package/src/application-control/config.ts +61 -0
  157. package/src/application-control/environment-variables.ts +74 -0
  158. package/src/application-control/index.ts +45 -0
  159. package/src/application-control/install.ts +206 -0
  160. package/src/application-control/models.ts +194 -0
  161. package/src/application-control/status.ts +187 -0
  162. package/src/application-control/types.ts +1 -0
  163. package/src/application-control/utils.ts +95 -0
  164. package/src/cloud-connection/device-agent-cloud-connection.ts +673 -0
  165. package/src/cloud-connection/device-agent.ts +120 -0
  166. package/src/device-control/device-control.ts +16 -0
  167. package/src/docker/docker-cmd.ts +12 -0
  168. package/src/docker/docker-compose-cmd.ts +12 -0
  169. package/src/endpoints.ts +24 -0
  170. package/src/environment.ts +28 -0
  171. package/src/index.ts +26 -0
  172. package/src/infrastructure/agent-config.test.ts +199 -0
  173. package/src/infrastructure/agent-config.ts +208 -0
  174. package/src/infrastructure/certificates-and-tokens.ts +47 -0
  175. package/src/infrastructure/urls.ts +21 -0
  176. package/src/root.ts +11 -0
  177. package/src/subcommands/app/app.ts +337 -0
  178. package/src/subcommands/app/index.ts +46 -0
  179. package/src/subcommands/device/clean.ts +16 -0
  180. package/src/subcommands/device/device.ts +126 -0
  181. package/src/subcommands/device/index.ts +9 -0
  182. package/src/subcommands/get-model-package.ts +33 -0
  183. package/src/subcommands/index.ts +11 -0
  184. package/src/subcommands/login.ts +33 -0
  185. package/src/util/clean-certs.ts +12 -0
  186. package/src/util/copy-dir.ts +12 -0
  187. package/src/util/directories.ts +82 -0
  188. package/src/util/get-device-id.ts +22 -0
  189. package/src/util/http-client.ts +35 -0
  190. package/src/util/logger.ts +28 -0
  191. package/src/util/run-in-dir.ts +15 -0
  192. package/src/util/sleep.ts +5 -0
@@ -0,0 +1,490 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runDeviceAgentCloudInterface = exports.DeviceAgentCloudConnection = void 0;
4
+ const awsIot = require("aws-iot-device-sdk");
5
+ const urls_1 = require("../infrastructure/urls");
6
+ const fs_1 = require("fs");
7
+ const clean_certs_1 = require("../util/clean-certs");
8
+ const directories_1 = require("../util/directories");
9
+ const device_agent_1 = require("./device-agent");
10
+ const sleep_1 = require("../util/sleep");
11
+ const status_1 = require("../application-control/status");
12
+ const install_1 = require("../application-control/install");
13
+ const device_agent_schemas_1 = require("@alwaysai/device-agent-schemas");
14
+ const get_device_id_1 = require("../util/get-device-id");
15
+ const logger_1 = require("../util/logger");
16
+ const device_control_1 = require("../device-control/device-control");
17
+ const agent_config_1 = require("../infrastructure/agent-config");
18
+ const utils_1 = require("../application-control/utils");
19
+ const models_1 = require("../application-control/models");
20
+ const config_1 = require("../application-control/config");
21
+ class DeviceAgentCloudConnection {
22
+ constructor() {
23
+ this.clientId = (0, get_device_id_1.getDeviceId)();
24
+ this.host = (0, urls_1.getIoTCoreEndpointUrl)();
25
+ this.liveUpdatesAlive = {
26
+ [device_agent_schemas_1.keyMirrors.agentMessageType.device_stats]: false,
27
+ [device_agent_schemas_1.keyMirrors.agentMessageType.app_state]: false,
28
+ [device_agent_schemas_1.keyMirrors.agentMessageType.app_logs]: false,
29
+ };
30
+ this.liveUpdatesSleepIntervals = {
31
+ [device_agent_schemas_1.keyMirrors.agentMessageType.device_stats]: 5000,
32
+ [device_agent_schemas_1.keyMirrors.agentMessageType.app_state]: 5000,
33
+ [device_agent_schemas_1.keyMirrors.agentMessageType.app_logs]: 5000,
34
+ [device_agent_schemas_1.keyMirrors.agentMessageType.app_install_status]: 5000,
35
+ };
36
+ this.appLogStreams = new Set();
37
+ this.shadowPrefix = `$aws/things/${this.clientId}/shadow/name/`;
38
+ this.shadowTopics = {
39
+ projects: {
40
+ updateDelta: `${this.shadowPrefix}projects/update/delta`,
41
+ getAccepted: `${this.shadowPrefix}projects/get/accepted`,
42
+ },
43
+ };
44
+ this.toCloudTopic = (0, device_agent_schemas_1.getCloudTopic)(this.clientId);
45
+ this.toClientTopic = (0, device_agent_schemas_1.getClientTopic)(this.clientId);
46
+ this.toDeviceTopic = (0, device_agent_schemas_1.getDeviceTopic)(this.clientId);
47
+ // must be arrow function due to this context when function is passed as param
48
+ this.getAppInstallStatusMessage = async () => {
49
+ const appInstallStatus = this.getAppInstallStatus();
50
+ const appInstallStatusMessage = {
51
+ messageType: device_agent_schemas_1.keyMirrors.agentMessageType.app_install_status,
52
+ appInstallStatus,
53
+ };
54
+ return appInstallStatusMessage;
55
+ };
56
+ this.handleDeviceCommand = async (packet) => {
57
+ // TODO
58
+ };
59
+ // Public Methods
60
+ this.device = awsIot.device;
61
+ this.device = awsIot.device({
62
+ keyPath: (0, directories_1.getPrivateKeyFilePath)(),
63
+ certPath: (0, directories_1.getCertificateFilePath)(),
64
+ caPath: directories_1.AWS_ROOT_CERTIFICATE_FILE_PATH,
65
+ clientId: this.clientId,
66
+ host: this.host,
67
+ port: 8883,
68
+ });
69
+ this.device.subscribe(this.toDeviceTopic);
70
+ this.device.subscribe(this.shadowTopics.projects.getAccepted);
71
+ this.device.subscribe(this.shadowTopics.projects.updateDelta);
72
+ }
73
+ // device shadow utils
74
+ getShadowPrefix() {
75
+ return this.shadowPrefix;
76
+ }
77
+ async handleNamedShadowUpdate({ payload }) {
78
+ const delta = JSON.parse(payload);
79
+ const deltaKeys = Object.keys(delta);
80
+ for (const projectId of deltaKeys) {
81
+ const projectShadow = delta[projectId];
82
+ if (projectShadow.appConfig) {
83
+ const appConfig = projectShadow.appConfig;
84
+ const appDir = (0, utils_1.getAppDir)(projectId);
85
+ await (0, config_1.updateAppConfig)(projectId, appConfig);
86
+ if (appConfig.models) {
87
+ this.publishCloudRequest({
88
+ messageType: device_agent_schemas_1.keyMirrors.agentMessageType.signed_urls_request,
89
+ modelsOnlyUrlsRequest: {
90
+ projectId,
91
+ models: appConfig.models,
92
+ },
93
+ });
94
+ }
95
+ if (appConfig.scripts && !appConfig.models) {
96
+ const appState = await (0, status_1.getAppStatus)({ projectId });
97
+ await (0, utils_1.buildApp)({ appDir });
98
+ if (appState.services.length &&
99
+ appState.services[0].state !== device_agent_schemas_1.keyMirrors.appState.stopped) {
100
+ (0, status_1.restartApp)({ projectId });
101
+ }
102
+ await this.publishReportedState(projectId);
103
+ }
104
+ }
105
+ }
106
+ }
107
+ async startAppLogStream(projectId) {
108
+ this.appLogStreams.add(projectId);
109
+ const readable = await (0, status_1.getAppLogs)({
110
+ projectId,
111
+ args: ["--tail", "100", "--no-log-prefix"],
112
+ });
113
+ readable.on("data", (chunk) => {
114
+ if (!this.appLogStreams.has(projectId)) {
115
+ // why doesn't typescript know about this function?
116
+ // @ts-ignore
117
+ readable.destroy();
118
+ logger_1.logger.info(`App log stream terminated for project ${projectId}`);
119
+ return;
120
+ }
121
+ const logStr = chunk.toString();
122
+ const message = {
123
+ messageType: device_agent_schemas_1.keyMirrors.agentMessageType.app_logs,
124
+ appLogs: {
125
+ projectId,
126
+ logChunk: logStr,
127
+ },
128
+ };
129
+ const packet = this.buildMessagePacket(this.getClientId(), this.toClientTopic, message);
130
+ this.publishMessage(this.toClientTopic, JSON.stringify(packet));
131
+ });
132
+ readable.on("error", (error) => {
133
+ logger_1.logger.error(`App log stream terminated for project ${projectId}: ${error}`);
134
+ });
135
+ readable.on("finished", () => {
136
+ logger_1.logger.info(`App logs finished piping for project ${projectId}`);
137
+ });
138
+ }
139
+ // must contain app release hash
140
+ initAppInstallStatus(installationStatus) {
141
+ this.appInstallStatus = installationStatus;
142
+ }
143
+ updateAppInstallStatus(installationStatus) {
144
+ this.appInstallStatus.status = installationStatus.status;
145
+ this.appInstallStatus.message = installationStatus.message;
146
+ }
147
+ getAppInstallStatus() {
148
+ return this.appInstallStatus;
149
+ }
150
+ // Message Builders
151
+ buildMessagePacket(deviceId, topic, payload) {
152
+ const packet = {
153
+ timestamp: new Date().toUTCString(),
154
+ deviceId,
155
+ topic,
156
+ payload,
157
+ };
158
+ return packet;
159
+ }
160
+ async getAppStateMessage() {
161
+ const appStateMessage = [];
162
+ const apps = await (0, agent_config_1.AgentConfigFile)().getReadyApps();
163
+ for (const app of apps) {
164
+ const projectId = app.projectId;
165
+ const status = await (0, status_1.getAppStatus)({ projectId });
166
+ appStateMessage.push(status);
167
+ }
168
+ const appStatePackage = {
169
+ messageType: device_agent_schemas_1.keyMirrors.agentMessageType.app_state,
170
+ appState: appStateMessage,
171
+ };
172
+ return appStatePackage;
173
+ }
174
+ async getDeviceStatsMessage() {
175
+ const cpuUsage = await (0, device_control_1.getCpuUtil)();
176
+ const diskUtil = await (0, device_control_1.getDiskUtil)();
177
+ const memUtil = await (0, device_control_1.getMemUtil)();
178
+ const deviceStatsMessage = {
179
+ messageType: device_agent_schemas_1.keyMirrors.agentMessageType.device_stats,
180
+ deviceStats: {
181
+ cpuUsage,
182
+ diskUtil,
183
+ usedMemoryPercentage: memUtil,
184
+ },
185
+ };
186
+ return deviceStatsMessage;
187
+ }
188
+ async startPublishingLiveUpdates(topic, messageType, getMessageData) {
189
+ while (true) {
190
+ try {
191
+ const message = await getMessageData();
192
+ const packet = this.buildMessagePacket(this.getClientId(), topic, message);
193
+ this.publishMessage(topic, JSON.stringify(packet));
194
+ }
195
+ catch (e) {
196
+ logger_1.logger.error(`Error publishing live updates for ${messageType}: ${e.message}`);
197
+ break;
198
+ }
199
+ if (!this.continuePublishing(messageType)) {
200
+ logger_1.logger.info(`Turned off live updates for ${messageType}`);
201
+ break;
202
+ }
203
+ await (0, sleep_1.default)(this.getLiveUpdatesInterval(messageType));
204
+ }
205
+ }
206
+ continuePublishing(flag) {
207
+ switch (flag) {
208
+ case device_agent_schemas_1.keyMirrors.agentMessageType.device_stats:
209
+ case device_agent_schemas_1.keyMirrors.agentMessageType.app_state:
210
+ return this.liveUpdatesAlive[flag];
211
+ case device_agent_schemas_1.keyMirrors.agentMessageType.app_install_status:
212
+ return (this.appInstallStatus.status ===
213
+ device_agent_schemas_1.keyMirrors.appInstallStatus.in_progress);
214
+ default:
215
+ logger_1.logger.error(`Unrecognized publishable flag ${flag}`);
216
+ return false;
217
+ }
218
+ }
219
+ getLiveUpdatesInterval(flag) {
220
+ const exists = this.liveUpdatesSleepIntervals[flag];
221
+ if (exists) {
222
+ return exists;
223
+ }
224
+ logger_1.logger.error(`Unrecognized live updates flag ${flag}`);
225
+ return -1;
226
+ }
227
+ setLiveUpdates(toggles) {
228
+ if (toggles.deviceStats) {
229
+ this.liveUpdatesAlive.device_stats = toggles.deviceStats;
230
+ }
231
+ if (toggles.appState) {
232
+ this.liveUpdatesAlive.app_state = toggles.appState;
233
+ }
234
+ }
235
+ handleAppStateControl(payload) {
236
+ const { baseCommand, projectId } = payload;
237
+ switch (baseCommand) {
238
+ case device_agent_schemas_1.keyMirrors.appStateControl.start:
239
+ (0, status_1.startApp)({ projectId });
240
+ break;
241
+ case device_agent_schemas_1.keyMirrors.appStateControl.stop:
242
+ (0, status_1.stopApp)({ projectId });
243
+ break;
244
+ case device_agent_schemas_1.keyMirrors.appStateControl.restart:
245
+ (0, status_1.restartApp)({ projectId });
246
+ break;
247
+ }
248
+ }
249
+ handleAppVersionControl(payload) {
250
+ const { projectId, appReleaseHash } = payload;
251
+ const signedUrlsRequest = { projectId, appReleaseHash };
252
+ this.publishCloudRequest({
253
+ messageType: device_agent_schemas_1.keyMirrors.agentMessageType.signed_urls_request,
254
+ signedUrlsRequest,
255
+ });
256
+ }
257
+ handleAgentCommand(message) {
258
+ switch (message.messageType) {
259
+ case device_agent_schemas_1.keyMirrors.clientMessageType.live_state_updates:
260
+ this.liveUpdatesBroker(message.liveUpdatesToggles);
261
+ break;
262
+ default:
263
+ logger_1.logger.error(`Invalid agent action message type from message '${message}'`);
264
+ }
265
+ }
266
+ restartLiveUpdatesTimeout() {
267
+ clearTimeout(this.liveUpdatesTimeout);
268
+ this.liveUpdatesTimeout = setTimeout(() => {
269
+ this.setLiveUpdates({
270
+ deviceStats: false,
271
+ appState: false,
272
+ });
273
+ this.appLogStreams.clear();
274
+ // TODO: Make constant, not hard coded
275
+ }, 600000); // 10 min
276
+ }
277
+ async liveUpdatesBroker({ deviceStats, appState, appLogs, }) {
278
+ this.restartLiveUpdatesTimeout();
279
+ if (deviceStats !== undefined) {
280
+ this.liveUpdatesAlive.device_stats = deviceStats;
281
+ if (deviceStats) {
282
+ this.startPublishingLiveUpdates(this.toClientTopic, device_agent_schemas_1.keyMirrors.agentMessageType.device_stats, this.getDeviceStatsMessage);
283
+ }
284
+ }
285
+ if (appState !== undefined) {
286
+ this.liveUpdatesAlive.app_state = appState;
287
+ if (appState) {
288
+ this.startPublishingLiveUpdates(this.toClientTopic, device_agent_schemas_1.keyMirrors.agentMessageType.app_state, this.getAppStateMessage);
289
+ }
290
+ }
291
+ if (appLogs !== undefined) {
292
+ if (appLogs.toggle) {
293
+ this.startAppLogStream(appLogs.projectId);
294
+ }
295
+ else {
296
+ this.appLogStreams.delete(appLogs.projectId);
297
+ }
298
+ }
299
+ }
300
+ async publishReportedState(projectId) {
301
+ const newAppCfg = await (0, utils_1.getAppConfig)(projectId);
302
+ const packet = {
303
+ state: {
304
+ reported: {
305
+ [projectId]: { appConfig: newAppCfg },
306
+ },
307
+ },
308
+ };
309
+ this.publishMessage(`${this.shadowPrefix}projects/update`, JSON.stringify(packet));
310
+ }
311
+ async publishCloudRequest(payload) {
312
+ const topic = this.toCloudTopic;
313
+ const deviceRequestPacket = this.buildMessagePacket(this.getClientId(), topic, payload);
314
+ this.publishMessage(topic, JSON.stringify({ deviceRequestPacket }));
315
+ }
316
+ getClientId() {
317
+ return this.clientId;
318
+ }
319
+ publishMessage(topic, message) {
320
+ // TODO: topic validation
321
+ this.device.publish(topic, message, (err) => { });
322
+ }
323
+ async handleClientMessage({ topic, message, }) {
324
+ const payload = message.payload;
325
+ switch (payload.messageType) {
326
+ case device_agent_schemas_1.keyMirrors.clientMessageType.app_state_control: {
327
+ this.handleAppStateControl(payload.appStateControl);
328
+ break;
329
+ }
330
+ case device_agent_schemas_1.keyMirrors.clientMessageType.app_version_control: {
331
+ this.handleAppVersionControl(payload.appVersionControl);
332
+ break;
333
+ }
334
+ case device_agent_schemas_1.keyMirrors.clientMessageType.live_state_updates: {
335
+ this.handleAgentCommand(payload);
336
+ break;
337
+ }
338
+ case device_agent_schemas_1.keyMirrors.clientMessageType.app_install_cloud_response: {
339
+ const { projectId, appReleaseHash, appInstallPayload, modelsInstallPayload, } = payload.appInstallCloudResponse;
340
+ this.initAppInstallStatus({
341
+ status: device_agent_schemas_1.keyMirrors.appInstallStatus.in_progress,
342
+ appReleaseHash,
343
+ });
344
+ this.startPublishingLiveUpdates(this.toClientTopic, device_agent_schemas_1.keyMirrors.agentMessageType.app_install_status, this.getAppInstallStatusMessage);
345
+ // Install the app and models
346
+ try {
347
+ const signedUrlsPayload = {
348
+ appInstallPayload,
349
+ modelsInstallPayload,
350
+ };
351
+ await (0, install_1.installApp)({
352
+ projectId,
353
+ appReleaseHash,
354
+ signedUrlsPayload,
355
+ });
356
+ this.updateAppInstallStatus({
357
+ status: device_agent_schemas_1.keyMirrors.appInstallStatus.success,
358
+ });
359
+ // update app config shadow for project
360
+ await this.publishReportedState(projectId);
361
+ }
362
+ catch (e) {
363
+ logger_1.logger.error(e);
364
+ const message = e.message;
365
+ // uninstall the failed app to put system back in good state
366
+ await (0, install_1.uninstallApp)({ projectId });
367
+ this.updateAppInstallStatus({
368
+ status: device_agent_schemas_1.keyMirrors.appInstallStatus.failure,
369
+ message,
370
+ });
371
+ // delete shadow for project
372
+ this.publishMessage(`${this.shadowPrefix}${projectId}/delete`, "");
373
+ }
374
+ break;
375
+ }
376
+ case device_agent_schemas_1.keyMirrors.clientMessageType.models_install_cloud_response: {
377
+ const { projectId, newModels } = payload.modelsInstallCloudResponse;
378
+ try {
379
+ await (0, models_1.updateModelsWithPresignedUrls)(projectId, newModels);
380
+ await this.publishReportedState(projectId);
381
+ }
382
+ catch (e) {
383
+ logger_1.logger.error(e);
384
+ }
385
+ break;
386
+ }
387
+ default:
388
+ logger_1.logger.error(`Invalid Client Message '${JSON.stringify(payload)}'`);
389
+ }
390
+ }
391
+ async handleShadowTopic({ topic, payload, }) {
392
+ const shadowName = topic.split("/")[5];
393
+ const message = JSON.parse(payload);
394
+ if (topic === this.shadowTopics.projects.updateDelta) {
395
+ this.handleNamedShadowUpdate({ payload });
396
+ }
397
+ else if (topic === this.shadowTopics.projects.getAccepted) {
398
+ if (message.delta) {
399
+ this.handleNamedShadowUpdate({
400
+ payload: JSON.stringify(message.delta),
401
+ });
402
+ }
403
+ else {
404
+ logger_1.logger.info(`No delta updates in shadow ${shadowName}`);
405
+ }
406
+ }
407
+ }
408
+ }
409
+ exports.DeviceAgentCloudConnection = DeviceAgentCloudConnection;
410
+ async function runDeviceAgentCloudInterface() {
411
+ switch (true) {
412
+ case (0, fs_1.existsSync)((0, directories_1.getCertificateFilePath)()):
413
+ {
414
+ const deviceAgent = new DeviceAgentCloudConnection();
415
+ deviceAgent.device.on("connect", function (connack) {
416
+ logger_1.logger.info("Device Agent has connected to the cloud");
417
+ // Get shadow updates
418
+ deviceAgent.publishMessage(`${deviceAgent.getShadowPrefix()}projects/get`, "");
419
+ });
420
+ deviceAgent.device.on("disconnect", function () {
421
+ logger_1.logger.info("Device Agent has been disconnected from the cloud");
422
+ });
423
+ deviceAgent.device.on("message", function (topic, payload) {
424
+ logger_1.logger.debug(JSON.stringify({ topic }));
425
+ try {
426
+ const jsonPacket = JSON.parse(payload);
427
+ if (jsonPacket.hasOwnProperty("state")) {
428
+ deviceAgent.handleShadowTopic({
429
+ topic,
430
+ payload: JSON.stringify(jsonPacket.state),
431
+ });
432
+ }
433
+ else {
434
+ const valid = (0, device_agent_schemas_1.validateClientMessage)(jsonPacket);
435
+ if (!valid) {
436
+ console.error(JSON.stringify(device_agent_schemas_1.validateClientMessage.errors));
437
+ }
438
+ else {
439
+ deviceAgent.handleClientMessage({
440
+ topic,
441
+ message: jsonPacket,
442
+ });
443
+ }
444
+ }
445
+ }
446
+ catch (error) {
447
+ logger_1.logger.error(error);
448
+ }
449
+ });
450
+ deviceAgent.device.on("packetsend", (packet) => {
451
+ logger_1.logger.debug(JSON.stringify({ packet: packet }, null, 2));
452
+ });
453
+ }
454
+ break;
455
+ case (0, fs_1.existsSync)(directories_1.BOOTSTRAP_DEVICE_PRIVATE_KEY_FILE_PATH):
456
+ {
457
+ setTimeout(clean_certs_1.rmBootstrapCertsAndClose, 60000);
458
+ const clientId = (0, get_device_id_1.getDeviceId)();
459
+ const bootstrapConfig = {
460
+ keyPath: directories_1.BOOTSTRAP_DEVICE_PRIVATE_KEY_FILE_PATH,
461
+ certPath: directories_1.BOOTSTRAP_DEVICE_CERTIFICATE_FILE_PATH,
462
+ caPath: directories_1.AWS_ROOT_CERTIFICATE_FILE_PATH,
463
+ clientId,
464
+ host: (0, urls_1.getIoTCoreEndpointUrl)(),
465
+ };
466
+ const bootstrapAgent = new device_agent_1.BootstrapAgent(bootstrapConfig);
467
+ bootstrapAgent.subscribeToAllTopics();
468
+ bootstrapAgent.publishMessage("$aws/certificates/create/json", "");
469
+ bootstrapAgent.device.on("connect", () => {
470
+ logger_1.logger.info("Your device is being provisioned");
471
+ });
472
+ bootstrapAgent.device.on("message", (topic, payload) => {
473
+ bootstrapAgent.handleAwsCertificateTopics(topic, payload);
474
+ });
475
+ bootstrapAgent.device.on("packetsend", (packet) => {
476
+ logger_1.logger.debug(JSON.stringify({ packet: packet.subscriptions }, null, 2));
477
+ });
478
+ }
479
+ break;
480
+ case (0, fs_1.existsSync)(directories_1.BOOTSTRAP_CERTIFICATES_DIR_PATH): {
481
+ logger_1.logger.info("Device has not been created using 'device-agent device create' or there has been an issue with device creation");
482
+ break;
483
+ }
484
+ default: {
485
+ logger_1.logger.info("Set device agent to local mode and retry the 'aai-agent device init' command");
486
+ }
487
+ }
488
+ }
489
+ exports.runDeviceAgentCloudInterface = runDeviceAgentCloudInterface;
490
+ //# sourceMappingURL=device-agent-cloud-connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-agent-cloud-connection.js","sourceRoot":"","sources":["../../src/cloud-connection/device-agent-cloud-connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ interface DeviceAgentConfigType {
2
+ keyPath: string;
3
+ certPath: string;
4
+ caPath: string;
5
+ clientId: string;
6
+ host: string;
7
+ }
8
+ export declare class DeviceAgent {
9
+ constructor(config: DeviceAgentConfigType);
10
+ deviceType: string;
11
+ device: any;
12
+ hardwareId: () => Promise<string>;
13
+ deviceId: string;
14
+ publishMessage(topic: string, message: string): void;
15
+ }
16
+ export declare class BootstrapAgent extends DeviceAgent {
17
+ subscribeToAllTopics(): Promise<void>;
18
+ handleAwsCertificateTopics(topic: string, payload: any): Promise<void>;
19
+ }
20
+ export {};
21
+ //# sourceMappingURL=device-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-agent.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/device-agent.ts"],"names":[],"mappings":"AAgBA,UAAU,qBAAqB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAYD,qBAAa,WAAW;gBACV,MAAM,EAAE,qBAAqB;IAIlC,UAAU,SAAgB;IAC1B,MAAM,MAAiB;IACvB,UAAU,wBAIb;IACG,QAAQ,SAAiB;IAEzB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAGrD;AAED,qBAAa,cAAe,SAAQ,WAAW;IAChC,oBAAoB;IAepB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG;CAkDpE"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BootstrapAgent = exports.DeviceAgent = void 0;
4
+ const awsIot = require("aws-iot-device-sdk");
5
+ const directories_1 = require("../util/directories");
6
+ const certificates_and_tokens_1 = require("../infrastructure/certificates-and-tokens");
7
+ const get_device_id_1 = require("../util/get-device-id");
8
+ const constants_1 = require("alwaysai/lib/constants");
9
+ const util_1 = require("alwaysai/lib/util");
10
+ const logger_1 = require("../util/logger");
11
+ const path_1 = require("path");
12
+ const process = require("process");
13
+ class DeviceAgent {
14
+ constructor(config) {
15
+ this.deviceType = "aai-device";
16
+ this.device = awsIot.device;
17
+ this.hardwareId = async () => await (0, certificates_and_tokens_1.getTargetHardwareUuid)((0, util_1.JsSpawner)(), (0, path_1.join)(constants_1.LOCAL_CERT_AND_KEY_DIR, "hardware-id.txt"));
18
+ this.deviceId = (0, get_device_id_1.getDeviceId)();
19
+ this.device = awsIot.device(config);
20
+ }
21
+ publishMessage(topic, message) {
22
+ this.device.publish(topic, message);
23
+ }
24
+ }
25
+ exports.DeviceAgent = DeviceAgent;
26
+ class BootstrapAgent extends DeviceAgent {
27
+ async subscribeToAllTopics() {
28
+ const AWS_CERTIFICATE_ACCEPT_TOPIC = "$aws/certificates/create/json/accepted";
29
+ const PROVISIONING_ACCEPTED_TOPIC = "$aws/provisioning-templates/FleetProvisionTemplate/provision/json/accepted";
30
+ const topics = [AWS_CERTIFICATE_ACCEPT_TOPIC, PROVISIONING_ACCEPTED_TOPIC];
31
+ const resp = this.device.subscribe(topics, function (err, granted) {
32
+ logger_1.logger.debug(granted);
33
+ });
34
+ }
35
+ async handleAwsCertificateTopics(topic, payload) {
36
+ switch (topic) {
37
+ case "$aws/certificates/create/json/accepted": {
38
+ const { certificateId, certificatePem, privateKey, certificateOwnershipToken, } = JSON.parse(payload);
39
+ const certSpawner = (0, util_1.JsSpawner)({ path: constants_1.LOCAL_CERT_AND_KEY_DIR });
40
+ await certSpawner.writeFile(directories_1.DEVICE_CERTIFICATE_FILE_NAME, certificatePem);
41
+ await certSpawner.writeFile(directories_1.DEVICE_PRIVATE_KEY_FILE_NAME, privateKey);
42
+ await certSpawner.writeFile(directories_1.DEVICE_CLAIM_ID_FILE_NAME, certificateId);
43
+ await certSpawner.writeFile(directories_1.CERTIFICATE_OWNERSHIP_TOKEN_FILE_NAME, certificateOwnershipToken);
44
+ const content = {
45
+ certificateOwnershipToken,
46
+ parameters: {
47
+ hardwareId: await this.hardwareId(),
48
+ deviceUuid: this.deviceId,
49
+ certificateId,
50
+ deviceType: this.deviceType,
51
+ },
52
+ };
53
+ logger_1.logger.debug(JSON.stringify(content));
54
+ this.publishMessage("$aws/provisioning-templates/FleetProvisionTemplate/provision/json", JSON.stringify(content));
55
+ break;
56
+ }
57
+ case "$aws/provisioning-templates/FleetProvisionTemplate/provision/json/accepted": {
58
+ logger_1.logger.info("Device agent provisioning: success");
59
+ process.exit();
60
+ }
61
+ }
62
+ }
63
+ }
64
+ exports.BootstrapAgent = BootstrapAgent;
65
+ //# sourceMappingURL=device-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-agent.js","sourceRoot":"","sources":["../../src/cloud-connection/device-agent.ts"],"names":[],"mappings":";;;AAAA,MAAM,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAC7C,qDAK6B;AAC7B,uFAAkF;AAClF,yDAAoD;AACpD,sDAAgE;AAChE,4CAA8C;AAC9C,2CAAwC;AAExC,+BAA4B;AAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAoBnC,MAAa,WAAW;IACtB,YAAY,MAA6B;QAIlC,eAAU,GAAG,YAAY,CAAC;QAC1B,WAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACvB,eAAU,GAAG,KAAK,IAAI,EAAE,CAC7B,MAAM,IAAA,+CAAqB,EACzB,IAAA,gBAAS,GAAE,EACX,IAAA,WAAI,EAAC,kCAAsB,EAAE,iBAAiB,CAAC,CAChD,CAAC;QACG,aAAQ,GAAG,IAAA,2BAAW,GAAE,CAAC;QAV9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAWM,cAAc,CAAC,KAAa,EAAE,OAAe;QAClD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;CACF;AAjBD,kCAiBC;AAED,MAAa,cAAe,SAAQ,WAAW;IACtC,KAAK,CAAC,oBAAoB;QAC/B,MAAM,4BAA4B,GAChC,wCAAwC,CAAC;QAC3C,MAAM,2BAA2B,GAC/B,4EAA4E,CAAC;QAE/E,MAAM,MAAM,GAAG,CAAC,4BAA4B,EAAE,2BAA2B,CAAC,CAAC;QAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAChC,MAAM,EACN,UAAU,GAAQ,EAAE,OAAyC;YAC3D,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC,CACF,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,0BAA0B,CAAC,KAAa,EAAE,OAAY;QACjE,QAAQ,KAAK,EAAE;YACb,KAAK,wCAAwC,CAAC,CAAC;gBAC7C,MAAM,EACJ,aAAa,EACb,cAAc,EACd,UAAU,EACV,yBAAyB,GAC1B,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAExB,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAC,EAAE,IAAI,EAAE,kCAAsB,EAAE,CAAC,CAAC;gBAEhE,MAAM,WAAW,CAAC,SAAS,CACzB,0CAA4B,EAC5B,cAAc,CACf,CAAC;gBAEF,MAAM,WAAW,CAAC,SAAS,CAAC,0CAA4B,EAAE,UAAU,CAAC,CAAC;gBAEtE,MAAM,WAAW,CAAC,SAAS,CAAC,uCAAyB,EAAE,aAAa,CAAC,CAAC;gBAEtE,MAAM,WAAW,CAAC,SAAS,CACzB,mDAAqC,EACrC,yBAAyB,CAC1B,CAAC;gBAEF,MAAM,OAAO,GAAsC;oBACjD,yBAAyB;oBACzB,UAAU,EAAE;wBACV,UAAU,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE;wBACnC,UAAU,EAAE,IAAI,CAAC,QAAQ;wBACzB,aAAa;wBACb,UAAU,EAAE,IAAI,CAAC,UAAU;qBAC5B;iBACF,CAAC;gBACF,eAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;gBAEtC,IAAI,CAAC,cAAc,CACjB,mEAAmE,EACnE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACxB,CAAC;gBAEF,MAAM;aACP;YACD,KAAK,4EAA4E,CAAC,CAAC;gBACjF,eAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;gBAClD,OAAO,CAAC,IAAI,EAAE,CAAC;aAChB;SACF;IACH,CAAC;CACF;AAlED,wCAkEC"}
@@ -0,0 +1,4 @@
1
+ export declare function getCpuUtil(): Promise<number>;
2
+ export declare function getDiskUtil(): Promise<number>;
3
+ export declare function getMemUtil(): Promise<number>;
4
+ //# sourceMappingURL=device-control.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-control.d.ts","sourceRoot":"","sources":["../../src/device-control/device-control.ts"],"names":[],"mappings":"AAEA,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAGlD;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAGnD;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAGlD"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMemUtil = exports.getDiskUtil = exports.getCpuUtil = void 0;
4
+ const osu = require('node-os-utils');
5
+ async function getCpuUtil() {
6
+ const cpuUsage = await osu.cpu.usage();
7
+ return cpuUsage;
8
+ }
9
+ exports.getCpuUtil = getCpuUtil;
10
+ async function getDiskUtil() {
11
+ const driveInfo = await osu.drive.info();
12
+ return parseFloat(driveInfo.usedPercentage);
13
+ }
14
+ exports.getDiskUtil = getDiskUtil;
15
+ async function getMemUtil() {
16
+ const memInfo = await osu.mem.info();
17
+ return 100.0 - memInfo.freeMemPercentage;
18
+ }
19
+ exports.getMemUtil = getMemUtil;
20
+ //# sourceMappingURL=device-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-control.js","sourceRoot":"","sources":["../../src/device-control/device-control.ts"],"names":[],"mappings":";;;AAAA,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAE9B,KAAK,UAAU,UAAU;IAC9B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACvC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAHD,gCAGC;AAEM,KAAK,UAAU,WAAW;IAC/B,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACzC,OAAO,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;AAC9C,CAAC;AAHD,kCAGC;AAEM,KAAK,UAAU,UAAU;IAC9B,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACrC,OAAO,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;AAC3C,CAAC;AAHD,gCAGC"}
@@ -0,0 +1,4 @@
1
+ export declare function runDockerLogin(props: {
2
+ token: string;
3
+ }): Promise<string>;
4
+ //# sourceMappingURL=docker-cmd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker-cmd.d.ts","sourceRoot":"","sources":["../../src/docker/docker-cmd.ts"],"names":[],"mappings":"AAEA,wBAAsB,cAAc,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,mBAS5D"}