edge-impulse-linux 1.9.4 → 1.10.0

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 (114) hide show
  1. package/build/cli/linux/camera-debug.js +1 -1
  2. package/build/cli/linux/camera-debug.js.map +1 -1
  3. package/build/cli/linux/linux-device.d.ts +42 -0
  4. package/build/cli/linux/linux-device.js +298 -0
  5. package/build/cli/linux/linux-device.js.map +1 -0
  6. package/build/cli/linux/linux.js +29 -363
  7. package/build/cli/linux/linux.js.map +1 -1
  8. package/build/cli/linux/runner-downloader.d.ts +14 -3
  9. package/build/cli/linux/runner-downloader.js +59 -8
  10. package/build/cli/linux/runner-downloader.js.map +1 -1
  11. package/build/cli/linux/runner-utils.d.ts +9 -0
  12. package/build/cli/linux/runner-utils.js +283 -0
  13. package/build/cli/linux/runner-utils.js.map +1 -0
  14. package/build/cli/linux/runner.js +123 -507
  15. package/build/cli/linux/runner.js.map +1 -1
  16. package/build/{cli → cli-common}/aws-iotcore-connector.d.ts +5 -1
  17. package/build/{cli → cli-common}/aws-iotcore-connector.js +34 -1
  18. package/build/cli-common/aws-iotcore-connector.js.map +1 -0
  19. package/build/cli-common/aws-sm-utils.js.map +1 -0
  20. package/build/cli-common/check-new-version.js.map +1 -0
  21. package/build/cli-common/config.js.map +1 -0
  22. package/build/cli-common/get-ips.js.map +1 -0
  23. package/build/cli-common/init-cli-app.js.map +1 -0
  24. package/build/{cli → cli-common}/iwebsocket.js.map +1 -1
  25. package/build/cli-common/make-image.js.map +1 -0
  26. package/build/{cli/linux → cli-common}/model-monitor.d.ts +4 -4
  27. package/build/{cli/linux → cli-common}/model-monitor.js +4 -0
  28. package/build/cli-common/model-monitor.js.map +1 -0
  29. package/build/{shared/daemon → cli-common}/remote-mgmt-service.d.ts +16 -4
  30. package/build/{shared/daemon → cli-common}/remote-mgmt-service.js +184 -16
  31. package/build/cli-common/remote-mgmt-service.js.map +1 -0
  32. package/build/library/index.d.ts +0 -5
  33. package/build/library/index.js +1 -6
  34. package/build/library/index.js.map +1 -1
  35. package/build/library/sensors/gstreamer.js +12 -2
  36. package/build/library/sensors/gstreamer.js.map +1 -1
  37. package/build/library/sensors/sensors-helper.d.ts +12 -0
  38. package/build/library/sensors/sensors-helper.js +101 -0
  39. package/build/library/sensors/sensors-helper.js.map +1 -0
  40. package/build/sdk/studio/sdk/api/projectsApi.d.ts +5 -1
  41. package/build/sdk/studio/sdk/api/projectsApi.js +5 -1
  42. package/build/sdk/studio/sdk/api/projectsApi.js.map +1 -1
  43. package/build/sdk/studio/sdk/api/rawDataApi.d.ts +2 -2
  44. package/build/sdk/studio/sdk/api/rawDataApi.js +2 -2
  45. package/build/sdk/studio/sdk/api/rawDataApi.js.map +1 -1
  46. package/build/sdk/studio/sdk/model/aIAction.d.ts +4 -0
  47. package/build/sdk/studio/sdk/model/aIAction.js +5 -0
  48. package/build/sdk/studio/sdk/model/aIAction.js.map +1 -1
  49. package/build/sdk/studio/sdk/model/createPreviewAIActionsJobRequest.d.ts +4 -0
  50. package/build/sdk/studio/sdk/model/createPreviewAIActionsJobRequest.js +5 -0
  51. package/build/sdk/studio/sdk/model/createPreviewAIActionsJobRequest.js.map +1 -1
  52. package/build/sdk/studio/sdk/model/download.d.ts +4 -3
  53. package/build/sdk/studio/sdk/model/download.js +5 -0
  54. package/build/sdk/studio/sdk/model/download.js.map +1 -1
  55. package/build/sdk/studio/sdk/model/listVersionsResponse.d.ts +4 -0
  56. package/build/sdk/studio/sdk/model/listVersionsResponse.js +5 -0
  57. package/build/sdk/studio/sdk/model/listVersionsResponse.js.map +1 -1
  58. package/build/sdk/studio/sdk/model/listVersionsResponseAllOf.d.ts +4 -0
  59. package/build/sdk/studio/sdk/model/listVersionsResponseAllOf.js +5 -0
  60. package/build/sdk/studio/sdk/model/listVersionsResponseAllOf.js.map +1 -1
  61. package/build/sdk/studio/sdk/model/models.d.ts +1 -0
  62. package/build/sdk/studio/sdk/model/models.js +3 -0
  63. package/build/sdk/studio/sdk/model/models.js.map +1 -1
  64. package/build/sdk/studio/sdk/model/projectInfoResponseAllOfAcquisitionSettings.d.ts +4 -0
  65. package/build/sdk/studio/sdk/model/projectInfoResponseAllOfAcquisitionSettings.js +5 -0
  66. package/build/sdk/studio/sdk/model/projectInfoResponseAllOfAcquisitionSettings.js.map +1 -1
  67. package/build/sdk/studio/sdk/model/projectVersionRequest.d.ts +4 -0
  68. package/build/sdk/studio/sdk/model/projectVersionRequest.js +5 -0
  69. package/build/sdk/studio/sdk/model/projectVersionRequest.js.map +1 -1
  70. package/build/sdk/studio/sdk/model/sample.d.ts +2 -0
  71. package/build/sdk/studio/sdk/model/sample.js +5 -0
  72. package/build/sdk/studio/sdk/model/sample.js.map +1 -1
  73. package/build/sdk/studio/sdk/model/sampleImageDimensions.d.ts +26 -0
  74. package/build/sdk/studio/sdk/model/sampleImageDimensions.js +34 -0
  75. package/build/sdk/studio/sdk/model/sampleImageDimensions.js.map +1 -0
  76. package/build/sdk/studio/sdk/model/updateProjectRequest.d.ts +4 -0
  77. package/build/sdk/studio/sdk/model/updateProjectRequest.js +5 -0
  78. package/build/sdk/studio/sdk/model/updateProjectRequest.js.map +1 -1
  79. package/build/shared/MgmtInterfaceTypes.d.ts +1 -1
  80. package/build/shared/bounding-box-file-types.js +9 -0
  81. package/build/shared/bounding-box-file-types.js.map +1 -1
  82. package/examples/js/collect-custom.js +3 -2
  83. package/examples/ts/classify-camera-webserver.ts +2 -2
  84. package/examples/ts/collect-custom.ts +3 -2
  85. package/package.json +1 -1
  86. package/build/cli/aws-iotcore-connector.js.map +0 -1
  87. package/build/cli/aws-sm-utils.js.map +0 -1
  88. package/build/cli/check-new-version.js.map +0 -1
  89. package/build/cli/config.js.map +0 -1
  90. package/build/cli/get-ips.js.map +0 -1
  91. package/build/cli/init-cli-app.js.map +0 -1
  92. package/build/cli/linux/model-monitor.js.map +0 -1
  93. package/build/cli/linux/remote-mgmt-service.d.ts +0 -99
  94. package/build/cli/linux/remote-mgmt-service.js +0 -343
  95. package/build/cli/linux/remote-mgmt-service.js.map +0 -1
  96. package/build/cli/make-image.js.map +0 -1
  97. package/build/library/get-ips.d.ts +0 -5
  98. package/build/library/get-ips.js +0 -31
  99. package/build/library/get-ips.js.map +0 -1
  100. package/build/shared/daemon/remote-mgmt-service.js.map +0 -1
  101. /package/build/{cli → cli-common}/aws-sm-utils.d.ts +0 -0
  102. /package/build/{cli → cli-common}/aws-sm-utils.js +0 -0
  103. /package/build/{cli → cli-common}/check-new-version.d.ts +0 -0
  104. /package/build/{cli → cli-common}/check-new-version.js +0 -0
  105. /package/build/{cli → cli-common}/config.d.ts +0 -0
  106. /package/build/{cli → cli-common}/config.js +0 -0
  107. /package/build/{cli → cli-common}/get-ips.d.ts +0 -0
  108. /package/build/{cli → cli-common}/get-ips.js +0 -0
  109. /package/build/{cli → cli-common}/init-cli-app.d.ts +0 -0
  110. /package/build/{cli → cli-common}/init-cli-app.js +0 -0
  111. /package/build/{cli → cli-common}/iwebsocket.d.ts +0 -0
  112. /package/build/{cli → cli-common}/iwebsocket.js +0 -0
  113. /package/build/{cli → cli-common}/make-image.d.ts +0 -0
  114. /package/build/{cli → cli-common}/make-image.js +0 -0
