@alwaysai/device-agent 0.0.3 → 0.0.4

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 (75) 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 +30 -0
  4. package/lib/application-control/backup.js.map +1 -0
  5. package/lib/application-control/install.d.ts +10 -0
  6. package/lib/application-control/install.d.ts.map +1 -0
  7. package/lib/application-control/install.js +87 -0
  8. package/lib/application-control/install.js.map +1 -0
  9. package/lib/application-control/models.d.ts +8 -0
  10. package/lib/application-control/models.d.ts.map +1 -1
  11. package/lib/application-control/models.js +45 -2
  12. package/lib/application-control/models.js.map +1 -1
  13. package/lib/application-control/{application-control.d.ts → status.d.ts} +3 -23
  14. package/lib/application-control/status.d.ts.map +1 -0
  15. package/lib/application-control/{application-control.js → status.js} +6 -101
  16. package/lib/application-control/status.js.map +1 -0
  17. package/lib/application-control/types.d.ts +18 -0
  18. package/lib/application-control/types.d.ts.map +1 -0
  19. package/lib/application-control/types.js +3 -0
  20. package/lib/application-control/types.js.map +1 -0
  21. package/lib/application-control/utils.d.ts.map +1 -1
  22. package/lib/application-control/utils.js +3 -3
  23. package/lib/application-control/utils.js.map +1 -1
  24. package/lib/cloud-connection/device-agent-cloud-connection.d.ts +2 -0
  25. package/lib/cloud-connection/device-agent-cloud-connection.d.ts.map +1 -1
  26. package/lib/cloud-connection/device-agent-cloud-connection.js +59 -2
  27. package/lib/cloud-connection/device-agent-cloud-connection.js.map +1 -1
  28. package/lib/constants.d.ts +2 -6
  29. package/lib/constants.d.ts.map +1 -1
  30. package/lib/constants.js +3 -9
  31. package/lib/constants.js.map +1 -1
  32. package/lib/subcommands/app/app.d.ts +24 -14
  33. package/lib/subcommands/app/app.d.ts.map +1 -1
  34. package/lib/subcommands/app/app.js +89 -68
  35. package/lib/subcommands/app/app.js.map +1 -1
  36. package/lib/subcommands/app/index.d.ts.map +1 -1
  37. package/lib/subcommands/app/index.js +4 -1
  38. package/lib/subcommands/app/index.js.map +1 -1
  39. package/lib/subcommands/index.d.ts.map +1 -1
  40. package/lib/subcommands/index.js +1 -7
  41. package/lib/subcommands/index.js.map +1 -1
  42. package/lib/util/directories.d.ts +1 -1
  43. package/lib/util/directories.d.ts.map +1 -1
  44. package/lib/util/directories.js +8 -13
  45. package/lib/util/directories.js.map +1 -1
  46. package/lib/util/get-device-id.d.ts +2 -0
  47. package/lib/util/get-device-id.d.ts.map +1 -0
  48. package/lib/util/get-device-id.js +24 -0
  49. package/lib/util/get-device-id.js.map +1 -0
  50. package/lib/web/web-interface.d.ts.map +1 -1
  51. package/lib/web/web-interface.js +8 -7
  52. package/lib/web/web-interface.js.map +1 -1
  53. package/package.json +2 -2
  54. package/readme.md +15 -8
  55. package/src/application-control/backup.ts +28 -0
  56. package/src/application-control/install.ts +102 -0
  57. package/src/application-control/models.ts +46 -1
  58. package/src/application-control/{application-control.ts → status.ts} +5 -124
  59. package/src/application-control/types.ts +5 -0
  60. package/src/application-control/utils.ts +3 -3
  61. package/src/cloud-connection/device-agent-cloud-connection.ts +66 -2
  62. package/src/constants.ts +2 -12
  63. package/src/subcommands/app/app.ts +98 -63
  64. package/src/subcommands/app/index.ts +7 -1
  65. package/src/subcommands/index.ts +1 -7
  66. package/src/util/directories.ts +10 -15
  67. package/src/util/get-device-id.ts +22 -0
  68. package/src/web/web-interface.ts +2 -6
  69. package/lib/application-control/application-control.d.ts.map +0 -1
  70. package/lib/application-control/application-control.js.map +0 -1
  71. package/lib/subcommands/test-app.d.ts +0 -2
  72. package/lib/subcommands/test-app.d.ts.map +0 -1
  73. package/lib/subcommands/test-app.js +0 -29
  74. package/lib/subcommands/test-app.js.map +0 -1
  75. package/src/subcommands/test-app.ts +0 -30
