@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,82 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DEVICE_TOKEN_FILE_NAME,
|
|
3
|
+
LOCAL_AAI_CFG_DIR,
|
|
4
|
+
LOCAL_CERT_AND_KEY_DIR,
|
|
5
|
+
ALWAYSAI_CONFIG_DIR,
|
|
6
|
+
} from "alwaysai/lib/constants";
|
|
7
|
+
import { join } from "path";
|
|
8
|
+
import { getSystemId } from "alwaysai/lib/infrastructure";
|
|
9
|
+
|
|
10
|
+
export const shortenSystemId = () => {
|
|
11
|
+
const id = getSystemId();
|
|
12
|
+
if (id === "production") {
|
|
13
|
+
return "prod";
|
|
14
|
+
} else if (id === "development") {
|
|
15
|
+
return "dev";
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const BOOTSTRAP_DIR_NAME = "bootstrap-certificates";
|
|
20
|
+
export const BOOTSTRAP_DEVICE_PRIVATE_KEY_FILE_NAME = `aai-claim-private-key_${shortenSystemId()}.pem.key`;
|
|
21
|
+
export const BOOTSTRAP_DEVICE_CERTIFICATE_FILE_NAME = `aai-claim-cert_${shortenSystemId()}.pem.crt`;
|
|
22
|
+
export const BOOTSTRAP_CLAIM_ID_FILE_NAME = `aai-claim-cert-id_${shortenSystemId()}.txt`;
|
|
23
|
+
export const AWS_ROOT_CERTIFICATE_FILE_NAME = "AmazonRootCA1.pem";
|
|
24
|
+
export const CERTIFICATE_OWNERSHIP_TOKEN_FILE_NAME =
|
|
25
|
+
"certificate-ownership-token.txt";
|
|
26
|
+
export const AGENT_CONFIG_FILE_NAME = "alwaysai.agent.json";
|
|
27
|
+
export const DEVICE_PRIVATE_KEY_FILE_NAME = `aai-claim-private-key_${shortenSystemId()}.pem.key`;
|
|
28
|
+
export const DEVICE_CERTIFICATE_FILE_NAME = `aai-claim-cert_${shortenSystemId()}.pem.crt`;
|
|
29
|
+
export const DEVICE_CLAIM_ID_FILE_NAME = `aai-claim-cert-id_${shortenSystemId()}.txt`;
|
|
30
|
+
|
|
31
|
+
export function getPrivateKeyFilePath() {
|
|
32
|
+
return join(LOCAL_CERT_AND_KEY_DIR, DEVICE_PRIVATE_KEY_FILE_NAME);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function getCertificateFilePath() {
|
|
36
|
+
return join(LOCAL_CERT_AND_KEY_DIR, DEVICE_CERTIFICATE_FILE_NAME);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function getRootCertificateFilePath() {
|
|
40
|
+
return join(LOCAL_CERT_AND_KEY_DIR, AWS_ROOT_CERTIFICATE_FILE_NAME);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function getCredentialsFilePath() {
|
|
44
|
+
return join(LOCAL_AAI_CFG_DIR, DEVICE_TOKEN_FILE_NAME);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export const BOOTSTRAP_CERTIFICATES_DIR_PATH = join(
|
|
48
|
+
LOCAL_CERT_AND_KEY_DIR,
|
|
49
|
+
BOOTSTRAP_DIR_NAME
|
|
50
|
+
);
|
|
51
|
+
export const DEVICE_CLAIM_ID_FILE_PATH = join(
|
|
52
|
+
LOCAL_CERT_AND_KEY_DIR,
|
|
53
|
+
DEVICE_TOKEN_FILE_NAME
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
export const BOOTSTRAP_DEVICE_PRIVATE_KEY_FILE_PATH = join(
|
|
57
|
+
LOCAL_CERT_AND_KEY_DIR,
|
|
58
|
+
BOOTSTRAP_DIR_NAME,
|
|
59
|
+
BOOTSTRAP_DEVICE_PRIVATE_KEY_FILE_NAME
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
export const BOOTSTRAP_DEVICE_CERTIFICATE_FILE_PATH = join(
|
|
63
|
+
LOCAL_CERT_AND_KEY_DIR,
|
|
64
|
+
BOOTSTRAP_DIR_NAME,
|
|
65
|
+
BOOTSTRAP_DEVICE_CERTIFICATE_FILE_NAME
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
export const BOOTSTRAP_CLAIM_ID_FILE_PATH = join(
|
|
69
|
+
LOCAL_CERT_AND_KEY_DIR,
|
|
70
|
+
BOOTSTRAP_DIR_NAME,
|
|
71
|
+
BOOTSTRAP_CLAIM_ID_FILE_NAME
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
export const AWS_ROOT_CERTIFICATE_FILE_PATH = join(
|
|
75
|
+
LOCAL_CERT_AND_KEY_DIR,
|
|
76
|
+
AWS_ROOT_CERTIFICATE_FILE_NAME
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
export const AGENT_CONFIG_FILE_PATH = join(
|
|
80
|
+
ALWAYSAI_CONFIG_DIR,
|
|
81
|
+
AGENT_CONFIG_FILE_NAME
|
|
82
|
+
);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { getCredentialsFilePath } from '../util/directories';
|
|
2
|
+
import { CliTerseError } from '@alwaysai/alwayscli';
|
|
3
|
+
import { ConfigFile } from '@alwaysai/config-nodejs';
|
|
4
|
+
import * as t from 'io-ts';
|
|
5
|
+
|
|
6
|
+
export function getDeviceId() {
|
|
7
|
+
const path = getCredentialsFilePath();
|
|
8
|
+
const codec = t.type({
|
|
9
|
+
deviceId: t.union([t.string, t.undefined]),
|
|
10
|
+
});
|
|
11
|
+
const credentialsJsonFile = ConfigFile({
|
|
12
|
+
path,
|
|
13
|
+
codec,
|
|
14
|
+
});
|
|
15
|
+
const config = credentialsJsonFile.readIfExists();
|
|
16
|
+
if (!config || !config.deviceId) {
|
|
17
|
+
throw new CliTerseError(
|
|
18
|
+
'Invalid device credentials! Please ensure you are using the device agent on a valid device.',
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
return config.deviceId;
|
|
22
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import fetch from "node-fetch";
|
|
2
|
+
import { serviceEndpointBuilder } from "../endpoints";
|
|
3
|
+
import { CliAuthenticationClient } from "alwaysai/lib/infrastructure";
|
|
4
|
+
|
|
5
|
+
export async function httpClient(
|
|
6
|
+
url: string,
|
|
7
|
+
method: string,
|
|
8
|
+
data?: string,
|
|
9
|
+
headers?: object
|
|
10
|
+
) {
|
|
11
|
+
const options = { method, ...(data ? { body: data } : {}) };
|
|
12
|
+
try {
|
|
13
|
+
const response = await fetch(url, options);
|
|
14
|
+
const code = response.status;
|
|
15
|
+
|
|
16
|
+
const contentType = response.headers.get("content-type");
|
|
17
|
+
if (contentType === "application/json") {
|
|
18
|
+
return await response.json();
|
|
19
|
+
} else if (contentType!.includes("text/plain")) {
|
|
20
|
+
return await response.text();
|
|
21
|
+
}
|
|
22
|
+
} catch (e) {}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export async function microServiceHttpClient(
|
|
26
|
+
service: string,
|
|
27
|
+
path: string,
|
|
28
|
+
method: string,
|
|
29
|
+
data?: string
|
|
30
|
+
) {
|
|
31
|
+
const endpoint = serviceEndpointBuilder(service, path);
|
|
32
|
+
const { getIdAuthorizationHeader } = CliAuthenticationClient();
|
|
33
|
+
const authorizationHeader = await getIdAuthorizationHeader();
|
|
34
|
+
return await httpClient(endpoint, method, data);
|
|
35
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as winston from "winston";
|
|
2
|
+
import "winston-daily-rotate-file";
|
|
3
|
+
import * as path from "path";
|
|
4
|
+
import { AAI_DIR } from "alwaysai/lib/constants";
|
|
5
|
+
import { ALWAYSAI_LOG_LEVEL, ALWAYSAI_LOG_TO_CONSOLE } from "../environment";
|
|
6
|
+
|
|
7
|
+
const LOG_LEVEL = ALWAYSAI_LOG_LEVEL || "info";
|
|
8
|
+
|
|
9
|
+
const transports = ALWAYSAI_LOG_TO_CONSOLE
|
|
10
|
+
? [new winston.transports.Console({ level: LOG_LEVEL })]
|
|
11
|
+
: [
|
|
12
|
+
new winston.transports.DailyRotateFile({
|
|
13
|
+
filename: path.join(AAI_DIR, "agent-logs", "agent-logs.txt"),
|
|
14
|
+
maxSize: "5m",
|
|
15
|
+
maxFiles: "2d",
|
|
16
|
+
}),
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
export const logger = winston.createLogger({
|
|
20
|
+
level: LOG_LEVEL,
|
|
21
|
+
format: winston.format.combine(
|
|
22
|
+
winston.format.colorize(),
|
|
23
|
+
winston.format.errors({ stack: true }),
|
|
24
|
+
winston.format.splat(),
|
|
25
|
+
winston.format.simple()
|
|
26
|
+
),
|
|
27
|
+
transports,
|
|
28
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export async function runInDir<T extends any[], R extends any>(
|
|
2
|
+
func: (...args: T) => R,
|
|
3
|
+
args: T,
|
|
4
|
+
dir: string,
|
|
5
|
+
) {
|
|
6
|
+
const origCwd = process.cwd();
|
|
7
|
+
let out: R;
|
|
8
|
+
try {
|
|
9
|
+
process.chdir(dir);
|
|
10
|
+
out = await func(...args);
|
|
11
|
+
} finally {
|
|
12
|
+
process.chdir(origCwd);
|
|
13
|
+
}
|
|
14
|
+
return out;
|
|
15
|
+
}
|