@@ -4,23 +4,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
5
  };
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- const imagesnap_1 = require("../../library/sensors/imagesnap");
8
7
  const inquirer_1 = __importDefault(require("inquirer"));
9
- const init_cli_app_1 = require("../init-cli-app");
10
- const remote_mgmt_service_1 = require("../../shared/daemon/remote-mgmt-service");
11
- const make_image_1 = require("../make-image");
12
- const tsee_1 = require("tsee");
13
- const async_mutex_1 = require("async-mutex");
14
- const sharp_1 = __importDefault(require("sharp"));
15
- const recorder_1 = require("../../library/sensors/recorder");
16
- const gstreamer_1 = require("../../library/sensors/gstreamer");
17
- const get_ips_1 = require("../../library/get-ips");
8
+ const init_cli_app_1 = require("../../cli-common/init-cli-app");
9
+ const remote_mgmt_service_1 = require("../../cli-common/remote-mgmt-service");
18
10
  const commander_1 = __importDefault(require("commander"));
19
11
  const path_1 = __importDefault(require("path"));
20
12
  const fs_1 = __importDefault(require("fs"));
21
13
  const ws_1 = __importDefault(require("ws"));
22
- const prophesee_1 = require("../../library/sensors/prophesee");
23
- const video_recorder_1 = require("../../library/sensors/video-recorder");
14
+ const sensors_helper_1 = require("../../library/sensors/sensors-helper");
15
+ const linux_device_1 = require("./linux-device");
24
16
  const packageVersion = JSON.parse(fs_1.default.readFileSync(path_1.default.join(__dirname, '..', '..', '..', 'package.json'), 'utf-8')).version;
25
17
  commander_1.default
26
18
  .description('Edge Impulse Linux client ' + packageVersion)
@@ -79,309 +71,27 @@ const cliOptions = {
79
71
  return { projectId: projectId };
80
72
  }
81
73
  };