@@ -1,17 +1,31 @@
1
- import { CliLeaf, CliStringInput, CliTerseError } from '@alwaysai/alwayscli';
2
1
  import {
3
- getAppLogs,
4
- getAppStatus,
2
+ CliLeaf,
3
+ CliStringArrayInput,
4
+ CliStringInput,
5
+ CliTerseError,
6
+ } from '@alwaysai/alwayscli';
7
+ import {
8
+ addModel,
9
+ getAppModels,
10
+ removeModel,
11
+ replaceModels,
12
+ updateModels,
13
+ } from '../../application-control/models';
14
+ import {
5
15
  getInstalledApps,
6
16
  installApp,
7
- rollbackApp,
8
- startApp,
9
- stopApp,
10
17
  uninstallApp,
18
+ } from '../../application-control/install';
19
+ import { rollbackApp } from '../../application-control/backup';
20
+ import {
11
21
  listAppReleases,
12
22
  listAppLatestRelease,
13
- } from '../../application-control/application-control';
14
- import { addModel, removeModel, updateModels } from '../../application-control/models';
23
+ getAppStatus,
24
+ startApp,
25
+ getAppLogs,
26
+ stopApp,
27
+ restartApp,
28
+ } from '../../application-control/status';
15
29
 
16
30
  export const listAppsCliLeaf = CliLeaf({
17
31
  name: 'list',
@@ -28,14 +42,12 @@ export const listAppReleasesCliLeaf = CliLeaf({
28
42
  description: 'List all releases for a given app',
29
43
  namedInputs: {
30
44
  project: CliStringInput({
31
- description: 'Project Id',
45
+ description: 'Project ID',
46
+ required: true,
32
47
  }),
33
48
  },
34
49
  async action(_, opts) {
35
50
  const { project } = opts;
36
- if (project === undefined) {
37
- throw new CliTerseError('--project is required');
38
- }
39
51
  const releaseHistory = await listAppReleases({ projectId: project });
40
52
  console.log(releaseHistory);
41
53
  },
@@ -46,14 +58,12 @@ export const listAppLatestReleaseCliLeaf = CliLeaf({
46
58
  description: 'List the latest release hash for a given app',
47
59
  namedInputs: {
48
60
  project: CliStringInput({
49
- description: 'Project Id',
61
+ description: 'Project ID',
62
+ required: true,
50
63
  }),
51
64
  },
52
65
  async action(_, opts) {
53
66
  const { project } = opts;
54
- if (project === undefined) {
55
- throw new CliTerseError('--project is required');
56
- }
57
67
  const latestReleaseHash = await listAppLatestRelease({ projectId: project });
58
68
  if (latestReleaseHash === undefined) {
59
69
  throw new CliTerseError('This application has not been published yet');
@@ -67,7 +77,8 @@ export const installAppCliLeaf = CliLeaf({
67
77
  description: 'Install an alwaysAI app from a project',
68
78
  namedInputs: {
69
79
  project: CliStringInput({
70
- description: 'Project Id',
80
+ description: 'Project ID',
81
+ required: true,
71
82
  }),
72
83
  releaseHash: CliStringInput({
73
84
  description: 'Release Hash',
@@ -76,9 +87,6 @@ export const installAppCliLeaf = CliLeaf({
76
87
  async action(_, opts) {
77
88
  const project = opts.project;
78
89
  let releaseHash = opts.releaseHash;
79
- if (project === undefined) {
80
- throw new CliTerseError('--project is required');
81
- }
82
90
  if (releaseHash === undefined) {
83
91
  releaseHash = await listAppLatestRelease({ projectId: project });
84
92
  }
@@ -94,14 +102,12 @@ export const getAppStatusCliLeaf = CliLeaf({
94
102
  description: 'Get the status of an installed alwaysAI app',
95
103
  namedInputs: {
96
104
  project: CliStringInput({
97
- description: 'Project Id',
105
+ description: 'Project ID',
106
+ required: true,
98
107
  }),
99
108
  },
100
109
  async action(_, opts) {
101
110
  const { project } = opts;
102
- if (project === undefined) {
103
- throw new CliTerseError('--project is required');
104
- }
105
111
  const appStatus = await getAppStatus({ projectId: project });
106
112
  console.log(appStatus);
107
113
  },
@@ -112,7 +118,8 @@ export const startAppCliLeaf = CliLeaf({
112
118
  description: 'Start an installed alwaysAI app',
113
119
  namedInputs: {
114
120
  project: CliStringInput({
115
- description: 'Project Id',
121
+ description: 'Project ID',
122
+ required: true,
116
123
  }),
117
124
  dockerLoginToken: CliStringInput({
118
125
  description: 'Docker login token',
@@ -120,9 +127,6 @@ export const startAppCliLeaf = CliLeaf({
120
127
  },
121
128
  async action(_, opts) {
122
129
  const { project, dockerLoginToken } = opts;
123
- if (project === undefined) {
124
- throw new CliTerseError('--project is required');
125
- }
126
130
  await startApp({ projectId: project, dockerLoginToken });
127
131
  },
128
132
  });
@@ -132,14 +136,12 @@ export const getAppLogsCliLeaf = CliLeaf({
132
136
  description: 'Get logs for an application',
133
137
  namedInputs: {
134
138
  project: CliStringInput({
135
- description: 'Project Id',
139
+ description: 'Project ID',
140
+ required: true,
136
141
  }),
137
142
  },
138
143
  async action(_, opts) {
139
144
  const { project } = opts;
140
- if (project === undefined) {
141
- throw new CliTerseError('--project is required');
142
- }
143
145
  const readable = await getAppLogs({ projectId: project });
144
146
  readable.setEncoding('utf8');
145
147
  for await (const chunk of readable) {
@@ -153,31 +155,42 @@ export const stopAppCliLeaf = CliLeaf({
153
155
  description: 'Stop a running alwaysAI app',
154
156
  namedInputs: {
155
157
  project: CliStringInput({
156
- description: 'Project Id',
158
+ description: 'Project ID',
159
+ required: true,
157
160
  }),
158
161
  },
159
162
  async action(_, opts) {
160
163
  const { project } = opts;
161
- if (project === undefined) {
162
- throw new CliTerseError('Project ID is required');
163
- }
164
164
  await stopApp({ projectId: project });
165
165
  },
166
166
  });
167
167
 
168
+ export const restartAppCliLeaf = CliLeaf({
169
+ name: 'restart',
170
+ description: 'Restart running alwaysAI app',
171
+ namedInputs: {
172
+ project: CliStringInput({
173
+ description: 'Project ID',
174
+ required: true,
175
+ }),
176
+ },
177
+ async action(_, opts) {
178
+ const { project } = opts;
179
+ await restartApp({ projectId: project });
180
+ },
181
+ });
182
+
168
183
  export const uninstallAppCliLeaf = CliLeaf({
169
184
  name: 'uninstall',
170
185
  description: 'Remove an alwaysAI app',
171
186
  namedInputs: {
172
187
  project: CliStringInput({
173
- description: 'Project Id',
188
+ description: 'Project ID',
189
+ required: true,
174
190
  }),
175
191
  },
176
192
  async action(_, opts) {
177
193
  const { project } = opts;
178
- if (project === undefined) {
179
- throw new CliTerseError('Project ID is required');
180
- }
181
194
  await uninstallApp({ projectId: project });
182
195
  },
183
196
  });
@@ -187,37 +200,47 @@ export const rollbackAppCliLeaf = CliLeaf({
187
200
  description: 'Rollback an alwaysAI app to the previous version',
188
201
  namedInputs: {
189
202
  project: CliStringInput({
190
- description: 'Project Id',
203
+ description: 'Project ID',
204
+ required: true,
191
205
  }),
192
206
  },
193
207
  async action(_, opts) {
194
208
  const { project } = opts;
195
- if (project === undefined) {
196
- throw new CliTerseError('Project ID is required');
197
- }
198
209
  await rollbackApp({ projectId: project });
199
210
  },
200
211
  });
201
212
 
213
+ export const showAppModelsCliLeaf = CliLeaf({
214
+ name: 'show-models',
215
+ description: 'Show the application models',
216
+ namedInputs: {
217
+ project: CliStringInput({
218
+ description: 'Project ID',
219
+ required: true,
220
+ }),
221
+ },
222
+ async action(_, opts) {
223
+ const { project } = opts;
224
+ const appModels = await getAppModels({ projectId: project });
225
+ console.table(appModels);
226
+ },
227
+ });
228
+
202
229
  export const addModelCliLeaf = CliLeaf({
203
230
  name: 'add-model',
204
231
  description: 'Add a model to an alwaysAI app',
205
232
  namedInputs: {
206
233
  project: CliStringInput({
207
- description: 'Project Id',
234
+ description: 'Project ID',
235
+ required: true,
208
236
  }),
209
237
  model: CliStringInput({
210
- description: 'Model Id',
238
+ description: 'Model ID',
239
+ required: true,
211
240
  }),
212
241
  },
213
242
  async action(_, opts) {
214
243
  const { project, model } = opts;
215
- if (project === undefined) {
216
- throw new CliTerseError('--project is required');
217
- }
218
- if (model === undefined) {
219
- throw new CliTerseError('--model is required');
220
- }
221
244
  await addModel({ projectId: project, modelId: model });
222
245
  },
223
246
  });
@@ -227,37 +250,49 @@ export const removeModelCliLeaf = CliLeaf({
227
250
  description: 'Remove a model from an alwaysAI app',
228
251
  namedInputs: {
229
252
  project: CliStringInput({
230
- description: 'Project Id',
253
+ description: 'Project ID',
254
+ required: true,
231
255
  }),
232
256
  model: CliStringInput({
233
- description: 'Model Id',
257
+ description: 'Model ID',
258
+ required: true,
234
259
  }),
235
260
  },
236
261
  async action(_, opts) {
237
262
  const { project, model } = opts;
238
- if (project === undefined) {
239
- throw new CliTerseError('--project is required');
240
- }
241
- if (model === undefined) {
242
- throw new CliTerseError('--model is required');
243
- }
244
263
  await removeModel({ projectId: project, modelId: model });
245
264
  },
246
265
  });
247
266
 
267
+ export const replaceModelsCliLeaf = CliLeaf({
268
+ name: 'replace-models',
269
+ description: 'Replace all models of an alwaysAI app with new models',
270
+ namedInputs: {
271
+ project: CliStringInput({
272
+ description: 'Project Id',
273
+ required: true,
274
+ }),
275
+ model: CliStringArrayInput({
276
+ description: 'One or more model IDs',
277
+ required: true,
278
+ }),
279
+ },
280
+ async action(_, opts) {
281
+ const { project, model } = opts;
282
+ await replaceModels({ projectId: project, modelIds: model });
283
+ },
284
+ });
248
285
  export const updateModelsCliLeaf = CliLeaf({
249
286
  name: 'update-models',
250
287
  description: 'Update all models for an alwaysAI app',
251
288
  namedInputs: {
252
289
  project: CliStringInput({
253
290
  description: 'Project Id',
291
+ required: true,
254
292
  }),
255
293
  },
256
294
  async action(_, opts) {
257
295
  const { project } = opts;
258
- if (project === undefined) {
259
- throw new CliTerseError('--project is required');
260
- }
261
296
  await updateModels({ projectId: project });
262
297
  },
263
298
  });
@@ -13,6 +13,9 @@ import {
13
13
  getAppLogsCliLeaf,
14
14
  listAppReleasesCliLeaf,
15
15
  listAppLatestReleaseCliLeaf,
16
+ restartAppCliLeaf,
17
+ replaceModelsCliLeaf,
18
+ showAppModelsCliLeaf,
16
19
  } from './app';
17
20
 
18
21
  export const appCliBranch = CliBranch({
@@ -25,12 +28,15 @@ export const appCliBranch = CliBranch({
25
28
  installAppCliLeaf,
26
29
  getAppStatusCliLeaf,
27
30
  startAppCliLeaf,
28
- getAppLogsCliLeaf,
29
31
  stopAppCliLeaf,
32
+ restartAppCliLeaf,
33
+ getAppLogsCliLeaf,
30
34
  uninstallAppCliLeaf,
31
35
  rollbackAppCliLeaf,
36
+ showAppModelsCliLeaf,
32
37
  addModelCliLeaf,
33
38
  removeModelCliLeaf,
39
+ replaceModelsCliLeaf,
34
40
  updateModelsCliLeaf,
35
41
  ],
36
42
  });
@@ -1,11 +1,5 @@
1
1
  import { appCliBranch } from './app/index';
2
2
  import { getDeviceInfoCliLeaf } from './device-control';
3
3
  import { loginCliLeaf } from './login';
4
- // import { installTestAppCliLeaf } from './test-app';
5
4
 
6
- export const subcommands = [
7
- loginCliLeaf,
8
- appCliBranch,
9
- getDeviceInfoCliLeaf,
10
- // installTestAppCliLeaf,
11
- ];
5
+ export const subcommands = [loginCliLeaf, appCliBranch, getDeviceInfoCliLeaf];
@@ -1,30 +1,25 @@
1
- const os = require('os');
2
1
  import { join } from 'path';
3
2
  import {
4
- DEVICE_CERT_AND_KEY_DIR_LINUX,
5
- DEV_HOST_CERT_AND_KEY_DIR,
3
+ CERT_AND_KEY_DIR,
4
+ TOKEN_DIR,
6
5
  DEVICE_CERTIFICATE_FILE_NAME,
7
6
  DEVICE_PRIVATE_KEY_FILE_NAME,
8
7
  DEVICE_ROOT_CERT_FILE_NAME,
8
+ DEVICE_TOKEN_FILE_NAME,
9
9
  } from '../constants';
10
10
 
11
- const certAndKeyDir = getCertAndKeyDir();
12
-
13
- export function getCertAndKeyDir() {
14
- if (os.type() === 'Darwin' || os.type() === 'Windows_NT') {
15
- return DEV_HOST_CERT_AND_KEY_DIR;
16
- }
17
- return DEVICE_CERT_AND_KEY_DIR_LINUX;
18
- }
19
-
20
11
  export function getPrivateKeyFilePath() {
21
- return join(certAndKeyDir, DEVICE_PRIVATE_KEY_FILE_NAME);
12
+ return join(CERT_AND_KEY_DIR, DEVICE_PRIVATE_KEY_FILE_NAME);
22
13
  }
23
14
 
24
15
  export function getCertificateFilePath() {
25
- return join(certAndKeyDir, DEVICE_CERTIFICATE_FILE_NAME);
16
+ return join(CERT_AND_KEY_DIR, DEVICE_CERTIFICATE_FILE_NAME);
26
17
  }
27
18
 
28
19
  export function getRootCertificateFilePath() {
29
- return join(certAndKeyDir, DEVICE_ROOT_CERT_FILE_NAME);
20
+ return join(CERT_AND_KEY_DIR, DEVICE_ROOT_CERT_FILE_NAME);
21
+ }
22
+
23
+ export function getCredentialsFilePath() {
24
+ return join(TOKEN_DIR, DEVICE_TOKEN_FILE_NAME);
30
25
  }
@@ -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
+ }
@@ -1,9 +1,5 @@
1
- import {
2
- getAppStatus,
3
- getInstalledApps,
4
- startApp,
5
- stopApp,
6
- } from '../application-control/application-control';
1
+ import { getInstalledApps } from '../application-control/install';
2
+ import { startApp, stopApp, getAppStatus } from '../application-control/status';
7
3
  import { getCpuUtil, getDiskUtil, getMemUtil } from '../device-control/device-control';
8
4
 
9
5
  const express = require('express');
@@ -1 +0,0 @@
1
- {"version":3,"file":"application-control.d.ts","sourceRoot":"","sources":["../../src/application-control/application-control.ts"],"names":[],"mappings":";AAqBA,oBAAY,UAAU,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAkB9D;AAUD,wBAAsB,WAAW,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,iBAW7D;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,wEAIjE;AAED,wBAAsB,oBAAoB,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,+BAOtE;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0ChB;AAED,oBAAY,YAAY,GAAG,SAAS,GAAG,IAAI,GAAG,YAAY,CAAC;AAC3D,oBAAY,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAAC;AAClE,oBAAY,SAAS,GAAG;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,aAAa,EAAE,CAAA;CAAE,CAAC;AAE9E,wBAAsB,YAAY,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CA+CnF;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,CAyBjC;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBhB;AAED,wBAAsB,OAAO,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBzE;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB9E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"application-control.js","sourceRoot":"","sources":["../../src/application-control/application-control.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=test-app.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-app.d.ts","sourceRoot":"","sources":["../../src/subcommands/test-app.ts"],"names":[],"mappings":""}
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const path = require('path');
4
- // export const installTestAppCliLeaf = CliLeaf({
5
- // name: 'install-test-app',
6
- // description: 'Install a test application',
7
- // namedInputs: {
8
- // project: CliStringInput({
9
- // description: 'Project Id',
10
- // }),
11
- // version: CliStringInput({
12
- // description: 'Version',
13
- // }),
14
- // },
15
- // async action(_, opts) {
16
- // const { project, version } = opts;
17
- // const postfix = Math.random()
18
- // .toString()
19
- // .slice(2, 14);
20
- // const projectId = project ? project : `16ad11bb-8c3a-4a15-923e-${postfix}`;
21
- // const releaseVersion = version ? version : 'f43e816b30aa612f103fe73314f9716a436ce4f5';
22
- // // Package test app
23
- // const appDir = path.join('test', 'test-app');
24
- // const spawner = JsSpawner({ path: appDir });
25
- // const appPkg = await spawner.tar(...(await spawner.readdir()));
26
- // await installApp({ projectId, appPkg, version: releaseVersion });
27
- // },
28
- // });
29
- //# sourceMappingURL=test-app.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-app.js","sourceRoot":"","sources":["../../src/subcommands/test-app.ts"],"names":[],"mappings":";;AACA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAI7B,iDAAiD;AACjD,8BAA8B;AAC9B,+CAA+C;AAC/C,mBAAmB;AACnB,gCAAgC;AAChC,mCAAmC;AACnC,UAAU;AACV,gCAAgC;AAChC,gCAAgC;AAChC,UAAU;AACV,OAAO;AACP,4BAA4B;AAC5B,yCAAyC;AACzC,oCAAoC;AACpC,oBAAoB;AACpB,uBAAuB;AACvB,kFAAkF;AAClF,6FAA6F;AAC7F,0BAA0B;AAC1B,oDAAoD;AACpD,mDAAmD;AACnD,sEAAsE;AACtE,wEAAwE;AACxE,OAAO;AACP,MAAM"}
@@ -1,30 +0,0 @@
1
- import { CliLeaf, CliStringInput, CliTerseError } from '@alwaysai/alwayscli';
2
- const path = require('path');
3
- import { installApp } from '../application-control/application-control';
4
- import { JsSpawner } from '../util/spawner/js-spawner';
5
-
6
- // export const installTestAppCliLeaf = CliLeaf({
7
- // name: 'install-test-app',
8
- // description: 'Install a test application',
9
- // namedInputs: {
10
- // project: CliStringInput({
11
- // description: 'Project Id',
12
- // }),
13
- // version: CliStringInput({
14
- // description: 'Version',
15
- // }),
16
- // },
17
- // async action(_, opts) {
18
- // const { project, version } = opts;
19
- // const postfix = Math.random()
20
- // .toString()
21
- // .slice(2, 14);
22
- // const projectId = project ? project : `16ad11bb-8c3a-4a15-923e-${postfix}`;
23
- // const releaseVersion = version ? version : 'f43e816b30aa612f103fe73314f9716a436ce4f5';
24
- // // Package test app
25
- // const appDir = path.join('test', 'test-app');
26
- // const spawner = JsSpawner({ path: appDir });
27
- // const appPkg = await spawner.tar(...(await spawner.readdir()));
28
- // await installApp({ projectId, appPkg, version: releaseVersion });
29
- // },
30
- // });