@phystack/cli 4.5.41-dev → 4.5.43-dev

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.
@@ -8,6 +8,36 @@ const open_1 = __importDefault(require("open"));
8
8
  const readline_1 = __importDefault(require("readline"));
9
9
  const inquirer_1 = __importDefault(require("inquirer"));
10
10
  const device_grant_auth_service_1 = __importDefault(require("../../services/auth/device-grant-auth.service"));
11
+ const admin_api_1 = require("../../services/admin-api");
12
+ const tenant_storage_1 = require("../../utils/tenant-storage");
13
+ const org_selector_1 = require("../../utils/org-selector");
14
+ const autoSelectTenant = async () => {
15
+ try {
16
+ const organizations = await (0, admin_api_1.adminApi)().organizations.listOrganizations();
17
+ if (!organizations || organizations.length === 0) {
18
+ console.log(chalk_1.default.yellow('No tenants found. Use `phy tenant select` after being added to a tenant.'));
19
+ return;
20
+ }
21
+ if (organizations.length === 1) {
22
+ const org = organizations[0];
23
+ const tenant = {
24
+ id: org.id,
25
+ slug: org.organizationName,
26
+ displayName: org.displayName,
27
+ phyhubUrl: org.phyhubUrl,
28
+ };
29
+ await (0, tenant_storage_1.saveTenant)(tenant);
30
+ console.log(chalk_1.default.green(`Auto-selected tenant: ${chalk_1.default.blue(tenant.displayName)} (${tenant.slug})`));
31
+ return;
32
+ }
33
+ console.log(chalk_1.default.dim(`\nFound ${organizations.length} tenants. Please select one:`));
34
+ await (0, org_selector_1.selectOrganization)('Select a tenant:', true);
35
+ }
36
+ catch (error) {
37
+ console.log(chalk_1.default.yellow(`Could not auto-select tenant: ${error.message}`));
38
+ console.log(chalk_1.default.dim('You can manually select a tenant with `phy tenant select`.'));
39
+ }
40
+ };
11
41
  const clearLastConsoleLines = (count) => {
12
42
  for (let i = 0; i < count; i++) {
13
43
  readline_1.default.moveCursor(process.stdout, 0, -1);
@@ -23,6 +53,7 @@ const login = async ({ useDeviceCode, useDeveloperToken, }) => {
23
53
  const authService = new device_grant_auth_service_1.default();
24
54
  await authService.storeDeveloperToken(envToken);
25
55
  console.log(chalk_1.default.green('Developer token from environment variable stored successfully'));
56
+ await autoSelectTenant();
26
57
  return;
27
58
  }
28
59
  // Handle developer token authentication
@@ -32,6 +63,7 @@ const login = async ({ useDeviceCode, useDeveloperToken, }) => {
32
63
  if (useDeveloperToken) {
33
64
  await authService.storeDeveloperToken(useDeveloperToken);
34
65
  console.log(chalk_1.default.green('Developer token stored successfully'));
66
+ await autoSelectTenant();
35
67
  return;
36
68
  }
37
69
  // Otherwise prompt for token
@@ -50,6 +82,7 @@ const login = async ({ useDeviceCode, useDeveloperToken, }) => {
50
82
  ]);
51
83
  await authService.storeDeveloperToken(token);
52
84
  console.log(chalk_1.default.green('Developer token stored successfully'));
85
+ await autoSelectTenant();
53
86
  return;
54
87
  }
55
88
  const showCountdown = (ttl) => {
@@ -101,6 +134,7 @@ If no web browser is available or if the web browser fails to open, use device c
101
134
  });
102
135
  clearLoginSession();
103
136
  console.log(chalk_1.default.green('\nSuccessfully authenticated. You can now use the CLI.'));
137
+ await autoSelectTenant();
104
138
  }