82
- class LinuxDevice extends tsee_1.EventEmitter {
83
- constructor(cameraInstance, config, devKeys) {
84
- // eslint-disable-next-line constructor-super
85
- super();
86
- this._snapshotStreaming = false;
87
- this._lastSnapshot = new Date(0);
88
- this._snapshotMutex = new async_mutex_1.Mutex();
89
- this._snapshotId = 0;
90
- this._snapshotStreamingResolution = 'low';
91
- this._camera = cameraInstance;
92
- this._config = config;
93
- this._devKeys = devKeys;
94
- if (this._camera) {
95
- this._camera.on('snapshot', async (buffer, filename) => {
96
- const id = ++this._snapshotId;
97
- const release = await this._snapshotMutex.acquire();
98
- let timeBetweenFrames = this._snapshotStreamingResolution === 'low' ?
99
- 100 : 0;
100
- // limit to 10 frames a second & no new frames should have come in...
101
- try {
102
- if (this._snapshotStreaming &&
103
- Date.now() - +this._lastSnapshot >= timeBetweenFrames &&
104
- id === this._snapshotId) {
105
- if (this._snapshotStreamingResolution === 'low') {
106
- const jpg = (0, sharp_1.default)(buffer);
107
- const resized = await jpg.resize(undefined, 96, {
108
- fastShrinkOnLoad: false
109
- }).jpeg().toBuffer();
110
- this.emit('snapshot', resized, filename);
111
- }
112
- else {
113
- this.emit('snapshot', buffer, filename);
114
- }
115
- this._lastSnapshot = new Date();
116
- }
117
- }
118
- catch (ex) {
119
- console.warn('Failed to handle snapshot', ex);
120
- }
121
- finally {
122
- release();
123
- }
124
- });
125
- }
126
- }
127
- connected() {
128
- return true;
129
- }
130
- async getDeviceId() {
131
- return get_ips_1.ips.length > 0 ? get_ips_1.ips[0].mac : '00:00:00:00:00:00';
132
- }
133
- getDeviceType() {
134
- let id = (get_ips_1.ips.length > 0 ? get_ips_1.ips[0].mac : '00:00:00:00:00:00').toLowerCase();
135
- if (id.startsWith('dc:a6:32') || id.startsWith('b8:27:eb')) {
136
- return 'RASPBERRY_PI';
137
- }
138
- if (id.startsWith('00:04:4b') || id.startsWith('48:b0:2d')) {
139
- return 'NVIDIA_JETSON_NANO';
140
- }
141
- return 'EDGE_IMPULSE_LINUX';
142
- }
143
- getSensors() {
144
- /* eslint-disable @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */
145
- let sensors = [];
146
- if (!noMicrophone) {
147
- sensors.push({
148
- name: 'Microphone',
149
- frequencies: [16000],
150
- maxSampleLengthS: 3600
151
- });
152
- }
153
- if (camera) {
154
- let str = dimensions ? `(${dimensions.width}x${dimensions.height})` : `640x480`;
155
- sensors.push({
156
- name: `Camera (${str})`,
157
- frequencies: [],
158
- maxSampleLengthS: 60000
159
- });
160
- if (enableVideo) {
161
- sensors.push({
162
- name: 'Video (1280x720)',
163
- frequencies: [],
164
- maxSampleLengthS: 60000
165
- });
166
- }
167
- }
168
- /* eslint-enable @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */
169
- return sensors;
170
- }
171
- supportsSnapshotStreaming() {
172
- return true;
173
- }
174
- supportsSnapshotStreamingWhileCapturing() {
175
- return true;
176
- }
177
- beforeConnect() {
178
- return Promise.resolve();
179
- }
180
- async startSnapshotStreaming(resolution) {
181
- this._snapshotStreaming = true;
182
- this._snapshotStreamingResolution = resolution;
183
- }
184
- async stopSnapshotStreaming() {
185
- this._snapshotStreaming = false;
186
- }
187
- async sampleRequest(data, ee) {
188
- var _a, _b;
189
- if ((_a = data.sensor) === null || _a === void 0 ? void 0 : _a.startsWith('Camera')) {
190
- if (!this._camera) {
191
- throw new Error('Linux daemon was started with --no-camera');
192
- }
193
- ee.emit('started');
194
- let jpg = await new Promise((resolve, reject) => {
195
- if (!this._camera) {
196
- return reject('No camera');
197
- }
198
- setTimeout(() => {
199
- reject('Timeout');
200
- }, 3000);
201
- this._camera.once('snapshot', buffer => {
202
- resolve(buffer);
203
- });
204
- });
205
- console.log(SERIAL_PREFIX, 'Uploading sample to', this._config.endpoints.internal.ingestion + data.path + '...');
206
- ee.emit('uploading');
207
- await (0, make_image_1.upload)({
208
- apiKey: this._devKeys.apiKey,
209
- filename: data.label + '.jpg',
210
- buffer: jpg,
211
- allowDuplicates: false,
212
- category: data.path.indexOf('/training') > -1 ? 'training' : 'testing',
213
- config: this._config,
214
- label: { label: data.label, type: 'label' },
215
- boundingBoxes: undefined,
216
- metadata: {},
217
- addDateId: true,
218
- });
219
- console.log(SERIAL_PREFIX, 'Sampling finished');
220
- }
221
- else if ((_b = data.sensor) === null || _b === void 0 ? void 0 : _b.startsWith('Video')) {
222
- if (!this._camera) {
223
- throw new Error('Linux daemon was started with --no-camera');
224
- }
225
- console.log(SERIAL_PREFIX, 'Waiting 2 seconds');
226
- await new Promise((resolve) => setTimeout(resolve, 2000));
227
- ee.emit('started');
228
- // give some time to emit...
229
- await await new Promise((resolve) => setTimeout(resolve, 10));
230
- let video = new video_recorder_1.VideoRecorder(this._camera, verboseArgv);
231
- let videoEe = await video.record(data.length);
232
- videoEe.on('processing', () => ee.emit('processing'));
233
- let mp4 = await new Promise((resolve, reject) => {
234
- if (!this._camera) {
235
- return reject('No camera');
236
- }
237
- videoEe.on('error', err => {
238
- reject(err);
239
- });
240
- videoEe.on('done', buffer => {
241
- resolve(buffer);
242
- });
243
- });
244
- console.log(SERIAL_PREFIX, 'Uploading sample to', this._config.endpoints.internal.ingestion + data.path + '...');
245
- ee.emit('uploading');
246
- await (0, make_image_1.upload)({
247
- apiKey: this._devKeys.apiKey,
248
- filename: data.label + '.mp4',
249
- buffer: mp4,
250
- allowDuplicates: false,
251
- category: data.path.indexOf('/training') > -1 ? 'training' : 'testing',
252
- config: this._config,
253
- label: { label: data.label, type: 'label' },
254
- boundingBoxes: undefined,
255
- metadata: {},
256
- addDateId: true,
257
- });
258
- console.log(SERIAL_PREFIX, 'Sampling finished');
259
- }
260
- else if (data.sensor === 'Microphone') {
261
- if (noMicrophone) {
262
- throw new Error('Linux daemon was started with --no-microphone');
263
- }
264
- let now = Date.now();
265
- const recorder = new recorder_1.AudioRecorder({
266
- sampleRate: Math.round(1000 / data.interval),
267
- channels: 1,
268
- asRaw: true,
269
- verbose: verboseArgv,
270
- });
271
- console.log(SERIAL_PREFIX, 'Waiting 2 seconds');
272
- const audio = await recorder.start(await configFactory.getAudio() || '');
273
- // sleep 2 seconds before starting...
274
- await new Promise((resolve) => {
275
- let time = 2000 - (Date.now() - now);
276
- if (time > 0) {
277
- setTimeout(resolve, time);
278
- }
279
- else {
280
- resolve();
281
- }
282
- });
283
- console.log(SERIAL_PREFIX, 'Recording audio...');
284
- ee.emit('started');
285
- const audioBuffer = await new Promise((resolve) => {
286
- let audioBuffers = [];
287
- let totalAudioLength = 0;
288
- let bytesNeeded = (Math.round(1000 / data.interval) * (data.length / 1000)) * 2;
289
- const onData = (b) => {
290
- audioBuffers.push(b);
291
- totalAudioLength += b.length;
292
- if (totalAudioLength > bytesNeeded) {
293
- resolve(Buffer.concat(audioBuffers).slice(0, bytesNeeded));
294
- audio.ee.off('data', onData);
295
- }
296
- };
297
- audio.ee.on('data', onData);
298
- });
299
- await audio.stop();
300
- ee.emit('processing');
301
- let wavFile = this.buildWavFileBuffer(audioBuffer, data.interval);
302
- console.log(SERIAL_PREFIX, 'Uploading sample to', this._config.endpoints.internal.ingestion + data.path + '...');
303
- ee.emit('uploading');
304
- await (0, make_image_1.upload)({
305
- apiKey: this._devKeys.apiKey,
306
- filename: data.label + '.wav',
307
- buffer: wavFile,
308
- allowDuplicates: false,
309
- category: data.path.indexOf('/training') > -1 ? 'training' : 'testing',
310
- config: this._config,
311
- label: { label: data.label, type: 'label' },
312
- boundingBoxes: undefined,
313
- metadata: {},
314
- addDateId: true,
315
- });
316
- console.log(SERIAL_PREFIX, 'Sampling finished');
317
- }
318
- else {
319
- throw new Error('Invalid sensor: ' + data.sensor);
320
- }
321
- }
322
- buildWavFileBuffer(data, intervalMs) {
323
- // let's build a WAV file!
324
- let wavFreq = 1 / intervalMs * 1000;
325
- let fileSize = 44 + (data.length);
326
- let dataSize = (data.length);
327
- let srBpsC8 = (wavFreq * 16 * 1) / 8;
328
- let headerArr = new Uint8Array(44);
329
- let h = [
330
- 0x52, 0x49, 0x46, 0x46,
331
- // eslint-disable-next-line no-bitwise
332
- fileSize & 0xff, (fileSize >> 8) & 0xff, (fileSize >> 16) & 0xff, (fileSize >> 24) & 0xff,
333
- 0x57, 0x41, 0x56, 0x45,
334
- 0x66, 0x6d, 0x74, 0x20,
335
- 0x10, 0x00, 0x00, 0x00,
336
- 0x01, 0x00,
337
- 0x01, 0x00,
338
- // eslint-disable-next-line no-bitwise
339
- wavFreq & 0xff, (wavFreq >> 8) & 0xff, (wavFreq >> 16) & 0xff, (wavFreq >> 24) & 0xff,
340
- // eslint-disable-next-line no-bitwise
341
- srBpsC8 & 0xff, (srBpsC8 >> 8) & 0xff, (srBpsC8 >> 16) & 0xff, (srBpsC8 >> 24) & 0xff,
342
- 0x02, 0x00, 0x10, 0x00,
343
- 0x64, 0x61, 0x74, 0x61,
344
- // eslint-disable-next-line no-bitwise
345
- dataSize & 0xff, (dataSize >> 8) & 0xff, (dataSize >> 16) & 0xff, (dataSize >> 24) & 0xff,
346
- ];
347
- for (let hx = 0; hx < 44; hx++) {
348
- headerArr[hx] = h[hx];
349
- }
350
- return Buffer.concat([Buffer.from(headerArr), data]);
351
- }
352
- }
353
74
  let camera;
