@alwaysai/device-agent 0.0.5 → 0.0.7
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.
- package/lib/application-control/environment-variables.d.ts.map +1 -1
- package/lib/application-control/environment-variables.js +0 -1
- package/lib/application-control/environment-variables.js.map +1 -1
- package/lib/application-control/status.d.ts.map +1 -1
- package/lib/application-control/status.js +47 -35
- package/lib/application-control/status.js.map +1 -1
- package/lib/cloud-connection/device-agent-cloud-connection.d.ts.map +1 -1
- package/lib/cloud-connection/device-agent-cloud-connection.js +14 -10
- package/lib/cloud-connection/device-agent-cloud-connection.js.map +1 -1
- package/lib/subcommands/get-model-package.d.ts.map +1 -1
- package/lib/subcommands/get-model-package.js +4 -21
- package/lib/subcommands/get-model-package.js.map +1 -1
- package/package.json +2 -2
- package/readme.md +3 -3
- package/src/application-control/environment-variables.ts +0 -1
- package/src/application-control/status.ts +53 -33
- package/src/cloud-connection/device-agent-cloud-connection.ts +14 -10
- package/src/subcommands/get-model-package.ts +4 -32
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment-variables.d.ts","sourceRoot":"","sources":["../../src/application-control/environment-variables.ts"],"names":[],"mappings":"AAMA,wBAAsB,MAAM,CAAC,KAAK,EAAE;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,
|
|
1
|
+
{"version":3,"file":"environment-variables.d.ts","sourceRoot":"","sources":["../../src/application-control/environment-variables.ts"],"names":[],"mappings":"AAMA,wBAAsB,MAAM,CAAC,KAAK,EAAE;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,iBAkCA;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,eAiC5D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment-variables.js","sourceRoot":"","sources":["../../src/application-control/environment-variables.ts"],"names":[],"mappings":";;;AAAA,4CAA8C;AAC9C,mDAAqC;AACrC,+BAAwC;AACxC,iEAAiE;AACjE,mCAAoC;AAE7B,KAAK,UAAU,MAAM,CAAC,KAI5B;IACC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAClC,IAAI,CAAC,IAAA,8BAAe,GAAE,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;QAChD,MAAM,IAAI,KAAK,CAAC,OAAO,SAAS,gBAAgB,CAAC,CAAC;KACnD;IACD,MAAM,MAAM,GAAG,IAAA,iBAAS,EAAC,SAAS,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,IAAA,gBAAS,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACtE,MAAM,aAAa,GAAG,IAAA,YAAK,EAAC,eAAe,CAAC,CAAC;IAC7C,IAAI,UAAU,IAAI,aAAa,EAAE;QAC/B,IAAI,QAAQ,GAAa,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;QAChE,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,
|
|
1
|
+
{"version":3,"file":"environment-variables.js","sourceRoot":"","sources":["../../src/application-control/environment-variables.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/application-control/status.ts"],"names":[],"mappings":";AAMA,OAAO,EAAgC,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAGxF,wBAAsB,eAAe,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,sEAIjE;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,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/application-control/status.ts"],"names":[],"mappings":";AAMA,OAAO,EAAgC,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAGxF,wBAAsB,eAAe,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,sEAIjE;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,QAAQ,CAAC,CA+ElF;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,CAmBjC;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBhB;AAED,wBAAsB,OAAO,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAezE;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5E"}
|
|
@@ -36,40 +36,56 @@ async function getAppStatus(props) {
|
|
|
36
36
|
return { appDetails, services: [] };
|
|
37
37
|
}
|
|
38
38
|
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
39
|
+
const composeServices = await docker_compose_1.default.configServices({ cwd: appDir });
|
|
39
40
|
// Check if app is running
|
|
40
|
-
const
|
|
41
|
-
if (
|
|
42
|
-
throw new Error(`Failed to get application status! stdout=${
|
|
41
|
+
const status = await docker_compose_1.default.ps({ cwd: appDir });
|
|
42
|
+
if (status.exitCode !== 0) {
|
|
43
|
+
throw new Error(`Failed to get application status! stdout=${status.out} stderr=${status.err}`);
|
|
43
44
|
}
|
|
44
45
|
const services = [];
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
//
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
46
|
+
const spawner = (0, util_1.JsSpawner)({ path: appDir });
|
|
47
|
+
for (const name of composeServices.data.services) {
|
|
48
|
+
// Get container name for service
|
|
49
|
+
const containerId = await spawner.run({
|
|
50
|
+
exe: 'docker-compose',
|
|
51
|
+
cwd: appDir,
|
|
52
|
+
args: ['ps', '-q', name],
|
|
53
|
+
});
|
|
54
|
+
if (containerId === '') {
|
|
55
|
+
// The service was not yet started or failed to start
|
|
56
|
+
services.push({ name, state: 'Stopped' });
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
const slashContainerName = await spawner.run({
|
|
60
|
+
exe: 'docker',
|
|
61
|
+
args: ['inspect', '-f', '{{.Name}}', containerId],
|
|
62
|
+
});
|
|
63
|
+
const containerName = slashContainerName.substring(1);
|
|
64
|
+
let foundContainer = false;
|
|
65
|
+
for (const container of status.data.services) {
|
|
66
|
+
if (container.name !== containerName) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
let state;
|
|
70
|
+
if (container.state.includes('Up')) {
|
|
71
|
+
state = 'Up';
|
|
72
|
+
}
|
|
73
|
+
else if (container.state.includes('Stopped') ||
|
|
74
|
+
container.state.includes('Exit')) {
|
|
75
|
+
state = 'Stopped';
|
|
76
|
+
}
|
|
77
|
+
else if (container.state.includes('Restarting')) {
|
|
78
|
+
state = 'Restarting';
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
throw new Error(`Unknown state for service! (${container.state})`);
|
|
82
|
+
}
|
|
83
|
+
services.push({ name, state });
|
|
84
|
+
foundContainer = true;
|
|
68
85
|
}
|
|
69
|
-
|
|
70
|
-
throw new Error(`
|
|
86
|
+
if (!foundContainer) {
|
|
87
|
+
throw new Error(`Unable to find container for ${name} in ${JSON.stringify(status.data.services, null, 2)}`);
|
|
71
88
|
}
|
|
72
|
-
services.push({ name, state });
|
|
73
89
|
}
|
|
74
90
|
}
|
|
75
91
|
return { appDetails, services };
|
|
@@ -82,12 +98,8 @@ async function getAppLogs(props) {
|
|
|
82
98
|
const serviceList = services
|
|
83
99
|
? services
|
|
84
100
|
: await (async function () {
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
for (const service of appStatus.services) {
|
|
88
|
-
services.push(service.name);
|
|
89
|
-
}
|
|
90
|
-
return services;
|
|
101
|
+
const composeServices = await docker_compose_1.default.configServices({ cwd: appDir });
|
|
102
|
+
return composeServices.data.services;
|
|
91
103
|
})();
|
|
92
104
|
// Use direct command with spawner in order to get a readable stream
|
|
93
105
|
return await (0, util_1.JsSpawner)().runStreaming({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/application-control/status.ts"],"names":[],"mappings":";;;AAAA,mDAAqC;AACrC,gEAAqE;AACrE,4CAA8C;AAE9C,qDAAsD;AACtD,mCAAyD;AAEzD,iEAAiE;AAE1D,KAAK,UAAU,eAAe,CAAC,KAA4B;IAChE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5B,MAAM,cAAc,GAAG,MAAM,IAAA,uCAAsB,EAAC,SAAS,CAAC,CAAC;IAC/D,OAAO,cAAc,CAAC;AACxB,CAAC;AAJD,0CAIC;AAEM,KAAK,UAAU,oBAAoB,CAAC,KAA4B;IACrE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5B,MAAM,cAAc,GAAG,MAAM,IAAA,uCAAsB,EAAC,SAAS,CAAC,CAAC;IAC/D,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,EAAE;QAC9B,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;KACzC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAPD,oDAOC;AAEM,KAAK,UAAU,YAAY,CAAC,KAA4B;IAC7D,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC,CAAC,MAAM,IAAA,8BAAe,GAAE,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE;QAC1D,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;KACjD;IAED,MAAM,UAAU,GAAG;QACjB,SAAS;QACT,OAAO,EAAE,MAAM,IAAA,8BAAe,GAAE,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;KAC9D,CAAC;IACF,IAAI,CAAC,CAAC,MAAM,IAAA,8BAAe,GAAE,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE;QACxD,oCAAoC;QACpC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;KACrC;IAED,MAAM,MAAM,GAAG,IAAA,iBAAS,EAAC,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/application-control/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-agent-cloud-connection.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/device-agent-cloud-connection.ts"],"names":[],"mappings":"AAgBA,OAAO,EASL,kBAAkB,EAEnB,MAAM,gCAAgC,CAAC;AAIxC,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"device-agent-cloud-connection.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/device-agent-cloud-connection.ts"],"names":[],"mappings":"AAgBA,OAAO,EASL,kBAAkB,EAEnB,MAAM,gCAAgC,CAAC;AAIxC,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAQ;IACnD,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,kBAAkB,CAAgC;IAEnD,MAAM,MAAiB;IACvB,gBAAgB,SAAsD;IACtE,gBAAgB,SAAsD;;IAetE,qBAAqB,CAAC,kBAAkB,EAAE,kBAAkB;IAI5D,qBAAqB,IAAI,kBAAkB;IAI3C,cAAc,IAAI,OAAO;IAIzB,cAAc,CAAC,OAAO,EAAE,OAAO;IAI/B,yBAAyB;IAOzB,kBAAkB;IAIlB,6BAA6B;IAI7B,WAAW,IAAI,MAAM;IAIrB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAGrD;AAED,wBAAgB,4BAA4B,SAkO3C"}
|
|
@@ -22,8 +22,8 @@ class DeviceAgentCloudConnection {
|
|
|
22
22
|
this.clientId = (0, get_device_id_1.getDeviceId)();
|
|
23
23
|
this.host = (0, urls_1.getIoTCoreEndpointUrl)();
|
|
24
24
|
this.publishable = false;
|
|
25
|
-
this.publishInterval =
|
|
26
|
-
this.installationStatusInterval =
|
|
25
|
+
this.publishInterval = 10000;
|
|
26
|
+
this.installationStatusInterval = 5000;
|
|
27
27
|
this.device = awsIot.device;
|
|
28
28
|
this.agentTopicPrefix = `destination/agent/device/${this.clientId}/topic/`;
|
|
29
29
|
this.cloudTopicPrefix = `destination/cloud/device/${this.clientId}/topic/`;
|
|
@@ -113,12 +113,13 @@ function runDeviceAgentCloudInterface() {
|
|
|
113
113
|
};
|
|
114
114
|
return applicationStatePackage;
|
|
115
115
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
116
|
+
// * This was causing massive CPU overhead
|
|
117
|
+
// const publishAppLogs = setInterval(async function () {
|
|
118
|
+
// const appLogsMessage = await getAppLogsMessage();
|
|
119
|
+
// const topic = `device/${deviceAgent.getClientId()}/topic/application-management`;
|
|
120
|
+
// const appLogsPacket = await buildMessagePacket(topic, appLogsMessage);
|
|
121
|
+
// deviceAgent.publishMessage(topic, JSON.stringify({ appLogsPacket }));
|
|
122
|
+
// }, deviceAgent.getPublishInterval());
|
|
122
123
|
async function getAppStateMessage() {
|
|
123
124
|
const appStateMessage = [];
|
|
124
125
|
const apps = await (0, agent_config_1.AgentConfigFile)().getApps();
|
|
@@ -161,13 +162,13 @@ function runDeviceAgentCloudInterface() {
|
|
|
161
162
|
deviceAgent.publishMessage(topic, JSON.stringify({ deviceStatsPacket }));
|
|
162
163
|
}
|
|
163
164
|
}, deviceAgent.getPublishInterval());
|
|
164
|
-
const publishDeviceRequest = async ({ projectId }) => {
|
|
165
|
+
const publishDeviceRequest = async ({ projectId, releaseHash }) => {
|
|
165
166
|
const topic = `${deviceAgent.cloudTopicPrefix}request`;
|
|
166
167
|
const deviceRequestPackage = {
|
|
167
168
|
timestamp: new Date().toUTCString(),
|
|
168
169
|
deviceId: deviceAgent.getClientId(),
|
|
169
170
|
projectId,
|
|
170
|
-
releaseHash
|
|
171
|
+
releaseHash,
|
|
171
172
|
topic,
|
|
172
173
|
};
|
|
173
174
|
deviceAgent.publishMessage(topic, JSON.stringify({ device_request: deviceRequestPackage }));
|
|
@@ -207,6 +208,7 @@ function runDeviceAgentCloudInterface() {
|
|
|
207
208
|
if (type === 'response') {
|
|
208
209
|
deviceAgent.setInstallationStatus({
|
|
209
210
|
status: device_agent_schemas_1.InstallationStatusEnum.IN_PROGRESS,
|
|
211
|
+
applicationReleaseHash: actionPayload.releaseHash,
|
|
210
212
|
});
|
|
211
213
|
const installationStatusPing = setInterval(() => publishInstallationStatus(installationStatusPing), deviceAgent.getInstallationStatusInterval());
|
|
212
214
|
// Install the app with the given url
|
|
@@ -215,6 +217,7 @@ function runDeviceAgentCloudInterface() {
|
|
|
215
217
|
await (0, install_1.installApp)(actionPayload);
|
|
216
218
|
deviceAgent.setInstallationStatus({
|
|
217
219
|
status: device_agent_schemas_1.InstallationStatusEnum.SUCCESS,
|
|
220
|
+
applicationReleaseHash: actionPayload.releaseHash,
|
|
218
221
|
});
|
|
219
222
|
}
|
|
220
223
|
catch (e) {
|
|
@@ -222,6 +225,7 @@ function runDeviceAgentCloudInterface() {
|
|
|
222
225
|
deviceAgent.setInstallationStatus({
|
|
223
226
|
status: device_agent_schemas_1.InstallationStatusEnum.FAILURE,
|
|
224
227
|
reason,
|
|
228
|
+
applicationReleaseHash: actionPayload.releaseHash,
|
|
225
229
|
});
|
|
226
230
|
}
|
|
227
231
|
})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-agent-cloud-connection.js","sourceRoot":"","sources":["../../src/cloud-connection/device-agent-cloud-connection.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,MAAM,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAC7C,iDAA+D;AAC/D,qDAI6B;AAC7B,0DAMuC;AACvC,4DAA4D;AAC5D,qEAAuF;AACvF,yEAWwC;AACxC,yDAAoD;AACpD,iEAAiE;AAEjE,MAAa,0BAA0B;IAarC;QAZQ,aAAQ,GAAG,IAAA,2BAAW,GAAE,CAAC;QACzB,SAAI,GAAG,IAAA,4BAAqB,GAAE,CAAC;QAC/B,gBAAW,GAAG,KAAK,CAAC;QACX,oBAAe,GAAG,
|
|
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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-model-package.d.ts","sourceRoot":"","sources":["../../src/subcommands/get-model-package.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-model-package.d.ts","sourceRoot":"","sources":["../../src/subcommands/get-model-package.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,sBAAsB;;;4DA0BjC,CAAC"}
|
|
@@ -2,11 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getModelPackageCliLeaf = void 0;
|
|
4
4
|
const alwayscli_1 = require("@alwaysai/alwayscli");
|
|
5
|
-
const
|
|
6
|
-
const model_1 = require("alwaysai/lib/core/model");
|
|
5
|
+
const app_1 = require("alwaysai/lib/core/app");
|
|
7
6
|
const infrastructure_1 = require("alwaysai/lib/infrastructure");
|
|
8
7
|
const util_1 = require("alwaysai/lib/util");
|
|
9
|
-
const path_1 = require("path");
|
|
10
8
|
exports.getModelPackageCliLeaf = (0, alwayscli_1.CliLeaf)({
|
|
11
9
|
name: 'get-model-package',
|
|
12
10
|
description: 'Download and unpack a model package',
|
|
@@ -26,25 +24,10 @@ exports.getModelPackageCliLeaf = (0, alwayscli_1.CliLeaf)({
|
|
|
26
24
|
}),
|
|
27
25
|
},
|
|
28
26
|
async action(id, opts) {
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
const path = opts.path ? opts.path : process.cwd();
|
|
32
|
-
// untar will unpack model package contents to <name> so append publisher to path
|
|
33
|
-
const publisherPath = (0, path_1.join)(path, publisher);
|
|
34
|
-
const spawner = (0, util_1.JsSpawner)({ path: publisherPath });
|
|
35
|
-
if (await spawner.exists(name)) {
|
|
36
|
-
console.log(`Found existing version of ${id} at ${(0, path_1.join)(publisherPath, name)}, removing prior to download`);
|
|
37
|
-
spawner.rimraf(name);
|
|
38
|
-
}
|
|
39
|
-
console.log(`Downloading ${id} to ${path}`);
|
|
40
|
-
await (0, user_1.checkUserIsLoggedInComponent)({ yes: true });
|
|
27
|
+
const path = opts.path || process.cwd();
|
|
28
|
+
const spawner = (0, util_1.JsSpawner)({ path });
|
|
41
29
|
const version = opts.version || (await (0, infrastructure_1.CliRpcClient)().getModelVersion({ id })).version;
|
|
42
|
-
|
|
43
|
-
await (0, model_1.downloadModelPackageToCache)(id, version);
|
|
44
|
-
}
|
|
45
|
-
const modelPackageStream = model_1.modelPackageCache.read(id, version);
|
|
46
|
-
await spawner.mkdirp();
|
|
47
|
-
await spawner.untar(modelPackageStream);
|
|
30
|
+
await (0, app_1.appInstallModel)(spawner, id, version);
|
|
48
31
|
console.log(`Completed downloading ${id} to ${path}`);
|
|
49
32
|
},
|
|
50
33
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-model-package.js","sourceRoot":"","sources":["../../src/subcommands/get-model-package.ts"],"names":[],"mappings":";;;AAAA,mDAA8E;AAC9E
|
|
1
|
+
{"version":3,"file":"get-model-package.js","sourceRoot":"","sources":["../../src/subcommands/get-model-package.ts"],"names":[],"mappings":";;;AAAA,mDAA8E;AAC9E,+CAAwD;AACxD,gEAA2D;AAC3D,4CAA8C;AAEjC,QAAA,sBAAsB,GAAG,IAAA,mBAAO,EAAC;IAC5C,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,qCAAqC;IAClD,eAAe,EAAE,IAAA,0BAAc,EAAC;QAC9B,WAAW,EAAE,uCAAuC;QACpD,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,MAAM;KACpB,CAAC;IACF,WAAW,EAAE;QACX,OAAO,EAAE,IAAA,0BAAc,EAAC;YACtB,WAAW,EAAE,iCAAiC;YAC9C,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,IAAI,EAAE,IAAA,0BAAc,EAAC;YACnB,WAAW,EAAE,2CAA2C;YACxD,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH;IACD,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,IAAA,gBAAS,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,MAAM,OAAO,GACX,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAA,6BAAY,GAAE,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACzE,MAAM,IAAA,qBAAe,EAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;CACF,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alwaysai/device-agent",
|
|
3
3
|
"description": "The alwaysAI Device Agent",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.7",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
7
7
|
"publishConfig": {
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@alwaysai/alwayscli": "0.3.1",
|
|
33
33
|
"@alwaysai/config-nodejs": "0.1.0",
|
|
34
|
+
"@alwaysai/device-agent-schemas": "0.0.3",
|
|
34
35
|
"@carnesen/coded-error": "0.4.0",
|
|
35
|
-
"@alwaysai/device-agent-schemas": "0.0.2",
|
|
36
36
|
"@types/mkdirp": "1.0.2",
|
|
37
37
|
"@types/pump": "1.1.1",
|
|
38
38
|
"@types/rimraf": "3.0.2",
|
package/readme.md
CHANGED
|
@@ -158,14 +158,14 @@ To download a model package from the alwaysAI cloud and unpack to a specific dir
|
|
|
158
158
|
aai-agent get-model-package <model ID> [--path <destination path>]
|
|
159
159
|
```
|
|
160
160
|
|
|
161
|
-
For example, to download `alwaysai/yolo_v3` to `~/
|
|
161
|
+
For example, to download `alwaysai/yolo_v3` to `~/alwaysai` run:
|
|
162
162
|
|
|
163
163
|
```
|
|
164
|
-
aai-agent get-model-package alwaysai/yolo_v3 --path ~/
|
|
164
|
+
aai-agent get-model-package alwaysai/yolo_v3 --path ~/alwaysai
|
|
165
165
|
```
|
|
166
166
|
|
|
167
167
|
Once the command completes, you'll see the model package in the
|
|
168
|
-
`~/models/alwaysai/yolo_v3` directory.
|
|
168
|
+
`~/alwaysai/models/alwaysai/yolo_v3` directory.
|
|
169
169
|
|
|
170
170
|
### Set and update environment variables
|
|
171
171
|
|
|
@@ -20,7 +20,6 @@ export async function setEnv(props: {
|
|
|
20
20
|
if ('services' in composeParsed) {
|
|
21
21
|
let services: string[] = Object.keys(composeParsed['services']);
|
|
22
22
|
if (props.service) {
|
|
23
|
-
console.log(services);
|
|
24
23
|
if (services.includes(props.service)) {
|
|
25
24
|
services = [props.service];
|
|
26
25
|
} else {
|
|
@@ -38,42 +38,66 @@ export async function getAppStatus(props: { projectId: string }): Promise<AppSta
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
const appDir = getAppDir(projectId);
|
|
41
|
+
const composeServices = await compose.configServices({ cwd: appDir });
|
|
41
42
|
|
|
42
43
|
// Check if app is running
|
|
43
|
-
const
|
|
44
|
+
const status = await compose.ps({ cwd: appDir });
|
|
44
45
|
|
|
45
|
-
if (
|
|
46
|
+
if (status.exitCode !== 0) {
|
|
46
47
|
throw new Error(
|
|
47
|
-
`Failed to get application status! stdout=${
|
|
48
|
+
`Failed to get application status! stdout=${status.out} stderr=${status.err}`,
|
|
48
49
|
);
|
|
49
50
|
}
|
|
50
51
|
|
|
51
52
|
const services: ServiceStatus[] = [];
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
//
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
53
|
+
const spawner = JsSpawner({ path: appDir });
|
|
54
|
+
for (const name of composeServices.data.services) {
|
|
55
|
+
// Get container name for service
|
|
56
|
+
const containerId = await spawner.run({
|
|
57
|
+
exe: 'docker-compose',
|
|
58
|
+
cwd: appDir,
|
|
59
|
+
args: ['ps', '-q', name],
|
|
60
|
+
});
|
|
61
|
+
if (containerId === '') {
|
|
62
|
+
// The service was not yet started or failed to start
|
|
63
|
+
services.push({ name, state: 'Stopped' });
|
|
64
|
+
} else {
|
|
65
|
+
const slashContainerName = await spawner.run({
|
|
66
|
+
exe: 'docker',
|
|
67
|
+
args: ['inspect', '-f', '{{.Name}}', containerId],
|
|
68
|
+
});
|
|
69
|
+
const containerName = slashContainerName.substring(1);
|
|
70
|
+
|
|
71
|
+
let foundContainer = false;
|
|
72
|
+
for (const container of status.data.services) {
|
|
73
|
+
if (container.name !== containerName) {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
let state: AppStateValue;
|
|
77
|
+
if (container.state.includes('Up')) {
|
|
78
|
+
state = 'Up';
|
|
79
|
+
} else if (
|
|
80
|
+
container.state.includes('Stopped') ||
|
|
81
|
+
container.state.includes('Exit')
|
|
82
|
+
) {
|
|
83
|
+
state = 'Stopped';
|
|
84
|
+
} else if (container.state.includes('Restarting')) {
|
|
85
|
+
state = 'Restarting';
|
|
86
|
+
} else {
|
|
87
|
+
throw new Error(`Unknown state for service! (${container.state})`);
|
|
88
|
+
}
|
|
89
|
+
services.push({ name, state });
|
|
90
|
+
foundContainer = true;
|
|
91
|
+
}
|
|
92
|
+
if (!foundContainer) {
|
|
93
|
+
throw new Error(
|
|
94
|
+
`Unable to find container for ${name} in ${JSON.stringify(
|
|
95
|
+
status.data.services,
|
|
96
|
+
null,
|
|
97
|
+
2,
|
|
98
|
+
)}`,
|
|
99
|
+
);
|
|
75
100
|
}
|
|
76
|
-
services.push({ name, state });
|
|
77
101
|
}
|
|
78
102
|
}
|
|
79
103
|
return { appDetails, services };
|
|
@@ -91,12 +115,8 @@ export async function getAppLogs(props: {
|
|
|
91
115
|
const serviceList = services
|
|
92
116
|
? services
|
|
93
117
|
: await (async function () {
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
for (const service of appStatus.services) {
|
|
97
|
-
services.push(service.name);
|
|
98
|
-
}
|
|
99
|
-
return services;
|
|
118
|
+
const composeServices = await compose.configServices({ cwd: appDir });
|
|
119
|
+
return composeServices.data.services;
|
|
100
120
|
})();
|
|
101
121
|
|
|
102
122
|
// Use direct command with spawner in order to get a readable stream
|
|
@@ -33,8 +33,8 @@ export class DeviceAgentCloudConnection {
|
|
|
33
33
|
private clientId = getDeviceId();
|
|
34
34
|
private host = getIoTCoreEndpointUrl();
|
|
35
35
|
private publishable = false;
|
|
36
|
-
private readonly publishInterval =
|
|
37
|
-
private readonly installationStatusInterval =
|
|
36
|
+
private readonly publishInterval = 10000;
|
|
37
|
+
private readonly installationStatusInterval = 5000;
|
|
38
38
|
private installationStatus: InstallationStatus;
|
|
39
39
|
private publishableTimeout: ReturnType<typeof setTimeout>;
|
|
40
40
|
|
|
@@ -139,13 +139,14 @@ export function runDeviceAgentCloudInterface() {
|
|
|
139
139
|
return applicationStatePackage;
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
142
|
+
// * This was causing massive CPU overhead
|
|
143
|
+
// const publishAppLogs = setInterval(async function () {
|
|
144
|
+
// const appLogsMessage = await getAppLogsMessage();
|
|
145
|
+
// const topic = `device/${deviceAgent.getClientId()}/topic/application-management`;
|
|
146
|
+
// const appLogsPacket = await buildMessagePacket(topic, appLogsMessage);
|
|
146
147
|
|
|
147
|
-
|
|
148
|
-
}, deviceAgent.getPublishInterval());
|
|
148
|
+
// deviceAgent.publishMessage(topic, JSON.stringify({ appLogsPacket }));
|
|
149
|
+
// }, deviceAgent.getPublishInterval());
|
|
149
150
|
|
|
150
151
|
async function getAppStateMessage(): Promise<AppStateMessage> {
|
|
151
152
|
const appStateMessage: AppState[] = [];
|
|
@@ -194,13 +195,13 @@ export function runDeviceAgentCloudInterface() {
|
|
|
194
195
|
}
|
|
195
196
|
}, deviceAgent.getPublishInterval());
|
|
196
197
|
|
|
197
|
-
const publishDeviceRequest = async ({ projectId }) => {
|
|
198
|
+
const publishDeviceRequest = async ({ projectId, releaseHash }) => {
|
|
198
199
|
const topic = `${deviceAgent.cloudTopicPrefix}request`;
|
|
199
200
|
const deviceRequestPackage = {
|
|
200
201
|
timestamp: new Date().toUTCString(),
|
|
201
202
|
deviceId: deviceAgent.getClientId(),
|
|
202
203
|
projectId,
|
|
203
|
-
releaseHash
|
|
204
|
+
releaseHash,
|
|
204
205
|
topic,
|
|
205
206
|
};
|
|
206
207
|
deviceAgent.publishMessage(
|
|
@@ -247,6 +248,7 @@ export function runDeviceAgentCloudInterface() {
|
|
|
247
248
|
if (type === 'response') {
|
|
248
249
|
deviceAgent.setInstallationStatus({
|
|
249
250
|
status: InstallationStatusEnum.IN_PROGRESS,
|
|
251
|
+
applicationReleaseHash: actionPayload.releaseHash as string,
|
|
250
252
|
});
|
|
251
253
|
|
|
252
254
|
const installationStatusPing = setInterval(
|
|
@@ -260,12 +262,14 @@ export function runDeviceAgentCloudInterface() {
|
|
|
260
262
|
await installApp(actionPayload);
|
|
261
263
|
deviceAgent.setInstallationStatus({
|
|
262
264
|
status: InstallationStatusEnum.SUCCESS,
|
|
265
|
+
applicationReleaseHash: actionPayload.releaseHash as string,
|
|
263
266
|
});
|
|
264
267
|
} catch (e) {
|
|
265
268
|
const reason: string = e.message;
|
|
266
269
|
deviceAgent.setInstallationStatus({
|
|
267
270
|
status: InstallationStatusEnum.FAILURE,
|
|
268
271
|
reason,
|
|
272
|
+
applicationReleaseHash: actionPayload.releaseHash as string,
|
|
269
273
|
});
|
|
270
274
|
}
|
|
271
275
|
})();
|
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
import { CliLeaf, CliNumberInput, CliStringInput } from '@alwaysai/alwayscli';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
downloadModelPackageToCache,
|
|
5
|
-
ModelId,
|
|
6
|
-
modelPackageCache,
|
|
7
|
-
} from 'alwaysai/lib/core/model';
|
|
2
|
+
import { appInstallModel } from 'alwaysai/lib/core/app';
|
|
8
3
|
import { CliRpcClient } from 'alwaysai/lib/infrastructure';
|
|
9
4
|
import { JsSpawner } from 'alwaysai/lib/util';
|
|
10
|
-
import { join } from 'path';
|
|
11
5
|
|
|
12
6
|
export const getModelPackageCliLeaf = CliLeaf({
|
|
13
7
|
name: 'get-model-package',
|
|
@@ -28,33 +22,11 @@ export const getModelPackageCliLeaf = CliLeaf({
|
|
|
28
22
|
}),
|
|
29
23
|
},
|
|
30
24
|
async action(id, opts) {
|
|
31
|
-
|
|
32
|
-
const {
|
|
33
|
-
const path = opts.path ? opts.path : process.cwd();
|
|
34
|
-
// untar will unpack model package contents to <name> so append publisher to path
|
|
35
|
-
const publisherPath = join(path, publisher);
|
|
36
|
-
const spawner = JsSpawner({ path: publisherPath });
|
|
37
|
-
|
|
38
|
-
if (await spawner.exists(name)) {
|
|
39
|
-
console.log(
|
|
40
|
-
`Found existing version of ${id} at ${join(
|
|
41
|
-
publisherPath,
|
|
42
|
-
name,
|
|
43
|
-
)}, removing prior to download`,
|
|
44
|
-
);
|
|
45
|
-
spawner.rimraf(name);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
console.log(`Downloading ${id} to ${path}`);
|
|
49
|
-
await checkUserIsLoggedInComponent({ yes: true });
|
|
25
|
+
const path = opts.path || process.cwd();
|
|
26
|
+
const spawner = JsSpawner({ path });
|
|
50
27
|
const version =
|
|
51
28
|
opts.version || (await CliRpcClient().getModelVersion({ id })).version;
|
|
52
|
-
|
|
53
|
-
await downloadModelPackageToCache(id, version);
|
|
54
|
-
}
|
|
55
|
-
const modelPackageStream = modelPackageCache.read(id, version);
|
|
56
|
-
await spawner.mkdirp();
|
|
57
|
-
await spawner.untar(modelPackageStream);
|
|
29
|
+
await appInstallModel(spawner, id, version);
|
|
58
30
|
console.log(`Completed downloading ${id} to ${path}`);
|
|
59
31
|
},
|
|
60
32
|
});
|