@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.
- package/lib/application-control/backup.d.ts +8 -0
- package/lib/application-control/backup.d.ts.map +1 -0
- package/lib/application-control/backup.js +37 -0
- package/lib/application-control/backup.js.map +1 -0
- package/lib/application-control/config.d.ts +17 -0
- package/lib/application-control/config.d.ts.map +1 -0
- package/lib/application-control/config.js +62 -0
- package/lib/application-control/config.js.map +1 -0
- package/lib/application-control/environment-variables.d.ts +9 -0
- package/lib/application-control/environment-variables.d.ts.map +1 -0
- package/lib/application-control/environment-variables.js +73 -0
- package/lib/application-control/environment-variables.js.map +1 -0
- package/lib/application-control/index.d.ts +10 -0
- package/lib/application-control/index.d.ts.map +1 -0
- package/lib/application-control/index.js +32 -0
- package/lib/application-control/index.js.map +1 -0
- package/lib/application-control/install.d.ts +22 -0
- package/lib/application-control/install.d.ts.map +1 -0
- package/lib/application-control/install.js +156 -0
- package/lib/application-control/install.js.map +1 -0
- package/lib/application-control/models.d.ts +23 -0
- package/lib/application-control/models.d.ts.map +1 -0
- package/lib/application-control/models.js +154 -0
- package/lib/application-control/models.js.map +1 -0
- package/lib/application-control/status.d.ts +27 -0
- package/lib/application-control/status.d.ts.map +1 -0
- package/lib/application-control/status.js +153 -0
- package/lib/application-control/status.js.map +1 -0
- package/lib/application-control/types.d.ts +5 -0
- package/lib/application-control/types.d.ts.map +1 -0
- package/lib/application-control/types.js +3 -0
- package/lib/application-control/types.js.map +1 -0
- package/lib/application-control/utils.d.ts +14 -0
- package/lib/application-control/utils.d.ts.map +1 -0
- package/lib/application-control/utils.js +82 -0
- package/lib/application-control/utils.js.map +1 -0
- package/lib/cloud-connection/device-agent-cloud-connection.d.ts +51 -0
- package/lib/cloud-connection/device-agent-cloud-connection.d.ts.map +1 -0
- package/lib/cloud-connection/device-agent-cloud-connection.js +490 -0
- package/lib/cloud-connection/device-agent-cloud-connection.js.map +1 -0
- package/lib/cloud-connection/device-agent.d.ts +21 -0
- package/lib/cloud-connection/device-agent.d.ts.map +1 -0
- package/lib/cloud-connection/device-agent.js +65 -0
- package/lib/cloud-connection/device-agent.js.map +1 -0
- package/lib/device-control/device-control.d.ts +4 -0
- package/lib/device-control/device-control.d.ts.map +1 -0
- package/lib/device-control/device-control.js +20 -0
- package/lib/device-control/device-control.js.map +1 -0
- package/lib/docker/docker-cmd.d.ts +4 -0
- package/lib/docker/docker-cmd.d.ts.map +1 -0
- package/lib/docker/docker-cmd.js +16 -0
- package/lib/docker/docker-cmd.js.map +1 -0
- package/lib/docker/docker-compose-cmd.d.ts +5 -0
- package/lib/docker/docker-compose-cmd.d.ts.map +1 -0
- package/lib/docker/docker-compose-cmd.js +16 -0
- package/lib/docker/docker-compose-cmd.js.map +1 -0
- package/lib/endpoints.d.ts +3 -0
- package/lib/endpoints.d.ts.map +1 -0
- package/lib/endpoints.js +28 -0
- package/lib/endpoints.js.map +1 -0
- package/lib/environment.d.ts +7 -0
- package/lib/environment.d.ts.map +1 -0
- package/lib/environment.js +24 -0
- package/lib/environment.js.map +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +26 -0
- package/lib/index.js.map +1 -0
- package/lib/infrastructure/agent-config.d.ts +73 -0
- package/lib/infrastructure/agent-config.d.ts.map +1 -0
- package/lib/infrastructure/agent-config.js +175 -0
- package/lib/infrastructure/agent-config.js.map +1 -0
- package/lib/infrastructure/agent-config.test.d.ts +2 -0
- package/lib/infrastructure/agent-config.test.d.ts.map +1 -0
- package/lib/infrastructure/agent-config.test.js +182 -0
- package/lib/infrastructure/agent-config.test.js.map +1 -0
- package/lib/infrastructure/certificates-and-tokens.d.ts +6 -0
- package/lib/infrastructure/certificates-and-tokens.d.ts.map +1 -0
- package/lib/infrastructure/certificates-and-tokens.js +37 -0
- package/lib/infrastructure/certificates-and-tokens.js.map +1 -0
- package/lib/infrastructure/urls.d.ts +2 -0
- package/lib/infrastructure/urls.d.ts.map +1 -0
- package/lib/infrastructure/urls.js +25 -0
- package/lib/infrastructure/urls.js.map +1 -0
- package/lib/root.d.ts +2 -0
- package/lib/root.d.ts.map +1 -0
- package/lib/root.js +12 -0
- package/lib/root.js.map +1 -0
- package/lib/subcommands/app/app.d.ts +59 -0
- package/lib/subcommands/app/app.d.ts.map +1 -0
- package/lib/subcommands/app/app.js +317 -0
- package/lib/subcommands/app/app.js.map +1 -0
- package/lib/subcommands/app/index.d.ts +2 -0
- package/lib/subcommands/app/index.d.ts.map +1 -0
- package/lib/subcommands/app/index.js +30 -0
- package/lib/subcommands/app/index.js.map +1 -0
- package/lib/subcommands/device/clean.d.ts +2 -0
- package/lib/subcommands/device/clean.d.ts.map +1 -0
- package/lib/subcommands/device/clean.js +20 -0
- package/lib/subcommands/device/clean.js.map +1 -0
- package/lib/subcommands/device/device.d.ts +6 -0
- package/lib/subcommands/device/device.d.ts.map +1 -0
- package/lib/subcommands/device/device.js +92 -0
- package/lib/subcommands/device/device.js.map +1 -0
- package/lib/subcommands/device/index.d.ts +2 -0
- package/lib/subcommands/device/index.d.ts.map +1 -0
- package/lib/subcommands/device/index.js +12 -0
- package/lib/subcommands/device/index.js.map +1 -0
- package/lib/subcommands/get-model-package.d.ts +5 -0
- package/lib/subcommands/get-model-package.d.ts.map +1 -0
- package/lib/subcommands/get-model-package.js +35 -0
- package/lib/subcommands/get-model-package.js.map +1 -0
- package/lib/subcommands/index.d.ts +9 -0
- package/lib/subcommands/index.d.ts.map +1 -0
- package/lib/subcommands/index.js +14 -0
- package/lib/subcommands/index.js.map +1 -0
- package/lib/subcommands/login.d.ts +6 -0
- package/lib/subcommands/login.d.ts.map +1 -0
- package/lib/subcommands/login.js +35 -0
- package/lib/subcommands/login.js.map +1 -0
- package/lib/util/clean-certs.d.ts +2 -0
- package/lib/util/clean-certs.d.ts.map +1 -0
- package/lib/util/clean-certs.js +16 -0
- package/lib/util/clean-certs.js.map +1 -0
- package/lib/util/copy-dir.d.ts +5 -0
- package/lib/util/copy-dir.d.ts.map +1 -0
- package/lib/util/copy-dir.js +16 -0
- package/lib/util/copy-dir.js.map +1 -0
- package/lib/util/directories.d.ts +23 -0
- package/lib/util/directories.d.ts.map +1 -0
- package/lib/util/directories.js +50 -0
- package/lib/util/directories.js.map +1 -0
- package/lib/util/get-device-id.d.ts +2 -0
- package/lib/util/get-device-id.d.ts.map +1 -0
- package/lib/util/get-device-id.js +24 -0
- package/lib/util/get-device-id.js.map +1 -0
- package/lib/util/http-client.d.ts +3 -0
- package/lib/util/http-client.d.ts.map +1 -0
- package/lib/util/http-client.js +30 -0
- package/lib/util/http-client.js.map +1 -0
- package/lib/util/logger.d.ts +4 -0
- package/lib/util/logger.d.ts.map +1 -0
- package/lib/util/logger.js +24 -0
- package/lib/util/logger.js.map +1 -0
- package/lib/util/run-in-dir.d.ts +2 -0
- package/lib/util/run-in-dir.d.ts.map +1 -0
- package/lib/util/run-in-dir.js +17 -0
- package/lib/util/run-in-dir.js.map +1 -0
- package/lib/util/sleep.d.ts +2 -0
- package/lib/util/sleep.d.ts.map +1 -0
- package/lib/util/sleep.js +9 -0
- package/lib/util/sleep.js.map +1 -0
- package/package.json +98 -0
- package/readme.md +219 -0
- package/src/application-control/backup.ts +36 -0
- package/src/application-control/config.ts +61 -0
- package/src/application-control/environment-variables.ts +74 -0
- package/src/application-control/index.ts +45 -0
- package/src/application-control/install.ts +206 -0
- package/src/application-control/models.ts +194 -0
- package/src/application-control/status.ts +187 -0
- package/src/application-control/types.ts +1 -0
- package/src/application-control/utils.ts +95 -0
- package/src/cloud-connection/device-agent-cloud-connection.ts +673 -0
- package/src/cloud-connection/device-agent.ts +120 -0
- package/src/device-control/device-control.ts +16 -0
- package/src/docker/docker-cmd.ts +12 -0
- package/src/docker/docker-compose-cmd.ts +12 -0
- package/src/endpoints.ts +24 -0
- package/src/environment.ts +28 -0
- package/src/index.ts +26 -0
- package/src/infrastructure/agent-config.test.ts +199 -0
- package/src/infrastructure/agent-config.ts +208 -0
- package/src/infrastructure/certificates-and-tokens.ts +47 -0
- package/src/infrastructure/urls.ts +21 -0
- package/src/root.ts +11 -0
- package/src/subcommands/app/app.ts +337 -0
- package/src/subcommands/app/index.ts +46 -0
- package/src/subcommands/device/clean.ts +16 -0
- package/src/subcommands/device/device.ts +126 -0
- package/src/subcommands/device/index.ts +9 -0
- package/src/subcommands/get-model-package.ts +33 -0
- package/src/subcommands/index.ts +11 -0
- package/src/subcommands/login.ts +33 -0
- package/src/util/clean-certs.ts +12 -0
- package/src/util/copy-dir.ts +12 -0
- package/src/util/directories.ts +82 -0
- package/src/util/get-device-id.ts +22 -0
- package/src/util/http-client.ts +35 -0
- package/src/util/logger.ts +28 -0
- package/src/util/run-in-dir.ts +15 -0
- package/src/util/sleep.ts +5 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updateModelsWithPresignedUrls = exports.installModelsWithPresignedURLs = exports.updateModels = exports.replaceModels = exports.removeModel = exports.addModel = exports.getAppModels = void 0;
|
|
4
|
+
const device_agent_schemas_1 = require("@alwaysai/device-agent-schemas");
|
|
5
|
+
const app_1 = require("alwaysai/lib/components/app");
|
|
6
|
+
const util_1 = require("alwaysai/lib/util");
|
|
7
|
+
const logger_1 = require("../util/logger");
|
|
8
|
+
const fs_1 = require("fs");
|
|
9
|
+
const path_1 = require("path");
|
|
10
|
+
const agent_config_1 = require("../infrastructure/agent-config");
|
|
11
|
+
const copy_dir_1 = require("../util/copy-dir");
|
|
12
|
+
const run_in_dir_1 = require("../util/run-in-dir");
|
|
13
|
+
const status_1 = require("./status");
|
|
14
|
+
const utils_1 = require("./utils");
|
|
15
|
+
async function getAppModels(props) {
|
|
16
|
+
const { projectId } = props;
|
|
17
|
+
if (!(await (0, agent_config_1.AgentConfigFile)().isAppPresent({ projectId }))) {
|
|
18
|
+
throw new Error('Application is not installed');
|
|
19
|
+
}
|
|
20
|
+
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
21
|
+
const appCfgPath = (0, path_1.join)(appDir, 'alwaysai.app.json');
|
|
22
|
+
if (!(0, fs_1.existsSync)(appCfgPath)) {
|
|
23
|
+
throw new Error('Application config not found!');
|
|
24
|
+
}
|
|
25
|
+
const appCfg = JSON.parse(await (0, util_1.JsSpawner)().readFile(appCfgPath));
|
|
26
|
+
const modelDetails = [];
|
|
27
|
+
if (!('models' in appCfg)) {
|
|
28
|
+
return modelDetails;
|
|
29
|
+
}
|
|
30
|
+
for (const model in appCfg['models']) {
|
|
31
|
+
modelDetails.push({ modelId: model, version: appCfg['models'][model] });
|
|
32
|
+
}
|
|
33
|
+
return modelDetails;
|
|
34
|
+
}
|
|
35
|
+
exports.getAppModels = getAppModels;
|
|
36
|
+
async function addModel(props) {
|
|
37
|
+
const { projectId, modelId } = props;
|
|
38
|
+
await (0, utils_1.requireAppInstalled)({ projectId });
|
|
39
|
+
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
40
|
+
await (0, app_1.appModelsAddComponent)({
|
|
41
|
+
yes: false,
|
|
42
|
+
dir: appDir,
|
|
43
|
+
id: modelId,
|
|
44
|
+
addToProject: false,
|
|
45
|
+
});
|
|
46
|
+
await (0, utils_1.buildApp)({ appDir });
|
|
47
|
+
}
|
|
48
|
+
exports.addModel = addModel;
|
|
49
|
+
async function removeModel(props) {
|
|
50
|
+
const { projectId, modelId } = props;
|
|
51
|
+
await (0, utils_1.requireAppInstalled)({ projectId });
|
|
52
|
+
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
53
|
+
await (0, run_in_dir_1.runInDir)(app_1.appModelsRemoveComponent, [
|
|
54
|
+
{
|
|
55
|
+
id: modelId,
|
|
56
|
+
purge: true,
|
|
57
|
+
removeFromProject: false,
|
|
58
|
+
},
|
|
59
|
+
], appDir);
|
|
60
|
+
}
|
|
61
|
+
exports.removeModel = removeModel;
|
|
62
|
+
async function replaceModels(props) {
|
|
63
|
+
const { projectId, modelIds } = props;
|
|
64
|
+
await (0, utils_1.requireAppInstalled)({ projectId });
|
|
65
|
+
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
66
|
+
await (0, run_in_dir_1.runInDir)(app_1.appModelsRemoveAllComponent, [
|
|
67
|
+
{
|
|
68
|
+
purge: true,
|
|
69
|
+
removeFromProject: false,
|
|
70
|
+
},
|
|
71
|
+
], appDir);
|
|
72
|
+
for (const modelId of modelIds) {
|
|
73
|
+
await (0, app_1.appModelsAddComponent)({
|
|
74
|
+
yes: false,
|
|
75
|
+
dir: appDir,
|
|
76
|
+
id: modelId,
|
|
77
|
+
addToProject: false,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
await (0, utils_1.buildApp)({ appDir });
|
|
81
|
+
}
|
|
82
|
+
exports.replaceModels = replaceModels;
|
|
83
|
+
async function updateModels(props) {
|
|
84
|
+
const { projectId } = props;
|
|
85
|
+
await (0, utils_1.requireAppInstalled)({ projectId });
|
|
86
|
+
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
87
|
+
await (0, app_1.appModelsUpdateComponent)({
|
|
88
|
+
yes: false,
|
|
89
|
+
dir: appDir,
|
|
90
|
+
});
|
|
91
|
+
await (0, utils_1.buildApp)({ appDir });
|
|
92
|
+
}
|
|
93
|
+
exports.updateModels = updateModels;
|
|
94
|
+
async function installModelsWithPresignedURLs(modelPayloads, targetDir) {
|
|
95
|
+
const spawner = (0, util_1.JsSpawner)();
|
|
96
|
+
await Promise.all(modelPayloads.map(async (payload) => {
|
|
97
|
+
const modelDest = `${targetDir}/${payload.id}`;
|
|
98
|
+
await spawner.mkdirp(modelDest);
|
|
99
|
+
const localDest = `${modelDest}/${payload.version}.tar.gz`;
|
|
100
|
+
await (0, utils_1.downloadPackageUsingPresignedUrl)({
|
|
101
|
+
localDest,
|
|
102
|
+
presignedUrl: payload.modelSignedUrl,
|
|
103
|
+
});
|
|
104
|
+
await spawner.untar((0, fs_1.createReadStream)(localDest), (0, path_1.dirname)(modelDest));
|
|
105
|
+
await spawner.rimraf(localDest);
|
|
106
|
+
}));
|
|
107
|
+
}
|
|
108
|
+
exports.installModelsWithPresignedURLs = installModelsWithPresignedURLs;
|
|
109
|
+
async function updateModelsWithPresignedUrls(project, modelInstallPayloads) {
|
|
110
|
+
// create temp dir with all untouched models
|
|
111
|
+
const spawner = (0, util_1.JsSpawner)();
|
|
112
|
+
const appDir = (0, utils_1.getAppDir)(project);
|
|
113
|
+
const ogDir = `${appDir}/models`;
|
|
114
|
+
const tmpDir = `${ogDir}.tmp`;
|
|
115
|
+
const restoreDir = `${ogDir}.restore`;
|
|
116
|
+
await (0, copy_dir_1.copyDir)({ srcPath: ogDir, destPath: restoreDir });
|
|
117
|
+
await spawner.rimraf(tmpDir);
|
|
118
|
+
try {
|
|
119
|
+
// Move unchanged models
|
|
120
|
+
const existingModels = await getAppModels({ projectId: project });
|
|
121
|
+
for (const model of existingModels) {
|
|
122
|
+
if (!modelInstallPayloads
|
|
123
|
+
.map((newModel) => newModel.id)
|
|
124
|
+
.includes(model.modelId)) {
|
|
125
|
+
// model does not need to be updated
|
|
126
|
+
await (0, copy_dir_1.copyDir)({
|
|
127
|
+
srcPath: `${ogDir}/${model.modelId}`,
|
|
128
|
+
destPath: `${tmpDir}/${model.modelId}`,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// install model packages
|
|
133
|
+
await installModelsWithPresignedURLs(modelInstallPayloads, tmpDir);
|
|
134
|
+
await spawner.rimraf(ogDir);
|
|
135
|
+
await (0, copy_dir_1.copyDir)({ srcPath: tmpDir, destPath: ogDir });
|
|
136
|
+
await spawner.rimraf(tmpDir);
|
|
137
|
+
await (0, utils_1.buildApp)({ appDir: (0, utils_1.getAppDir)(project) });
|
|
138
|
+
const appStatus = await (0, status_1.getAppStatus)({ projectId: project });
|
|
139
|
+
const appIsRunning = appStatus.services.length &&
|
|
140
|
+
appStatus.services[0].state !== device_agent_schemas_1.keyMirrors.appState.stopped;
|
|
141
|
+
if (appIsRunning) {
|
|
142
|
+
(0, status_1.restartApp)({ projectId: project });
|
|
143
|
+
}
|
|
144
|
+
logger_1.logger.info(`Models installed for project ${project}`);
|
|
145
|
+
}
|
|
146
|
+
catch (e) {
|
|
147
|
+
logger_1.logger.error(e, 'Error updating app models from presigned URL, restoring models.');
|
|
148
|
+
await spawner.rimraf(tmpDir);
|
|
149
|
+
await spawner.rimraf(ogDir);
|
|
150
|
+
await (0, copy_dir_1.copyDir)({ srcPath: restoreDir, destPath: ogDir });
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
exports.updateModelsWithPresignedUrls = updateModelsWithPresignedUrls;
|
|
154
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/application-control/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { AppStatePacket } from '@alwaysai/device-agent-schemas';
|
|
3
|
+
export declare function listAppReleases(props: {
|
|
4
|
+
projectId: string;
|
|
5
|
+
}): Promise<import("alwaysai/lib/infrastructure").ReleaseHistoryArray>;
|
|
6
|
+
export declare function listAppLatestRelease(props: {
|
|
7
|
+
projectId: string;
|
|
8
|
+
}): Promise<string | undefined>;
|
|
9
|
+
export declare function getAppStatus(props: {
|
|
10
|
+
projectId: string;
|
|
11
|
+
}): Promise<AppStatePacket>;
|
|
12
|
+
export declare function getAppLogs(props: {
|
|
13
|
+
projectId: string;
|
|
14
|
+
services?: string[];
|
|
15
|
+
args?: string[];
|
|
16
|
+
}): Promise<NodeJS.ReadableStream>;
|
|
17
|
+
export declare function startApp(props: {
|
|
18
|
+
projectId: string;
|
|
19
|
+
dockerLoginToken?: string;
|
|
20
|
+
}): Promise<void>;
|
|
21
|
+
export declare function stopApp(props: {
|
|
22
|
+
projectId: string;
|
|
23
|
+
}): Promise<void>;
|
|
24
|
+
export declare function restartApp(props: {
|
|
25
|
+
projectId: string;
|
|
26
|
+
}): Promise<void>;
|
|
27
|
+
//# sourceMappingURL=status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/application-control/status.ts"],"names":[],"mappings":";AAMA,OAAO,EAEL,cAAc,EAGf,MAAM,gCAAgC,CAAC;AAIxC,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;IACxC,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,cAAc,CAAC,CA+E1B;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAqBjC;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"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.restartApp = exports.stopApp = exports.startApp = exports.getAppLogs = exports.getAppStatus = exports.listAppLatestRelease = exports.listAppReleases = void 0;
|
|
4
|
+
const docker_compose_1 = require("docker-compose");
|
|
5
|
+
const infrastructure_1 = require("alwaysai/lib/infrastructure");
|
|
6
|
+
const util_1 = require("alwaysai/lib/util");
|
|
7
|
+
const docker_cmd_1 = require("../docker/docker-cmd");
|
|
8
|
+
const utils_1 = require("./utils");
|
|
9
|
+
const device_agent_schemas_1 = require("@alwaysai/device-agent-schemas");
|
|
10
|
+
const agent_config_1 = require("../infrastructure/agent-config");
|
|
11
|
+
const logger_1 = require("../util/logger");
|
|
12
|
+
async function listAppReleases(props) {
|
|
13
|
+
const { projectId } = props;
|
|
14
|
+
const releaseHistory = await (0, infrastructure_1.fetchAppReleaseHistory)(projectId);
|
|
15
|
+
return releaseHistory;
|
|
16
|
+
}
|
|
17
|
+
exports.listAppReleases = listAppReleases;
|
|
18
|
+
async function listAppLatestRelease(props) {
|
|
19
|
+
const { projectId } = props;
|
|
20
|
+
const releaseHistory = await (0, infrastructure_1.fetchAppReleaseHistory)(projectId);
|
|
21
|
+
if (releaseHistory.length >= 1) {
|
|
22
|
+
return releaseHistory[0]['releaseHash'];
|
|
23
|
+
}
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
exports.listAppLatestRelease = listAppLatestRelease;
|
|
27
|
+
async function getAppStatus(props) {
|
|
28
|
+
const { projectId } = props;
|
|
29
|
+
if (!(await (0, agent_config_1.AgentConfigFile)().isAppPresent({ projectId }))) {
|
|
30
|
+
throw new Error('Application is not installed');
|
|
31
|
+
}
|
|
32
|
+
const appDetails = {
|
|
33
|
+
projectId,
|
|
34
|
+
version: await (0, agent_config_1.AgentConfigFile)().getAppVersion({ projectId }),
|
|
35
|
+
};
|
|
36
|
+
if (!(await (0, agent_config_1.AgentConfigFile)().isAppReady({ projectId }))) {
|
|
37
|
+
// App is being installed or updated
|
|
38
|
+
return { appDetails, services: [] };
|
|
39
|
+
}
|
|
40
|
+
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
41
|
+
const composeServices = await docker_compose_1.default.configServices({ cwd: appDir });
|
|
42
|
+
// Check if app is running
|
|
43
|
+
const status = await docker_compose_1.default.ps({ cwd: appDir });
|
|
44
|
+
if (status.exitCode !== 0) {
|
|
45
|
+
throw new Error(`Failed to get application status! stdout=${status.out} stderr=${status.err}`);
|
|
46
|
+
}
|
|
47
|
+
const services = [];
|
|
48
|
+
const spawner = (0, util_1.JsSpawner)({ path: appDir });
|
|
49
|
+
for (const name of composeServices.data.services) {
|
|
50
|
+
// Get container name for service
|
|
51
|
+
const containerId = await spawner.run({
|
|
52
|
+
exe: 'docker-compose',
|
|
53
|
+
cwd: appDir,
|
|
54
|
+
args: ['ps', '-q', name],
|
|
55
|
+
});
|
|
56
|
+
if (containerId === '') {
|
|
57
|
+
// The service was not yet started or failed to start
|
|
58
|
+
services.push({ name, state: device_agent_schemas_1.keyMirrors.appState.stopped });
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
const slashContainerName = await spawner.run({
|
|
62
|
+
exe: 'docker',
|
|
63
|
+
args: ['inspect', '-f', '{{.Name}}', containerId],
|
|
64
|
+
});
|
|
65
|
+
const containerName = slashContainerName.substring(1);
|
|
66
|
+
let foundContainer = false;
|
|
67
|
+
for (const container of status.data.services) {
|
|
68
|
+
if (container.name !== containerName) {
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
let state;
|
|
72
|
+
if (container.state.includes('Up')) {
|
|
73
|
+
state = device_agent_schemas_1.keyMirrors.appState.up;
|
|
74
|
+
}
|
|
75
|
+
else if (container.state.includes('Stopped') ||
|
|
76
|
+
container.state.includes('Exit')) {
|
|
77
|
+
state = device_agent_schemas_1.keyMirrors.appState.stopped;
|
|
78
|
+
}
|
|
79
|
+
else if (container.state.includes('Restarting')) {
|
|
80
|
+
state = device_agent_schemas_1.keyMirrors.appState.restarting;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
throw new Error(`Unknown state for service! (${container.state})`);
|
|
84
|
+
}
|
|
85
|
+
services.push({ name, state });
|
|
86
|
+
foundContainer = true;
|
|
87
|
+
}
|
|
88
|
+
if (!foundContainer) {
|
|
89
|
+
throw new Error(`Unable to find container for ${name} in ${JSON.stringify(status.data.services, null, 2)}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return { appDetails, services };
|
|
94
|
+
}
|
|
95
|
+
exports.getAppStatus = getAppStatus;
|
|
96
|
+
async function getAppLogs(props) {
|
|
97
|
+
const { projectId, services, args } = props;
|
|
98
|
+
await (0, utils_1.requireAppInstalled)({ projectId });
|
|
99
|
+
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
100
|
+
const serviceList = services
|
|
101
|
+
? services
|
|
102
|
+
: await (async function () {
|
|
103
|
+
const composeServices = await docker_compose_1.default.configServices({ cwd: appDir });
|
|
104
|
+
return composeServices.data.services;
|
|
105
|
+
})();
|
|
106
|
+
const argsList = args ? args : [];
|
|
107
|
+
// Use direct command with spawner in order to get a readable stream
|
|
108
|
+
return await (0, util_1.JsSpawner)().runStreaming({
|
|
109
|
+
exe: 'docker-compose',
|
|
110
|
+
args: ['logs', '-f', ...argsList, ...serviceList],
|
|
111
|
+
cwd: appDir,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
exports.getAppLogs = getAppLogs;
|
|
115
|
+
async function startApp(props) {
|
|
116
|
+
const { projectId, dockerLoginToken } = props;
|
|
117
|
+
await (0, utils_1.requireAppInstalled)({ projectId });
|
|
118
|
+
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
119
|
+
if (dockerLoginToken !== undefined) {
|
|
120
|
+
const result = await (0, docker_cmd_1.runDockerLogin)({ token: dockerLoginToken });
|
|
121
|
+
logger_1.logger.info(result);
|
|
122
|
+
}
|
|
123
|
+
// TODO: Check if app is running
|
|
124
|
+
// Start app
|
|
125
|
+
const upOut = await docker_compose_1.default.upAll({ cwd: appDir });
|
|
126
|
+
logger_1.logger.info(upOut);
|
|
127
|
+
if (upOut.exitCode !== 0) {
|
|
128
|
+
throw new Error(`Failed to start application! stdout=${upOut.out} stderr=${upOut.err}`);
|
|
129
|
+
}
|
|
130
|
+
logger_1.logger.info('Started', projectId);
|
|
131
|
+
}
|
|
132
|
+
exports.startApp = startApp;
|
|
133
|
+
async function stopApp(props) {
|
|
134
|
+
const { projectId } = props;
|
|
135
|
+
await (0, utils_1.requireAppInstalled)({ projectId });
|
|
136
|
+
const appDir = (0, utils_1.getAppDir)(projectId);
|
|
137
|
+
// TODO: Check if app is running
|
|
138
|
+
// Stop app
|
|
139
|
+
const output = await docker_compose_1.default.down({ cwd: appDir });
|
|
140
|
+
logger_1.logger.info(output);
|
|
141
|
+
if (output.exitCode !== 0) {
|
|
142
|
+
throw new Error(`Failed to stop application! stdout=${output.out} stderr=${output.err}`);
|
|
143
|
+
}
|
|
144
|
+
logger_1.logger.info('Stopped', projectId);
|
|
145
|
+
}
|
|
146
|
+
exports.stopApp = stopApp;
|
|
147
|
+
async function restartApp(props) {
|
|
148
|
+
const { projectId } = props;
|
|
149
|
+
await stopApp({ projectId });
|
|
150
|
+
await startApp({ projectId });
|
|
151
|
+
}
|
|
152
|
+
exports.restartApp = restartApp;
|
|
153
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/application-control/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/application-control/types.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/application-control/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const APP_ROOT: string;
|
|
2
|
+
export declare function getAppDir(projectId: string): string;
|
|
3
|
+
export declare function requireAppInstalled(props: {
|
|
4
|
+
projectId: string;
|
|
5
|
+
}): Promise<void>;
|
|
6
|
+
export declare function buildApp(props: {
|
|
7
|
+
appDir: string;
|
|
8
|
+
}): Promise<void>;
|
|
9
|
+
export declare function downloadPackageUsingPresignedUrl(props: {
|
|
10
|
+
localDest: string;
|
|
11
|
+
presignedUrl: string;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
export declare function getAppConfig(project: string): Promise<any>;
|
|
14
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/application-control/utils.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,QAAQ,QAAqC,CAAC;AAE3D,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,iBASrE;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,iBA+BvD;AAED,wBAAsB,gCAAgC,CAAC,KAAK,EAAE;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBhB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,gBAOjD"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAppConfig = exports.downloadPackageUsingPresignedUrl = exports.buildApp = exports.requireAppInstalled = exports.getAppDir = exports.APP_ROOT = void 0;
|
|
4
|
+
const docker_compose_1 = require("docker-compose");
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const fs = require("fs");
|
|
7
|
+
const constants_1 = require("alwaysai/lib/constants");
|
|
8
|
+
const agent_config_1 = require("../infrastructure/agent-config");
|
|
9
|
+
const node_fetch_1 = require("node-fetch");
|
|
10
|
+
const app_1 = require("alwaysai/lib/core/app");
|
|
11
|
+
const app_2 = require("alwaysai/lib/components/app");
|
|
12
|
+
const run_in_dir_1 = require("../util/run-in-dir");
|
|
13
|
+
const util_1 = require("alwaysai/lib/util");
|
|
14
|
+
const logger_1 = require("../util/logger");
|
|
15
|
+
exports.APP_ROOT = path.join(constants_1.AAI_DIR, 'applications');
|
|
16
|
+
function getAppDir(projectId) {
|
|
17
|
+
return path.join(exports.APP_ROOT, projectId);
|
|
18
|
+
}
|
|
19
|
+
exports.getAppDir = getAppDir;
|
|
20
|
+
async function requireAppInstalled(props) {
|
|
21
|
+
const { projectId } = props;
|
|
22
|
+
// Ensure an app that is being installed or updated is not modified
|
|
23
|
+
if (!(await (0, agent_config_1.AgentConfigFile)().isAppPresent({ projectId }))) {
|
|
24
|
+
throw new Error('Application is not installed');
|
|
25
|
+
}
|
|
26
|
+
if (!(await (0, agent_config_1.AgentConfigFile)().isAppReady({ projectId }))) {
|
|
27
|
+
throw new Error('Application is not done installing or updating');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.requireAppInstalled = requireAppInstalled;
|
|
31
|
+
async function buildApp(props) {
|
|
32
|
+
const { appDir } = props;
|
|
33
|
+
// Build standalone image and docker-compose
|
|
34
|
+
const targetJson = (0, app_1.TargetJsonFile)(appDir);
|
|
35
|
+
const targetConfig = targetJson.read();
|
|
36
|
+
if (targetConfig.targetProtocol !== 'docker:') {
|
|
37
|
+
throw new Error(`${constants_1.TARGET_JSON_FILE_NAME} is not properly configured!`);
|
|
38
|
+
}
|
|
39
|
+
await (0, run_in_dir_1.runInDir)(app_2.appDeployLinuxAndRemoteDevice, [
|
|
40
|
+
{
|
|
41
|
+
yes: true,
|
|
42
|
+
generateDockerCompose: true,
|
|
43
|
+
logs: false,
|
|
44
|
+
stop: false,
|
|
45
|
+
targetJson,
|
|
46
|
+
targetConfig,
|
|
47
|
+
},
|
|
48
|
+
], appDir);
|
|
49
|
+
const buildOut = await docker_compose_1.default.buildAll({ cwd: appDir });
|
|
50
|
+
logger_1.logger.info(buildOut);
|
|
51
|
+
if (buildOut.exitCode !== 0) {
|
|
52
|
+
throw new Error(`Failed to build application! stdout=${buildOut.out} stderr=${buildOut.err}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.buildApp = buildApp;
|
|
56
|
+
async function downloadPackageUsingPresignedUrl(props) {
|
|
57
|
+
logger_1.logger.info('downloading URL');
|
|
58
|
+
const { localDest, presignedUrl } = props;
|
|
59
|
+
const response = await (0, node_fetch_1.default)(presignedUrl);
|
|
60
|
+
if (response.status !== 200) {
|
|
61
|
+
// If the URL is invalid; I think we shouldn't get here with the new changes
|
|
62
|
+
throw new Error(`Status Code: ${response.status}, ${response.statusText}. Response: ${response.body}`);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Write the app package to the hash directory
|
|
66
|
+
*/
|
|
67
|
+
const stream = response.body.pipe(fs.createWriteStream(localDest));
|
|
68
|
+
await new Promise((resolve, reject) => {
|
|
69
|
+
stream.on('finish', resolve);
|
|
70
|
+
stream.on('error', reject);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
exports.downloadPackageUsingPresignedUrl = downloadPackageUsingPresignedUrl;
|
|
74
|
+
async function getAppConfig(project) {
|
|
75
|
+
const appCfgPath = path.join(getAppDir(project), 'alwaysai.app.json');
|
|
76
|
+
if (!fs.existsSync(appCfgPath)) {
|
|
77
|
+
throw new Error(`Application config not found for project ${project}`);
|
|
78
|
+
}
|
|
79
|
+
return JSON.parse(await (0, util_1.JsSpawner)().readFile(appCfgPath));
|
|
80
|
+
}
|
|
81
|
+
exports.getAppConfig = getAppConfig;
|
|
82
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/application-control/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { ClientMessage } from "@alwaysai/device-agent-schemas";
|
|
2
|
+
export declare class DeviceAgentCloudConnection {
|
|
3
|
+
private clientId;
|
|
4
|
+
private host;
|
|
5
|
+
private appInstallStatus;
|
|
6
|
+
private liveUpdatesTimeout;
|
|
7
|
+
private liveUpdatesAlive;
|
|
8
|
+
private liveUpdatesSleepIntervals;
|
|
9
|
+
private appLogStreams;
|
|
10
|
+
private readonly shadowPrefix;
|
|
11
|
+
private readonly shadowTopics;
|
|
12
|
+
private readonly toCloudTopic;
|
|
13
|
+
private readonly toClientTopic;
|
|
14
|
+
private readonly toDeviceTopic;
|
|
15
|
+
getShadowPrefix(): string;
|
|
16
|
+
private handleNamedShadowUpdate;
|
|
17
|
+
private startAppLogStream;
|
|
18
|
+
private initAppInstallStatus;
|
|
19
|
+
private updateAppInstallStatus;
|
|
20
|
+
private getAppInstallStatus;
|
|
21
|
+
private buildMessagePacket;
|
|
22
|
+
private getAppStateMessage;
|
|
23
|
+
private getDeviceStatsMessage;
|
|
24
|
+
private getAppInstallStatusMessage;
|
|
25
|
+
private startPublishingLiveUpdates;
|
|
26
|
+
private continuePublishing;
|
|
27
|
+
private getLiveUpdatesInterval;
|
|
28
|
+
private setLiveUpdates;
|
|
29
|
+
private handleAppStateControl;
|
|
30
|
+
private handleAppVersionControl;
|
|
31
|
+
private handleDeviceCommand;
|
|
32
|
+
private handleAgentCommand;
|
|
33
|
+
private restartLiveUpdatesTimeout;
|
|
34
|
+
private liveUpdatesBroker;
|
|
35
|
+
private publishReportedState;
|
|
36
|
+
private publishCloudRequest;
|
|
37
|
+
device: any;
|
|
38
|
+
constructor();
|
|
39
|
+
getClientId(): string;
|
|
40
|
+
publishMessage(topic: string, message: string): void;
|
|
41
|
+
handleClientMessage({ topic, message, }: {
|
|
42
|
+
topic: string;
|
|
43
|
+
message: ClientMessage;
|
|
44
|
+
}): Promise<void>;
|
|
45
|
+
handleShadowTopic({ topic, payload, }: {
|
|
46
|
+
topic: string;
|
|
47
|
+
payload: string;
|
|
48
|
+
}): Promise<void>;
|
|
49
|
+
}
|
|
50
|
+
export declare function runDeviceAgentCloudInterface(): Promise<void>;
|
|
51
|
+
//# sourceMappingURL=device-agent-cloud-connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-agent-cloud-connection.d.ts","sourceRoot":"","sources":["../../src/cloud-connection/device-agent-cloud-connection.ts"],"names":[],"mappings":"AAwBA,OAAO,EAeL,aAAa,EAId,MAAM,gCAAgC,CAAC;AAiBxC,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,kBAAkB,CAAgC;IAC1D,OAAO,CAAC,gBAAgB,CAItB;IACF,OAAO,CAAC,yBAAyB,CAK/B;IACF,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+C;IAC5E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAK3B;IACF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;IAC7D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiC;IAC/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiC;IAIxD,eAAe;YAIR,uBAAuB;YAsCvB,iBAAiB;IA0C/B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,kBAAkB;YAcZ,kBAAkB;YAelB,qBAAqB;IAiBnC,OAAO,CAAC,0BAA0B,CAQ9B;YAEU,0BAA0B;IA4BxC,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,mBAAmB,CAEzB;IAEF,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,yBAAyB;YAYnB,iBAAiB;YA4CjB,oBAAoB;YAepB,mBAAmB;IAY1B,MAAM,MAAiB;;IAiBvB,WAAW,IAAI,MAAM;IAIrB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAKvC,mBAAmB,CAAC,EAC/B,KAAK,EACL,OAAO,GACR,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,aAAa,CAAC;KACxB;IAoFY,iBAAiB,CAAC,EAC7B,KAAK,EACL,OAAO,GACR,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB;CAeF;AAED,wBAAsB,4BAA4B,kBAsGjD"}
|