105
139
  catch (error) {
106
140
  clearLoginSession();
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const commander_1 = __importDefault(require("commander"));
7
+ const utils_1 = require("../../utils");
8
+ const start_1 = __importDefault(require("./start"));
9
+ const run_1 = __importDefault(require("./run"));
10
+ const simulator = commander_1.default
11
+ .command('simulator')
12
+ .description('Local device simulator for app development');
13
+ simulator
14
+ .command('start')
15
+ .description('Start the local simulator server')
16
+ .option('-p, --port <port>', 'Port to listen on', '55000')
17
+ .action((0, utils_1.handleError)(start_1.default));
18
+ simulator
19
+ .command('run <path>')
20
+ .description('Run an app connected to the simulator (reconciles twin, spawns dev server)')
21
+ .option('--type <type>', 'Override app type detection (screen or edge)')
22
+ .option('--dev-command <command>', 'Override dev command (default: npm run dev)')
23
+ .action((0, utils_1.handleError)(run_1.default));
24
+ exports.default = simulator;
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/simulator/index.ts"],"names":[],"mappings":";;;;;AAAA,0DAAgC;AAChC,uCAA0C;AAC1C,oDAA4B;AAC5B,gDAAwB;AAExB,MAAM,SAAS,GAAG,mBAAO;KACtB,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,4CAA4C,CAAC,CAAC;AAE7D,SAAS;KACN,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,OAAO,CAAC;KACzD,MAAM,CAAC,IAAA,mBAAW,EAAC,eAAK,CAAC,CAAC,CAAC;AAE9B,SAAS;KACN,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CACV,4EAA4E,CAC7E;KACA,MAAM,CAAC,eAAe,EAAE,8CAA8C,CAAC;KACvE,MAAM,CAAC,yBAAyB,EAAE,6CAA6C,CAAC;KAChF,MAAM,CAAC,IAAA,mBAAW,EAAC,aAAG,CAAC,CAAC,CAAC;AAE5B,kBAAe,SAAS,CAAC"}
@@ -0,0 +1,383 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const chalk_1 = __importDefault(require("chalk"));
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
9
+ const child_process_1 = require("child_process");
10
+ const socket_io_client_1 = require("socket.io-client");
11
+ const simulator_config_1 = require("../../utils/simulator-config");
12
+ const types_1 = require("../../simulator/types");
13
+ const SIMULATOR_URL = 'http://localhost:55000';
14
+ const APP_TYPE_TO_TWIN_TYPE = {
15
+ [types_1.AppTypeEnum.Screen]: types_1.TwinTypeEnum.Screen,
16
+ [types_1.AppTypeEnum.Edge]: types_1.TwinTypeEnum.Edge,
17
+ };
18
+ const SUPPORTED_APP_TYPES = new Set(Object.values(types_1.AppTypeEnum));
19
+ function resolveAppType(optionType, pkgType) {
20
+ const raw = (optionType || pkgType || '').toLowerCase();
21
+ if (!raw) {
22
+ throw new Error('Cannot detect app type. Set "application-type" in package.json or pass --type.');
23
+ }
24
+ if (!SUPPORTED_APP_TYPES.has(raw)) {
25
+ throw new Error(`Unsupported app type "${raw}". Supported types: ${[...SUPPORTED_APP_TYPES].join(', ')}`);
26
+ }
27
+ return raw;
28
+ }
29
+ async function tryReadSettingsFiles(appPath, files) {
30
+ for (const settingsPath of files) {
31
+ if (await fs_extra_1.default.pathExists(settingsPath)) {
32
+ try {
33
+ const data = await fs_extra_1.default.readJSON(settingsPath);
34
+ const settings = data?.app?.gridApp?.settings;
35
+ if (settings) {
36
+ console.log(chalk_1.default.dim(`Read settings from ${path_1.default.relative(appPath, settingsPath)}`));
37
+ return settings;
38
+ }
39
+ }
40
+ catch (err) {
41
+ console.log(`[simulator] Failed to read ${path_1.default.relative(appPath, settingsPath)}: ${err.message}`);
42
+ }
43
+ }
44
+ }
45
+ return null;
46
+ }
47
+ async function readLocalSettings(appPath) {
48
+ const settingsFiles = [
49
+ path_1.default.join(appPath, 'src', 'settings', 'index.json'),
50
+ path_1.default.join(appPath, 'src', 'settings', '.generated.json'),
51
+ ];
52
+ const settings = await tryReadSettingsFiles(appPath, settingsFiles);
53
+ if (settings)
54
+ return settings;
55
+ // If neither exists, try running init-settings.js then retry
56
+ const initScript = path_1.default.join(appPath, 'scripts', 'init-settings.js');
57
+ if (await fs_extra_1.default.pathExists(initScript)) {
58
+ console.log(chalk_1.default.dim('No settings found, running init-settings.js...'));
59
+ try {
60
+ (0, child_process_1.execSync)('node scripts/init-settings.js', { cwd: appPath, stdio: 'pipe' });
61
+ }
62
+ catch (err) {
63
+ console.log(`[simulator] init-settings.js failed: ${err.message}`);
64
+ }
65
+ const retrySettings = await tryReadSettingsFiles(appPath, settingsFiles);
66
+ if (retrySettings)
67
+ return retrySettings;
68
+ }
69
+ return {};
70
+ }
71
+ function connectSimulator() {
72
+ return new Promise((resolve, reject) => {
73
+ const socket = (0, socket_io_client_1.io)(SIMULATOR_URL, {
74
+ reconnectionAttempts: 1,
75
+ timeout: 3000,
76
+ });
77
+ socket.on('connect', () => resolve(socket));
78
+ socket.on('connect_error', (err) => {
79
+ reject(new Error(`Cannot connect to simulator: ${err.message}`));
80
+ });
81
+ });
82
+ }
83
+ function sendSimulatorMessage(socket, payload) {
84
+ return new Promise((resolve, reject) => {
85
+ const timer = setTimeout(() => {
86
+ reject(new Error('Timeout waiting for simulator response'));
87
+ }, 10000);
88
+ socket.emit('simulator', payload, (response) => {
89
+ clearTimeout(timer);
90
+ resolve(response);
91
+ });
92
+ });
93
+ }
94
+ async function createTwinViaSimulator(type, desiredProperties, reuseId) {
95
+ const socket = await connectSimulator();
96
+ try {
97
+ const response = await sendSimulatorMessage(socket, {
98
+ method: 'createInstanceTwin',
99
+ data: { type, desiredProperties, id: reuseId },
100
+ });
101
+ if (response?.status === 'success' && response?.twin) {
102
+ return response.twin;
103
+ }
104
+ throw new Error(response?.message || 'Failed to create twin');
105
+ }
106
+ finally {
107
+ socket.disconnect();
108
+ }
109
+ }
110
+ exports.default = async (appPath, options = {}) => {
111
+ // 1. Resolve path
112
+ const resolvedPath = path_1.default.resolve(appPath);
113
+ if (!(await fs_extra_1.default.pathExists(resolvedPath))) {
114
+ console.error(chalk_1.default.red(`Path does not exist: ${resolvedPath}`));
115
+ process.exit(1);
116
+ }
117
+ // 2. Read package.json
118
+ const pkgPath = path_1.default.join(resolvedPath, 'package.json');
119
+ if (!(await fs_extra_1.default.pathExists(pkgPath))) {
120
+ console.error(chalk_1.default.red('Only Node.js apps are supported for now. No package.json found at ' +
121
+ resolvedPath));
122
+ process.exit(1);
123
+ }
124
+ const pkg = await fs_extra_1.default.readJSON(pkgPath);
125
+ const appName = pkg.name || path_1.default.basename(resolvedPath);
126
+ // 3. Resolve app type
127
+ const appType = resolveAppType(options.type, pkg['application-type']);
128
+ const devCommand = resolveDevCommand(options, pkg, appType);
129
+ // 4. Check simulator is running
130
+ let isRunning = false;
131
+ try {
132
+ const socket = await connectSimulator();
133
+ socket.disconnect();
134
+ isRunning = true;
135
+ }
136
+ catch (err) {
137
+ console.log(`[simulator] Connection check failed: ${err.message}`);
138
+ isRunning = false;
139
+ }
140
+ if (!isRunning) {
141
+ console.error(chalk_1.default.red('Simulator is not running. Start it first with `phy simulator start`.'));
142
+ process.exit(1);
143
+ }
144
+ // 5. Twin reconciliation (use "local" as tenantId for config storage)
145
+ const localTenantId = 'local';
146
+ const appConfig = await (0, simulator_config_1.getAppConfigByPath)(localTenantId, resolvedPath);
147
+ let twinId = appConfig?.twinId;
148
+ const persistedTwinId = twinId;
149
+ const localSettings = await readLocalSettings(resolvedPath);
150
+ if (Object.keys(localSettings).length > 0) {
151
+ console.log(chalk_1.default.green(`Loaded ${Object.keys(localSettings).length} settings from local files`));
152
+ }
153
+ // Always (re)create twin with fresh settings — reuse persisted ID for stable twin across restarts
154
+ const twinType = APP_TYPE_TO_TWIN_TYPE[appType];
155
+ if (persistedTwinId) {
156
+ console.log(chalk_1.default.dim(`Reusing instance ID ${persistedTwinId} for ${appName}`));
157
+ }
158
+ else {
159
+ console.log(chalk_1.default.dim(`Creating new ${appType} instance for ${appName}...`));
160
+ }
161
+ const twin = await createTwinViaSimulator(twinType, { settings: localSettings, appName, appVersion: pkg.version || '0.0.0' }, persistedTwinId);
162
+ twinId = twin.id;
163
+ if (persistedTwinId) {
164
+ console.log(chalk_1.default.green(`Recreated twin with existing ID ${twinId}`));
165
+ }
166
+ else {
167
+ console.log(chalk_1.default.green(`Created twin with new ID ${twinId}`));
168
+ }
169
+ // Save/update app config
170
+ const newAppConfig = {
171
+ name: appName,
172
+ type: appType,
173
+ path: resolvedPath,
174
+ twinId,
175
+ devCommand: devCommand || 'docker',
176
+ };
177
+ await (0, simulator_config_1.saveAppConfig)(localTenantId, newAppConfig);
178
+ // 6. Type-specific launch
179
+ if (appType === types_1.AppTypeEnum.Screen) {
180
+ await launchWithDevCommand(resolvedPath, pkg, devCommand, twinId, appName, appType);
181
+ }
182
+ else if (appType === types_1.AppTypeEnum.Edge) {
183
+ const dockerfilePath = path_1.default.join(resolvedPath, 'Dockerfile');
184
+ if (await fs_extra_1.default.pathExists(dockerfilePath)) {
185
+ await launchWithDocker(resolvedPath, pkg, twinId, appName);
186
+ }
187
+ else {
188
+ await launchWithDevCommand(resolvedPath, pkg, devCommand, twinId, appName, appType);
189
+ }
190
+ }
191
+ };
192
+ function resolveDevCommand(options, pkg, appType) {
193
+ if (options.devCommand)
194
+ return options.devCommand;
195
+ if (pkg.scripts?.dev)
196
+ return 'npm run dev';
197
+ if (pkg.scripts?.start)
198
+ return 'npm start';
199
+ // For edge apps with a Dockerfile, dev command is optional
200
+ if (appType === types_1.AppTypeEnum.Edge)
201
+ return undefined;
202
+ throw new Error('No dev or start script found in package.json. Pass --dev-command to specify one.');
203
+ }
204
+ async function launchWithDevCommand(resolvedPath, pkg, devCommand, twinId, appName, appType) {
205
+ if (!devCommand) {
206
+ throw new Error('No dev or start script found in package.json. Pass --dev-command to specify one.');
207
+ }
208
+ console.log('');
209
+ console.log(chalk_1.default.green.bold(`Starting ${appName}`));
210
+ console.log(chalk_1.default.dim('─'.repeat(40)));
211
+ console.log(` ${chalk_1.default.cyan('Type:')} ${appType}`);
212
+ console.log(` ${chalk_1.default.cyan('Twin ID:')} ${twinId}`);
213
+ console.log(` ${chalk_1.default.cyan('Path:')} ${resolvedPath}`);
214
+ console.log(` ${chalk_1.default.cyan('Command:')} ${devCommand}`);
215
+ console.log(chalk_1.default.dim('─'.repeat(40)));
216
+ console.log('');
217
+ const env = {
218
+ ...process.env,
219
+ TWIN_ID: twinId,
220
+ PHYSTACK_SIMULATOR_URL: SIMULATOR_URL,
221
+ };
222
+ const child = (0, child_process_1.spawn)(devCommand, {
223
+ cwd: resolvedPath,
224
+ stdio: 'inherit',
225
+ env,
226
+ shell: true,
227
+ });
228
+ await new Promise((resolve, reject) => {
229
+ child.on('close', (code) => {
230
+ if (code === 0) {
231
+ resolve();
232
+ }
233
+ else {
234
+ reject(new Error(`Dev command exited with code ${code}`));
235
+ }
236
+ });
237
+ child.on('error', (err) => {
238
+ reject(err);
239
+ });
240
+ });
241
+ }
242
+ async function readContainerConfig(appPath) {
243
+ const settingsPath = path_1.default.join(appPath, 'settings.json');
244
+ if (!(await fs_extra_1.default.pathExists(settingsPath)))
245
+ return null;
246
+ return fs_extra_1.default.readJSON(settingsPath);
247
+ }
248
+ function buildDockerRunArgs(config, image, twinId) {
249
+ const args = ['run', '--rm', '--name', `simulator-${Date.now()}`];
250
+ // --- Environment variables (mirrors device-phyos: TWIN_ID, TZ, custom Env) ---
251
+ args.push('-e', `TWIN_ID=${twinId}`);
252
+ args.push('-e', `PHYSTACK_SIMULATOR_URL=http://host.docker.internal:55000`);
253
+ if (process.env.TZ) {
254
+ args.push('-e', `TZ=${process.env.TZ}`);
255
+ }
256
+ // --- Network: mirrors device-phyos NetworkMode + ExtraHosts ---
257
+ const isHostNetwork = config?.HostConfig?.NetworkMode === 'host';
258
+ if (isHostNetwork) {
259
+ args.push('--network', 'host');
260
+ // In host mode, production maps phyos → 127.0.0.1
261
+ args.push('--add-host', 'phyos:127.0.0.1');
262
+ }
263
+ else {
264
+ // Bridge mode (default): simulator needs host.docker.internal for callback
265
+ args.push('--add-host=host.docker.internal:host-gateway');
266
+ // In bridge mode, production maps phyos → 172.26.128.1
267
+ args.push('--add-host', 'phyos:host-gateway');
268
+ }
269
+ if (config) {
270
+ // Custom env vars from settings.json
271
+ for (const env of config.Env || []) {
272
+ args.push('-e', env);
273
+ }
274
+ // --- Entrypoint (production passes Entrypoint from createOptions) ---
275
+ if (config.Entrypoint) {
276
+ const ep = Array.isArray(config.Entrypoint)
277
+ ? config.Entrypoint
278
+ : [config.Entrypoint];
279
+ args.push('--entrypoint', ep[0]);
280
+ }
281
+ // --- Port bindings ---
282
+ const ports = config.HostConfig?.PortBindings || {};
283
+ for (const [containerPort, bindings] of Object.entries(ports)) {
284
+ for (const binding of bindings) {
285
+ args.push('-p', `${binding.HostPort}:${containerPort.replace('/tcp', '')}`);
286
+ }
287
+ }
288
+ // --- Volume binds ---
289
+ for (const bind of config.HostConfig?.Binds || []) {
290
+ args.push('-v', bind);
291
+ }
292
+ // --- Devices ---
293
+ for (const device of config.HostConfig?.Devices || []) {
294
+ args.push('--device', device.PathOnHost);
295
+ }
296
+ // --- GPU / DeviceRequests (production detects nvidia runtime) ---
297
+ for (const req of config.HostConfig?.DeviceRequests || []) {
298
+ const isGpu = req.Capabilities &&
299
+ req.Capabilities.some((cap) => cap.includes('gpu'));
300
+ if (isGpu) {
301
+ args.push('--gpus', 'all');
302
+ }
303
+ }
304
+ // --- Privileged ---
305
+ if (config.HostConfig?.Privileged) {
306
+ args.push('--privileged');
307
+ }
308
+ // --- Resource limits ---
309
+ if (config.HostConfig?.Memory > 0) {
310
+ args.push('--memory', String(config.HostConfig.Memory));
311
+ }
312
+ if (config.HostConfig?.CpuShares > 0) {
313
+ args.push('--cpu-shares', String(config.HostConfig.CpuShares));
314
+ }
315
+ // --- Ulimits ---
316
+ for (const ulimit of config.HostConfig?.Ulimits || []) {
317
+ args.push('--ulimit', `${ulimit.Name}=${ulimit.Soft}:${ulimit.Hard}`);
318
+ }
319
+ // --- Read-only root filesystem ---
320
+ if (config.HostConfig?.ReadonlyRootfs) {
321
+ args.push('--read-only');
322
+ }
323
+ }
324
+ args.push(image);
325
+ // --- Custom CMD (production passes Cmd from createOptions) ---
326
+ if (config?.Cmd) {
327
+ args.push(...config.Cmd);
328
+ }
329
+ return args;
330
+ }
331
+ async function launchWithDocker(appPath, pkg, twinId, appName) {
332
+ const imageName = pkg.name.replace(/[^a-z0-9_.-]/g, '-');
333
+ const imageTag = `${imageName}:${pkg.version || 'latest'}`;
334
+ // Build
335
+ console.log('');
336
+ console.log(chalk_1.default.green.bold(`Building Docker image for ${appName}`));
337
+ console.log(chalk_1.default.dim(`Image: ${imageTag}`));
338
+ console.log('');
339
+ const buildResult = (0, child_process_1.spawnSync)('docker', ['build', '-t', imageTag, '.'], {
340
+ cwd: appPath,
341
+ stdio: 'inherit',
342
+ });
343
+ if (buildResult.status !== 0) {
344
+ throw new Error(`Docker build failed with exit code ${buildResult.status}`);
345
+ }
346
+ // Read container config from settings.json
347
+ const containerConfig = await readContainerConfig(appPath);
348
+ // Run
349
+ const dockerArgs = buildDockerRunArgs(containerConfig, imageTag, twinId);
350
+ console.log('');
351
+ console.log(chalk_1.default.green.bold(`Starting ${appName}`));
352
+ console.log(chalk_1.default.dim('─'.repeat(40)));
353
+ console.log(` ${chalk_1.default.cyan('Type:')} edge (Docker)`);
354
+ console.log(` ${chalk_1.default.cyan('Twin ID:')} ${twinId}`);
355
+ console.log(` ${chalk_1.default.cyan('Path:')} ${appPath}`);
356
+ console.log(` ${chalk_1.default.cyan('Image:')} ${imageTag}`);
357
+ console.log(chalk_1.default.dim('─'.repeat(40)));
358
+ console.log(chalk_1.default.dim(`docker ${dockerArgs.join(' ')}`));
359
+ console.log('');
360
+ const child = (0, child_process_1.spawn)('docker', dockerArgs, {
361
+ cwd: appPath,
362
+ stdio: 'inherit',
363
+ });
364
+ // Graceful shutdown
365
+ const containerName = dockerArgs[dockerArgs.indexOf('--name') + 1];
366
+ const cleanup = () => {
367
+ (0, child_process_1.spawnSync)('docker', ['stop', containerName], { stdio: 'pipe' });
368
+ };
369
+ process.on('SIGINT', cleanup);
370
+ process.on('SIGTERM', cleanup);
371
+ await new Promise((resolve, reject) => {
372
+ child.on('close', (code) => {
373
+ if (code === 0) {
374
+ resolve();
375
+ }
376
+ else {
377
+ reject(new Error(`Docker exited with code ${code}`));
378
+ }
379
+ });
380
+ child.on('error', reject);
381
+ });
382
+ }
383
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/simulator/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const chalk_1 = __importDefault(require("chalk"));
7
+ const simulator_1 = require("../../simulator");
8
+ exports.default = async (options = {}) => {
9
+ const port = parseInt(options.port || '55000', 10);
10
+ const simulator = new simulator_1.DeviceSimulator(port);
11
+ // Graceful shutdown
12
+ const shutdown = async () => {
13
+ await simulator.stop();
14
+ process.exit(0);
15
+ };
16
+ process.on('SIGINT', shutdown);
17
+ process.on('SIGTERM', shutdown);
18
+ try {
19
+ await simulator.start();
20
+ }
21
+ catch (error) {
22
+ console.error(chalk_1.default.red(`Failed to start simulator: ${error.message}`));
23
+ process.exit(1);
24
+ }
25
+ // Keep running until SIGINT/SIGTERM
26
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
27
+ await new Promise(() => { });
28
+ };
29
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/simulator/start.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAC1B,+CAAkD;AAElD,kBAAe,KAAK,EAAE,UAA6B,EAAE,EAAiB,EAAE;IACtE,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC;IAEnD,MAAM,SAAS,GAAG,IAAI,2BAAe,CAAC,IAAI,CAAC,CAAC;IAE5C,oBAAoB;IACpB,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,oCAAoC;IACpC,gEAAgE;IAChE,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAC9B,CAAC,CAAC"}
package/dist/index.js CHANGED
@@ -29,6 +29,7 @@ const inst_1 = __importDefault(require("./commands/inst"));
29
29
  const descriptor_1 = __importDefault(require("./commands/descriptor"));
30
30
  const vm_1 = __importDefault(require("./commands/vm"));
31
31
  const flash_1 = __importDefault(require("./commands/flash"));
32
+ const simulator_1 = __importDefault(require("./commands/simulator"));
32
33
  const utils_1 = require("./utils");
33
34
  dotenv_1.default.config();
34
35
  (0, utils_1.loadConfig)();
@@ -108,6 +109,8 @@ tenant
108
109
  program.addCommand(vm_1.default);
109
110
  // Add flash command for flashing images to drives
110
111
  program.addCommand(flash_1.default);
112
+ // Add simulator command for local device simulation
113
+ program.addCommand(simulator_1.default);
111
114
  program
112
115
  .command('update')
113
116
  .description('Update Phystack CLI')
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,yCAAoC;AACpC,gDAAwB;AACxB,kEAA+B;AAC/B,kDAA0B;AAC1B,oDAA4B;AAC5B,iEAAyC;AACzC,mEAA8C;AAC9C,mEAA8C;AAC9C,mEAA8C;AAC9C,uEAA+C;AAC/C,qFAA4D;AAC5D,2EAAiD,CAAC,8BAA8B;AAChF,qEAAgD;AAChD,2FAAkE;AAClE,+DAA2C;AAC3C,kEAA0C;AAC1C,oEAA4C;AAC5C,sEAAoD;AAEpD,kEAAgD;AAChD,sEAAoD;AAEpD,qEAA6C;AAC7C,yDAAiC;AACjC,2DAAmC;AACnC,uEAA+C;AAE/C,uDAA+B;AAC/B,6DAAqC;AAErC,mCAOiB;AAEjB,gBAAM,CAAC,MAAM,EAAE,CAAC;AAChB,IAAA,kBAAU,GAAE,CAAC;AAEb,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAC9B,OAAO,CAAC,OAAO,CAAC,IAAA,yBAAiB,GAAE,CAAC,CAAC;AAErC,uCAAuC;AACvC,OAAO,CAAC,UAAU,CAAC,aAAG,CAAC,CAAC;AACxB,OAAO,CAAC,UAAU,CAAC,mBAAS,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,cAAI,CAAC,CAAC;AACzB,OAAO,CAAC,UAAU,CAAC,oBAAU,CAAC,CAAC;AAE/B,mFAAmF;AACnF,MAAM,SAAS,GAAG,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;AAC/D,IAAI,SAAS,EAAE,CAAC;IACd,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,IAAA,mBAAW,EAAC,gBAAS,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAA,mBAAW,EAAC,eAAK,CAAC,CAAC,CAAC;IAEpD,OAAO,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,MAAM,CAAC,IAAA,mBAAW,EAAC,kBAAQ,CAAC,CAAC,CAAC;IAC9E,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,IAAA,mBAAW,EAAC,oBAAQ,CAAC,CAAC,CAAC,CAAC,8BAA8B;AAC7F,CAAC;AAED,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC;AAEjF,GAAG;KACA,OAAO,CAAC,mBAAmB,CAAC;IAC7B,iFAAiF;KAChF,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,IAAA,mBAAW,EAAC,gBAAS,CAAC,CAAC,CAAC;AAElC,GAAG;KACA,OAAO,CAAC,oBAAoB,CAAC;KAC7B,MAAM,CAAC,mBAAmB,EAAE,gDAAgD,CAAC;KAC7E,WAAW,CAAC,mBAAmB,CAAC;KAChC,MAAM,CAAC,IAAA,mBAAW,EAAC,gBAAS,CAAC,CAAC,CAAC;AAElC,GAAG;KACA,OAAO,CAAC,4CAA4C,CAAC;KACrD,MAAM,CAAC,gCAAgC,EAAE,wCAAwC,CAAC;KAClF,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC;KAChD,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,IAAA,mBAAW,EAAC,gBAAS,CAAC,CAAC,CAAC;AAElC,GAAG;KACA,OAAO,CAAC,wCAAwC,CAAC;KACjD,MAAM,CAAC,gCAAgC,EAAE,wCAAwC,CAAC;KAClF,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC;KAChD,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,IAAA,mBAAW,EAAC,eAAK,CAAC,CAAC,CAAC;AAE9B,GAAG;KACA,OAAO,CAAC,gCAAgC,CAAC;KACzC,WAAW,CAAC,0DAA0D,CAAC;KACvE,MAAM,CAAC,IAAA,mBAAW,EAAC,kBAAQ,CAAC,CAAC,CAAC;AAEjC,GAAG;KACA,OAAO,CAAC,qCAAqC,CAAC;KAC9C,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,IAAA,mBAAW,EAAC,yBAAc,CAAC,CAAC,CAAC;AAEvC,GAAG;KACA,OAAO,CAAC,oBAAoB,CAAC;KAC7B,MAAM,CAAC,4BAA4B,EAAE,wBAAwB,CAAC;KAC9D,MAAM,CACL,kCAAkC,EAClC,6FAA6F,CAC9F;KACA,MAAM,CAAC,aAAa,EAAE,yCAAyC,CAAC;KAChE,WAAW,CAAC,gBAAgB,CAAC;KAC7B,MAAM,CAAC,IAAA,mBAAW,EAAC,iBAAU,CAAC,CAAC,CAAC;AACnC,GAAG;KACA,OAAO,CAAC,+BAA+B,CAAC;KACxC,MAAM,CAAC,kCAAkC,EAAE,qBAAqB,CAAC;KACjE,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,IAAA,mBAAW,EAAC,4BAAiB,CAAC,CAAC,CAAC;AAE1C,GAAG;KACA,OAAO,CAAC,wBAAwB,CAAC;KACjC,WAAW,CAAC,mBAAmB,CAAC;KAChC,MAAM,CAAC,IAAA,mBAAW,EAAC,cAAQ,CAAC,CAAC,CAAC;AAEjC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;AAE1E,MAAM;KACH,OAAO,CAAC,wBAAwB,CAAC;KACjC,WAAW,CAAC,cAAc,CAAC;KAC3B,MAAM,CAAC,IAAA,mBAAW,EAAC,cAAU,CAAC,CAAC,CAAC;AAEnC,MAAM;KACH,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,SAAS,EAAE,wBAAwB,CAAC;KAC3C,MAAM,CAAC,IAAA,mBAAW,EAAC,gBAAY,CAAC,CAAC,CAAC;AAErC,iDAAiD;AACjD,OAAO,CAAC,UAAU,CAAC,YAAE,CAAC,CAAC;AAEvB,kDAAkD;AAClD,OAAO,CAAC,UAAU,CAAC,eAAK,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,qBAAqB,CAAC;KAClC,MAAM,CACL,IAAA,mBAAW,EAAC,GAAG,EAAE;IACf,uBAAE,CAAC,QAAQ,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC,CACH,CAAC;AAEJ,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,0BAA0B,EAAE,gCAAgC,CAAC;KACpE,MAAM,CAAC,+BAA+B,EAAE,oCAAoC,CAAC;KAC7E,MAAM,CAAC,IAAA,mBAAW,EAAC,eAAK,CAAC,CAAC,CAAC;AAE9B,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,IAAA,mBAAW,EAAC,gBAAM,CAAC,CAAC,CAAC;AAE/B,4DAA4D;AAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;AAE1E,MAAM;KACH,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,SAAS,EAAE,iCAAiC,CAAC;KACpD,MAAM,CAAC,IAAA,mBAAW,EAAC,gBAAY,CAAC,CAAC,CAAC;AAErC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,IAAA,cAAM,GAAE,CAAC;IACT,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,qBAAqB;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,wBAAgB,GAAE,CAAC;QACxC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAA,yBAAiB,GAAE,CAAC;QACpC,OAAO,IAAA,uBAAe,EAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAC3C,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;QACxD,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CACV,oBAAoB,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAsB,eAAK,CAAC,KAAK,CACxE,YAAY,CACb,aAAa,CACf,CACF,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}