354
75
  let configFactory;
355
76
  let isExiting = false;
356
77
  // eslint-disable-next-line @typescript-eslint/no-floating-promises
357
78
  (async () => {
358
79
  try {
80
+ const cameraType = process.env.PROPHESEE_CAM === '1' ? sensors_helper_1.CameraType.PropheseeCamera :
81
+ process.platform === 'darwin' ? sensors_helper_1.CameraType.ImagesnapCamera :
82
+ process.platform === 'linux' ? sensors_helper_1.CameraType.GStreamerCamera :
83
+ sensors_helper_1.CameraType.UnknownCamera;
359
84
  const init = await (0, init_cli_app_1.initCliApp)(cliOptions);
360
85
  const config = init.config;
361
86
  configFactory = init.configFactory;
362
87
  const { projectId, devKeys } = await (0, init_cli_app_1.setupCliApp)(configFactory, config, cliOptions, undefined);
363
88
  await configFactory.setLinuxProjectId(projectId);
364
- if (!noCamera) {
365
- if (isProphesee) {
366
- camera = new prophesee_1.Prophesee(verboseArgv);
367
- }
368
- else if (process.platform === 'darwin') {
369
- camera = new imagesnap_1.Imagesnap(verboseArgv);
370
- }
371
- else if (process.platform === 'linux') {
372
- camera = new gstreamer_1.GStreamer(verboseArgv, {
373
- customLaunchCommand: gstLaunchArgsArgv,
374
- });
375
- }
376
- else {
377
- throw new Error('Unsupported platform: "' + process.platform + '"');
378
- }
379
- await camera.init();
380
- }
381
- const linuxDevice = new LinuxDevice(camera, config, devKeys);
89
+ const linuxDevice = new linux_device_1.LinuxDevice(config, devKeys, noMicrophone, enableVideo, verboseArgv);
382
90
  const remoteMgmt = new remote_mgmt_service_1.RemoteMgmt(projectId, devKeys, Object.assign({
383
91
  command: 'edge-impulse-linux',
384
- }, config), linuxDevice, url => new ws_1.default(url), async (currName) => {
92
+ }, config), linuxDevice, undefined, // model monitoring object
93
+ // model monitoring object
94
+ url => new ws_1.default(url), async (currName) => {
385
95
  let nameDevice = await inquirer_1.default.prompt([{
386
96
  type: 'input',
387
97
  message: 'What name do you want to give this device?',
@@ -416,79 +126,35 @@ let isExiting = false;
416
126
  process.on('SIGHUP', onSignal);
417
127
  process.on('SIGINT', onSignal);
418
128
  if (!noMicrophone) {
419
- let audioDevice;
420
- const audioDevices = await recorder_1.AudioRecorder.ListDevices();
421
- const storedAudio = await configFactory.getAudio();
422
- if (storedAudio && audioDevices.find(d => d.id === storedAudio)) {
423
- audioDevice = storedAudio;
129
+ let audioDeviceName = await configFactory.getAudio();
130
+ try {
131
+ audioDeviceName = await (0, sensors_helper_1.initMicrophone)(audioDeviceName);
424
132
  }
425
- else if (audioDevices.length === 1) {
426
- audioDevice = audioDevices[0].id;
427
- }
428
- else if (audioDevices.length === 0) {
133
+ catch (ex) {
429
134
  console.warn(SERIAL_PREFIX, 'Could not find any microphones, ' +
430
135
  'run this command with --disable-microphone to skip selection');
431
- audioDevice = '';
136
+ audioDeviceName = '';
432
137
  }
433
- else {
434
- let inqRes = await inquirer_1.default.prompt([{
435
- type: 'list',
436
- choices: (audioDevices || []).map(p => ({ name: p.name, value: p.id })),
437
- name: 'microphone',
438
- message: 'Select a microphone (or run this command with --disable-microphone to skip selection)',
439
- pageSize: 20
440
- }]);
441
- audioDevice = inqRes.microphone;
442
- }
443
- await configFactory.storeAudio(audioDevice);
444
- console.log(SERIAL_PREFIX, 'Using microphone', audioDevice);
138
+ await configFactory.storeAudio(audioDeviceName);
139
+ linuxDevice.setAudioDeviceName(audioDeviceName);
140
+ console.log(SERIAL_PREFIX, 'Using microphone', audioDeviceName);
445
141
  }
446
- if (camera) {
447
- let cameraDevice;
448
- const cameraDevices = await camera.listDevices();
449
- if (cameraDevices.length === 0) {
450
- throw new Error('Cannot find any webcams, run this command with --disable-camera to skip selection');
451
- }
142
+ if (!noCamera) {
452
143
  const storedCamera = await configFactory.getCamera();
453
- if (storedCamera && cameraDevices.find(d => d === storedCamera)) {
454
- cameraDevice = storedCamera;
455
- }
456
- else if (cameraDevices.length === 1) {
457
- cameraDevice = cameraDevices[0];
458
- }
459
- else {
460
- let inqRes = await inquirer_1.default.prompt([{
461
- type: 'list',
462
- choices: (cameraDevices || []).map(p => ({ name: p, value: p })),
463
- name: 'camera',
464
- message: 'Select a camera (or run this command with --disable-camera to skip selection)',
465
- pageSize: 20
466
- }]);
467
- cameraDevice = inqRes.camera;
468
- }
469
- await configFactory.storeCamera(cameraDevice);
470
- console.log(SERIAL_PREFIX, 'Using camera', cameraDevice, 'starting...');
471
- if (isProphesee) {
472
- await camera.start({
473
- device: cameraDevice,
474
- intervalMs: 40,
475
- dimensions: dimensions
476
- });
477
- }
478
- else {
479
- await camera.start({
480
- device: cameraDevice,
481
- intervalMs: 200,
482
- dimensions: dimensions
483
- });
484
- }
144
+ camera = await (0, sensors_helper_1.initCamera)(cameraType, storedCamera, dimensions, gstLaunchArgsArgv, verboseArgv);
485
145
  camera.on('error', error => {
486
146
  if (isExiting)
487
147
  return;
488
148
  console.log('camera error', error);
489
149
  process.exit(1);
490
150
  });
491
- console.log(SERIAL_PREFIX, 'Connected to camera');
151
+ let opts = camera.getLastOptions();
152
+ if (!opts) {
153
+ throw new Error('Could not get selected camera details');
154
+ }
155
+ await configFactory.storeCamera(opts.device);
156
+ linuxDevice.registerCameraSnapshotHandler(camera);
157
+ console.log(SERIAL_PREFIX, 'Connected to camera ' + opts.device);
492
158
  }
493
159
  remoteMgmt.on('authenticationFailed', async () => {
494
160
  console.log(SERIAL_PREFIX, 'Authentication failed');
@@ -1 +1 @@
1
- {"version":3,"file":"linux.js","sourceRoot":"","sources":["../../../cli/linux/linux.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linux.js","sourceRoot":"","sources":["../../../cli/linux/linux.ts"],"names":[],"mappings":";;;;;;AAEA,wDAAgC;AAChC,gEAAwE;AACxE,8EAAkE;AAGlE,0DAAgC;AAChC,gDAAwB;AACxB,4CAAoB;AACpB,4CAA2B;AAC3B,yEAA8F;AAC9F,iDAA6C;AAE7C,MAAM,cAAc,GAAyB,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CACnE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAE,CAAC,OAAO,CAAC;AAE/E,mBAAO;KACF,WAAW,CAAC,4BAA4B,GAAG,cAAc,CAAC;KAC1D,OAAO,CAAC,cAAc,CAAC;KACvB,MAAM,CAAC,iBAAiB,EAAE,2EAA2E,CAAC;KACtG,MAAM,CAAC,kBAAkB,EAAE,gEAAgE,CAAC;KAC5F,MAAM,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;KACrD,MAAM,CAAC,sBAAsB,EAAE,6BAA6B,CAAC;KAC7D,MAAM,CAAC,cAAc,EAAE,oCAAoC,CAAC;KAC5D,MAAM,CAAC,eAAe,EAAE,qCAAqC,CAAC;KAC9D,MAAM,CAAC,0BAA0B,EAAE,oGAAoG;IACpI,0FAA0F,CAAC;KAC9F,MAAM,CAAC,SAAS,EAAE,mBAAmB,CAAC;KACtC,MAAM,CAAC,UAAU,EAAE,kDAAkD,CAAC;KACtE,MAAM,CAAC,OAAO,EAAE,yFAAyF;IACtG,uCAAuC,CAAC;KAC3C,MAAM,CAAC,WAAW,EAAE,mBAAmB,CAAC;KACxC,MAAM,CAAC,cAAc,EAAE,4CAA4C,CAAC;KACpE,kBAAkB,CAAC,IAAI,CAAC;KACxB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzB,MAAM,OAAO,GAAY,CAAC,CAAC,mBAAO,CAAC,GAAG,CAAC;AACvC,MAAM,SAAS,GAAY,CAAC,CAAC,mBAAO,CAAC,KAAK,CAAC;AAC3C,MAAM,UAAU,GAAY,CAAC,CAAC,mBAAO,CAAC,MAAM,CAAC;AAC7C,MAAM,WAAW,GAAY,CAAC,CAAC,mBAAO,CAAC,OAAO,CAAC;AAC/C,MAAM,UAAU,GAAuB,mBAAO,CAAC,MAAM,CAAC;AACtD,MAAM,cAAc,GAAY,CAAC,CAAC,mBAAO,CAAC,UAAU,CAAC;AACrD,MAAM,WAAW,GAAuB,mBAAO,CAAC,OAAO,CAAC;AACxD,MAAM,iBAAiB,GAAuB,mBAAO,CAAC,aAAa,CAAC;AACpE,MAAM,QAAQ,GAAY,CAAC,CAAC,mBAAO,CAAC,aAAa,CAAC;AAClD,MAAM,YAAY,GAAY,CAAC,CAAC,mBAAO,CAAC,iBAAiB,CAAC;AAC1D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,GAAG,CAAC;AACtD,MAAM,WAAW,GAAG,WAAW,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC;AACtE,MAAM,UAAU,GAAG,mBAAO,CAAC,KAAK,IAAI,mBAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC,mBAAO,CAAC,KAAK,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC,mBAAO,CAAC,MAAM,CAAC;CACjC,CAAC,CAAC,CAAC,SAAS,CAAC;AAEd,IAAI,CAAC,mBAAO,CAAC,KAAK,IAAI,CAAC,mBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,mBAAO,CAAC,KAAK,IAAI,mBAAO,CAAC,MAAM,CAAC,EAAE;IAC1E,OAAO,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;IACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACnB;AAED,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAE7C,MAAM,UAAU,GAAG;IACf,OAAO,EAAE,2BAA2B;IACpC,UAAU,EAAE,UAAU;IACtB,cAAc,EAAE,cAAc;IAC9B,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,WAAW;IACxB,UAAU,EAAE,UAAU;IACtB,iBAAiB,EAAE,sDAAsD;IACzE,oBAAoB,EAAE,KAAK,IAAI,EAAE;QAC7B,IAAI,SAAS,GAAG,MAAM,aAAa,CAAC,iBAAiB,EAAE,CAAC;QACxD,IAAI,CAAC,SAAS,EAAE;YACZ,OAAO,SAAS,CAAC;SACpB;QACD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IACpC,CAAC;CACJ,CAAC;AAEF,IAAI,MAA2B,CAAC;AAChC,IAAI,aAAqB,CAAC;AAC1B,IAAI,SAAS,GAAG,KAAK,CAAC;AAEtB,mEAAmE;AACnE,CAAC,KAAK,IAAI,EAAE;IACR,IAAI;QACA,MAAM,UAAU,GACZ,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,GAAG,CAAC,CAAC,CAAC,2BAAU,CAAC,eAAe,CAAC,CAAC;YAChE,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,2BAAU,CAAC,eAAe,CAAC,CAAC;gBAC5D,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,2BAAU,CAAC,eAAe,CAAC,CAAC;oBACvD,2BAAU,CAAC,aAAa,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,IAAA,yBAAU,EAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAEnC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,0BAAW,EAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAE/F,MAAM,aAAa,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAEjD,MAAM,WAAW,GAAG,IAAI,0BAAW,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAC7F,MAAM,UAAU,GAAG,IAAI,gCAAU,CAAC,SAAS,EACvC,OAAO,EACP,MAAM,CAAC,MAAM,CAAC;YACV,OAAO,EAAwB,oBAAoB;SACtD,EAAE,MAAM,CAAC,EACV,WAAW,EACX,SAAS,EAAE,0BAA0B;QACrC,AADW,0BAA0B;QACrC,GAAG,CAAC,EAAE,CAAC,IAAI,YAAS,CAAC,GAAG,CAAC,EACzB,KAAK,EAAE,QAAQ,EAAE,EAAE;YACf,IAAI,UAAU,GAA2B,MAAM,kBAAQ,CAAC,MAAM,CAAC,CAAC;oBAC5D,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,4CAA4C;oBACrD,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,QAAQ;iBACpB,CAAC,CAAC,CAAC;YACJ,OAAO,UAAU,CAAC,UAAU,CAAC;QACjC,CAAC,CAAC,CAAC;QAEP,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;YACxB,IAAI,CAAC,SAAS,EAAE;gBACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACnB;iBACI;gBACD,SAAS,GAAG,IAAI,CAAC;gBAEjB,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,gDAAgD;oBACvE,mCAAmC,CAAC,CAAC;gBACzC,SAAS,GAAG,KAAK,CAAC;gBAClB,IAAI;oBACA,IAAI,MAAM,EAAE;wBACR,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;qBACvB;oBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACnB;gBACD,OAAO,GAAG,EAAE;oBACR,IAAI,EAAE,GAAU,GAAG,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,4BAA4B,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;iBACxE;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACnB;QACL,CAAC,CAAC;QAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE/B,IAAI,CAAC,YAAY,EAAE;YACf,IAAI,eAAe,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC;YACrD,IAAI;gBACA,eAAe,GAAG,MAAM,IAAA,+BAAc,EAAC,eAAe,CAAC,CAAC;aAC3D;YACD,OAAO,EAAE,EAAE;gBACP,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,kCAAkC;oBAC1D,8DAA8D,CAAC,CAAC;gBACpE,eAAe,GAAG,EAAE,CAAC;aACxB;YACD,MAAM,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;YAChD,WAAW,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;YAEhD,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC;SACnE;QAED,IAAI,CAAC,QAAQ,EAAE;YACX,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,CAAC;YACrD,MAAM,GAAG,MAAM,IAAA,2BAAU,EAAC,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;YAEhG,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;gBACvB,IAAI,SAAS;oBAAE,OAAO;gBAEtB,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,IAAI,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,EAAE;gBACP,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;aAC5D;YACD,MAAM,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7C,WAAW,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;YAElD,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;SACpE;QAED,UAAU,CAAC,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YAC7C,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC;YACpD,IAAI,MAAM,EAAE;gBACR,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;aACvB;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;KAC9B;IACD,OAAO,EAAE,EAAE;QACP,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,CAAC,CAAC;QACrD,IAAI,MAAM,EAAE;YACR,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;SACvB;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACnB;AACL,CAAC,CAAC,EAAE,CAAC"}
@@ -1,12 +1,12 @@
1
1
  /// <reference types="node" />
2
- import { EdgeImpulseConfig } from "../config";
2
+ import { EdgeImpulseApi } from "../../sdk/studio/api";
3
3
  import { EventEmitter } from 'tsee';
4
4
  export declare class RunnerDownloader extends EventEmitter<{
5
5
  'build-progress': (msg: string) => void;
6
6
  }> {
7
7
  private _projectId;
8
8
  private _impulseId;
9
- private _config;
9
+ private _api;
10
10
  private _modelType;
11
11
  private _forceTarget;
12
12
  private _forceEngine;
@@ -14,7 +14,7 @@ export declare class RunnerDownloader extends EventEmitter<{
14
14
  projectId: number;
15
15
  impulseId: number;
16
16
  modelType: 'int8' | 'float32';
17
- config: EdgeImpulseConfig;
17
+ api: EdgeImpulseApi;
18
18
  forceTarget: string | undefined;
19
19
  forceEngine: string | undefined;
20
20
  });
@@ -38,3 +38,14 @@ export declare class RunnerModelPath {
38
38
  });
39
39
  getModelPath(version: number): string;
40
40
  }
41
+ export declare function downloadModel(opts: {
42
+ projectId: number;
43
+ impulseId: number;
44
+ api: EdgeImpulseApi;
45
+ quantizedModel: boolean;
46
+ forcedTarget: string | undefined;
47
+ forcedEngine: string | undefined;
48
+ }): Promise<{
49
+ modelFile: string;
50
+ modelPath: RunnerModelPath;
51
+ }>;
@@ -3,19 +3,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.RunnerModelPath = exports.RunnerDownloader = void 0;
6
+ exports.downloadModel = exports.RunnerModelPath = exports.RunnerDownloader = void 0;
7
7
  const tsee_1 = require("tsee");
8
8
  const spawn_helper_1 = require("../../library/sensors/spawn-helper");
9
9
  const fs_1 = __importDefault(require("fs"));
10
10
  const path_1 = __importDefault(require("path"));
11
11
  const os_1 = __importDefault(require("os"));
12
12
  const BUILD_PREFIX = '\x1b[32m[BLD]\x1b[0m';
13
+ const RUNNER_PREFIX = '\x1b[33m[RUN]\x1b[0m';
13
14
  class RunnerDownloader extends tsee_1.EventEmitter {
14
15
  constructor(opts) {
15
16
  super();
16
17
  this._projectId = opts.projectId;
17
18
  this._impulseId = opts.impulseId;
18
- this._config = opts.config;
19
+ this._api = opts.api;
19
20
  this._modelType = opts.modelType;
20
21
  this._forceTarget = opts.forceTarget;
21
22
  this._forceEngine = opts.forceEngine;
@@ -100,7 +101,7 @@ class RunnerDownloader extends tsee_1.EventEmitter {
100
101
  }
101
102
  async getLastDeploymentVersion() {
102
103
  let downloadType = await this.getDownloadType();
103
- let deployInfo = await this._config.api.deployment.getDeployment(this._projectId, {
104
+ let deployInfo = await this._api.deployment.getDeployment(this._projectId, {
104
105
  type: downloadType,
105
106
  modelType: this._modelType,
106
107
  impulseId: this._impulseId,
@@ -111,7 +112,7 @@ class RunnerDownloader extends tsee_1.EventEmitter {
111
112
  }
112
113
  async downloadDeployment() {
113
114
  let downloadType = await this.getDownloadType();
114
- let deployInfo = await this._config.api.deployment.getDeployment(this._projectId, {
115
+ let deployInfo = await this._api.deployment.getDeployment(this._projectId, {
115
116
  type: downloadType,
116
117
  modelType: this._modelType,
117
118
  impulseId: this._impulseId,
@@ -119,7 +120,7 @@ class RunnerDownloader extends tsee_1.EventEmitter {
119
120
  if (!deployInfo.hasDeployment) {
120
121
  await this.buildModel(downloadType);
121
122
  }
122
- let deployment = await this._config.api.deployment.downloadBuild(this._projectId, {
123
+ let deployment = await this._api.deployment.downloadBuild(this._projectId, {
123
124
  type: downloadType,
124
125
  modelType: this._modelType,
125
126
  impulseId: this._impulseId,
@@ -128,7 +129,7 @@ class RunnerDownloader extends tsee_1.EventEmitter {
128
129
  }
129
130
  async buildModel(downloadType) {
130
131
  // list all deploy targets
131
- const dt = await this._config.api.deployment.listDeploymentTargetsForProjectDataSources(this._projectId, {
132
+ const dt = await this._api.deployment.listDeploymentTargetsForProjectDataSources(this._projectId, {
132
133
  impulseId: this._impulseId,
133
134
  });
134
135
  let deployInfo = dt.targets.find(x => x.format === downloadType);
@@ -144,7 +145,7 @@ class RunnerDownloader extends tsee_1.EventEmitter {
144
145
  }
145
146
  engine = this._forceEngine;
146
147
  }
147
- let buildRes = await this._config.api.jobs.buildOnDeviceModelJob(this._projectId, {
148
+ let buildRes = await this._api.jobs.buildOnDeviceModelJob(this._projectId, {
148
149
  engine: engine,
149
150
  modelType: this._modelType,
150
151
  }, {
@@ -153,7 +154,7 @@ class RunnerDownloader extends tsee_1.EventEmitter {
153
154
  });
154
155
  let jobId = buildRes.id;
155
156
  this.emit('build-progress', 'Created build job with ID ' + jobId);
156
- await this._config.api.runJobUntilCompletion({
157
+ await this._api.runJobUntilCompletion({
157
158
  type: 'project',
158
159
  projectId: this._projectId,
159
160
  jobId: jobId
@@ -189,4 +190,54 @@ class RunnerModelPath {
189
190
  }
190
191
  }
191
192
  exports.RunnerModelPath = RunnerModelPath;
193
+ function checkFileExists(file) {
194
+ return new Promise(resolve => {
195
+ return fs_1.default.promises.access(file, fs_1.default.constants.F_OK)
196
+ .then(() => resolve(true))
197
+ .catch(() => resolve(false));
198
+ });
199
+ }
200
+ async function downloadModel(opts) {
201
+ const { projectId, impulseId, api, quantizedModel, forcedTarget, forcedEngine } = opts;
202
+ let modelPath;
203
+ let modelFile;
204
+ const downloader = new RunnerDownloader({
205
+ projectId: projectId,
206
+ impulseId: impulseId,
207
+ modelType: quantizedModel ? 'int8' : 'float32',
208
+ api,
209
+ forceTarget: forcedTarget,
210
+ forceEngine: forcedEngine,
211
+ });
212
+ downloader.on('build-progress', msg => {
213
+ console.log(BUILD_PREFIX, msg);
214
+ });
215
+ modelPath = new RunnerModelPath({
216
+ projectId,
217
+ impulseId,
218
+ modelType: quantizedModel ? 'int8' : 'float32',
219
+ forceTarget: forcedTarget,
220
+ forceEngine: forcedEngine,
221
+ });
222
+ // no new version and already downloaded? return that model
223
+ let currVersion = await downloader.getLastDeploymentVersion();
224
+ if (currVersion && await checkFileExists(modelPath.getModelPath(currVersion))) {
225
+ modelFile = modelPath.getModelPath(currVersion);
226
+ console.log(RUNNER_PREFIX, 'Already have model', modelFile, 'not downloading...');
227
+ }
228
+ else {
229
+ console.log(RUNNER_PREFIX, 'Downloading model...');
230
+ let deployment = await downloader.downloadDeployment();
231
+ let tmpDir = await fs_1.default.promises.mkdtemp(path_1.default.join(os_1.default.tmpdir(), 'ei-' + Date.now()));
232
+ tmpDir = path_1.default.join(os_1.default.tmpdir(), tmpDir);
233
+ await fs_1.default.promises.mkdir(tmpDir, { recursive: true });
234
+ let ret = await downloader.getDownloadType();
235
+ modelFile = path_1.default.join(tmpDir, ret[0]);
236
+ await fs_1.default.promises.writeFile(modelFile, deployment);
237
+ await fs_1.default.promises.chmod(modelFile, 0o755);
238
+ console.log(RUNNER_PREFIX, 'Downloading model OK');
239
+ }
240
+ return { modelFile, modelPath };
241
+ }
242
+ exports.downloadModel = downloadModel;
192
243
  //# sourceMappingURL=runner-downloader.js.map